惡意代碼分析實戰 Lab16-02

知識點:
TLS回調
TLS回調被用來在程序入口點執行之前運行代碼。若可執行程序的PE頭部包含一個.tls段,則可能此程序使用了反調試技術。
分析報告
1. 樣本概況
樣本名稱Lab16-02.exe,編譯器爲Microsoft Visual C++ v6.0。
1.1樣本信息
樣本名稱:Lab16-02.exe
MD5值: E88B0D6398970E74DE1DE457B971003F
SHA1值:861185D8D7100DB4ACC6F1F18E67CB360E7D109C
1.2測試環境及工具
測試環境:WinXP
測試工具:IDA 、OD
2. 具體行爲分析
2.1主要行爲分析
(1) 雙擊運行程序沒有反應,在命令行下運行程序,提示輸入長度爲4的密碼。
 
(2) 使用Ollydbg打開程序,直接終止運行,可能是使用了反調試技術。
(3) 使用PhantOM插件之後,程序必須添加參數運行,不然還是會直接終止。
2.2惡意代碼分析
(1) 程序首先查找窗口名爲OLLDBG的窗口,若找到,則調用exit函數,終止進程。
 
(2) 接下來利用OutputDebugStringA來檢查程序是否被調試。
 
(3) 解決掉反調試的問題後,查看主函數功能。
根據IDA pro中主函數的結構,查看有進行了字符串比較。argv即爲程序運行時附加的參數,將其餘encode_password進行比較。
 
(4) 利用OD查看encode_password的值。
因爲是比較4個字節,所以猜測前四個字節bzrr作爲密碼。
 
將bzrr作爲參數重新運行程序,提示輸入了正確的密碼。
 
(5) 在命令行上使用bzrr,提示密碼錯誤。
 
(6) 字符串比較函數之前使用了createthread函數來創建一個解密的線程。
檢查反調試,已經使用了PhantOm,所以不用管這個。
 
使用了全局變量byte_40A968,此變量被sub_401020引用,此函數使用OutputDebugStringA來檢查程序是否被調試。
若檢測到調試,則給byte_40A968加1
 
嘗試在OD中修改byte_40A968的值,然後解密出byrrp@ss
 
(7) 在命令行中使用密碼byrr運行程序,顯示密碼正確。
 
3. 總結
此程序使用TLS回調函數來進行反調試。當程序啓動時,回調函數用類名OLLYDBG調用FindWindowA函數,查看OD是否運行,若運行則退出。當程序創建一個線程時,使用OutputDebugStringA來檢查程序是否被調試,若是,則把解密所使用的字符串加1,讓分析着得到一個錯誤的密碼。要想獲得正確的密碼,就得把所有的反調試的地方搞定。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章