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