您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關PeDoll開源及使用過程是怎樣的,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
PeDoll是一款基于inline Hook的程序行為分析軟件,主要包括以下功能
1.對關鍵API調用進行Hook生成報表,監視程序行為
2.運行時修改程序執行代碼
3.程序的網絡抓包,寫入數據的Dump
4.軟件實現的自旋鎖斷點,方便與OllyDbg聯合調試
5.分析目標程序的內存,分析棧數據實現破解.
2.PeDoll的組成原理
PeDoll 主要面向逆向分析初學者或者是具有一定編程逆向基礎的Cracker,旨在簡化逆向分析工作,可以在一定程度上對一些具有反逆向功能的惡意程序(加殼,加花,反調試器)簡化分析難度或實現自動化分析
PeDoll是基于簡單腳本(命令)控制的行為分析軟件,通過對不同的程序編寫不同的腳本實現特定的分析,同時PeDoll是一款遠程分析調試器,這也意味著在對惡意程序分析中控制端和調試端分開進行是被建議的
其運行原理如下所示
1.常用腳本,包括一系列已經編寫好的常用腳本,包括一些常用的對MBR勒索病毒,用戶鎖勒索病毒,易語言注冊碼破解,網絡抓包分析,遠程注入代碼分析.....等常用腳本
2.控制器,在控制端執行的程序
3.調試機程序,需要拷貝到調試機或其他安全環境中執行的程序(可信程序可以直接在本機執行)
PS:其中PE.dll是PEDoll完成DLL注入的并執行inline hook的文件,PeDolls.exe用于執行注入,執行可執行文件與控制端進行交互等操作,PeDolls.exe可以在注入成功后關閉不影響調試
3.部署PeDoll調試環境
記錄調試機上的IP地址(假設調試機和控制機在同一內網中)
將它填寫在控制端中,并點擊連接按鈕
至此完成PeDoll的部署
4.范例1 使用PeDoll分析Net user勒索程序
step1.將樣本拷貝到調試機中,這里命名為Sample1.exe
step2.加載分析腳本
step3.掛載目標程序,輸入命令 doll db <D:\Sample1.exe>,回車,然后連接
step4.執行程序,得出結果
4.范例2 使用PeDoll使用API斷點分析MBR勒索程序
step1.重復第三節的內容,將樣本拷貝到調試機中,這里為sample2.exe
step2.清理之前加載的腳本,重新掛載MBR勒索病毒腳本
step3.掛載目標程序,輸入命令 doll db <D:\Sample2.exe>,回車,然后連接,執行,觸發斷點
step4.命令輸入hook WriteFile,監視MBR鎖寫入數據,然后點擊執行抓取數據
step5.在數據中查看MBR鎖密碼
5.范例3 使用PeDoll binary hook分析易語言的注冊碼/密碼
將樣本拷貝到調試機中,命名為Sample3.exestep2.清理之前加載的腳本,重新掛載易語言密碼破解腳本
step3.輸入命令doll db <Sample3.exe>執行程序
step4.執行Hook,在界面上輸入任意文本密碼,得出該程序的正確密碼
6.范例4 使用PeDoll 遠程注入完成對釣魚程序的網絡抓包功能
將樣本拷貝到調試機中,執行
些許彈出釣魚界面
通過分析,該程序為
QQScLauncher.exe
step1.轉到PeDoll控制端,輸入enumprocess枚舉進程,輸入 doll di <PID>并注入step2.考慮到該釣魚樣本應該為郵箱釣魚,掛載TCP連接分析腳本
step3.點擊運行,然后隨便在釣魚界面數據輸入數據,等待抓包
step4.切換到數據,分析smtp數據包(釣魚作者的郵箱賬號密碼都在那,BASE64解碼一下大家都懂得)
7.如何編寫PeDoll腳本
一.API hook
在常用腳本的腳本編寫手冊中,包含了PeDoll所有支持hook 的API
如果想要監視某一個API函數,只需要編寫
hook + 該API的函數名(大小寫敏感)
例如,我們想知道這個程序是否對文件進行的操作(假設不考慮更底層API調用),只需要對CreateFileA CreateFileW進行監視就可以了
腳本代碼如下
hook CreateFileA
hook CreateFileW
二.binary hook
PeDoll 支持對二進制代碼的直接hook,這對于一些自定義函數的hook尤為有效,注意,在進行binary hook你必須使用其他工具知曉該處代碼的棧結構并且你需要在腳本中去平衡堆棧
其代碼格式為
binary 需要hook的二進制代碼16進制序列 執行完成后出棧字節數 ESP或EBP的解釋方式 執行結束后EAX的值
例如我們知道易語言字符串比較函數的特征為8B5424048B4C240885D2750D,因為是調用者清理堆棧(cdecl call)所以其出棧字節數為0
在ESP+4和ESP+8偏移處是字符串指針 當執行結束后EAX為0是表示比對匹配,因此其代碼可以寫為
binary 8B5424048B4C240885D2750D 0 S4S8 0
其中S4表示String at ESP+4, 其中S8表示String at ESP+8
當然,假如要解釋為數字,就可以寫為D4D8 表示Decimal at ESP+4, 其中S8表示Decimal at ESP+8
同理
B4表示String at EBP+4, 其中B8表示String at EBP+8
E4 表示Decimal at EBP+4, 其中E8表示Decimal at EBP+8
三.API過濾及斷點
以CreateFileA為例,查看腳本編寫手冊如下說明
API: CreateFileA Regular: 1. CREATEFILEA 2. <UNKNOW|CREATE|OPEN|RESET > 3. <var lpFileName>
其中1表示這個函數名,注意它是大寫的
2.表示它的三個參數,UNKNOW表示未知操作,CREATE表示創建,OPEN表示打開,RESET表示復位
3.表示這個函數將操作的文件
如果我們需要對這個函數進行監視,當他"打開一個"名叫123.txt時進行斷點,那么代碼可以這樣寫
hook CreateFileA
FILTER_START <---過濾器開始,如果需要設置斷點,這個代碼一定要先寫
CREATEFILEA <OPEN> <123.txt> QUERY SHOW
其中,QUERY表示斷點詢問,當然QUERY還可以寫成REJECT表示直接拒絕該函數操作,或者 TERMINATE 表示直接結束程序,如果不寫或寫為PASS表示默認放行
其中,參數中還支持其它比較運算符,包括(+ 包含,=全等,>大于,<小于,&與,!非)
例如
CREATEFILEA <OPEN> <*> QUERY SHOW 表示打開任意文件時下斷點
CREATEFILEA <OPEN> <*123> QUERY SHOW 表示打開的文件包含123字符時斷點
CONNECT <192.168.1.1> <>1000> QUERY SHOW 表示當客戶端連接192.168.1.1的端口大于1000時斷點
CONNECT <192.168.1.1> <!1000> QUERY SHOW 示當客戶端連接192.168.1.1的端口不等于1000時斷點
...以此類推
8.如何獲得PeDoll
Release 1.6.1版本-----https://pan.baidu.com/s/189_m79g2-K0QVwkhxxSpBw
Github 完整源代碼----https://github.com/matrixcascade/PeDoll
9.其它
1.PeDoll 只是簡化破解的一些流程,僅僅只是掛載腳本并不能讓你學會破解.
2.pedoll logo源代碼都為本人原創,允許任意修改,但在其派生及二次開發版本請注明原作者的版權信息
3.編譯環境為VisualStudio 2010 + Qt 4.8.6 Framework
上述就是小編為大家分享的PeDoll開源及使用過程是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。