Lab12-01-惡意樣本分析-簡單進程注入分析

簡單進程注入分析

樣本來自《惡意樣本分析》Lab12-1.exe Lab12-01.dll

運行程序後,發生了什麼?

觀察程序運行信息,會彈出一個對話框提示Press Ok to reboot,點擊確認後會再次彈出,可以肯定程序是應該有一個循環,每次彈出對話快之後就等待,如果對話框沒被關閉,會重複彈出,如果關閉了,則會在定時器觸發後再次彈框。

在這裏插入圖片描述

哪個進程被注入了

這個在運行時沒有準確定位到,對比了可以的程序並沒有發現,需要實際逆向分析程序。分析後可知,explore.exe被注入加載dll

如何關閉彈窗

需要逆向分析並做patch掉彈框程序,將被注入的進程關閉即可。

程序是如何工作的

首先將樣本拖入ida分析,來到main入口,程序先獲取獲取可執行程序的路徑,並拼接了currentpath\to\Lab12-07.dll的完整路徑,這時候通過EnumProcesses來枚舉進程,如果枚舉失敗,則返回裝填1退出,如下

在這裏插入圖片描述
在這裏插入圖片描述
枚舉完成進程後,開始查找目標進程

在這裏插入圖片描述

經過分析後知道,程序在syub_401000處查找目標explore.exe進程,如果找到則返回1,失敗就繼續循環

在這裏插入圖片描述

當找到目標進程後,開始執行進程注入邏輯。通過OpenProcess打開一個進程目標句柄,

在這裏插入圖片描述

接着調用VirtualAlloc函數在目標進程分配一塊內存,然後調用WriteProcessMemeory函數將Lab12-07.dll寫入到目標進程explore.exe內,緊接着通過kernel32.dll獲取LoaLibraryA函數,最後將獲取的LoadLibraryA函數設置給CreateRemoteThread函數的lpStartAddress,寫入到explore.exeLab12-01.dll的地址設置給lpParameter參數,最後調用CreateRemoteThread執行Lab12-01.dllDllMain函數,這樣一個進程注入就完成了。

在這裏插入圖片描述

分析Lab12-01.dll

根據前面可以知道程序在會被LoadLibrayA函數加載,dll的DllMain函數會被調用,如下

在這裏插入圖片描述

使用一個線程去執行,直接查看lpStartAddress函數,經過分析後知道,程序另開了一個線程來調用MessageBox函數,標題是"Practical Malware Analysis %d",

在這裏插入圖片描述

消息內容是"Press OK to reboot"

image-20200521115822209.png
休眠60000毫秒
image-20200521115906838.png
休眠完成後繼續循環執行一次,因此這個程序不會停止,會不停的彈框。

總結

程序首先獲取了當前執行的路徑以便獲取到Lab12-1.dll的絕對路徑,接着枚舉進程並找到explore.exe作爲注入目標進程,之後利用OpenProcess函數獲得目標進程的句柄並在目標進程內分配內存空間寫入要注入的dll,通過CreateRemoteThread執行LoadLibraryAdll在目標進程內加載並運行,通過這個注入方法來隱藏實際的惡意行爲。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章