木馬攻擊原理
木馬程序是一種客戶機服務(wù)器程序,典型結(jié)構(gòu)為客戶端/服務(wù)器(Client/Server,C/S)模式,服務(wù)器端(被攻擊的主機)程序在運行時,黑客可以使用對應(yīng)的客戶端直接控制目標(biāo)主機。操作系統(tǒng)用戶權(quán)限管理中有一個基本規(guī)則,就是在本機直接啟動運行的程序擁有與使用者相同的權(quán)限。假設(shè)你以管理員的身份使用機器,那么從本地硬盤啟動的一個應(yīng)用程序就享有管理員權(quán)限,可以操作本機的全部資源。但是從外部接入的程序一般沒有對硬盤操作訪問的權(quán)限。木馬服務(wù)器端就是利用了這個規(guī)則,植入目標(biāo)主機,誘導(dǎo)用戶執(zhí)行,獲取目標(biāo)主機的操作權(quán)限,以達(dá)到控制目標(biāo)主機的目的的。
木馬程序的服務(wù)器端程序是需要植入到目標(biāo)主機的部分,植入目標(biāo)主機后作為響應(yīng)程序??蛻舳顺绦蚴怯脕砜刂颇繕?biāo)主機的部分,安裝在控制者的計算機上,它的作用是連接木馬服務(wù)器端程序,監(jiān)視或控制遠(yuǎn)程計算機。
典型的木馬工作原理是:當(dāng)服務(wù)器端程序在目標(biāo)主機上執(zhí)行后,木馬打開一個默認(rèn)的端口進(jìn)行監(jiān)聽,當(dāng)客戶端(控制端)向服務(wù)器端(被控主機)提出連接請求時,被控主機上的木馬程序就會自動應(yīng)答客戶端的請求,服務(wù)器端程序與客戶端建立連接后,客戶端(控制端)就可以發(fā)送各類控制指令對服務(wù)器端(被控主機)進(jìn)行完全控制,其操作幾乎與在被控主機的本機操作的權(quán)限完全相同。
木馬軟件的終極目標(biāo)是實現(xiàn)對目標(biāo)主機的控制,但是為了實現(xiàn)此目標(biāo),木馬軟件必須采取多種方式偽裝,以確保更容易地傳播,更隱蔽地駐留在目標(biāo)主機中。
下面介紹木馬的種植原理和木馬的隱藏。
(1)木馬種植原理
木馬程序最核心的一個要求是能夠?qū)⒎?wù)器端程序植入目標(biāo)主機。木馬種植(傳播)的方式一般包括以下3種。
1)通過電子郵件附件夾帶
這是最常用也是比較有效的一種方式。木馬傳播者將木馬服務(wù)器端程序以電子郵件附件的方式附加在電子郵件中,針對特定主機發(fā)送或漫無目的地群發(fā),電子郵件的標(biāo)題和內(nèi)容一般都非常吸引人,當(dāng)用戶點擊閱讀電子郵件時,附件中的程序就會在后臺悄悄下載到本機。
2)捆綁在各類軟件中
黑客經(jīng)常把木馬程序捆綁在各類所謂的補丁、注冊機、破解程序等軟件中進(jìn)行傳播,當(dāng)用戶下載相應(yīng)的程序時,木馬程序也會被下載到自己的計算機中,這類方式的隱蔽度和成功率較高。
3)網(wǎng)頁掛馬
網(wǎng)頁掛馬是在正常瀏覽的網(wǎng)頁中嵌入特定的腳本代碼,當(dāng)用戶瀏覽該網(wǎng)頁時,嵌入網(wǎng)頁的腳本就會在后臺自動下載其指定的木馬并執(zhí)行。其中網(wǎng)頁是網(wǎng)頁木馬的核心部分,特定的網(wǎng)頁代碼使網(wǎng)頁被打開時木馬能隨之下載并執(zhí)行。網(wǎng)頁掛馬大多利用瀏覽器的漏洞來實現(xiàn),也有利用ActiveX控件或釣魚網(wǎng)頁來實現(xiàn)的。
(2)木馬程序隱藏
木馬程序為了能更好地躲過用戶的檢查,以悄悄控制用戶系統(tǒng),必須采用各種方式將其隱藏在用戶系統(tǒng)中。木馬為了達(dá)到長期隱藏的目的,通常會同時采用多種隱藏技術(shù)。木馬程序隱藏的方式有很多,主要包括以下4類:
① 通過將木馬程序設(shè)置為系統(tǒng)、隱藏或是只讀屬性來實現(xiàn)隱藏;
② 通過將木馬程序命名為和系統(tǒng)文件的名稱極度相似的文件名,從而使用戶誤認(rèn)為其是系統(tǒng)文件而忽略之;
③ 將木馬程序存放在不常用或難以發(fā)現(xiàn)的系統(tǒng)文件目錄中;
④ 將木馬程序存放的區(qū)域設(shè)置為壞扇區(qū)的硬盤磁道。
(3)木馬啟動隱藏
木馬程序在啟動時必須讓操作系統(tǒng)或殺毒軟件無法發(fā)現(xiàn)自身才能駐留系統(tǒng)。木馬程序啟動的隱藏方式介紹如下。
1)文件偽裝
木馬最常用的文件隱藏方式是將木馬文件偽裝成本地可執(zhí)行文件。例如,木馬程序經(jīng)常會將自己偽裝成圖片文件,修改其圖標(biāo)為Windows默認(rèn)的圖片文件圖標(biāo),同時修改木馬文件擴展名為.jpg、.exe等,由于Windows默認(rèn)設(shè)置不顯示已知的文件后綴名,因此文件將會顯示為.jpg,當(dāng)用戶以正常圖片文件打開并瀏覽其時就會啟動木馬程序。
2)修改系統(tǒng)配置
利用系統(tǒng)配置文件的特殊作用,木馬程序很容易隱藏在系統(tǒng)啟動項中。例如,Windows系統(tǒng)配置文件MSCONFIG.sys中的系統(tǒng)啟動項system.ini是眾多木馬的隱藏地。Windows安裝目錄下的system.ini[boot]字段中,正常情況下有boot=“Explorer.exe”,如果其后面有其他的程序,如boot=“Explorer.exe file.exe”,則這里的file.exe就有可能是木馬服務(wù)端程序。
3)利用系統(tǒng)搜索規(guī)則
Windows系統(tǒng)搜尋一個不帶路徑信息的文件時遵循“從外到里”的規(guī)則,它會由系統(tǒng)所在的盤符的根目錄開始向系統(tǒng)目錄深處遞進(jìn)查找,而不是精確定位。這就意味著,如果有兩個同樣名稱的文件分別放在“C:\”和“C:\WINDOWS”下時,搜索會執(zhí)行C:\下的程序,而不是C:\WINDOWS下的程序。這樣的搜尋規(guī)則就給木馬提供了一個機會,木馬可以把自己改為系統(tǒng)啟動時必定會調(diào)用的某個文件,并復(fù)制到比原文件的目錄淺一級的目錄里,操作系統(tǒng)就會執(zhí)行這個木馬程序,而不是正常的那個程序。若要提防這種占用系統(tǒng)啟動項而做到自動運行的木馬,則用戶必須了解自己的計算機里所有正常的啟動項信息。
4)替換系統(tǒng)文件
木馬程序會利用系統(tǒng)里的那些不會危害到系統(tǒng)正常運行而又會被經(jīng)常調(diào)用的程序文件,如輸入法指示程序。木馬程序會替換掉原來的系統(tǒng)文件,并把原來的系統(tǒng)文件名改成只有木馬程序知道的一個生僻文件名。只要系統(tǒng)調(diào)用那個被替換的程序,木馬就能繼續(xù)駐留內(nèi)存。木馬程序作為原來的程序被系統(tǒng)啟動時,會獲得一個由系統(tǒng)傳遞來的運行參數(shù),此時,木馬程序就把這個參數(shù)傳遞給被改名的程序執(zhí)行。
(4)木馬進(jìn)程隱藏
木馬程序運行后的進(jìn)程隱藏有兩種情況:一種是木馬程序的進(jìn)程存在,只是不出現(xiàn)在進(jìn)程列表里,采用APIHOOK技術(shù)攔截有關(guān)系統(tǒng)函數(shù)的調(diào)用以實現(xiàn)運行時的隱藏;另一種是木馬不以一個進(jìn)程或者服務(wù)的方式工作,而是將其核心代碼以線程或DLL的方式注入合法進(jìn)程,用戶很難發(fā)現(xiàn)被插入的線程或DLL,從而達(dá)到木馬隱藏的目的。
在Windows系統(tǒng)中常見的隱藏方式有注冊表DLL插入、特洛伊DLL、動態(tài)嵌入技術(shù)、CreateProcess插入和調(diào)試程序插入等。
(5)木馬通信時的信息隱藏
木馬運行時需要通過網(wǎng)絡(luò)與外機通信,以獲取外機的控制命令或向外機發(fā)送信息。木馬通信時的信息隱藏主要包括通信內(nèi)容、流量、信道和端口的隱藏。
木馬常用的通信內(nèi)容隱藏方法是對通信內(nèi)容進(jìn)行加密。通信信道的隱藏一般采用網(wǎng)絡(luò)隱蔽通道技術(shù)。在TCP/IP族中,有許多冗余信息可用于建立網(wǎng)絡(luò)隱蔽通道。木馬可以利用這些網(wǎng)絡(luò)隱蔽通道突破網(wǎng)絡(luò)安全機制。比較常見的有:ICMP畸形報文傳遞、HTTP隧道技術(shù)、自定義 TCP/UDP報文等。木馬采用網(wǎng)絡(luò)隱蔽通道技術(shù)時,如果選用一般的安全策略都會允許的端口(如80端口)進(jìn)行通信,則可輕易穿透防火墻和避過入侵檢測系統(tǒng)等安全機制的檢測,從而獲得較強的隱蔽性。通信流量的隱藏一般采用監(jiān)控系統(tǒng)網(wǎng)絡(luò)通信的方式,當(dāng)監(jiān)測到系統(tǒng)中存在其他通信流量時,木馬程序就會啟動通信;當(dāng)不存在其他通信流量時,木馬程序就會處于監(jiān)聽狀態(tài),等待其他通信開啟。
(6)木馬隱蔽加載
木馬隱蔽加載是指通過修改虛擬設(shè)備驅(qū)動程序(VxD)或動態(tài)鏈接庫(DLL)來加載木馬。這種方法基本上擺脫了原有的木馬模式——監(jiān)聽端口,而采用了替代系統(tǒng)功能的方法(改寫VxD或DLL文件):木馬用修改后的DLL替換系統(tǒng)原來的DLL,并對所有的函數(shù)調(diào)用進(jìn)行過濾。對于常用函數(shù)的調(diào)用,木馬會使用函數(shù)轉(zhuǎn)發(fā)器將其直接轉(zhuǎn)發(fā)給被替換的系統(tǒng)DLL;對于一些事先約定好的特殊情況,木馬會自動執(zhí)行。一般情況下,DLL只是進(jìn)行監(jiān)聽,一旦發(fā)現(xiàn)控制端的請求,其就會激活自身。這種木馬沒有增加新的文件,不需要打開新的端口,沒有新的進(jìn)程,使用常規(guī)的方法無法監(jiān)測到。在正常運行時,木馬幾乎沒有任何蹤跡,只有在木馬的控制端向被控制端發(fā)出特定的信息后,隱藏的木馬程序才會開始運行。
責(zé)編AJX
-
網(wǎng)絡(luò)安全
+關(guān)注
關(guān)注
10文章
3105瀏覽量
59535 -
木馬
+關(guān)注
關(guān)注
0文章
47瀏覽量
13315 -
網(wǎng)絡(luò)攻擊
+關(guān)注
關(guān)注
0文章
330瀏覽量
23412
發(fā)布評論請先 登錄
相關(guān)推薦
評論