常見木馬技術和手動檢測方法_第1頁
常見木馬技術和手動檢測方法_第2頁
常見木馬技術和手動檢測方法_第3頁
常見木馬技術和手動檢測方法_第4頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、常見木馬技術和手動檢測方法所有病毒 case, Symantec用戶抱怨的無非兩項,一是查不到病毒,二是不斷的查到相同的病毒(絕大多數是木馬 downloader, backdoor.trojan )。木馬是什么?是一個有惡意行為程序。殺毒軟件怎么查殺它?特征碼和行為分析。如果一個木馬在技術上或者創(chuàng)意上做的稍微好些,我覺得殺毒軟件對于已經中毒的電腦很難起到作用,經常是查到了一部分,落掉一部分,而落掉的部分又會監(jiān)控、恢復被查殺的部分,造成上面所說的第二種情況,而這又一定會包含第一種情況。木馬既然是程序,惡意程序,那它運行也不免會露出蛛絲馬跡,程序運行的兩個必要條件 進程(模塊,線程)和加載(自啟

2、動和觸發(fā)) 。那我們查找木馬也從這兩個大的方向入手,理論上可以找出所有木馬,但是這跟做數學題一樣,大方法是有的,但是操作過程千變萬化的。工欲善其事,必先利其器。首先要找?guī)讉€適合自己的工具:主工具我個人喜歡用冰刃,它能干大部分的檢查啟動項和進程監(jiān)控。兵刃功能上的不足,利用其他的軟件補充。FileMon 和 RegMon 可以查找針對特定文件和注冊表的進程信息;ProceXP 可以模塊反向查找進程,也可以看出進程之間的調用關系;SSDT Hook 修復, SSDT Inline Hook復工具(兵刃可以看到SSDT,但沒有修復功能),但是冰刃也可以看到絕大多數的使用隱藏技術的進程和線程;SRENG

3、 可以顯示進程、模塊、驅動的簽名(可以提高我們的效率),以及強大的自啟動項檢測;Symantec Process Viewer 會 hook 住 ntcreateprocess,修ntcreateprocessxp, ntopenkey, ntterminateprocess四個 SSDT 服務函數,會監(jiān)控開機到當前所有運行過的進程,能起到參考作用; TCPView 可以實時查看創(chuàng)建連接和已經連接的端口和相應的進程; MD5 計算工具; Mr.Google 和百度。具體方法:第一部分看進程(模塊,線程)。最笨的木馬都有自己的進程,還不隱藏,還起個大家都知道的名字。這個太簡單了,簡單 googl

4、e 一下,用任務管理器都能發(fā)現。有些木馬本身是修改了或替換了的原有的正常的 exe文件,或者系統(tǒng)文件,因此不要完全依賴于進程名字, MD5 值還是有必要看下的;有些是隱藏進程的( Rootkit 技術,比如 Hook 在 WIN32API 或者 SSDT 的 ntquerysysteminfomation ),所幸冰刃可以看得到大部分隱藏進程。除此之外,如果木馬沒有技術來修改文件修改時間,有的木馬唯恐別人不認識它,占用內存, CPU 很高,向外發(fā)包,這些是更笨的木馬,任務管理器以及 TCPview( 發(fā)包的 )很容易確定進程。高級的木馬首先是隱藏自己做的很好的,這些木馬只干該干的事情,并且最大

5、程度上減少對系統(tǒng)的影響。我相信用戶如果真的中了這個級別的木馬,SAV 又發(fā)現不了,用戶就不會找我們,因為他自己也不知道。就怕 SAV 能發(fā)現它(畢竟 SAV 是自動的,特征碼加行為檢測),但是又不徹底。因為此類木馬很多都會有個影子程序在監(jiān)控,并恢復被刪除的惡意程序。影子程序怎么做?無非是恢復文件,恢復注冊表,創(chuàng)建進程,動態(tài)注入dll 或者線程。如果影子程序本身是一個進程,那我們的目的還是查出這個進程。分別用FileMon ;RegMon;冰刃的監(jiān)控進程創(chuàng)建;動態(tài)注入dll 首先需要創(chuàng)建被刪除的惡意dll 文件,用FileMon ;線程動態(tài)注入我還沒找到一個直接根據這個線索找到可疑進程的方法(不

6、清楚冰刃監(jiān)控進程創(chuàng)建是否可行),不過也可以用稍微笨一點的方法比如枚舉所有進程等方法;另外第二部分查看加載項也是可行的,因為影子程序本身也是需要啟動的。由于影子程序本身基本上不做惡意行為,本身不包含惡意代碼,而應子程序釋放的木馬文件在影子程序處肯定以加密后的資源形勢存在,因此就很難被 SAV 自動查到了(除非其他用戶提交了樣本, SRC 又加到病毒定義里面,不過把影子程序都加到病毒定義,那病毒定義文件得多大?),因此經常會發(fā)生 SAV 總是在相同的位置發(fā)現相同的病毒文件的情況了。如果每個病毒都有自己獨立的進程,查木馬就是查找進程,那我們就太好做了,但是沒有這個么好的事情。相當一部分的木馬沒有自己

7、獨立的進程,只是以模塊(絕大多數情況下是 dll 文件,偶爾有 ocx 插件)形勢注入到系統(tǒng)進程,比如 iexplore.exe, explorer.exe, svchost.exe, winlogon.exe, smss.exe, csrss.exe等等。此時做可疑動作的進程就是這些系統(tǒng)進程了,找到這些進程病毒代表我們找到了木馬。此時在找到宿主進程文件的前提下,用冰刃查找該進程所調用的模塊,可以發(fā)現一般有上百個之多,頭大了;用 symantec process viewer 比兵刃強點,能查到這些模塊對應文件的創(chuàng)建時間;有的殺毒軟件的進程讀取器(例如 KV2007 )還可以過濾掉所有 mic

8、rosoft 簽名的 dll 文件,這樣會方便一些。但是萬幸任何一個dll 不可能自動注入到某一個進程,或者需要靜態(tài)加載,或者需要動態(tài)加載,或者替換加載。靜態(tài)加載需要在系統(tǒng)自啟動項中有加載的語句(例如rundll32.exe 加載 , winlogon.exe 加載,以服務的形式被svchost.exe加載等等),這些項的查找利用 Sreng.exe應該都不難找到。如果是動態(tài)加載,那么肯定會有一個進程(模塊、線程)運行,做這個 dll 注入的動作,可以 嘗試(不能保證) 用 FileMon 或者冰刃的監(jiān)控進程創(chuàng)建去監(jiān)控動態(tài)加載過程;但是更多的情況下需要從觀察進程(模塊)以及自啟動項來查找,畢竟

9、這個動態(tài)加載的命令不是系統(tǒng)給的,一定是有特定的進程(模塊,線程)做這個事情,而這個進程本身也是需要加載的,因此也可以使用查找加載項的方法。替換加載通常是把正常的dll 改名,然后木馬文件本身再改名為原來的正常的dll 文件名,這樣進程按照規(guī)定正常加載就會加載到木馬dll 文件,而這個木馬dll 會在宿主進程需要調用該 dll 的正常功能的時候,會進行函數轉發(fā)到原來的dll 文件,這樣也不會影響原來程序的功能,對于此類的注入,手動方法也許能用的也就剩下MD5 驗證了。提到模塊,那就需要提到線程,進程注入型的木馬注入到進程中的是一個模塊,也就是說,必須有一個模塊文件的存在,這樣我們可以找到這個模塊

10、并通過對其文件進行簽名驗證來找出注入木馬;而線程注入型的木馬,注入到進程中的卻只是一段代碼,是沒有文件存在的,雖然可以利用冰刃的查看線程查看每個進程的各個線程,但通過這個想發(fā)現并找出哪一個線程是木馬的,我估計全世界沒多少人。好在線程加載自己本身不能完成,需要加載程序去做這個事情,我們找不到可疑線程,找到可疑的加載程序(進程、模塊、線程)也是一樣的。記得中學的時候說到的解題方法,在我們TS 部門經常會用到兩個不同方向的思路,窮舉排除法和逆推分析法。就說一個 Rtvscan.exe占用 CPU 高的問題,如果根據經驗,查 KB ,查資料把可能的原因都列出來,然后和用戶的情況作比較,最終找到符合情況

11、的一種,這就是窮舉排除法; 如果對 Rtvscan.exe第二部分看加載這個部分我想看過上面的 dll 注入部分的話會受到一定的啟發(fā)。任何一種木馬不是系統(tǒng)生來就有的,肯定是后天裝上的。那這個木馬不管是進程還是模塊,也是需要啟動的,這個啟動(也就是加載)過程,想一想也就兩種:隨著系統(tǒng)啟動自己啟動,觸發(fā)某個動作啟動。隨著系統(tǒng)啟動自己啟動,大部分的木馬會有這種方式,但是路徑就五花八門了。最常見的HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun有很多的初級木馬都會在這里有體現,除此之外此前總結過以下的有可能的系統(tǒng)自啟動項加載位置1.

12、Run 鍵Run 鍵是最常見的病毒自啟動之處,該鍵位置是HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun和HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun ,其下的所有程序在每次啟動登錄時都會按順序自動執(zhí)行。HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplore rRun 和 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrent

13、Version PoliciesExplorerRun ,也會自動執(zhí)行。2.RunOnce 鍵HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce和HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce,與 Run 不同的是, RunOnce 下的程序僅會被自動執(zhí)行一次。3.RunServicesOnce鍵HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServicesOnc e和HK

14、EY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServicesO nce,其中的程序會在系統(tǒng)加載時自動啟動執(zhí)行一次。4.RunServices 鍵HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServices和HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion RunServices, RunServices 繼 RunServicesOnce 之后啟動。5.RunOnceEx 鍵HKEY_CUR

15、RENT_USERSOFTWAREMicrosoftWindowsCurrentVersionRunOnceE x和HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnce Ex,該鍵是 Windows XP/2003 特有的自啟動注冊表項,6.windows 鍵HKEY_CURRENT_USERSoftwareMicrosoftWindowsNTCurrentVersionWindows,該鍵下有 load 鍵值,一般情況下其值為空,如果這里有加載自啟動程序,則有可能是可疑文件。7.Winlogon 鍵HKEY_CURRE

16、NT_USERSOFTWAREMicrosoftWindows NTCurrentVersionWinlogon 和HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon ,下面的 Notify 、 Userinit 、Shell 鍵值也會有自啟動的程序,而且其鍵值可以用逗號分隔,從而實現登錄的時候啟動多個程序。其中Notify 一般為空, Shell 一般為 Explorer.exe, Userinit 一般為 C:WINDOWSsystem32userinit.exe 。8.其他注冊表位置還有一些其他鍵值,經常

17、會有一些程序在這里自動運行,如:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesSystemShell,HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionShellServiceObjectDelayLoad ,HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsSystemScripts,HKEY_LOCAL_MACHINESoftwarePoliciesMicrosoftWindowsSystemScrip

18、ts。Symantec 的 KB 中也有檢查注冊表,查找可疑文件的方法:Title: Common loading points for viruses, worms, and Trojan horse programs onWindows NT/2000/XP/2003Document ID: 2001060517115206Web URL: Title: Common loading points for viruses, worms, and Trojan horse programs on Windows 98/95/3.1xDocument ID: 1999052415383948W

19、eb URL: Title: Possible loading points for viruses and security risks on computers that run Red Hat Enterprise Linux and SuSE LinuxDocument ID: 2005101812364548Web URL: 3 )檢查 win.ini 文件和 system.ini 文件。Win.ini 位于 C:Windows 下,其 windows 字段中有啟動命令 “ load=和”“ run=,”通常 “ =后”面是空白的,如果后面跟著程序,很可能就是病毒程序。System.

20、ini 位于 C:Windows 下,其 boot 字段一般為 shell=Explorer.exe 如果后面跟著程序,很可能就是木馬程序; 其386Enh 字段內的 “driver=路徑 程序名 ”,也有可能有病毒程序加載項;其 mic 、 drivers 、 drivers32 三個字段,也有可能有病毒程序加載項。4 )其他方法:可以通過查找msconfig,以及查看服務中的automatic的服務的方法,有時也可以找出可疑文件。其實從實際當中的例子來看,除了上面的HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun 之外,

21、 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionWinlogon也是最近很多木馬自啟動加載的地方。除此之外,很重要的自啟動方式服務啟動。所有的服務啟動項都會在HKEY_LOCAL_MACHINESYSTEMCurrentControlSetService 下面列出來,但是基本上看起來沒什么頭緒。這些服務自啟動又會分為win32服務應用程序和驅動程序,用SRENG 可以很清楚的看出這兩部分。Win32 服務應用程序就是系統(tǒng)當中管理工具 服務里面的內容,包括 Symantec Antivirus 服務。其主文件可以是單獨的 ex

22、e 文件,例如 rtvscan.exe;也可以是一個 dll 文件,會被svchost.exe進程調用而自動啟動( svchost.exe的作用就是用同一個進程提供不同的系統(tǒng)或者非系統(tǒng)的服務,從而節(jié)省系統(tǒng)資源;而這恰好也成了很多木馬很好的自啟動加載點,很多時候我們看到 svchost.exe做一些異常的事情,或者從冰刃的創(chuàng)建進程查看看到svchost.exe創(chuàng)建木馬進程,肯定就是有惡意的dll 以 win32 服務的形勢被svchost.exe加載)。驅動程序啟動也是很多木馬(驅動級木馬)自啟動加載的地方。首先自啟動加載首先需要一個 sys 文件,通常位置是C:windowssystem32d

23、rivers 目錄里面;另外會在控制面板 設備管理器 非即插即用設備里面會有該設備驅動的信息。 SAV 的 SAVRT 驅動, SEP 的 sysplant 驅動都是此類。對于此類的木馬,我們往往需要在先關掉保護進程的前提下,卸載該設備,刪除注冊表,在刪除sys 文件。以上是自啟動木馬,除此之外是觸發(fā)式木馬。觸發(fā)式木馬是當你進行某一操作時會觸發(fā)木馬的啟動機制,使得木馬啟動,如果你永遠不進行這一操作,而木馬則永遠不會啟動。這樣,事實上對于自啟動木馬,我們仔細查找各個啟動項,總能找到蛛絲馬跡;不過觸發(fā)是木馬就可以充分發(fā)揮作者的想象空間了,對我們來說也是更大的挑戰(zhàn)。最常見的也是我們首先要檢查的當然就

24、是Autorun.inf了,這個臭名昭著,一般都會關聯(lián)到同一個目錄下的一個exe 文件。通常此文件會以隱藏文件的形式出現,更有些惡毒的會加上“注冊表監(jiān)控并回寫”來為文件隱藏護航,你一旦更改系統(tǒng)為“顯示所有文件”,它馬上會再次改為“不顯示隱藏文件”。更有甚者,很多最新的木馬對這個autorun.inf和關聯(lián)的 exe 文件使用rootkit 技術,隱藏的更為隱蔽。處理方法:使用冰刃,它可以顯示所有的隱藏文件大部分的使用的rootkit保護的文件,由于 autorun.inf和關聯(lián)的 exe 文件通常都是木馬的安裝文件,大可直接刪除。刪除后,隱藏文件恢復到注冊表HKLMSoftwareMicros

25、oftWindowsCurrentVersionExporlerAdvancedFolderHiddenShowAll 下的 checkvalue 值改為 1。另外 autorun.inf修改了硬盤的打開屬性,刪除后盤附打不開,在注冊表中搜索該exe 文件名稱,找到后刪除。另一種常見的觸發(fā)方式是修改文件關聯(lián)。文件關聯(lián)就是某一類型的文件與某一程序的對應關系,我們的系統(tǒng)中有無數種文件格式,比如:圖片文件(以.bmp .jpg .gif等為擴展名)、音樂文件 (mp3 mp4 等) .當你雙擊一個圖片時,系統(tǒng)會調用看圖程序來打開并顯示圖片,而不是調用播放器來播放圖片,系統(tǒng)為什么會知道要調用看圖程序而

26、不是調用播放器呢?這就是因為文件關聯(lián)的存在,在注冊表中,圖片文件已經與看圖程序關聯(lián)在了一起,相應的,音樂文件與播放器關聯(lián)在了一起,大多數類型的文件都與某一特定程序有關聯(lián)。這樣,系統(tǒng)才知道,打開什么樣的文件需要調用什么程序。木馬就是把某一特定類型文件的關聯(lián)改為了與它自己關聯(lián),這時你一旦打開這一類型的文件就會觸發(fā)木馬的啟動。由于木馬啟動后,會由它再調用正常的關聯(lián)程序,所以,文件仍然會正常打開,而你也就不知道其實你的操作已經將木馬啟動了起來。木馬會改哪種文件的關聯(lián)呢?這只有木馬的作者才知道。系統(tǒng)中又有多少文件關聯(lián)可供它改呢?HKEY_CLASSIS_ROOT下的子項全部都是,怎么也得上千個吧。這樣,只要你打開被關聯(lián)格式的文件,就會觸發(fā)木馬,一般該木馬還會指向到原來的關聯(lián)進程,這個文件也可以正常打開,因此用戶是注意不到的。如果這個木馬的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論