當前位置:
首頁 > 新聞 > ESP技巧:教你如何解包可執行文件

ESP技巧:教你如何解包可執行文件


惡意軟體開發者會使用各種方法繞過反病毒產品,他們可以對字元串進行混淆處理,或者使用其他軟體的證書來對惡意軟體進行簽名。其中最常用的一種方法就是利用封裝器來對惡意軟體進行壓縮,並讓反病毒軟體無法檢測到它們,這也就是俗稱的「加殼」。因此,作為一名惡意軟體分析人員來說,我們應該了解加殼機制,並清楚如何解包可執行文件。


加殼與解包


加殼軟體可以幫助你對可執行文件進行壓縮,就跟zip文件差不多。一般來說,當你在使用zip文件時,需要手動進行解壓縮。但是對於加殼來說,它會在可執行文件的代碼中添加一部分不會被壓縮的「運行時封裝器」代碼。當你運行這個可執行文件時,這部分未被封裝的代碼將會對可執行文件中其他已被封裝的惡意代碼進行解包並運行。

識別加殼


如何識別這種加殼的惡意軟體呢?其中一種方法就是檢查其中的字元串信息,但是加殼後的可執行文件中並沒有大量字元串可以查看。你也可以對代碼中import的類和庫進行分析,但加了殼的可執行文件並不會顯示這部分內容,這樣可以增加逆向分析的難度。因此,為了對加殼的惡意軟體成功進行逆向分析,我們需要對其一直調試直到發現了未壓縮的代碼為止,然後對導出的可執行文件代碼進行分析。


這裡可以使用「ESP技巧」,也就是ESP寄存器。我們可以利用這種技術在ESP寄存器中設置硬體斷點,當我們轉移到改斷點時,也就是到達了程序的入口點(OEP)。接下來,我們就可以將剩下的可執行文件導出,並得到解包後的可執行文件代碼了。


解包奪旗遊戲


我們專門開發了一個小程序來演示如何手動解包可執行文件,你可以點擊【這裡】獲取。其實這就是一個奪旗小遊戲,當你找到了正確的密碼之後,你需要輸入並嘗試拿到Flag。你可以在Radare2中通過比對字元串數據來尋找到密碼,或者你也可以直接使用「strings」命令來搜索,但如果程序加了殼的話,又該怎麼辦呢?因此,我們這裡使用了免費的UPX封裝器來對代碼進行封裝加殼,它的解包過程也比較簡單,所以它是一款非常適合學習的工具。祝大家好運!


過程分析


當我們使用rabin2運行封裝的可執行程序並查看import信息時,我們可以看到這裡幾乎沒有什麼信息,而且字元串也看不出什麼字面意思:



很明顯,這是一個經過封裝的程序。我們可以PEiD工具來查看它所使用的封裝器信息:


你可以看到,這裡使用的是UPX封裝器。當然了,這種封裝器拆封起來非常簡單,你也可以直接下載UPX拆封程序來進行解包。但我們這裡要演示的是如何手動實現這個過程,所以接下來我們在x64dbg中啟動程序,然後按下F9,直到我們到達應用程序的入口點位置。X64dbg會直接用「EntryPoint」對入口點進行標記,這裡我們使用了pushal指令對入口點設置識別符。



下一步,我們需要按下F8或F7鍵,或者按下「step over」或「step into」按鈕。然後需要右鍵點擊右側的ESP寄存器,並選擇「Follow in Dump」。



接下來,我們需要選擇x64dbg底部導出數據的前四個位元組,然後在DWord中設置一個硬體訪問斷點。



接下來,我們就可以按下F9鍵來重新運行應用程序了,當運行到硬體端點位置時,程序將暫停運行。我們在斷點後設置了一個popal指令,並用它來表示我們仍在正確的執行路徑上。我們還可以看到,結尾部分跳轉到的0x0040c483就是解包後可執行文件的結尾部分。



跳過jmp指令之後,我們就到達了程序的入口點位置。


下一步就是要對導出的應用程序進行分析了,按下CTRL+A鍵並開始分析彙編代碼,這樣可以確保到處的彙編代碼不會出現錯誤。現在,我們可以按下CTRL+I鍵或在插件欄選擇Scylla來開始導出程序。



現在,點擊「IAT Autosearch」按鈕來讓程序自動幫我們找出可執行程序的導入地址表(IAT)。點擊了「Get Imports」按鈕之後,我們將會得到這個可執行文件引用的第三方庫。



現在,點擊「Dump」按鈕並保存導出的可執行程序。但是當我們運行這個可執行文件時,卻出現了下圖所示的錯誤:



這是因為解包後的可執行文件中不包含之前可執行文件中的IAT,所以我們還需要對其進行修復。返回Scylla界面,點擊「Fix Dump」按鈕,選擇剛才導出的可執行文件,並點擊確定。修復成功後,可執行文件的文件名後面會加上一個「SCY」,現在它就可以正常運行了。




然後重新在Rabin2中打開這個解包後的可執行程序,並嘗試導出其中的設置信息。



如果你使用密碼「this_is_password」來運行我們的應用程序,你將會看到如下所示的界面:



恭喜你成功拿到了Flag!


資源獲取


UPX_Proj_Packed.exe:【點擊閱讀原文獲取】


* 參考來源:goggleheadedhacker,FB小編Alpha_h4ck編譯,轉載請註明來自FreeBuf.COM



喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

FB精品公開課 | HackPanda帶你玩轉無線遙控信號分析

TAG:FreeBuf |