木馬是隨計算機或Windows的啟動而啟動並掌握一定的控制權的,其啟動方式可謂多種多樣,通過注冊表啟動、通過System.ini啟動、通過某些特定程序啟動等,真是防不勝防。其實只要能夠遏制住不讓它啟動,木馬就沒什麼用了,這裡就簡單說說木馬的啟動方式,知己知彼百戰不殆嘛。
一、通過"開始\程序\啟動"
隱蔽性:2星
應用程度:較低
這也是一種很常見的方式,很多正常的程序都用它,大家常用的QQ就是用這種方式實現自啟動的,但木馬卻很少用它。因為啟動組的每人會會出現在“系統配置實用程序”(msconfig.exe,以下簡稱msconfig)中。事實上,出現在“開始”菜單的“程序\啟動”中足以引起菜鳥的注意,所以,相信不會有木馬用這種啟動方式。
二、通過Win.ini文件
隱蔽性:3星
應用程度:較低
應用案例:Asylum
同啟動組一樣,這也是從Windows3.2開始就可以使用的方法,是從Win16遺傳到Win32的。在Windows3.2中,Win.ini就相當於Windows9x中的注冊表,在該文件中的[Windows]域中的load和run項會在Windows啟動時運行,這兩個項目也會出現在msconfig中。而且,在Windows98安裝完成後這兩項就會被Windows的程序使用了,也不很適合木馬使用。
三、通過注冊表啟動
1、通過HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run,
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run和
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
隱蔽性:3.5星
應用程度:極高
應用案例:BO2000,GOP,NetSpy,IEthief,冰河……
這是很多Windows程序都采用的方法,也是木馬最常用的。使用非常方便,但也容易被人發現,由於其應用太廣,所以幾乎提到木馬,就會讓人想到這幾個注冊表中的主鍵,通常木馬會使用最後一個。使用Windows自帶的程序:msconfig或注冊表編輯器(regedit.exe,以下簡稱regedit)都可以將它輕易的刪除,所以這種方法並不十分可靠。但可以在木馬程序中加一個時間控件,以便實時監視注冊表中自身的啟動鍵值是否存在,一旦發現被刪除,則立即重新寫入,以保證下次Windows啟動時自己能被運行。這樣木馬程序和注冊表中的啟動鍵值之間形成了一種互相保護的狀態。木馬程序未中止,啟動鍵值就無法刪除(手工刪除後,木馬程序又自動添加上了),相反的,不刪除啟動鍵值,下次啟動Windows還會啟動木馬。怎麼辦呢?其實破解它並不難,即使在沒有任何工具軟件的情況下也能輕易解除這種互相保護。
破解方法:首先,以安全模式啟動Windows,這時,Windows不會加載注冊表中的項目,因此木馬不會被啟動,相互保護的狀況也就不攻自破了;然後,你就可以刪除注冊表中的鍵值和相應的木馬程序了。
2、通過HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce,
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce和
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
隱蔽性:4星
應用程度:較低
應用案例:Happy99月
這種方法好像用的人不是很多,但隱蔽性比上一種方法好,它的內容不會出現在msconfig中。在這個鍵值下的項目和上一種相似,會在Windows啟動時啟動,但Windows啟動後,該鍵值下的項目會被清空,因而不易被發現,但是只能啟動一次,木馬如何能發揮效果呢?
其實很簡單,不是只能啟動一次嗎?那木馬啟動成功後再在這裡添加一次不就行了嗎?在Delphi中這不過3、5行程序。雖說這些項目不會出現在msconfig中,但是在Regedit中卻可以直接將它刪除,那麼木馬也就從此失效了。
還有一種方法,不是在啟動的時候加而是在退出Windows的時候加,這要求木馬程序本身要截獲WIndows的消息,當發現關閉Windows消息時,暫停關閉過程,添加注冊表項目,然後才開始關閉Windows,這樣用Regedit也找不到它的蹤跡了。這種方法也有個缺點,就是一旦Windows異常中止(對於Windows9x這是經常的),木馬也就失效了。
破解他們的方法也可以用安全模式。
另外使用這三個鍵值並不完全一樣,通常木馬會選擇第一個,因為在第二個鍵值下的項目會在Windows啟動完成前運行,並等待程序結束會才繼續啟動Windows。
四、通過Autoexec.bat文件,或winstart.bat,config.sys文件
隱蔽性:3.5星
應用程度:較低
其實這種方法並不適合木馬使用,因為該文件會在Windows啟動前運行,這時系統處於DOS環境,只能運行16位應用程序,Windows下的32位程序是不能運行的。因此也就失去了木馬的意義。不過,這並不是說它不能用於啟動木馬。可以想象,SoftIce for Win98(功能強大的程序調試工具,被黑客奉為至寶,,常用於破解應用程序)也是先要在Autoexec.bat文件中運行然後才能在Windows中呼叫出窗口,進行調試的,既然如此,誰能保證木馬不會這樣啟動呢?到目前為止,我還沒見過這樣啟動的木馬,我想能寫這樣木馬的人一定是高手中的高手了。
另外,這兩個BAT文件常被用於破壞,它們會在這個文件中加入類似"Deltree C:\*.*"和"Format C:/u"的行,這樣,在你啟動計算機後還未啟動Windows,你的C盤已然空空如也。
五、通過System.ini文件
隱蔽性:5星
應用程度:一般
應用案例:尼姆達
事實上,System.ini文件並沒有給用戶可用的啟動項目,然而通過它啟動卻是非常好用的。在System.ini文件的[Boot]域中的Shell項的值正常情況下是"Explorer.exe",這是Windows的外殼程序,換一個程序就可以徹底改變Windows的面貌(如改為Progman.exe就可以讓Win9x變成Windows3.2)。我們可以在"Explorer.exe"後加上木馬程序的路徑,這樣Windows啟動後木馬也就隨之啟動,而且即使是安全模式啟動也不會跳過這一項,這樣木馬也就可以保證永遠隨Windows啟動了,名噪一時的尼姆達病毒就是用的這種方法。這時,如果木馬程序也具有自動檢測添加Shell項的功能的話,那簡直是天衣無縫的絕配,我想除了使用查看進程的工具中止木馬,再修改Shell項和刪除木馬文件外是沒有破解之法了。但這種方式也有個先天的不足,因為只有Shell這一項嘛,如果有兩個木馬都使用這種方式實現自啟動,那麼後來的木馬可能會使前一個無法啟動,呵呵以毒攻毒啊。
六、通過某特定程序或文件啟動
1、寄生於特定程序之中
隱蔽性:5星
應用程度:一般
即木馬和正常程序捆綁,有點類似於病毒,程序在運行時,木馬程序先獲得控制權或另開一個線程以監視用戶操作,截取密碼等,這類木馬編寫的難度較大,需要了解PE文件結構和Windows的底層知識(直接使用捆綁程序除外)。
2、將特定的程序改名
隱蔽性:5星
應用程度:常見
這種方式常見於針對QQ的木馬,例如將QQ的啟動文件QQ2000b.exe,改為QQ2000b.ico.exe(Windows默認是不顯示擴展名的,因此它會被顯示為QQ2000b.ico,而用戶會認為它是一個圖標),再將木馬程序改為QQ2000b.exe,此後,用戶運行QQ,實際是運行了QQ木馬,再由QQ木馬去啟動真正的QQ,這種方式實現起來要比上一種簡單的多。
3、文件關聯
隱蔽性:5星
應用程度:常見
應用案例:廣外女生
通常木馬程序會將自己和TXT文件或EXE文件關聯,這樣當你打開一個文本文件或運行一個程序時,木馬也就神不知鬼不覺的啟動了。
這類通過特定程序或文件啟動的木馬,發現比較困難,但查殺並不難。一般地,只要刪除相應的文件和注冊表鍵值即可。