徐國天
(中國刑事警察學(xué)院 遼寧 沈陽 110035)
基于進(jìn)程監(jiān)聽的木馬線索提取系統(tǒng)研究
徐國天
(中國刑事警察學(xué)院遼寧沈陽110035)
研究了基于進(jìn)程監(jiān)聽的木馬線索提取和分析系統(tǒng)。該系統(tǒng)可以按照進(jìn)程對(duì)捕獲數(shù)據(jù)包進(jìn)行分類,從海量數(shù)據(jù)包中自動(dòng)篩選出木馬惡意進(jìn)程收發(fā)的數(shù)據(jù)包,使得可疑進(jìn)程和可疑通信直觀地展現(xiàn)在調(diào)查人員面前,從而簡化了分析的難度,提高了成功獲取木馬線索的概率。
木馬進(jìn)程監(jiān)聽線索提取
木馬是一種惡意程序,用戶在使用計(jì)算機(jī)、平板電腦或智能手機(jī)瀏覽網(wǎng)頁、收發(fā)電子郵件時(shí)均可能被種植木馬。一旦感染木馬個(gè)人終端將被黑客完全控制。木馬可以遠(yuǎn)程操作受害者計(jì)算機(jī)、竊取涉密文件、篡改重要數(shù)據(jù)、盜取網(wǎng)銀賬戶、監(jiān)聽受害者的語音和視頻、網(wǎng)絡(luò)通信[1]。
木馬線索的提取和分析是電子數(shù)據(jù)取證中的難點(diǎn)問題,目前,主要采取兩種提取方法:一種是使用逆向分析技術(shù)解析木馬惡意程序文件,提取相關(guān)線索。它是將木馬的可執(zhí)行程序文件反編譯為可以閱讀的ASCII碼源程序,再通過逐條分析源代碼的方式找出黑客的線索信息。此方法需要專業(yè)基礎(chǔ),操作難度大;另一種是通過網(wǎng)絡(luò)監(jiān)聽技術(shù)來進(jìn)行木馬痕跡提取。它是使用wireshark等數(shù)據(jù)監(jiān)聽工具捕獲被害者主機(jī)收發(fā)的通信數(shù)據(jù),再從捕獲的數(shù)據(jù)包中提取出黑客的相關(guān)線索,例如黑客主機(jī)的IP地址、使用的控制命令等。但在實(shí)際應(yīng)用中,現(xiàn)有監(jiān)聽軟件存在以下問題:①不能實(shí)現(xiàn)連續(xù)、長時(shí)間監(jiān)控?,F(xiàn)有監(jiān)聽軟件將捕獲的網(wǎng)絡(luò)數(shù)據(jù)包保存在主機(jī)內(nèi)存中,當(dāng)用戶停止抓包后,內(nèi)存中的數(shù)據(jù)才會(huì)被寫入到硬盤上。由于內(nèi)存空間有限,因此,現(xiàn)有軟件不能實(shí)現(xiàn)長時(shí)間、連續(xù)監(jiān)控。而盜號(hào)木馬在竊取到敏感信息之后通常不會(huì)立即發(fā)送出去,而是在未來某個(gè)時(shí)間點(diǎn)統(tǒng)一進(jìn)行發(fā)送,這種不確定性就要求監(jiān)聽軟件必須具備長時(shí)間、連續(xù)監(jiān)控能力;②現(xiàn)有軟件將所有抓取到的數(shù)據(jù)包混雜在一起,不利于分析;③現(xiàn)有軟件不能確定數(shù)據(jù)包是由哪個(gè)進(jìn)程發(fā)出的,不能準(zhǔn)確定位惡意程序。
因此,本文設(shè)計(jì)了一款專門用于木馬線索提取的軟件系統(tǒng),以簡化木馬線索提取操作,彌補(bǔ)公安機(jī)關(guān)現(xiàn)有木馬線索提取能力的不足。
進(jìn)程是指運(yùn)行中的應(yīng)用程序,例如聊天使用oico進(jìn)程,瀏覽網(wǎng)頁使用IE瀏覽器進(jìn)程。如圖1所示,在受害者主機(jī)端運(yùn)行了一個(gè)木馬進(jìn)程,在黑客主機(jī)端運(yùn)行了一個(gè)木馬控制端進(jìn)程。受害者主機(jī)上的木馬進(jìn)程會(huì)將竊取到的敏感信息發(fā)送給黑客主機(jī)端的控制進(jìn)程。但是,在發(fā)送這些敏感信息之前,要通過控制進(jìn)程的身份認(rèn)證。
從圖1可以看到,受害者主機(jī)端的木馬進(jìn)程提交了用戶名和密碼,通過認(rèn)證之后,才會(huì)將竊取的敏感信息封裝成一個(gè)文件發(fā)送給黑客控制進(jìn)程。調(diào)查人員只要截獲這些通信數(shù)據(jù),就可以從中提取出黑客主機(jī)的IP地址、黑客的郵箱賬號(hào)、密碼等相關(guān)信息。
圖1 捕獲木馬進(jìn)程通信數(shù)據(jù)和提取線索
圖2 基于“進(jìn)程監(jiān)聽”的方法自動(dòng)篩選出木馬進(jìn)程數(shù)據(jù)包
從圖2可以看到,受害者主機(jī)端不是只有一個(gè)木馬進(jìn)程在運(yùn)行,而是有十幾個(gè)、甚至幾十個(gè)進(jìn)程在同時(shí)運(yùn)行。這些進(jìn)程同時(shí)與多個(gè)外部主機(jī)進(jìn)行網(wǎng)絡(luò)通信,每秒鐘會(huì)產(chǎn)生成百上千個(gè)通信數(shù)據(jù)包。木馬惡意進(jìn)程收發(fā)的通信數(shù)據(jù)被淹沒在這些海量的通信數(shù)據(jù)中。調(diào)查人員無法確定每個(gè)數(shù)據(jù)包是由哪個(gè)進(jìn)程發(fā)出的,進(jìn)而無法準(zhǔn)確定位木馬惡意進(jìn)程收發(fā)的數(shù)據(jù)包,導(dǎo)致提取木馬線索的難度極大,同時(shí)也非常容易造成誤判事件的發(fā)生。
軟件的使用步驟如圖3所示。首先在受害者主機(jī)端直接運(yùn)行監(jiān)聽軟件或者通過交換機(jī)鏡像端口捕獲通信數(shù)據(jù)。在開始捕獲通信數(shù)據(jù)之前要進(jìn)行必要的設(shè)置,例如選定一塊工作網(wǎng)卡,調(diào)整緩存大小,設(shè)置硬盤內(nèi)的存儲(chǔ)位置(用于在緩存滿時(shí)將緩存內(nèi)的網(wǎng)絡(luò)數(shù)據(jù)寫入硬盤,實(shí)現(xiàn)長時(shí)間監(jiān)聽)。其次是激活潛在的木馬程序,誘使其向外界發(fā)包。盜號(hào)木馬不會(huì)像遠(yuǎn)程控制木馬那樣主動(dòng)的與外界進(jìn)行通信。因此,調(diào)查人員需要采用一些措施促使木馬向外界發(fā)送通信數(shù)據(jù),以便能夠提取到相關(guān)線索。打開一些登錄窗體,例如網(wǎng)上銀行登錄界面、QQ、MSN等登錄窗口,木馬會(huì)立即識(shí)別出這些窗口,如果其中包含木馬監(jiān)控的敏感窗口標(biāo)題,那么,用戶在這個(gè)窗體內(nèi)輸入的所有信息都會(huì)被記錄下來并發(fā)送給黑客。但是登錄測試結(jié)束之后不能立即停止數(shù)據(jù)包捕獲,因?yàn)槟抉R通常不會(huì)盜取到敏感信息之后立即發(fā)送,而是延遲一段時(shí)間后在進(jìn)行信息發(fā)送。因此,需要進(jìn)行較長時(shí)間的網(wǎng)絡(luò)數(shù)據(jù)捕獲。最后停止捕獲,查看通信數(shù)據(jù)中有無木馬傳遞的數(shù)據(jù)包,提取相關(guān)痕跡。
圖3 軟件的使用流程
監(jiān)聽軟件可能捕獲成千上萬個(gè)數(shù)據(jù)包(與捕獲時(shí)間長短、通信狀況有關(guān)),這些數(shù)據(jù)包混雜在一起,如圖4-a所示。軟件在分析階段將這些混雜在一起的數(shù)據(jù)包按照進(jìn)程和協(xié)議類型進(jìn)行劃分,得到3條tcp鏈接。圖4-b為第1條tcp鏈接,它表示hh.exe進(jìn)程創(chuàng)建了這條tcp鏈接,本地IP地址192.168.0.1、本地端口1025、遠(yuǎn)程主機(jī)IP地址202.10.22.3、遠(yuǎn)程端口25,在這條鏈接上傳遞了70個(gè)數(shù)據(jù)包。用戶可以查看某條通信鏈接具體的數(shù)據(jù)包內(nèi)容(類似sniffer、wireshark等軟件對(duì)數(shù)據(jù)包的分析),也可以實(shí)現(xiàn)關(guān)鍵字搜索功能。
圖4 捕獲數(shù)據(jù)的分析
3.1異常進(jìn)程的識(shí)別
某些木馬運(yùn)行之后有獨(dú)立的進(jìn)程,在對(duì)捕獲結(jié)果進(jìn)行分析時(shí),那些不是用戶自身啟動(dòng)的進(jìn)程將成為調(diào)查的重點(diǎn)。例如圖4-c和圖4-d中的firefox.exe是用戶打開火狐瀏覽器查看網(wǎng)頁之后產(chǎn)生的正常進(jìn)程,而hh.exe屬于不是用戶啟動(dòng)的特殊進(jìn)程,被定義為有異常的可疑進(jìn)程,需要查看hh.exe傳遞的具體數(shù)據(jù)以確定其身份。
3.2異常行為的識(shí)別
通過通信鏈接的目的端口可以判斷出對(duì)應(yīng)的動(dòng)作行為,例如tcp21端口說明用戶執(zhí)行了FTP的上傳、下載動(dòng)作;tcp80端口對(duì)應(yīng)瀏覽網(wǎng)頁行為;tcp25端口對(duì)應(yīng)發(fā)送郵件;tcp110端口對(duì)應(yīng)接收郵件;tcp443端口對(duì)應(yīng)以HTTPS方式瀏覽網(wǎng)頁;tcp23端口對(duì)應(yīng)一次telnet操作;tcp1433端口對(duì)應(yīng)一次SQL Server2000的登陸等。如果用戶自身沒有執(zhí)行對(duì)應(yīng)的動(dòng)作,但在捕獲結(jié)果中出現(xiàn)了這種行為,那么可以確定為異常行為。
例如在圖4-b中,用戶并沒有發(fā)送郵件,但出現(xiàn)了hh.exe進(jìn)程傳送郵件的行為,這可以識(shí)別為異常行為。進(jìn)入該通信鏈接、查看傳遞的70個(gè)數(shù)據(jù)包,可以確定其身份。
3.3異常端口的識(shí)別
一般情況下,每個(gè)進(jìn)程都有經(jīng)常使用的幾個(gè)常用端口號(hào),例如firefox瀏覽器通常使用tcp協(xié)議的80、443、21、8080等端口,Outlook express經(jīng)常使用tcp協(xié)議的25和110端口??蛻粲?jì)算機(jī)上安裝的防火墻或殺毒軟件出于安全考慮可能只允許某些合法進(jìn)程(例如firefox、outlook) 進(jìn)行網(wǎng)絡(luò)通信,而不允許某些私有進(jìn)程與外界通信。這就迫使某些木馬程序?qū)⒆陨黼[藏進(jìn)某個(gè)合法進(jìn)程之中,以合法身份運(yùn)行。但從通信端口可以識(shí)別出這類異常,例如firefox打開了3030端口、outlook打開了80端口等,這些可以認(rèn)定為異常端口,需要進(jìn)入鏈接查看具體數(shù)據(jù)包。
另外如果從通信結(jié)果中發(fā)現(xiàn)某些本不該與外界通信的進(jìn)程(例如explorer、計(jì)算器)產(chǎn)生了網(wǎng)絡(luò)通信數(shù)據(jù),初步懷疑這些進(jìn)程感染了木馬程序,需要進(jìn)入通信連接,查看具體數(shù)據(jù)包予以確定。通過對(duì)捕獲結(jié)果的初步分析可以識(shí)別出一些異常痕跡,但如果想找出黑客的具體線索,則必須進(jìn)入數(shù)據(jù)包加以分析,下面具體研究。
盜號(hào)木馬在竊取到敏感信息之后,會(huì)將信息通過電子郵件發(fā)送到黑客指定的電子郵箱,或發(fā)送到黑客指定的WEB服務(wù)器上。兩種通信方式分別使用了ESMTP和HTTP協(xié)議。
4.1通過電子郵件傳送信息的盜號(hào)木馬
早期電子郵件傳輸采用的是SMTP協(xié)議,它不對(duì)發(fā)信人的身份進(jìn)行認(rèn)證,也就是說任何人都可以偽造任意發(fā)信人發(fā)出電子郵件,這就導(dǎo)致欺騙行為和垃圾郵件事件的發(fā)生[2]。ESMTP協(xié)議可以較好地解決這些問題,它對(duì)發(fā)信人的身份進(jìn)行了認(rèn)證,只有正確提交了發(fā)信賬戶的密碼信息,才可以進(jìn)行電子郵件發(fā)送。盜號(hào)木馬在發(fā)送信息之前也要通過郵件服務(wù)器的身份認(rèn)證,使用數(shù)據(jù)監(jiān)聽工具截獲這組通信數(shù)據(jù),就可以從中提取出黑客電子郵箱的賬戶和密碼數(shù)據(jù)。只是這部分?jǐn)?shù)據(jù)經(jīng)過base64編碼處理,直接查看到的是亂碼數(shù)據(jù),經(jīng)過編碼轉(zhuǎn)換后,就可以查看到對(duì)應(yīng)的明文數(shù)據(jù),圖5顯示的是ESMTP協(xié)議的通信過程[3]。
圖5 通過電子郵件傳遞盜號(hào)信息
身份認(rèn)證之后就是郵件傳送階段,發(fā)信人和收信人帳戶信息、郵件的主題和正文數(shù)據(jù)都包含在通信數(shù)據(jù)中。這部分信息中的英文和阿拉伯?dāng)?shù)字信息采用ASCII編碼,可以直接查看。中文信息采用base64編碼,需要轉(zhuǎn)換之后才能查看。
4.2通過HTTP協(xié)議傳送信息的盜號(hào)木馬
一些類型的盜號(hào)木馬在竊取到敏感信息后,會(huì)將這些信息發(fā)送到黑客指定的WEB服務(wù)器上。盜號(hào)木馬發(fā)送信息采用的是HTTP協(xié)議,其通信流程如圖6所示。
圖6 通過WEB服務(wù)器接收信息
從通信流程上看,盜號(hào)木馬的通信數(shù)據(jù)與用戶瀏覽網(wǎng)頁過程中產(chǎn)生的通信數(shù)據(jù)極為相似,也是由3次握手建立連接,數(shù)據(jù)通信,4次揮手中斷連接組成。但是仔細(xì)觀察就會(huì)發(fā)現(xiàn),盜號(hào)木馬產(chǎn)生的通信量極小,不足10個(gè)。而正常的HTTP通信數(shù)據(jù)中,單個(gè)tcp數(shù)據(jù)流中數(shù)據(jù)包個(gè)數(shù)要明顯多于這一數(shù)值,因此,通過單個(gè)tcp數(shù)據(jù)流中傳遞的數(shù)據(jù)包個(gè)數(shù)可以區(qū)分正常和異常的HTTP通信數(shù)據(jù)。
遠(yuǎn)程控制木馬一般由客戶端和服務(wù)端組成。在被入侵主機(jī)上運(yùn)行客戶端,稱為“肉機(jī)”。在黑客主機(jī)上運(yùn)行服務(wù)端,稱為控制端??刂贫送ㄟ^計(jì)算機(jī)網(wǎng)絡(luò)對(duì)“肉機(jī)”進(jìn)行遠(yuǎn)程控制。
圖7顯示的是遠(yuǎn)程控制木馬在不同情況下的通信流程,圖7-a流程圖顯示的是“肉機(jī)”與黑客主機(jī)可以建立完整通信連接的情況。通信流程依次包括DNS解析過程,3次握手建立連接、數(shù)據(jù)通信、4次揮手中斷連接。此時(shí)在受害者主機(jī)端使用netstat-an命令可以查看到對(duì)應(yīng)的tcp控制連接,進(jìn)而可以提取出黑客主機(jī)的IP地址和端口號(hào)等相關(guān)信息。當(dāng)黑客主機(jī)沒有開機(jī)或控制軟件沒有打開時(shí),DNS解析過程可以順利進(jìn)行,但是“肉機(jī)”無法與黑客主機(jī)建立tcp數(shù)據(jù)連接,產(chǎn)生的現(xiàn)象是“肉機(jī)”每隔一段時(shí)間就會(huì)發(fā)出一次握手請(qǐng)求,對(duì)方主機(jī)沒有應(yīng)答(關(guān)機(jī)時(shí))或者返回RST拒絕報(bào)文(控制軟件沒有啟動(dòng)),如圖7-b所示。當(dāng)DNS映射記錄失效時(shí),“肉機(jī)”發(fā)出的DNS解析請(qǐng)求不會(huì)得到應(yīng)答,如圖7-c所示。后兩種情況下,在受害者主機(jī)端使用netstat-an命令查看不到異常的通信連接,也就無法直接提取出黑客主機(jī)的IP地址和端口號(hào)等相關(guān)線索。但仍可以通過數(shù)據(jù)包捕獲的方式進(jìn)行線索調(diào)查。圖7-d是遠(yuǎn)程控制木馬的網(wǎng)終結(jié)構(gòu)。
圖7 遠(yuǎn)程控制木馬在不同情況下的通信流程
6基于“進(jìn)程和通信連接”的搜索方法
在捕獲的數(shù)據(jù)包中,執(zhí)行搜索是木馬線索調(diào)查的一項(xiàng)重要內(nèi)容。盜號(hào)木馬通常使用HTTP-GET、HTTP-POST、ESMTP協(xié)議發(fā)送盜取的數(shù)據(jù)。搜索
包括:“GET”、“POST”、“SUBJECT”等?!癎ET”和“POST”可以定位木馬通過HTTP協(xié)議提交的參數(shù),“SUBJECT”可以定位木馬發(fā)送的電子郵件正文。另外,調(diào)查人員還可以自定義搜索
,例如“username”、“pass”等。
目前,使用的搜索方法是在所有捕獲數(shù)據(jù)包中統(tǒng)一執(zhí)行搜索操作,再逐一查看命中的搜索結(jié)果,這種方法如圖8-a所示。每個(gè)綠色實(shí)心圓點(diǎn)代表一個(gè)命中的
,調(diào)查人員可以逐一查看這些命中數(shù)據(jù)包。但由于這些數(shù)據(jù)包屬于不同進(jìn)程的不同的通信連接,因此,不能準(zhǔn)確判斷出哪些報(bào)文是合法進(jìn)程產(chǎn)生的,哪些是非法進(jìn)程產(chǎn)生的,也就無法準(zhǔn)確定位木馬線索。
圖8基于“進(jìn)程和通信連接”的搜索方法
本文開發(fā)軟件可以按照進(jìn)程和通信連接將捕獲數(shù)據(jù)包進(jìn)行分類,如圖8-b、圖8-c、圖8-d所示。在每個(gè)通信連接所屬數(shù)據(jù)包內(nèi)執(zhí)行關(guān)鍵詞搜索,即在每條通信連接垂直方向移動(dòng)。用戶也可以在每條通信連接之間進(jìn)行切換,即執(zhí)行水平方向的移動(dòng)。調(diào)查人員可以在“惡意進(jìn)程或惡意通信連接”中執(zhí)行關(guān)鍵詞搜索。
通常情況下,受害者主機(jī)端的木馬惡意程序會(huì)主動(dòng)尋找網(wǎng)絡(luò)中的黑客計(jì)算機(jī),并接受它的遠(yuǎn)程控制。從通信數(shù)據(jù)中可以提取到相關(guān)線索。但是當(dāng)黑客關(guān)閉了計(jì)算機(jī),或者關(guān)閉了木馬遙控程序時(shí),在兩臺(tái)主機(jī)之間就不會(huì)產(chǎn)生任何通信數(shù)據(jù),也就無法提取到相關(guān)線索。
[1]徐國天.論中間人攻擊對(duì)網(wǎng)上銀行的安全威脅[J].中國刑警學(xué)院學(xué)報(bào),2008(1):23-25.
[2]徐國天.基于OSPF路由欺騙的“黑洞”攻擊及防御措施研究[J].信息網(wǎng)絡(luò)安全,2012(11):10-12.
[3]Behrouz A.Forouzan.數(shù)據(jù)通信與網(wǎng)絡(luò)[M].北京:機(jī)械工業(yè)出版社,2005:200-206.
(責(zé)任編輯:于萍)
TP309.1
A
2095-7939(2016)03-0050-04
10.3969/j.issn.2095-7939.2016.03.010
2016-05-10
公安部技術(shù)研究計(jì)劃項(xiàng)目(編號(hào):2014JSYJB033);公安部應(yīng)用創(chuàng)新計(jì)劃課題(編號(hào):2014YYCXX JXY055);遼寧省教育科學(xué)‘十二五’規(guī)劃立項(xiàng)課題(編號(hào):JG14db440);遼寧省自然科學(xué)基金計(jì)劃項(xiàng)目(編號(hào):2015020091)。
徐國天(1978-),男,遼寧沈陽人,中國刑事警察學(xué)院網(wǎng)絡(luò)犯罪偵查系副教授,主要從事網(wǎng)絡(luò)安全與電子物證研究。