摘 要:本文從概念、原理以及日常生活中的運(yùn)用對(duì)利用MGF病毒進(jìn)入RING0的方法技術(shù)進(jìn)行闡述。不同種類的病毒,它們的使用千差萬別,正常程序使用了類似病毒的操作甚至借鑒了某些病毒的技術(shù),從對(duì)莫國(guó)防病毒的運(yùn)用方面來看,病毒還有可利用性。
關(guān)鍵詞:病毒;技術(shù);防護(hù)
中圖分類號(hào):TP311.1
1 RING0簡(jiǎn)單介紹
RING設(shè)計(jì)的初衷是將系統(tǒng)權(quán)限與程序分離出來,使之能夠讓OS更好的管理當(dāng)前系統(tǒng)資源,也使得系統(tǒng)更加穩(wěn)定。CPU將特權(quán)級(jí)別分為4個(gè)級(jí)別:RING0,RING1,RING2,RING3。Windows只使用其中的兩個(gè)級(jí)別RING0和RING3,RING0只是操作系統(tǒng)使用,RING3都可以用。盡管有CPU的特權(quán)級(jí)別作保護(hù),但如果普通應(yīng)用程序企圖執(zhí)行RING0指令,則Windows會(huì)顯示“非法指令”,錯(cuò)誤信息。因?yàn)閃INDOWXP本身漏洞很多,Windows XP的系統(tǒng)使用一天死機(jī)很多回是非常正常的。舉個(gè)RING權(quán)限的最簡(jiǎn)單的例子:一個(gè)停止響應(yīng)的應(yīng)用程式,它運(yùn)行在比RING0更高的指令環(huán)上,你不必大費(fèi)周章的想著如何使系統(tǒng)回復(fù)運(yùn)作,這期間,只需要啟動(dòng)任務(wù)管理器便能輕松終止它,因?yàn)樗\(yùn)行在比程式更低的RING0指令環(huán)中,擁有更高的權(quán)限,可以直接影響到RING0以上運(yùn)行的程序,當(dāng)然有利就有弊,RING保證了系統(tǒng)穩(wěn)定運(yùn)行的同時(shí),也產(chǎn)生了一些十分麻煩的問題。比如一些OS虛擬化技術(shù),在處理RING指令環(huán)時(shí)便遇到了麻煩,系統(tǒng)是運(yùn)行在RING0指令環(huán)上的,但是虛擬的OS畢竟也是一個(gè)系統(tǒng),也需要與系統(tǒng)相匹配的權(quán)限。而RING0不允許出現(xiàn)多個(gè)OS同時(shí)運(yùn)行在上面,最早的解決辦法便是使用虛擬機(jī),把OS當(dāng)成一個(gè)程序來運(yùn)行。后來才有了更新的技術(shù)解決了此問題。
2 利用MGF病毒進(jìn)入RING0的方法
MGF病毒是非常有名的病毒,它通過修改NTLDR文件進(jìn)入ring0,進(jìn)入ring0到底能做些什么呢?其實(shí)能做的事情很多的,不過網(wǎng)上有很多進(jìn)入ring0的代碼說實(shí)話沒有什么用,首先他們進(jìn)入ring0了后,代碼仍然在0x80000000以下空間,如果有進(jìn)程上下文切換,那么代碼所在頁(yè)就會(huì)被調(diào)換出去,解決方法是用ExAllocatePool申請(qǐng)一塊非分頁(yè)內(nèi)存,將需要運(yùn)行的代碼拷貝過去,最后創(chuàng)建一個(gè)系統(tǒng)線程就可以了,這樣你的代碼就和驅(qū)動(dòng)程序的代碼一樣,IRQL =PASSIVE_LEVEL,如何利用MGF病毒呢?我們可以使用MGF留在GDT中的callgate,利用這個(gè)調(diào)用門,就可以成功進(jìn)入ring0。
系統(tǒng)的引導(dǎo)過程中的重要角色就是NTLDR,NTLDR主要作用就是裝載Ntbootdd.sys文件,還有將x86的實(shí)模式轉(zhuǎn)到winXP的保護(hù)模式下等工作,裝載GDT(全局描述符表)也包括其中(由實(shí)模式切換到保護(hù)模式之前的準(zhǔn)備工作中裝載GDT就完成的了)。創(chuàng)建一個(gè)調(diào)用門,那么系統(tǒng)啟動(dòng)的時(shí)候就會(huì)將調(diào)用門裝載。其實(shí)進(jìn)入RING0:就是在WINXP用和CIH一樣的技術(shù),往GDT添加CALLGATE,在WIN 2000/XP/2003里把CALLGATE寫入NTLDR里,然后重啟計(jì)算機(jī)病毒生效,這是獨(dú)一無二的技術(shù),這當(dāng)然也是WINDOWS 2000/XP/2003的一個(gè)漏洞。這種方法可以駐留內(nèi)存:由于所有dll模塊裝入內(nèi)存后,在文件頭只使用1K空間,還有3K空間剩余,所以本病毒把自身的3K放入kernel32.dll的空隙里,剩下2K放在user32.dll里,但WIN98比較特殊,剩下2K用vxd的_PageAllocate分配空間。MGF毒駐留不靠建立進(jìn)程和GlobalAlloc內(nèi)存,而是插入模塊的空隙里,因此在任務(wù)管理器里是看不到病毒的,更終止不了它在內(nèi)存感染文件,所以本病毒難殺就難在這里,很多殺毒軟件要么找不到本病毒,即使找到了也殺不了或殺不干凈,束手無策?,F(xiàn)在進(jìn)入ring0的方法又有很多了,例如可以參考利用結(jié)構(gòu)化異常處理以及利用中斷門的方法進(jìn)入RING0;利用驅(qū)動(dòng)程序進(jìn)入RING0;利用讀寫物理內(nèi)存的方法來讀寫GDT所在的物理內(nèi)存,在GDT上生成自己的調(diào)用門來進(jìn)入ring0。那么到底用什么來確認(rèn)NTLDR中包含有這個(gè)過程?可以根據(jù)Maureen提出的,用Bochs調(diào)試NTLDR,來監(jiān)視NTLDR在切換到保護(hù)模式的時(shí)候所做的一切。莫國(guó)防病毒采用的方法是在NTLDR中搜索GDT域的空閑區(qū),創(chuàng)建調(diào)用門,然后我們就可以利用這個(gè)CALLGATE來進(jìn)入RING0了。這個(gè)方法非常巧妙,之所以不用選擇子系統(tǒng)08h所對(duì)應(yīng)的描述符,因?yàn)槿绻僮飨到y(tǒng)檢測(cè)到描述符對(duì)應(yīng)的代碼和數(shù)據(jù)的地址都在0x80000000H以下運(yùn)行的話,修改NTLDT后需要重起才會(huì)生效,會(huì)被認(rèn)為是非法進(jìn)入RING0,然后系統(tǒng)崩潰。
3 病毒防護(hù)的良好習(xí)慣
目前病毒十分猖狂,各用戶要注意防范,并養(yǎng)成安全用機(jī)習(xí)慣。下面談幾點(diǎn)病毒防范技術(shù)。(1)安裝操作系統(tǒng)前應(yīng)準(zhǔn)備好操作系統(tǒng)補(bǔ)丁和殺病毒軟件、防火墻軟件。安裝時(shí),必須撥掉網(wǎng)線,否則新裝的操作系統(tǒng)在很短的時(shí)間內(nèi)就會(huì)感染病毒,然后立即打補(bǔ)丁并安裝殺病毒軟件和防火墻軟件。(2)關(guān)閉病毒入侵和傳播通常使用的端口,如1433、137、138、139和445這些端口。強(qiáng)烈建議用戶關(guān)閉這些端口,關(guān)閉后將無法再使用網(wǎng)上鄰居和文件共享功能。如果要傳遞文件可以使用QQ或其他方式。(3)操作系統(tǒng)的登錄賬戶密碼不能設(shè)置過于簡(jiǎn)單或空密碼,必須設(shè)置復(fù)雜一點(diǎn)。否則系統(tǒng)無任何安全可言,連接上網(wǎng)絡(luò)后,肯定會(huì)感染病毒。防范病毒通過系統(tǒng)漏洞入侵的主要方法是打補(bǔ)丁、不設(shè)置密碼或過于簡(jiǎn)單的密碼。設(shè)置的密碼過于簡(jiǎn)單,再給操作系統(tǒng)打補(bǔ)丁都是于事無補(bǔ)的,這種情況下,病毒可以非??斓牟鲁雒艽a,實(shí)現(xiàn)直接入侵和系統(tǒng)感染。很多用戶不設(shè)置或設(shè)置用于簡(jiǎn)單的密碼,其實(shí)并不是方便了自己,而是方便了黑客或病毒的入侵。再次提示:一旦操作系統(tǒng)的密碼被黑客拿到手,那么你上網(wǎng)所有的操作都會(huì)被黑客知道,你在任何網(wǎng)頁(yè)中所輸入的登錄用戶名和密碼都會(huì)被黑客盜取。最近國(guó)內(nèi)很多網(wǎng)絡(luò)銀行客戶資金被盜就是因?yàn)橛脩羧狈Π踩庾R(shí)和沒有安全使用機(jī)器。而且現(xiàn)在有專門用于盜取用戶密碼和賬戶的病毒,這種盜取用戶網(wǎng)絡(luò)銀行資金的方法是先將病毒破解或者獲得的密碼,發(fā)給病毒操控者,然后成功盜取用戶的資金。(4)病毒軟件一定要隨時(shí)升級(jí),不要怕麻煩,一般每天都會(huì)有新的病毒出現(xiàn)。
MGF病毒進(jìn)入RING0的方法,有很多巧妙之處,比如MGF病毒在局域網(wǎng)的傳播上面是通過破解掉遠(yuǎn)程主機(jī)的共享密碼(密碼由病毒生成),然后把病毒復(fù)制到目標(biāo)機(jī)器的啟動(dòng)文件夾,目標(biāo)機(jī)器一旦重啟,病毒就開始感染??梢哉f,MGF病毒真是個(gè)“好”病毒。
參考文獻(xiàn):
[1][美]David A.Solomon.計(jì)算機(jī)網(wǎng)絡(luò)管理[M].北京:清華大學(xué)出版社,1999.
[2][美]Douglas E.Comer.TCP/IP網(wǎng)絡(luò)互連技術(shù)[M].北京:清華大學(xué)出版社,1998.
[3]佘志龍.Google Android SDK開發(fā)范例大全(3版)[M].北京:人民郵電出版社,2011.
作者單位:蘭州資源環(huán)境職業(yè)技術(shù)學(xué)院 教務(wù)處,蘭州 730021