正與邪的較量無(wú)處不在,當(dāng)然Windows系統(tǒng)也不例外。俗話說(shuō):“知己知彼,百戰(zhàn)不殆”,要取得這場(chǎng)戰(zhàn)斗的勝利就要深入了解對(duì)手,然后找準(zhǔn)要害一招制敵。當(dāng)前“映像劫持”和“RootKit”肆虐Windows系統(tǒng),我們就以此開(kāi)始正與邪的較量。
一、“映像劫持”愚弄系統(tǒng)
所謂映像劫持(IFEO)就是通過(guò)修改注冊(cè)表“Image File Execution Options”項(xiàng)下的相關(guān)鍵值達(dá)到欺騙系統(tǒng),進(jìn)而絕殺安全軟件接管系統(tǒng)。本來(lái)這個(gè)注冊(cè)表項(xiàng)主要是用來(lái)調(diào)試程序的,對(duì)一般用戶意義不大,但木馬、病毒似乎比較鐘情于它往往陷系統(tǒng)于不義。
1、系統(tǒng)、殺軟被劫持
大部分的病毒和木馬都是通過(guò)加載系統(tǒng)啟動(dòng)項(xiàng)來(lái)運(yùn)行的,也有一些是注冊(cè)成為系統(tǒng)服務(wù)來(lái)啟動(dòng),他們主要通過(guò)修改注冊(cè)表來(lái)實(shí)現(xiàn)這個(gè)目的,主要有以下幾個(gè)鍵值:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWindowsAppInit_DLLs
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogonNotify
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnce
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServicesOnce
但是與一般的木馬,病毒不同的是,就有一些病毒偏偏不通過(guò)這些來(lái)加載自己,不隨著系統(tǒng)的啟動(dòng)運(yùn)行。木馬病毒的作者抓住了一些用戶的心理,等到用戶運(yùn)行某個(gè)特定的程序的時(shí)候它才運(yùn)行。因?yàn)橐话愕挠脩?,只要發(fā)覺(jué)自己的機(jī)子中了病毒,首先要察看的就是系統(tǒng)的啟動(dòng)項(xiàng),很少有人會(huì)想到映像劫持,這也是這種病毒高明的地方。
映像劫持病毒主要通過(guò)修改注冊(cè)表中的HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options項(xiàng)來(lái)劫持正常的程序,比如有一個(gè)病毒vires.exe要劫持qq程序,它會(huì)在上面注冊(cè)表的位置新建一個(gè)qq.exe項(xiàng),再在這個(gè)項(xiàng)下面新建一個(gè)字符串的鍵debugger把其值改為C:WINDOWSSYSTEM32VIRES.EXE(這里是病毒藏身的路徑)。這樣當(dāng)我們運(yùn)行QQ程序的時(shí)候其實(shí)運(yùn)行的就是該病毒木馬。(圖1)

當(dāng)然,映像劫持最可怕的是其對(duì)殺毒軟件的劫持。一般是先釋放一個(gè)腳本,該腳本運(yùn)行后在注冊(cè)表的Image File Execution Options項(xiàng)下修改或者添加相關(guān)的鍵值劫持殺毒軟件的主程序。這樣當(dāng)系統(tǒng)重啟后殺毒軟件被終結(jié),病毒木馬就可以肆虐了。
當(dāng)前“映像劫持”和“RootKit”肆虐Windows系統(tǒng),我們就以此開(kāi)始正與邪的較量。
2、反其道利用映像劫持
(1).禁止某些程序的運(yùn)行
既然映像劫持可被病毒、木馬利用,當(dāng)然我們反其道而行之利用它來(lái)禁止某些程序的運(yùn)行。比如在公共電腦中可以利用它限制別人使用QQ,打開(kāi)記事本拷貝下面的代碼:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsqq.exe]
Debugger=c:123.exe
把上面的代碼保存為disqq.reg,雙擊導(dǎo)入注冊(cè)表,每次雙擊運(yùn)行QQ的時(shí)候,系統(tǒng)都會(huì)彈出一個(gè)框提示說(shuō)找不到QQ,原因就QQ被重定向了。如果要讓QQ繼續(xù)運(yùn)行的話,將QQ的主程序改名或者刪除或者修改該注冊(cè)表項(xiàng)就可以了。(圖2)

(2).偷梁換柱惡作劇
每次我們按下CTRL+ALT+DEL鍵時(shí),都會(huì)彈出“任務(wù)管理器”,我們可以通過(guò)映像劫持在按下這些鍵的時(shí)候讓它打開(kāi)“系統(tǒng)配置實(shí)用程序”。打開(kāi)記事本,輸入如下的代碼:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionstaskmgr.exe]
Debugger=D:WINDOWSpchealthhelpctrbinariesmconfig.exe
將上面的代碼另存為msconfig.reg,雙擊導(dǎo)入注冊(cè)表。按下那三個(gè)鍵打開(kāi)了“系統(tǒng)配置實(shí)用程序”。
當(dāng)前“映像劫持”和“RootKit”肆虐Windows系統(tǒng),我們就以此開(kāi)始正與邪的較量。
(3).讓病毒迷失自我
同上面的道理一樣,如果我們把病毒程序給重定向了,是不是病毒就不能運(yùn)行了,答案是肯定的。打開(kāi)記事本,輸入如下的代碼:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionssppoolsv.exe]
Debugger=123.exe
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionslogo_1.exe]
Debugger=123.exe
上面的代碼是以金豬病毒和威金病毒為例,這樣即使這些病毒在系統(tǒng)啟動(dòng)項(xiàng)里面,當(dāng)我們重啟系統(tǒng)后,由于映象劫持的重定向作用,系統(tǒng)會(huì)提示無(wú)法找到病毒文件(這里是logo_1.exe和sppoolsv.exe)。我們延伸一下,可以搜集病毒木馬的程序名稱,創(chuàng)建一個(gè)reg文件對(duì)系統(tǒng)實(shí)施病毒木馬的免疫。(圖3)

3、未雨綢繆預(yù)防映像劫持
(1).權(quán)限限制法
打開(kāi)注冊(cè)表編輯器,定位到
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options,選中該項(xiàng),右鍵→權(quán)限→高級(jí),取消administrator和system用戶的寫(xiě)權(quán)限即可。這樣任何帳戶都無(wú)法對(duì)該注冊(cè)表項(xiàng)進(jìn)行修改,當(dāng)然病毒也就無(wú)法利用映像劫持了。(圖4)#p#副標(biāo)題#e#

(2).快刀斬亂麻法
打開(kāi)注冊(cè)表編輯器,定位到[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion,把“Image File Execution Options”項(xiàng)刪除即可。該注冊(cè)表項(xiàng)我們根本用不著,大家可以放心地刪除以絕后患。(圖5)

二、RootKit忽悠管理員
Rootkit是一個(gè)或者多個(gè)用于隱藏、控制系統(tǒng)的工具包,該技術(shù)被越來(lái)越多地應(yīng)用于一些惡意軟件中。在基于Windows的系統(tǒng)中rootkit更多地用于隱藏程序或進(jìn)程,系統(tǒng)被注入Rootkit后就可以在不為用戶察覺(jué)的情況下進(jìn)行進(jìn)行某些操作。因此,其隱蔽性極高,危害極大。
1、利用RootKit創(chuàng)建高級(jí)隱藏帳戶
攻擊者在控制系統(tǒng)后往往要?jiǎng)?chuàng)建一個(gè)具有管理員權(quán)限的帳戶,但是常規(guī)情況下這些帳戶是很容易被發(fā)現(xiàn)的。因此,他們也許會(huì)利用RootKit創(chuàng)建一個(gè)高級(jí)隱藏帳戶。這樣的帳戶,如果不清除系統(tǒng)中的RootKit任何人是無(wú)法發(fā)現(xiàn)的。
(1).創(chuàng)建一般帳戶
在命令提示符(cmd.exe)下輸入如下命令:net user gslw$ test168 /add
通過(guò)上面的兩行命令建立了一個(gè)用戶名為gslw$,密碼為test168的普通用戶。為了達(dá)到初步的隱藏我們?cè)谟脩裘暮竺婕恿?ldquo;$”號(hào),這樣在命令提示符下通過(guò)net user是看不到該用戶的,當(dāng)然在“本地用戶和組”及其注冊(cè)表的“SAM”項(xiàng)下還可以看到。(圖6)

當(dāng)前“映像劫持”和“RootKit”肆虐Windows系統(tǒng),我們就以此開(kāi)始正與邪的較量。
(2).帳戶非常規(guī)提權(quán)
下面我們通過(guò)注冊(cè)表對(duì)gslw$帳戶進(jìn)行提權(quán),使其成為一個(gè)比較隱蔽(在命令行和“本地用戶和組”中看不到)的管理員用戶。
第一步:打開(kāi)注冊(cè)表編輯器,定位到HKEY_LOCAL_MACHINESAMSAM項(xiàng)。由于默認(rèn)情況下管理員組對(duì)SAM項(xiàng)是沒(méi)有操作權(quán)限的,因此我們要賦權(quán)。右鍵點(diǎn)擊該鍵值選擇“權(quán)限”,然后添加“administrators”組,賦予其“完全控制”權(quán)限,最后刷新注冊(cè)表,就能夠進(jìn)入SAM項(xiàng)下的相關(guān)鍵值了。
第二步:定位到注冊(cè)表HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsers項(xiàng),點(diǎn)擊“000001F4”
注冊(cè)表項(xiàng),雙擊其右側(cè)的“F”鍵值,復(fù)制其值,然后點(diǎn)擊“00000404”注冊(cè)表項(xiàng)(該項(xiàng)不一定相同),雙擊其右側(cè)的“F”鍵值,用剛才復(fù)制鍵值進(jìn)行替換其值。(圖7)

第三步:分別導(dǎo)出gslw$、00000404注冊(cè)表項(xiàng)為1.reg和2.reg。在命令行下輸入命令"net user gslw$ /del"刪除gslw$用戶,然后分別雙擊1.reg和2.reg導(dǎo)入注冊(cè)表,最后取消administrators對(duì)SAM注冊(cè)表項(xiàng)的訪問(wèn)權(quán)限。
這樣就把gslw$用戶提升為管理員,并且該用戶非常隱蔽,除了注冊(cè)表在命令下及“本地用戶和組”是看不到的。這樣的隱藏的超級(jí)管理員用戶是入侵者經(jīng)常使用的,對(duì)于一個(gè)水平不是很高的管理員這樣的用戶他是很難發(fā)現(xiàn)的。這樣的用戶他不屬于任何組,但卻有管理員權(quán)限,是可以進(jìn)行登錄的。
(3).高級(jí)隱藏用戶
綜上所述,我們創(chuàng)建的gslw$用戶雖然比較隱蔽,但是通過(guò)注冊(cè)表可以看見(jiàn)。下面我們利用RootKit工具進(jìn)行高級(jí)隱藏,即在注冊(cè)表中隱藏該用戶。
可被利用的RootKit工具是非常多的,我們就以Hacker defende危機(jī)進(jìn)行演示,它是個(gè)工具包,其中包含了很多工具,我們隱藏注冊(cè)表鍵值只需其中的兩個(gè)文件,hxdef100.exe和hxdef100.ini。其中hxdef100.ini是配置文件,hxdef100.exe是程序文件。打開(kāi)hxdef100.ini文件定位到[Hidden RegKeys]項(xiàng)下,添加我們要隱藏的注冊(cè)表鍵值gslw$和00000404即用戶在注冊(cè)表的項(xiàng)然后保存退出。(圖8)

然后雙擊運(yùn)行hxdef100.exe,可以看到gslw$用戶在注冊(cè)表中的鍵值“消失”了,同時(shí)這兩個(gè)文件也“不見(jiàn)”了。這樣我們就利用RootKit實(shí)現(xiàn)了高級(jí)管理員用戶的徹底隱藏,管理員是無(wú)從知曉在系統(tǒng)中存在一個(gè)管理員用戶的。(圖9)#p#副標(biāo)題#e#

2、全面出擊清除RootKit
那是否意味著我們就無(wú)能為力呢?俗話說(shuō)“邪不勝正”,與RootKit就有反RootKit。我們就以清除上面的Hacker defende為例揪出剛才創(chuàng)建的隱藏帳戶。
(1).深入掃描進(jìn)行驅(qū)動(dòng)級(jí)別分析
RootKit往往是驅(qū)動(dòng)級(jí)別的,因此它比一般的應(yīng)用程序更加靠近底層,清除起來(lái)更加的棘手。清除請(qǐng)進(jìn)程掃描是必要的,RootKit Hook Analyzer是一款Rookit分析查詢工具,利用它可以掃描分析出系統(tǒng)中存在的RooKit程序。該工具是英文程序,安裝并運(yùn)行點(diǎn)擊其界面中下方的“Analyze”按鈕就可以進(jìn)行掃描分析,列出系統(tǒng)中的RooKit程序,勾選“Show hooked services only”就可以進(jìn)行篩選值列出RooKit ervices。當(dāng)然,類(lèi)似這樣的工具還有很多,我們可以根據(jù)自己的需要進(jìn)行選擇。(圖10)

(2).通通透透看進(jìn)程
RootKit的程序進(jìn)程往往是隱藏性或者嵌入型的,通過(guò)Windows的“任務(wù)管理器”是無(wú)法看到的。我們可以利用一款強(qiáng)大的進(jìn)程工具IceSword(冰刃)來(lái)查看。運(yùn)行IceSword點(diǎn)擊“進(jìn)程”按鈕,就可以列出當(dāng)前系統(tǒng)中的進(jìn)程,其中紅色顯示的是可疑進(jìn)程。我們可以看到hxdef100.exe進(jìn)程赫然其中,這真是我們剛才運(yùn)行的RootKit。在該進(jìn)程上點(diǎn)擊右鍵選擇“結(jié)束”進(jìn)程。這時(shí)hxdef100.exe和hxdef100.ini文件顯身了,再刷新并查看注冊(cè)表,剛才消失的兩個(gè)鍵值有重現(xiàn)了。(圖11)

(3).專(zhuān)業(yè)工具查殺
利用IceSword進(jìn)行RooKit的分析和并結(jié)束其進(jìn)程不失為反RooKit的一種方法,但有的時(shí)候冰刃并不能分析出RootKit,因此我們就要比較專(zhuān)業(yè)的工具。比如卡巴斯基、超級(jí)巡警等都是不錯(cuò)的選擇。下圖就是通過(guò)超級(jí)巡警檢測(cè)到的RootKit病毒。(圖12)

總結(jié):當(dāng)然,在Windows系統(tǒng)中“正”與“邪”此消彼長(zhǎng),戰(zhàn)爭(zhēng)中沒(méi)有永遠(yuǎn)的勝利者。我們只有深入了解,主動(dòng)出擊才能掌握主動(dòng)權(quán)。


