某IOT蠕蟲病毒分析之UPX脫殼實戰

xfkxfk發表於2018-04-11

某IOT蠕蟲病毒分析之UPX脫殼實戰

  • IoT
  • UPX
  • Malware

關於UPX的脫殼文章比較多,基本上都是Windows平臺下的脫殼文章,處理起來比較簡單。FormSec將在本文中分析一款mips下病毒程式使用的upx殼保護手段。

 

在應急事件處理過程中,提取到病毒樣本為virus.dat,樣本使用了UPX(3.91)殼,對程式進行了壓縮處理。

 

作者對加殼後的樣本進行了修改,導致使用upx –d命令解壓失敗;雖然解壓失敗了,但是不影響程式正常功能的執行。

 

f9dc0e27b2f0421b3a7b594bef675b46

 

分別使用兩個版本的upx程式嘗試脫殼,可以看出最新版的提示資訊比較具體;

 

提示: upx: virus.dat: CantUnpackException: p_info corrupted

 

由於最新版的脫殼程式直接報告出是p_info欄位的問題,在網上找了一圈沒有關於針對該問題的解決方案,這裡直接找upx(3.94)最新版的原始碼分析一下,主要簡單分析作者使用的干擾脫殼程式的技術手段,以及如何修復;

  1. 定位輸出錯誤資訊的位置,直接查詢錯誤資訊字串即可;查詢到兩處分別對應32位和64位版本的檔案頭;

  1. 簡單分析一下p_lx_elf.cpp -> PackLinuxElf32::unpack 函式的功能;

76f0aa868727d6d090727a86643bfc9c

  1. p_info結構體的定義如下,12bytes;

5fe9cd620feb8625f492e1840879958e

  1. 定位檔案中p_info的位置,可以看出作者將該結構體用0填充後,解壓程式檢測到異常,導致解壓縮失敗;

93d09d86c3f982908a20f2ec49f76869

  1. 修復upx殼,下圖示記的位置儲存著有效的p_info->p_filesize 欄位(p_filesize 和
    p_blocksize相同)

7729d10b3bb467b298a3001dac82d151

  1. 修復p_info資訊:

  1. 脫殼成功;

af38e32f625ebd3097e44bb8c7c9a755

 

上面主要記錄了整個處理定位問題,一直到如何修復的方法與思路,希望能夠幫助到對二進位制病毒分析比較感興趣的同學;

 

後續有機會的話,會出一篇關於該病毒的詳細技術分析報告;歡迎各位斧正;)

相關文章