惡意程式碼分析實戰 Lab 1-2 習題筆記
Lab 1-2
問題
1.將Lab01-02.exe檔案上傳至http://www.virustotal.com/進行分析並檢視報告。檔案匹配到了已有的反病毒軟體特徵嗎?
解答: 這個傳就行了。
2.是否有這個檔案被加殼或混淆的任何跡象?如果是這樣,這些跡象是什麼?如果改檔案被加殼,請進行脫殼,如果可能的話。
解答: 因為這個我是看過一遍書才來看這些題目的,所以,可能剛開始看這本書的同學會有些不理解,沒事,慢慢來。
看Lab01-02.exe
這個檔案有沒有被加殼,那就是老規矩,用PEiD
來檢視就行了,我們試試
大概可以看出來,PEiD的結論是什麼都沒找到,但是我們注意到這個EP段
UPX1
標識,說明這個exe檔案很可能用了一個UPX
技術的變種,所以PEiD才會識別不出來
然後我們用Dependency Walker
,我們就會發現這個程式碼的匯入表只有很少的幾個函式
第一個函式就是LoadLibraryA
,還有一個GetProcAddress
,這兩個函式都是加殼的跡象,因為加殼的程式執行時候脫殼是必須要這兩個函式的
然後我們再試試PEview開啟看看
有明顯的UPX加殼後的表現,基本可以確定這是UPX
加的殼了
然後我們嘗試脫殼
先用UPXshell
來試試
貌似不行額
再換一個UPX Easy UI
來試試
也是不行額
再試試國產的
還是不行,根據書中的說法,是從http://upx.sourceforge.net/下載upx工具,然後解壓就可以匯出原始檔了,我們試試
順便說一下就是,upx的維護團隊已經將upx的原始碼從sourceforge上搬到github了
下載地址在這裡
我們會看到這麼一個說明檔案
我們選擇被標黃
那個版本的
下載下來之後解壓之後會有一個upx.exe的可執行檔案,如果你想把他當作全域性可以使用的命令的話,可以把UPX
的路徑加入PATH
裡面,如果不想的話,可以把這個檔案複製到你想脫殼的那個目錄下面,然後cmd
切換到那個目錄,然後執行upx的命令就行了
upx.exe -o Lab01-02 a.exe -d Lab01-02.exe
-o 是指定脫殼後的檔名稱(output)
-d 是指定要脫殼的檔案(destination)
這個兩個引數順序可以顛倒
然後執行命令
然後這就很尷尬了,下面的分析完全沒法進行下去了
反正,方法就是這麼個方法,但是結果可能和書裡的有些不同,掌握方法就好了
3.有沒有任何的匯入函式能夠暗示這個程式的功能?如果是,是哪些匯入函式,它們會告訴你什麼?
解答: 這個沒脫殼就只能看到那幾個基本的匯入函式
其中從KERNEL32.DLL
匯入的函式可以看到的也就那麼幾個
具體說說
LoadLibraryA 是一般帶殼程式的最小的匯入函式,如果這個函式都不匯入,則沒法在程式執行時候就行載入模組脫殼
GetProcAddress 是程式執行Load了一個模組時候,用來獲取這個模組的地址的,也是必須的,最小必須的函式就是上面這兩個
VirtualProtect 的 Win32 實作會在呼叫處理序的虛擬位址空間裡,變更認可頁面區域上的保護(這個函式我也不懂幹什麼用的)
VirtualAllc 這個一看Alloc的關鍵詞,就知道它應該是分配空間給程式的
VirtualFree 這個也是看關鍵字,釋放分配的記憶體的函式
ExitProcess 這個函式是退出程式用的
然後是從ADVAPI32.DLL
中的匯入函式
有個匯入的function: CreateServiceA
很有意思
這個函式一般是用作建立一個服務
的,說明這個惡意程式碼會當做一個服務
執行在Windows的機器裡面
然後MSVCRT.DLL
這個庫沒有啥研究的,裡面就有一個exit
函式
我們直接來看WININET.DLL
,這個庫是Windows的機器來開啟一個網路連線用的
我們可以看到他匯入了一個函式InternetOpenA
,這個函式是初始化一個應用程式,以使用WinINet的其他函式
但是也是加了殼,所以沒法看到裡面具體使用了什麼函式
結論: 這些匯入函式基本就是告訴了我們,這個函式會當作一個service
執行在計算機裡面,然後會使用到網路來進行一些通訊和聯絡,其他的因為是加了殼的,真正蘊含資訊的函式還在殼裡面沒脫出來,然後沒脫出來的原因大家也在上面看到了,我也沒法了
哪些基於主機或基於網路的跡象可以用來被確定被這個惡意程式碼所感染的?
解答: 這個因為沒有脫殼出來,所以沒有
本文完