來源:
http://www.ns-bbs.com/te...sp?id=189 一、 引言
特洛伊木馬是 Trojan Horse 的中譯,是借自"木馬屠城記"中那只木馬的名稱。古希臘有大軍圍攻特洛伊城,逾年無法攻下。有人獻計製造一隻高二丈的大木馬假裝作戰馬神,攻擊數天後仍然無功,遂留下木馬拔營而去。城中得到解圍的消息,及得到"木馬"這個奇異的戰利品,全城飲酒狂歡。到午夜時份,全城軍民盡入夢鄉,匿於木馬中的將士開暗門垂繩而下,開啟城門及四處縱火,城外伏兵湧入,焚屠特洛伊城。後世稱這只木馬為"特洛伊木馬",現今電腦術語借用其名,意思是"一經進入,後患無窮"。 特洛伊木馬原則上它和 Laplink 、 PCanywhere 等程式一樣,只是一種遠端管理工具。而且本身不帶傷害性,也沒有感染力,所以不能稱之為病毒(也有人稱之為第二代病毒);但卻常常被視之為病毒。原因是如果有人不當的使用,破壞力可以比病毒更強。
二、木馬攻擊原理
特洛伊木馬是一個程式,它駐留在目標電腦裡,可以隨電腦自動啟動並在某一連接進行偵聽,在對接收的資料識別後,對目標電腦執行特定的****作。 木馬,其實只是一個使用連接進行通訊的網路客戶/伺服器程式。
基本概念:網路客戶/伺服器模式的原理是一台主機提供伺服器(伺服端),另一台主機接受伺服器(客戶端)。作為伺服端的主機一般會開啟一個預設的連接埠並進行監聽(Listen),如果有客戶端向伺服端的這一連接埠提出連接請求(Connect Request),伺服端上的相對應程式就會自動執行,來回覆客戶端的請求。對於特洛伊木馬,被控制端就成為一台伺服器。
三、特洛伊木馬隱身方法
木馬程式會想盡一切辦法隱藏自己,主要途徑有:在工作程序中隱形:將程式設為「系統伺服器」可以偽裝自己。當然它也會悄無聲息地啟動,木馬會在每次使用者啟動時自動載入伺服器端,Windows 系統啟動時自動載入應用程式的方法,「木馬」都會用上,如:win.ini、system.ini、註冊表等等都是「木馬」藏身的好地方。
在 win.ini 檔案中,在[WINDOWS]下面,「run=」和「load=」是可能載入「木馬」程式的途徑,一般情況下,它們的等號後面什麼都沒有,如果發現後面跟有路徑與檔案名稱不是您熟悉的啟動檔案,電腦就可能中「木馬」了。當然也得看清楚,因為好多「木馬」,如「AOL Trojan木馬」,它把自身偽裝成 command.exe 檔案,如果不注意可能不會發現它不是真正的系統啟動檔案。
在 system.ini 檔案中,在[BOOT]下面有個「shell=檔案名稱」。正確的檔案名稱應該是「explorer.exe」,如果不是「explorer.exe」,而是「shell= explorer.exe 程式名」,那麼後面跟著的那個程式就是「木馬」程式,就是說已經中「木馬」了。
在註冊表中的情況最複雜,使用 regedit 指令開啟註冊表編輯器,在點擊至:「HKEY-LOCAL-MACHINE \Software \Microsoft \Windows \Current Version \Run」目錄下,檢視鍵值中有沒有自己不熟悉的自動啟動檔案,副檔名為 EXE,這裡切記:有的「木馬」程式產生的檔案很像系統自身檔案,想使用偽裝矇混過關,如「Acid Battery v1.0木馬」,它將註冊表「HKEY-LOCAL-MACHINE \SOFTWARE \Microsoft\Windows\CurrentVersion\Run」下的 Explorer 鍵值改為 Explorer =「C:\WINDOWS\expiorer.exe」,「木馬」程式與真正的 Explorer 之間只有「i」與「l」的差別。當然在註冊表中還有很多地方都可以隱藏「木馬」程式,如:
「HKEY -CURRENT-USER\Software\Microsoft\Windows\CurrentVersion\Run」、「HKEY-USERS \Software\Microsoft\Windows\CurrentVersion\Run」的目錄下都有可能,最好的辦法就是在「HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\ CurrentVersion\Run」 下找到「木馬」程式的檔案名稱,再在整個註冊表中搜尋即可。
目前,除了上面介紹的隱身技術外,更新、更隱蔽的方法已經出現,那就是-驅動程式及動態連結技術。 驅動程式及動態連結技術和一般的木馬不同,它基本上擺脫了原有的木馬模式-監聽連接,而採用替代系統功能的方法(覆寫驅動程式或動態連結)。
這樣做的結果是:系統中沒有增加新的檔案(所以不能用掃瞄的方法搜尋)、不需要間@在 system.ini 檔案中,在[BOOT]下面有個「shell=檔案名稱」。正確的檔案名稱應該是「explorer.exe」,如果不是「explorer.exe」,而是「shell= explorer.exe 程式名」,那麼後面跟著的那個程式就是「木馬」程式,就是說已經中「木馬」了。
目前,除了上面介紹的隱身技術外,更新、更隱蔽的方法已經出現,那就是-驅動程式及動態連結技術。 驅動程式及動態連結技術和一般的木馬不同,它基本上擺脫了原有的木馬模式-監聽連接,而採用替代系統功能的方法(覆寫驅動程式或動態連結)。
這樣做的結果是:系統中沒有增加新的檔案(所以不能用掃瞄的方法搜尋)、不需要開啟新的連接(所以不能用連接監視的方法搜尋)、沒有新的程序(所以使用程序檢視的方法發現不了它,也不能用 kill 程序的方法終止它的執行)。在正常執行時木馬幾乎沒有任何的症狀,而一旦木馬的控制端向被控端發出特定的訊息後,隱藏的程式就立即開始運作。
四、 特洛伊木馬防禦原理
知道了木馬的攻擊原理和隱身方法,我們就可以採取措施進行防禦了。
連接埠掃瞄
連接埠掃瞄是檢查遠端機器有無木馬的最好辦法,連接埠掃瞄的原理非常簡單,掃瞄程式嘗試連接某個連接埠,如果成功,則說明連接埠開放,如果失敗或超過某個特定的時間(逾時),則說明連接埠關閉。但對於驅動程式/動態連結木馬,掃瞄連接是不起作用的。
檢視連接
檢視連接埠和連接掃瞄的原理基本相同,不過是在本地電腦上使用 netstat -a 檢視所有的 TCP/UDP 連接,檢視連接要比連接埠掃瞄快,但同樣是無法查出驅動程式/動態連結木馬,而且僅能在本地電腦使用。
檢查註冊表
上面在討論木馬的啟動方式時已經提到,木馬可以使用註冊表啟動(現在大部分的木馬都是使用註冊表啟動的,至少也把註冊表作為一個自我保護的方式),那麼,我們同樣可以使用檢查註冊表來發現木馬在註冊表裡留下的痕跡。
尋找檔案
尋找木馬特定的檔案也是一個常用的方法,木馬的一個特徵檔案是 kernl32.exe,另一個是 sysexlpr.exe,只要刪除了這兩個檔案,木馬就已經不起作用了。