一、樣本信息
樣本名稱:rt55.exe
樣本大小: 159288 字節
文件類型:EXE文件
病毒名稱:Win32.Backdoor.Zegost
樣本MD5:C176AF21AECB30C2DF3B8B8D8AA27510
樣本SHA1:16E951925E9C92BC8EFDF21C2FBAF46B6FFD13BC
二、行為具體分析
1.獲取當前運行模塊的命令行參數,根據當前命令行參數是否包含字符串"NewUpdatExe"進行判斷,決定下面提到的內存解密PE文件是調用導出函數NewUpdatExe還是導出函數xDllMain。
2.解密當前病毒進程內存地址為0x408070處,文件大小為0x17C00的被加密隱藏的PE文件。
3. 加載內存解密的PE格式的Dll文件,進行惡意病毒行為的操作;具體的加載過程後面會具體分析。
4.將解密內存PE文件的每個區節塊的數據從文件映射到申請的內存空間中。
5. 對內存解密PE文件的重定位表Base RelocationTable進行重定位的修復。
6. 獲取解密內存PE文件的導入表中的INT表中的函數的調用地址填充IAT表。
7. 循環修改解密內存PE文件的各區節塊數據段的內存數據屬性。
8.運行的病毒進行將PE文件(dll文件)的加載已經基本完成了,因此這個被病毒進行內存加載的PE的動態庫文件是有效可以執行的;因此以該內存PE動態庫的OEP為函數指針執行惡意的代碼。
9. 獲取導出函數名稱字符串"NewUpdatExe"或"xDllMain",用以獲取解密內存PE文件的導出函數"NewUpdatExe"或"xDllMain"的調用地址。
遍歷內存解密PE文件的導出表,獲取需要的導出函數"NewUpdatExe"或"xDllMain"的調用地址。
10.根據步驟1中的傳入的函數的名稱"NewUpdatExe"或者"xDllMain",根據上面的步驟獲取需要的導出函數"NewUpdatExe"或者"xDllMain"的地址,然後調用內存解密PE動態庫文件的導出函數"NewUpdatExe"或者"xDllMain",執行惡意的代碼;然後再次以內存解密PE文件的OEP為函數指針,執行內存PE文件的代碼,執行惡意行為。
三、 病毒分析總結
總體來說,上面的詳細的分析,基本可以使用一句話總結,那就是:宿主樣本程序通過LoadPE的方式加載解密的PE動態庫dll文件,然後有加載的PE動態庫dll文件來執行具體惡意的病毒行為,從而達到逃過殺軟的查殺的目的。關於Backdoor.Zegost木馬病毒的具體行為也就是內存解密PE動態dll文件的惡意行為後面會詳細的分析。
宿主樣本程序加載PE動態庫文件的步驟
1
在宿主程序內存中解密出加密的PE動態庫dll文件
2
將內存解密的PE動態庫dll文件的數據進行PE文件鏡像的內存映射
3
對內存解密PE文件的重定位表Base RelocationTable進行重定位的修復
4
獲取解密內存PE文件的導入表中的INT表中的函數的地址填充IAT表
5
修改解密內存PE文件的各個區節塊數據段的內存數據屬性
6
內存解密的PE動態庫dll文件的加載完成,可以像正常dll一樣執行自己的代碼