惡意樣本分析——XOR加密與進程注入
本文是一篇關于《惡意代碼分析實戰》書中的實驗Lab12-02樣本的分析報告,這個樣本涉及到進程注入和XOR加密技術,樣本難度適中。
分析中如有不當的地方還請各位大佬指教。
分析工具:
PEID
PEView
IDA pro
火絨劍
strings提取字符串
WinHex
分析環境:Windows xp系統,VMware虛擬機
基礎靜態分析
1、查殼:

無殼。
2、提串:

一堆亂碼,全是A,說明這個樣本加密了,但是剛剛查殼有發現沒有殼,于是打算看看PE文件有沒有加密的跡象。
3、查看PE文件:

可以看到這部分沒什么問題,并沒有加密的跡象,我一個一個節查看,發現后面的資源節有問題,被加密了,就如我提串時看到的字符串一樣全是A,如下圖。

至此,我可以確定,這個樣本使用了資源節加密技術,而且加密的資源節類型是UNICODE,名字是LOCALIZATION,但是加密方法、密鑰我都不知道,所以接下來的分析就要注意這個問題。
4、查看導入表:


我看到有幾個明顯的可疑函數:
VirtualAllocEx、WriteProcessMemory這幾個函數一般用來進程替換,所以推測這個樣本可能還使用了進程替換技術;
SizeofResource、LoadResource、FindResource都是用來加密資源節必要的函數,證明了之前的判斷。
到此,靜態分析結束,我得到如下結論:
樣本使用了資源節加密技術,目前并不清楚加密方法和密鑰;
樣本可能使用了進程替換技術,目前只是猜測。
基礎動態分析
雙擊運行惡意樣本程序,用火絨劍觀察進程變化。

沒運行時的初始狀態:

運行之后的前一小段時間,進程中出現了Lab12-02.exe進程和它創建的子進程svchost.exe。

一段時間后,只剩下svchost.exe進程。
IDA pro反匯編分析
進入_main函數:

看到字符串“\svchost.exe”,極有可能就是代表在此目錄下創建svchost.exe進程(正如動態分析時看到的那樣),所以跳轉到sub_40132C函數(sub_40149D函數跳轉進去只是一些字符串的操作,對分析的幫助不大)。

跳轉到loc_401362的位置,出現了”UNICODE”和”LOCALIZATION”字符串,剛好和加密的資源節名稱吻合,猜測下面是加密功能的代碼,接著向下進行。

出現了之前導入表中和資源節加密有關的一系列函數,說明 sub_40132C 函數應該就是加密資源節的作用,所以接著向下分析,看看能不能找出加密方法和密鑰。

到這里我看到有一個函數sub_401000被調用,而之前的所有代碼調用的只有導入表中存在的API,所以我判斷這個函數一定和加密的內核功能有關聯,并且我注意到了這個函數還有一個參數41h被傳入進去,這是個16進制數。跳轉進去。

一步一步向下分析,就到了跳轉到loc_401016這個位置。有一條指令引起了我的注意:xor al, [ebp+arg_8]。這條指令在對寄存器eax的低8位內容進行異或運算,而一般的異或運算大多都是寄存器自身異或來清除內容,所以這個異或運算顯得很不尋常。
這里使用了一些跳轉語句,像是循環結構,所以按下空格鍵查看一下代碼結構。

這里就清晰的看出了這是個典型的循環結構,而核心部分就在圖中高亮的那行代碼,顯而易見,這個循環結構的目的就是讓所有的內容進行一次異或運算,所以我判斷,資源節加密的加密方法就是異或運算加密,密鑰就是之前傳入的參數41h。
之后,我導出了PE文件中加密:
的文件,用WinHex進行解密,果然顯現出了明文,證明了我的判斷,這里就不放圖了。

回到_main函數,惡意代碼完成資源節加密操作后,又調用了sub_4010EA函數,跳轉過去看看。

往后看,發現了一些用于進程替換的函數調用(之前在導入表看到過),看到ntdll.dll,之前動態運行的時候在惡意進程中看到過這個文件。
再次回到_main函數后,再往下的代碼并沒有什么實際作用可以分析,至此,反匯編分析結束。
總結
這個惡意樣本有如下惡意行為和功能:
該惡意樣本進行了資源節內容加密,并且在運行時解碼內容,釋放出一個二進制文件。加密方法是異或運算加密,密鑰是41h,可以用WinHex解密查看明文內容;
該惡意樣本使用了進程替換技術,用釋放的二進制文件替換svchost.exe;
總體來看,該惡意樣本的目的就是利用進程替換,秘密地執行自己的進程。