Lab12-02-03-惡意樣本分析-簡單的鍵盤記錄程序分析

簡單的鍵盤記錄程序分析

**樣本來自《惡意樣本分析》Lab12-2.exe **
Lab12-03.exe和dump出來得payload.exe是同一個

程序不是很複雜很適合用來練手,對於新手很友好🤡

程序的目的是什麼

這是一個鍵盤記錄的惡意程序。

程序是如何隱藏自身的

程序創建了一個svchost的進程來運行

惡意代碼的payload放在那裏

加密保存在資源文件內

程序是如何被保護的

將實際的Payload保存在資源內,通過異或加密保存

字符串是如何把被保護的

字符串在資源文件的payload內,被異或加密保存。

分析

分析母體邏輯

運行程序後,發現閃了一下就沒了,查看ProceExp內的進程信息沒看到運行的進程名,在winlogon外多了一個svchost進程值得被關注

在這裏插入圖片描述

看到這個進程是一個合法的進程就更加奇怪了,因爲svchost進程是在winlogon下的service進程下的一個子進程,但是獨立出來確實很可疑,猜測程序應該創建了一個獨立的svchost進程來隱藏實際的功能,避免被定位和分析。

將程序拖入到ida內分析,來到入口處後看到程序先獲取了當前運行程序的句柄,接着獲取了svchost的在系統下的路徑

在這裏插入圖片描述

在這裏插入圖片描述

執行後就得到了svchost.exe的完整路徑

在這裏插入圖片描述
接着讀取資源文件內的payload

在這裏插入圖片描述

在這裏插入圖片描述
可以看出程序是被加密的,接着讀取完成後會再分配一款內存用來複制讀取到的資源內容

在這裏插入圖片描述

在這裏插入圖片描述
之後調用解密程序,進行解密。

在這裏插入圖片描述

在這裏插入圖片描述

進入到sub_401000後分析可知,解密方法是將讀取的資源文件和傳入的0x41進行異或解密

在這裏插入圖片描述

解密後是一個PE文件

在這裏插入圖片描述

此時將payload進行dump保存。解密完成後進入核心功能sub_4010EA

在這裏插入圖片描述

進入sub_4010EA內分析,首先判斷payload是否是一個PE文件,因此會先判斷MZPE

在這裏插入圖片描述
都滿足之後調用CreateProcessA創建C:\Windows\System32\svchost.exe進程

在這裏插入圖片描述
在這裏插入圖片描述
創建完成進程後會,先獲取創建的進程的線程上下文信息並判斷是否爲空

在這裏插入圖片描述
如果不爲空則調用會調用NtUnmapViewOfSection將創建的進程的節區釋放掉

在這裏插入圖片描述

緊接着調用VirtualAlloc函數在進程內分配一塊內存並調用WriteProcessMemeory函數將之前解密的payload寫入到創建的進程內,之後通過SetThreadContext設置線程的上下文信息和ResumeThread再次回覆程序執行

在這裏插入圖片描述

運行時通過WriteProcessMemory寫入的內信息

在這裏插入圖片描述
寫進進程後就會執行payload的功能。

分析payload

使用ida打開分析,來到入口處發現程序開了一個控制檯窗口並顯示之後,就進入到了Hook流程。

在這裏插入圖片描述

SetWindowHookExA的參數idHook=0xD可知,這是一個鍵盤記錄的惡意程序,核心功能在lpFn內,如果不清楚SetWindowHookExA的參數意義,參考

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowshookexa

直接進入到lpFn內,如下

在這裏插入圖片描述

根據SetWindowHookExA函數的調用可以知道,爲了不影響原始調用,因此這裏會將對應的事件傳給要處理的程序,因此通過CallNextHookExA函數來傳遞。

進入到keylogger程序

image-20200521163144220.png

主要記錄的事件包括了

image-20200521161628427.png

內存保存在模塊執行的路徑下的practicalmalwareanalysis.log

在這裏插入圖片描述
保存的內容格式爲

[Window: 事件名稱]
執行的操作
#
[Window:  添加到壓縮包]
 injBACKSPACE  BACKSPACE  BACKSPACE  infectedinjBACKSPACE  BACKSPACE  BACKSPACE  BACKSPACE  BACKSPACE  infected

如下保存的鍵盤事件內容

在這裏插入圖片描述

總結

程序爲了隱藏核心功能,將payload保存在了母體的資源文件內,接着運行之後解密payload,創建一個名爲svchost.exe的進程,這個進程是一個合法的進程,之後將解密的payload寫入合法的進程內執行,通過通過Hook技術完成了鍵盤記錄功能。

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