Security 文件 什麼是木馬程式阿?
作者: 劉奕豪 (04-17 21:30) 發表討論 列印 詳細資料
1. 特洛伊木馬程式原理
一、 引言
  特洛伊木馬是 Trojan Horse 的中譯,是借自"木馬屠城記"中那只木馬的名稱。古希臘有大軍圍攻特洛伊城,逾年無法攻下。 有人獻計製造一隻高二丈的大木馬假裝作戰馬神,攻擊數天後仍然無功,遂留下木馬拔營而去。城中得到解圍的消息,及得到"木馬"這個奇異的戰利品,全城飲酒狂歡。 到午夜時份,全城軍民盡入夢鄉,匿於木馬中的將士開暗門垂繩而下,開啟城門及四處縱火,城外伏兵湧入,焚屠特洛伊城。後世稱這只木馬為"特洛伊木馬",現今電腦術語借用其名,意思是"一經進入,後患無窮"。 特洛伊木馬原則上它和Laplink 、 PCanywhere 等程式一樣,只是一種遠端管理工具。 而且本身不帶傷害性,也沒有感染力,所以不能稱之為病毒(也有人稱之為第二代病毒);但卻常常被視之為病毒。原因是如果有人不當的使用,破壞力可以比病毒更強。
二、木馬攻擊原理
  特洛伊木馬是一個程式,它駐留在目標電腦裡,可以隨電腦自動啟動並在某一連接進行偵聽,在對接收的資料識別後,對目標電腦執行特定的****作。 木馬,其實只是一個使用連接進行通訊的網路客戶/伺服器程式。
基本概念:網路客戶/伺服器模式的原理是一台主機提供伺服器(伺服端),另一台主機接受伺服器(客戶端)。 作為伺服端的主機一般會開啟一個預設的連接埠並進行監聽(Listen),如果有客戶端向伺服端的這一連接埠提出連接請求(Connect Request),伺服端上的相對應程式就會自動執行,來回覆客戶端的請求。對於特洛伊木馬,被控制端就成為一台伺服器。

三、特洛伊木馬隱身方法
  木馬程式會想盡一切辦法隱藏自己,主要途徑有:在工作程序中隱形:將程式設為「系統伺服器」可以偽裝自己。 當然它也會悄無聲息地啟動,木馬會在每次使用者啟動時自動載入伺服器端,Windows系統啟動時自動載入應用程式的方法,「木馬」都會用上,如:win.ini、system.ini、註冊表等等都是「木馬」藏身的好地方。
  在win.ini檔案中,在[WINDOWS]下面,「run=」和「load=」是可能載入「木馬」程式的途徑,一般情況下,它們的等號後面什麼都沒有,如果發現後面跟有路徑與檔案名稱不是您熟悉的啟動檔案,電腦就可能中「木馬」了。當然也得看清楚,因為好多「木馬」,如「AOL Trojan木馬」,它把自身偽裝成command.exe檔案,如果不注意可能不會發現它不是真正的系統啟動檔案。
 MLaplink 、 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 MicrosoftWindowsCurrentVersionRun」下的 Explorer 鍵值改為Explorer =「C:WINDOWSexpiorer.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 程式名」,那麼後面跟著的那個程式就是「木馬」程式,就是說已經中「木馬」了。
  在註冊表中的情況最複雜,使用regedit指令開啟註冊表編輯器,在點擊至:「HKEY-LOCAL-MACHINE Software Microsoft Windows Current Version Run」目錄下,檢視鍵值中有沒有自己不熟悉的自動啟動檔案,副檔名為EXE,這裡切記:有的「木馬」程式產生的檔案很像系統自身檔案,想使用偽裝矇混過關,如「Acid Battery v1.0木馬」,它將註冊表「HKEY-LOCAL-MACHINE SOFTWARE MicrosoftWindowsCurrentVersionRun」下的 Explorer 鍵值改為Explorer =「C:WINDOWSexpiorer.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」
下找到「木馬」程式的檔案名稱,再在整個註冊表中搜尋即可。
目前,除了上面介紹的隱身技術外,更新、更隱蔽的方法已經出現,那就是-驅動程式及動態連結技術。 驅動程式及動態連結技術和一般的木馬不同,它基本上擺脫了原有的木馬模式-監聽連接,而採用替代系統功能的方法(覆寫驅動程式或動態連結)。 這樣做的結果是:系統中沒有增加新的檔案(所以不能用掃瞄的方法搜尋)、不需要開啟新的連接(所以不能用連接監視的方法搜尋)、沒有新的程序(所以使用程序檢視的方法發現不了它,也不能用kill程序的方法終止它的執行)。 在正常執行時木馬幾乎沒有任何的症狀,而一旦木馬的控制端向被控端發出特定的訊息後,隱藏的程式就立即開始運作。

四、 特洛伊木馬防禦原理
  知道了木馬的攻擊原理和隱身方法,我們就可以採取措施進行防禦了。
  1.連接埠掃瞄
  連接埠掃瞄是檢查遠端機器有無木馬的最好辦法,連接埠掃瞄的原理非常簡單,掃瞄程式嘗試連接某個連接埠,如果成功,則說明連接埠開放,如果失敗或超過某個特定的時間(逾時),則說明連接埠關閉。但對於驅動程式/動態連結木馬,掃瞄連接是不起作用的。
  2.檢視連接
  檢視連接埠和連接掃瞄的原理基本相同,不過是在本地電腦上使用netstat -a檢視所有的TCP/UDP連接,檢視連接要比連接埠掃瞄快,但同樣是無法查出驅動程式/動態連結木馬,而且僅能在本地電腦使用。
  3.檢查註冊表
  上面在討論木馬的啟動方式時已經提到,木馬可以使用註冊表啟動(現在大部分的木馬都是使用註冊表啟動的,至少也把註冊表作為一個自我保護的方式),那麼,我們同樣可以使用檢查註冊表來發現木馬在註冊表裡留下的痕跡。
  4.尋找檔案
  尋找木馬特定的檔案也是一個常用的方法,木馬的一個特徵檔案是kernl32.exe,另一個是sysexlpr.exe,只要刪除了這兩個檔案,木馬就已經不起作用了。

2. 冰河木馬所包含的二支程式:
G_Server.exe伺服端程式。
G_Client.exe客戶漂啟新的連接(所以不能用連接監視的方法搜尋)、沒有新的程序(所以使用程序檢視的方法發現不了它,也不能用kill程序的方法終止它的執行)。 在正常執行時木馬幾乎沒有任何的症狀,而一旦木馬的控制端向被控端發出特定的訊息後,隱藏的程式就立即開始運作。

四、 特洛伊木馬防禦原理
  知道了木馬的攻擊原理和隱身方法,我們就可以採取措施進行防禦了。
  1.連接埠掃瞄
  連接埠掃瞄是檢查遠端機器有無木馬的最好辦法,連接埠掃瞄的原理非常簡單,掃瞄程式嘗試連接某個連接埠,如果成功,則說明連接埠開放,如果失敗或超過某個特定的時間(逾時),則說明連接埠關閉。但對於驅動程式/動態連結木馬,掃瞄連接是不起作用的。
  2.檢視連接
  檢視連接埠和連接掃瞄的原理基本相同,不過是在本地電腦上使用netstat -a檢視所有的TCP/UDP連接,檢視連接要比連接埠掃瞄快,但同樣是無法查出驅動程式/動態連結木馬,而且僅能在本地電腦使用。
  3.檢查註冊表
  上面在討論木馬的啟動方式時已經提到,木馬可以使用註冊表啟動(現在大部分的木馬都是使用註冊表啟動的,至少也把註冊表作為一個自我保護的方式),那麼,我們同樣可以使用檢查註冊表來發現木馬在註冊表裡留下的痕跡。
  4.尋找檔案
  尋找木馬特定的檔案也是一個常用的方法,木馬的一個特徵檔案是kernl32.exe,另一個是sysexlpr.exe,只要刪除了這兩個檔案,木馬就已經不起作用了。

2. 冰河木馬所包含的二支程式:
G_Server.exe伺服端程式。
G_Client.exe客戶端程式。
2002年元旦,大陸推出了冰河8.0正式版。作者聲明本軟體主要用途是配合網管進行遠程監控,凡使用本軟件惡意入侵他人電腦或網路者,後果自行負責。我們將伺服端程式植入210.x.x.x電腦內,利用168.192.0.2電腦執行客戶端程式呼叫。
回  答  者: lisa ( 初學者 2 級 ) [ 檢舉 ]
回答時間: 2005-10-18 11:43:28  
在說明什麼是 rootkit 之前, 要先說明, 什麼是 trojaned system commands ?

trojaned system commands 中文或可譯為 "特洛伊木馬程式" (或, 特洛伊系統指令).

相信大家都應該知道 "特洛伊木馬屠城記" 這個典故吧?!

凡是, 在表面上, 偽裝成正常的程式, 而實際上, 卻偷偷地, 把正常的程式換掉, 並留下一些特殊的系統後門, 以方便往後, 可以在暗地裡控制主機運作, 或進行破壞行為的程式, 我們就說, 這是一種特洛伊木馬程式, 俗稱: 後門程式(backdoor) 或木馬程式(trojan).

當系統中, 隱藏著這種程式時, 我們稱之為: 中了木馬.

木馬程式的來源, 大概可分為以下幾種:

系統被入侵(root-compromise), 遭 cracker 植入
中了主機系統中, 某位一般權限使用者精心設計的陷井
執行了來路不明的程式
安裝了被竄改過的程式套件
被 network worm (網路蠕蟲) 感染.
而其中, 又以: 系統被入侵, 感染蠕蟲, 執行來路不明的程式, 這三者, 最為常見.

以系統入侵而言, 大部份的 cracker, 在攻入某一部主機之後, 並不會做出, 立即而明顯的破壞, 只有下下品的駭客, 或急於炫耀自己, 假裝自己, 或滿足自己就是駭客一族的 script kids, 才會如此.

(實際上, 這些傢伙, 並不是真正的駭客, 僅是撿人現成的工具, 對有漏洞的主機, 進行攻擊行為)

通常, 他們會安裝數支木馬程式, 把正常的程式給換掉, 讓系統運作時, 儘量不出現任何異狀, 然後, 留下方便的後門, 供往後自由進出, 接著, 他們會在清除留下的痕跡(如記錄檔, 指令歷史檔) 之後, 悄然地離去. 等到哪天, 需要這部主機的資源時, 它會再進來.....

(上上品的駭客, 不會對系統做任何改變, 並且會通知站主, 該站那些有漏洞? 甚至會幫忙站主, 把漏洞補起來, 而且, 通常的名義是: 教育實驗性質, 他們比較在意: 是否能獲取駭客社群的敬重和地位)

所謂 rootkit, 就是有心人士, 整理這些常用的木馬程式, 做成一組程式套件, 以方便 cracker 攻入主機時, 在受害的主機上, 順利地編譯和安裝木馬程式.

有些 rootkit 純粹實驗性質, 也有 rootkit 本身, 就是一種 rootkit 木馬, 讓試玩 rootkit 者, 中了木馬. ( rootkit 中的 rootkit 乎?! ;-) )

rootkit 的種類很多. 通常 rootkit 中, 所包含的木馬程式, 大都以原始程式碼的形式散佈, 這些程式, 很多是由早期的 BSD UNIX 系統, 逐步移植(port)過來的, 因此, 幾乎在各種機器平台上, 都有 rootkit 的蹤影, 而且, 變種及花樣, 可以說是, 形形色色, 五花八門.

(我目前手上的 rootkit, 就不下數十隻, Linux, FreeBSD, Solaris, NT, W2K, Novell, DOS.... 都有)

一般, rootkit 中, 常見的木馬程式及工具有:

bindshell
chfn
chsh
crontab
du
find
fix
ifconfig
inetd
killall
linsniffer
login
ls
netstat
passwd
pidof
ps
rshd
sniffchk
syslogd
tcpd
top
wted
z2



二. 中了 rootkit 的症狀:

主機中了木馬程式之後, 通常不會有太大的異樣. (不過, 品質低劣的木馬程式, 則會有明顯的病狀.)

網管人員就算用 ps, netstat, lsof, top 等程式, 來觀察主機的運作, 也不會發現記憶體中, 有什麼奇怪的行程(process), 這是因為, 這幾支常用的指令, 已經被 cracker 換掉了, 換言之, 用這些木馬程式來觀看時, 您看到的畫面, 很可能, 都是假造的!

不過, 木馬程式, 畢竟不是真正的程式, 它和原有的程式之間, 總是存在著些許的差異, 或許在短期內, 感覺不出有什麼異樣, 不過, 長期下來, 總是無法完全發揮該程式原有的真正功能. 因此, 這些差異, 終將在有一天, 造成主機異常的運作.

因此, 一旦您發現系統有任何奇怪的現象, 第一個要做的事是:

試著去懷疑: 我的主機是否中了木馬啦?!

轉貼自∼奇摩知識∼回  答  者: 甜心