惡意代碼分析實戰 課后練習


學會動態分析基礎

使用ProcessMonitor工具監控目標進程名稱Lab03-01.exe,並設置監控注冊表與文件寫入操作,如果目標寫入了數據,則可以監控到寫入的具體目錄。

使用ProcessExplorer 可用來監控目標程序導入的Dll文件以及頭部數據。

例如程序中使用了Mutant互斥量,來保證程序只運行一個實例。

使用WireShark工具捕捉目標網絡特征,首先找到該進程對應的PID,然后執行CMD netstat -ano

得到TCP端口號再根據特定端口,使用Wireshark篩選條件中輸入tcp.port == xxx 過濾特定流量

如果惡意程序是一個dll文件,我們需要首先查看導出表中是否存在安裝之類的到處函數。

一般dll無法自己運行,需要使用svchost.exe -k netsvcs 等命令引導其運行,在其身上會加載很多dll文件,運行。

首先使用Regshot對注冊表拍一個快照。

使用rundll32工具加載並安裝后在分析,執行命令:rundll32.exe Lab03-02.dll,installA 然后拍攝第次快照,並對比兩次的不同,報告中顯示,創建了一個IPRIP的服務。

由於是一個服務,則執行命令,讓這個服務啟動起來。

然后可以使用ProcessExplorer工具,find搜索,目標dll實在那個程序中被運行起來的,如下可知,是附着在svchost.exe中進程中運行起來的。

如下我們知道了目標進程的PID是1028

使用ProcessMonitor設置過濾條件監控PID是,1028即可獲取到目標DLL的操作記錄。


IDA 的使用技巧總結

1.找到導出表的GetHostBynme函數位置,並查詢有多少函數調用了這個地址,通過交叉引用即可獲取到,選中地址按下ctrl+x即可查詢。

類型type 中p開頭代表是一個函數,rw開頭代表是可讀可寫的屬性,如下除去重復的與非P類型的,剩下的一共有五個地址調用了。

接着跳轉到0x10001757位置處的gethostbyname的調用,找出dns請求的域名。

將地址跳轉到0x10001656處,觀察,帶有var_的變量為局部變量,正數則代表是函數參數。

使用string窗口,在反匯編中定位字符串\cmd.exe /c 它位於什么地方?

選擇view ->OpenSubview -> strings 選項,找到字符串位置。

雙擊地址,即可找到引用的變量地址,如下所在:xdoors_d:10095B34

在引用\cmd.exe /c的代碼所在區域發生了什么?我們直接在最右側雙擊上箭頭

即可找到引用區域

在同樣的區域中,0x100101c8處,dword_1008E5C4 是一個全局變量,那惡意代碼是如何設置這個位置的呢,使用交叉引用來解決。

首先雙擊一下,跳轉到全局變量位置。

接着,我們在data地址處按下 ctrl+x 交叉引用地址,只有type為w的是寫入了數據,賦值也就是從這里開始的。

使用塗抹式來繪制出對sub_10004e79的交叉引用圖,當進入這個函數時,那個API函數可能被調用,僅僅基於這些API函數,如何重命名這些函數?

1.首先找到sub_10004e79函數地址,雙擊跳過去。

接着是獲取圖模式,選擇view - > graphs -> user xrefs chart 直接點擊ok生成圖結構。

接着看一下dllmain直接調用了多少個API函數,多少個在深度為2時被調用?

找到DllMain地址,然后選擇 view - > graphs -> user xrefs chart 調用深度為2.

在0x10001701處是一個對socket的調用,他的三個參數是什么?我們可以將第一個參數2轉換為參數關鍵常量,選中push 2 然后右鍵選擇,Use stardard symbolic constant找到一個常量然后保存即可。

搜索IN指令,(OpCode 0xED)指令在代碼中使用位置,點擊search -> sequence of bytes 查找ED指令。

尋找in指令,雙擊過去看看。

可以將壓縮數,轉換為字符串.

為了能找到所有引用虛擬機檢測的代碼,我們可以來到代碼頭部,然后交叉引用一下,有三處引用了虛擬機檢測。

最后將光標跳轉到0x1001d988位置,使用IDC腳本進行解密。

#include <idc.idc>

static main()
{
	auto ea = ScreenEA(),b,i,decode;
	for(i=0x0;i<0x50;i++)
	{
		b = Byte(ea+i);
		decode = b ^ 0x55;
		PatchByte(ea+i,decode);
	}
}

將光標放到解密的行上,然后運行腳本即可解密。

識別匯編中的C代碼結構 第四章

分析惡意windows程序 第五章

使用OD進行動態分析 第六章

惡意代碼的特殊行為 第七章

隱藏的惡意代碼啟動 第八章

惡意代碼的數據加密 第九章


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM