本文分析一個(gè)PE感染木馬病毒行為, 澄清基本功能和加載方式,并給出受損文件修復(fù)方案。 該木馬病毒通過感染系統(tǒng)原有PE和移動(dòng)介質(zhì)駐留系統(tǒng)進(jìn)行復(fù)制傳播,竊取文件。
前不久一入行不久的朋友種了木馬病毒,自己分析了啟動(dòng)方式和病毒本體,清除了病毒本體和其啟動(dòng)項(xiàng),以為打完收工,可詭異的 iexplore.exe 進(jìn)程殺了又起周而復(fù)始,隨求助我來看看,初步查看行為,懷疑是早年灰鴿子常用的進(jìn)程替換,創(chuàng)建一個(gè)掛起狀態(tài)(SUSPEND)的進(jìn)程, 填充惡意代碼,設(shè)置主線程的上下文,啟動(dòng)主線程,自身退出。都是老套路找出本體干掉相關(guān)啟動(dòng)項(xiàng)即可解決問題,隨著分析深入發(fā)現(xiàn)此木馬病毒手法雖老,強(qiáng)在巧妙集成,環(huán)環(huán)相扣,功能較多,應(yīng)為團(tuán)隊(duì)所為,詳細(xì)跟進(jìn)了下,隨有此文記錄下分析過程。
OD繼續(xù),步過初始化和花指令,申請(qǐng)內(nèi)存空間,解密關(guān)鍵代碼拷貝到新空間,push 首地址,ret 返回執(zhí)行,
CreateProcess 創(chuàng)建進(jìn)程,掛起。
分步申請(qǐng)內(nèi)存,置零后將數(shù)據(jù)解密后拷貝
跨進(jìn)程分步拷貝數(shù)據(jù)到新進(jìn)程內(nèi)存中,拷貝1
ResumeThread 線程,在新進(jìn)程寫入內(nèi)存下斷點(diǎn)。
新進(jìn)程進(jìn)行必要的初始化拷貝自身到啟動(dòng)目錄后先后創(chuàng)建4個(gè)線程,分別完成不同的功能
斷下4個(gè)線程逐個(gè)分析各線程功能分別為
1 模擬瀏覽器偽裝http流量訪問 google.com、bing.com、yahoo.com
2 遍歷盤符,判斷磁盤類型,進(jìn)行相應(yīng)操作
3 連接特定域名進(jìn)行木馬數(shù)據(jù)交互
4 創(chuàng)建ftp服務(wù)器將本機(jī)所有磁盤設(shè)為ftp服務(wù)目錄
以下是對(duì)四個(gè)線程的簡要分析
設(shè)定 User-agent 偽裝瀏覽器流量訪問網(wǎng)站,略過。
如為移動(dòng)介質(zhì)寫 autorun.inf 及相關(guān)傳染組件
調(diào)用 GetLogicalDriveString 獲取磁盤列表,GetDriveType獲取磁盤類型
獲取磁盤剩余空間后寫入 autorun.inf 及相關(guān)組件
.cpl文件為控制面板項(xiàng),實(shí)為PE文件,OD加載起來…
CreateProcess 創(chuàng)建進(jìn)程傳染…
supnewdmn.com 指向ip為 82.112.184.197,歸屬地俄羅斯
tvrstrynyvwstrtve.com
rtvwerjyuver.com
wqerveybrstyhcerveantbe.com
就supnewdmn.com進(jìn)行簡要分析,其指向Ip為 82.112.184.197,歸屬俄羅斯
82.112.184.197 對(duì)應(yīng)域名及相關(guān)域名解析記錄..
木馬病毒偽裝流量訪問大站、移動(dòng)介質(zhì)寫autorun.inf傳染、木馬域名回連常見,明目張膽開21端口ftp服務(wù)的還比較少見。
獲取ftp指令后在標(biāo)準(zhǔn) ftp指令序列內(nèi)對(duì)比指令是否合法,
ftp用戶名口令是明文,找起來比較簡單,用戶名密碼均為:supnewdmn , explorer.exe 訪問 ftp://127.0.0.1 所有磁盤皆可訪問。
經(jīng)觀察分析,ie并不是殺掉進(jìn)程后立即啟動(dòng),而是不定期起來,用Procmon觀察,與用戶行為有關(guān)系,具體到木馬中分析,除了寫啟動(dòng)目錄外,木馬調(diào)用OpenProcessToken、LookupPrivilegeValue、AdjustTokenPrivileges提升自身權(quán)限后,獲取進(jìn)程列表,對(duì)相應(yīng)模塊PE進(jìn)行寫操作,對(duì)進(jìn)程需要加載模塊添加段。
例如 Acunetix、Wireshark、WinHex、FileZilla 加載的dll zlib.dll
當(dāng)宿主進(jìn)程加載該模塊時(shí),釋放命名為“原進(jìn)程名+mgr.exe” 的PE文件并執(zhí)行。
搜?mgr.exe?,最近打開的幾個(gè)進(jìn)程都已有模塊被感染。
按照添加段的二進(jìn)制代碼特征搜索C盤內(nèi) .exe *.dll 文件,已感染485個(gè).
病毒遍歷系統(tǒng)所有進(jìn)程模塊,修改PE文件增加段將惡意代碼存儲(chǔ)在新段中。其修改PE文件以下位置,
struct IMAGE_FILE_HEADER FileHeader
WORD NumberOfSections //段數(shù)量加1
struct IMAGE_OPTIONAL_HEADER32 OptionalHeader
DWORD AddressOfEntryPoint //入口點(diǎn)指向新節(jié)內(nèi)
DWORD SizeOfImage //映像大小
DWORD CheckSum //校驗(yàn)和
以上4項(xiàng),NumberOfSections、SizeOfImage、CheckSum好處理,清除惡意節(jié)后計(jì)算相應(yīng)結(jié)果修改即可,新入口地址指向新段,在執(zhí)行完惡意代碼后會(huì)返回原入口點(diǎn),通常會(huì)存在新段內(nèi),跟蹤驗(yàn)證。
如上圖所示新舊入口地址偏移存儲(chǔ)在新加段結(jié)尾位置,同時(shí)存儲(chǔ)了宿主進(jìn)程的全路徑供釋放時(shí)使用。
以上幾個(gè)位置,寫個(gè)簡單的python程序就可恢復(fù),恢復(fù)完數(shù)據(jù)記得恢復(fù)原文件時(shí)間。
與時(shí)下的無文件木馬相比,傳統(tǒng)木馬病毒因有文件駐留,更注意自身加殼、加密、PE感染駐留,Dll劫持、白加黑等方法的運(yùn)用,只要細(xì)心分析澄清不難。澄清機(jī)理徹底清除,只是攻擊追蹤溯源的第一步,后續(xù)還有大量的工作需要做……