攻擊者在獲得系統一定的訪問權限後通常要把自己的權限提升到管理員組,這樣攻擊者就控制了該計算機系統。這主要有以下幾種方法:1. 獲得管理員密碼,下次就可以用該密碼進入系統; 2. 先新建一個用戶,然後把這個普通添加到管理員組,或者干脆直接把一個不起眼的用戶如guest添加到管理員組; 3. 安裝後門。 本文簡要介紹在 Windows NT4 和 Windows 2000 裡攻擊者常用的提升權限的方法。下面是具體方法: 方法1:下載系統的 %windir%\repair\sam.*(WinNT 4下是sam._ 而Windows 2000下是sam)文件,,然後用L0pht等軟件進行破解,只要能拿到,肯花時間,就一定可以破解。 問題:(1)攻擊者不一定可以訪問該文件(看攻擊者的身份和管理員的設置); (2)這個文件是上次系統備份時的帳號列表(也可能是第一次系統安裝時的),以後更改帳號口令的話,就沒用了。 方法2:使用pwdump(L0pht自帶的,Windows 2000下無效)或者pwdump2,取得系統當前的用戶列表和口令加密列表,然後用L0pht破解這個列表。 問題:普通用戶不能成功運行pwdump類程序(沒有權限),例如:使用unicode漏洞進入系統時是IUSR_computer身份,該用戶一般只屬於guests組的,運行pwdump類程序就會失敗。 (以上兩種是離線的) 方法3:使用 Enum 等程序進行遠程破解,猜口令。enum 可以使用指定的字典對遠程主機的某個用戶進行破解。 問題:(1)如果系統設置了帳號鎖定的話,破解幾次失敗,該帳號就鎖定了,暫時不能再破解; (2)要遠程系統開放 Netbios 連接,就是 TCP 的139端口,如果用防火牆過濾了的話 Enum 就無法連接到主機。 (以上方法是通過破解獲得密碼的,還有直接把當前用戶提升權限或者添加用戶到管理員組的方法。) 方法4:GetAdmin(WinNT 4下)、PipeUpAdmin(Windows 2000下), 在本機運行可以把當前用戶帳號加入管理員組。而 PipeUpAdmin 則比較厲害,普通用戶和Guests組用戶都可以成功運行。 問題:GetAdmin 在 SP4 有補丁修復了,不能用於高於 SP4 的 WinNT 4 系統,當然後來又有GetAdmin的增強版本,不過在 SP6a下好像都不能成功運行。 注:這一方法利用了 WinNT 4 系統的安全漏洞,可以安裝補丁解決這一問題。 (此外還有變通的方法。) 方法5:在WinNT 4 和 Windows 2000 注冊表裡指定用戶Shell程序(Explorer.exe)時沒有使用絕對路徑,而是使用了一個相對路徑的文件名(考慮到兼容性問題)。由於在系統啟動時程序的搜索順序問題使得 %Systemdrive%\Explorer.exe(操作系統安裝的跟目錄下的Explorer.exe)程序執行,這提供了攻擊者一個機會在用戶下次登錄時執行他自己的程序。 問題:攻擊者必須有安裝系統邏輯盤跟目錄的寫權限才行,而一般管理員都設置該目錄普通用戶禁寫。 注:這種方法利用了 WinNT 4/Windows 2000 系統的安全漏洞,可以安裝補丁解決這種問題。 方法6: 木馬:上傳木馬,然後運行木馬,系統重起動後,木馬就是本地登錄用戶的身份了,然後攻擊者連接後就有了本地登錄用戶的權限。因為一般總是管理員本地登錄系統,因此這樣很可能就獲得了管理員的權限。 問題:(1)殺毒軟件或病毒防火牆可能阻止木馬運行,還有可能把木馬殺死。 (2)有的木馬不能在Guests組身份下運行,這可能與它添加自動運行的方式有關;如沒有權限改寫注冊表的自動運行位置,不能寫入%system%\system32目錄(一般的木馬都改變文件名,然後寫入系統目錄,如果沒有寫入權限系統目錄,就不能成功執行木馬)。 解決:不過也有用壓縮程序(不是通常說的壓縮程序,這種壓縮程序把可執行程序壓縮後,文件變小了,但是仍然可以正常執行)將木馬壓縮,從而逃過殺毒軟件的特征碼檢測。我曾使用Aspack成功壓縮了一個木馬,逃過了金山毒霸正式版的檢測。不過也有的木馬Aspack壓縮不了,如冰河。 方法7:Gina、GinaStub木馬。雖然這個也叫木馬,但是它的功能和上邊的那種大不相同,因為一般的木馬是在對方安裝一個server端,一旦運行就可以使用client端連接到server端,並進行操作。而 ginastub 一般只有一個動態連接庫文件,需要手工安裝和卸載,他的功能也不是使用client端控制server端,它僅僅就是捕獲用戶的登錄密碼。 問題:安裝較麻煩,成功的可能性低,而且安裝不當會造成被安裝的系統不能啟動。 注:這一方法利用的不是系統的安全漏洞,因此不能通過安裝補丁解決這一問題。關於Gina,可以參見我的另一篇文章《WinLogon登錄管理和GINA簡介》 方法8:本地溢出。緩沖區溢出是進行攻擊的最好辦法,因為一般都可以獲得系統權限或者管理員權限;不過很多遠程溢出攻擊不需要事先有執行程序的權限,而本地溢出就恰好適合提升權限。Win NT4 的 IIS4 的 ASP擴展有一個本地溢出漏洞,Windows 2000 的靜態圖像服務也有一個溢出漏洞,利用該漏洞,攻擊者可以獲得系統權限。當然 Windows NT 和 Windows 2000 還有很多程序有溢出漏洞,這是這些程序不是總在運行,因此被利用的可能性比較小。 問題:(1)ASP擴展的溢出漏洞需要攻擊者有向網站的腳本目錄的寫權限,才能把攻擊程序放到網站上,然後執行。 (2)靜態圖像服務缺省沒有安裝,只有用戶在 Windows 2000 上安裝靜態圖像設備(如數碼相機、掃描儀等)時才自動安裝。 注:這種方法利用了 WinNT 4/Windows 2000 系統的安全漏洞,可以安裝補丁解決這種問題。 Windows 2000專用提升漏洞方法 方法1: Windows 2000的輸入法漏洞,利用這個漏洞任何人可以以LocalSystem身份執行程序,從而可以用來提升權限,不過該漏洞一般限於物理接觸 Windows 2000 計算機的人。當然如果開放了終端服務的話,攻擊者也可以遠程利用該漏洞。 注:這一方法利用了 Windows 2000 系統的安全漏洞,可以安裝補丁解決這一問題。 方法2:利用 Windows 2000 的 Network DDE DSDM 服務漏洞普通用戶可以LocalSystem身份執行任意程序,可以借此更改密碼、添加用戶等。Guests組用戶也可以成功利用該漏洞。
問題:這個服務缺省沒有啟動,需要啟動這個服務。 注:這一方法利用了 Windows 2000 系統的安全漏洞,可以安裝補丁解決這一問題。 方法3:Windows 2000的 TELNET 服務進程建立時,該服務會創建一個命名管道,並用它來執行命令。但是,該管道的名字能被預見。如果 TELNET 發現一個已存在的管道名,它將直接用它。攻擊者利用此漏洞,能預先建立一個管道名,當下一次 TELNET 創建服務進程時,便會在本地 SYSTEM 環境中運行攻擊者代碼。 注:這一方法利用了 Windows 2000 系統的安全漏洞,可以安裝補丁解決這一問題。 方法4:WINDOWS 2K 存在一個利用 Debug Registers 提升權限的漏洞。如果攻擊者能在 WIN2K 中運行程序,利用此漏洞,他至少能取得對 %Windir%\SYSTEM32 和 注冊表HKCR 的寫權。因為x86 Debug Registers DR0-7對於所有進程都是全局共享的,因此在一個進程中設置硬件斷點,將影響其它進程和服務程序。 注:這一方法利用了 Windows 2000 系統的安全漏洞,不過到目前為止微軟仍然沒有補丁可以安裝,但是漏洞攻擊程序已經出現了,因此只能堵住攻擊者的入口來阻止利用該漏洞。