病毒木马查杀实战第010篇:QQ盗号木马之十六进制代码分析
前言
? ? ? ? 按照我的個人習慣,在運用諸如IDA Pro與OllyDBG對病毒進行逆向分析之前,我都會利用一些自動化的工具,通過靜態或動態的分析方法(參見《病毒木馬查殺第008篇:熊貓燒香之病毒查殺總結》)來對病毒的行為產生一定的認識,這樣在之后的逆向分析中,我就能夠產生“先入為主”的心態,在分析反匯編代碼的時候就能夠比較順利。本文論述的是通過靜態分析方法來理解我們的目標病毒,看看僅僅通過觀察其十六進制代碼,我們能夠獲取到什么信息,這也算是從另外一個角度來處理病毒文件。
?
查看附加數據信息
? ? ? ? 對病毒的分析,還是應當起始于查殼的操作,這里依舊使用PEiD這款軟件:
圖1 運用PEiD查看病毒
? ? ? ? 由上圖可以發現,這個病毒是由Delphi編寫的,并且還有附加數據(Overlay)。我曾經在《技術面試問題匯總第003篇:獵豹移動反病毒工程師part3》中提到過附加數據的問題,但是結合本病毒,我在此應當再重述一遍。
? ? ? ? 某些特殊的PE文件在各個區塊的正式數據之后還有一些數據,這些數據不屬于任何區塊。由于PE文件被映射到內存是按區塊映射的,因此這些數據是不能被映射到內存中的,這些額外的數據稱為附加數據(overlay)。附加數據的起點可以認為是最后一個區塊的末尾,終點是文件末尾。那么我們可以利用PEiD查看一下該病毒的區塊信息:圖2 查看病毒的區塊信息
? ? ? ? 從圖2可以計算出最后一個區塊末尾的文件偏移值為DE00h+9C00h=17A00h。用十六進制工具(我這里使用的是Hex Editor Neo)打開目標文件,跳到17A00h,會發現后面還有一段數據,這就是附加數據,如圖3所示:
圖3 查看附加數據
? ? ? ? 僅僅是這樣觀察附加數據,我們并不能夠知道這段數據的作用,這往往需要結合逆向分析進行判斷。其實附加數據一般是在脫殼的時候需要特別注意,因為帶有附加數據的文件脫殼時,必須將附加數據粘貼回去,如果文件有訪問附加數據的指針,也要修正。那么我們現在也可以肯定,本病毒一定是使用了文件指針函數,這樣病毒才能夠使用這段附加數據。
?
查看病毒包含的ASCII碼信息
? ? ? ? 因為這個病毒程序本身并不大,所以即便直接通過觀察其十六進制代碼所代表的ASCII碼值進行分析,也不會耗費太多時間,這也能夠實現對病毒的初步分析。當然我們能夠看到的更多是一些不容易判斷其作用的亂碼,所以這里我們只分析能夠判斷其功能的完整的英文單詞。由上至下逐步查找,來到了第一處可識別處:圖4
? ? ? ? 這里是Delphi運行庫的注冊表項,通過這個就可以判斷這個程序是由Delphi編寫的了。那么繼續查找:
圖5
? ? ? ? 這里出現了很多API函數,關于每個函數的具體功能,大家可以查詢MSDN或其它相關資料。病毒通過建立快照的方式(CreateToolhelp32Snapshot),來查找當前系統中的進程(Process)、線程(Thread)以及模塊(Module)等的信息,并且獲取了內存的堆信息(Heap32ListFirst & Heap32ListNext)。這里的作用有可能是為了查看當前進程中是否含有反病毒軟件,如果有,則將其停止,當然僅僅從這里是無法做出詳細判斷的,需要結合逆向分析才可以。接下來有:
圖6
? ? ? ? 很明顯這是一個名為hx1.bat的批處理文件,其內容為(含代碼注釋):
@echo off set date=2004-1-22 rem將當前日期設置為“2004-1-22” ping ** localhost > nul rem 測試本地網絡系統,屏蔽命令的輸出內容 date %date% del %0 rem 刪除批處理自身? ? ? ? 接下來有:
圖7
? ? ? ? 病毒調用了RegisterServiceProcess這個API函數,其功能是注冊或者取消一個進程為服務。當用戶注銷之后,服務進程仍可運行。不過這個函數只能在Windows 9X下運行,在之后的操作系統下是無效的。繼續分析:
圖8
? ? ? ? 這里說明程序使用了autorun來實現自啟動,并且通過變裝成exe與pif文件的形式,來引誘大家點擊,從而也就中了病毒。這里的pif是一種快捷方式文件格式,即使在“隱藏已知文件類型的擴展名”關閉時該類,都不能顯示其pif后綴。文件雙擊后,系統調用去執行該快捷方式指向的文件。pif病毒正是利用該類文件的特性,來欺騙用戶執行所指向的病毒文件。繼續分析:
圖9
? ? ? ? 這里出現了中文字符,根據經驗,病毒可能是利用相應的API函數來查找當前進程或者已運行的程序的標題欄中是否含有這些中文字符,從而判斷殺毒軟件是否存在,若存在,則將其關閉。當然更加準確的答案還是得通過逆向分析才能獲取。接下來程序結束可能存在的殺毒軟件的服務,也就是將start設為disabled。接下來可以看到許多安全類軟件的名稱:
圖10
? ? ? ? 病毒企圖禁止這些安全類軟件的運行,而由上一篇文章可以知道,病毒至少是使用了映像劫持這個方法來禁止殺軟的運行,也許它還運用了別的方法,這也得通過逆向分析才能得出準確的答案。接下來有:
圖11
? ? ? ? 這里出現了很多安全類網站,那么有理由相信病毒也是要屏蔽掉這些網址的。而屏蔽的最常用的手法就是通過修改Hosts文件。Hosts是一個沒有擴展名的系統文件,可以用記事本等工具打開,其作用就是將一些常用的網址域名與其對應的IP地址建立一個關聯“數據庫”,當用戶在瀏覽器中輸入一個需要登錄的網址時,系統會首先自動從Hosts文件中尋找對應的IP地址,一旦找到,系統會立即打開對應網頁,如果沒有找到,則系統再會將網址提交DNS域名解析服務器進行IP地址的解析。在Windows NT/2000/XP/Vista/7/8(即微軟NT系列操作系統)中,它的默認位置為%SystemRoot%\system32\drivers\etc\,但也可以改變。這也是圖11中最開始解析出來的路徑。如果,我們在Hosts中,寫入以下內容:
127.0.0.1 # 要屏蔽的網站 A 0.0.0.0 # 要屏蔽的網站 B? ? ? ? 這樣,計算機解析域名A和 B時,就解析到本機IP或錯誤的IP,達到了屏蔽網站A 和B的目的。而本病毒程序,應該就是使用了第一種方式。下面有:
圖12
? ? ? ? 這里創建了noruns.reg文件,并導入注冊表,其功能就是修改驅動器的autorun屬性,令“自動運行”功能得以實現。繼續分析:
圖13
? ? ? ? 很明顯,病毒這里是將自身加入注冊表的啟動項、隱藏圖標以及設置映像劫持等,由于比較簡單,這里不再贅述。接下來有:
圖14
? ? ? ? 程序將自身拷貝到除C盤外的其它盤符中,然后是:
圖15
? ? ? ? 這里疑似是本病毒所使用的所有API函數,因為數量較多,所以在此不作分析。個人認為這里不太重要,因為根據之前的分析,我們對于病毒的了解已經不少了。有經驗的反病毒工程師根據這個可以對病毒有更深的理解,但是此處為了節省篇幅,就將其略過。接下來是:
圖16
? ? ? ? 病毒程序在此處似乎是隱藏了另一個PE文件,解析圖16紅框位置,0xA18E(注意圖中是小端顯示)的二進制形式為1010000110001110,它的第13位(由0開始計數)是1,說明它是一個DLL文件,那么可以知道,病毒程序似乎還生成了一個動態鏈接庫文件。那么接下來的分析就是針對于這個動態鏈接庫了:
圖17
? ? ? ? 這里的action為POST,于是瀏覽器把form數據封裝到http body中,然后發送到server。 如果沒有type=file的控件,則使用用默認的application/x-www-form-urlencoded。也就是說,這里是將一些字符(用戶信息)傳輸到服務器上,以便病毒的編寫者接收。接下來有:
圖18
? ? ? ? 很明顯,這個病毒是與QQ有關的,因為這里出現了很多QQ程序的名稱,因此可以將其懷疑為QQ盜號木馬。繼續分析:
圖19
? ? ? ? 這里似乎是要發送郵件,然后有:
圖20
? ? ? ? 查詢IP地址。繼續分析:
圖21
? ? ? ? 可以認為這里是騙取用戶的QQ號碼與密碼,并發送到黑客處。接下來就沒有特別明顯的值得分析之處,那么該盜號木馬的十六進制代碼分析就結束了。
?
小結
? ? ? ? 可見,僅僅分析病毒樣本中所包含的ASCII碼,我們就能夠獲取非常多的信息。主要是要有耐心,勤于動手,多多交流,積累經驗。我希望大家到現在能夠不再懼怕計算機病毒,并歸納出自己喜歡的查殺方式。
總結
以上是生活随笔為你收集整理的病毒木马查杀实战第010篇:QQ盗号木马之十六进制代码分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android人脸识别绘制人脸框自定义V
- 下一篇: 1、深入理解Pod