4天前 中國互聯安全響應中心  滲透注入
文章評分 0 次,平均分 0.0

0x00 背景


日前實驗室捕獲一個樣本。遠遠望去,像是搜狗輸入法,在測試機中點開一看,彈出一款游戲的物價表,再看PE文件屬性,還帶正常著數字簽名,一副人畜無害的樣子。經過一番認真分析后。發現遠沒有這么簡單,這里就分析過程記錄一下,希望其他安全工作者有些許幫助。

先介紹一下所謂白名單免殺。隨著病毒與殺軟之間的斗爭,殺軟的手段不斷地增多、增強,由早期傳統的特征碼匹配算法發展到目前虛擬機技術、實時監控技術等流行的查殺算法。但始終存在一種最直接也最根本的免殺方式——白名單免殺。病毒就安安靜靜地躺在殺軟的白名單中,誰閑的沒事會去查水表呢?

當了解了白名單免殺的基本含義之后,就可以針對樣本進行深入的研究,本文以下內容就是筆者拿到樣本之后,逐步分析樣本主要功能的完整過程,其分析環境如下:

  • 分析環境:win 7 x86 VMware
  • 分析工具:IDA、CFF、OD

0x01 樣本概述


樣本包含5個文件:

File name size MD5 attribute
nvvsvc1.exe.exe 451.50 KB (462336 bytes) 4D9B3A508BC2402A86E10F7907022263 hidden
HWSignature.dll 48.50 KB (49664 bytes) 85F50E1D2DE076079D98F09416E4C710 hidden
HanziSort.dat 158.75 KB (162557 bytes) 4FB42CBC7ADD3CF2AB3F0A99B9E7CE25 hidden
圖1 Shortcut linked to cmd cmd /c nvvsvc1.exe & exit Shortcut
01.jpg.jpg 99.07 KB (101446 bytes) 78501660AD39494A7248BA0C96989494 hidden
  • nvvsvc1.exe:即為搜狗輸入法的更新工具,用virusbook查看后可判定完全沒有問題。此外,該文件有正常的數字簽名,見下圖。

惡意傳播之——社工+白+黑

  • HWSignature.dll:這個DLL原本是搜狗輸入法的硬件簽名DLL,該樣本中被劫持為惡意劫持。
  • HanziSort.dat:原本為搜狗輸入法與漢字相關的數據文件,該樣本中被替換為其他數據文件。
  • 01.jpg.jpg:一副jpg圖片,內容為《怪物獵人官方最新價格表》,后文有展示。
  • 圖1:指向cmd的快捷方式,其參數為cmd.exe /c nvvsvc1.exe & exit

其中,nvvsvc1.exe為主程序,其目的是加載HWSignature.dll,而HWSignature.dll會加載并解碼HanziSort.dat, 進一步的,HanziSort.dat會再次解碼自身并在內存中釋放svchost2.dll,此后手動加載svchost2.dll,該DLL為包含惡意程序的主要功能。

傳播方式:以《怪物獵人官方最新物價表》為魚餌進行釣魚,下載解壓后,其他文件隱藏,只能看到名稱為“圖1”的文件,點開后確實會展示圖片,但木馬也會加載。筆者建議廣大游戲玩家,下載的攻略要先看清是什么東西,再點開查看內容。

0x02 主程序分析


拿到樣本之后,首先放到virusbook查了查,主程序想必沒問題,而除此之外的一個DLL就被查出有問題了。很明顯,這是一個通過DLL劫持加載自己的木馬樣本,這種通過DLL劫持的木馬,可以算是白名單免殺嗎?這個問題先放一放,后文(0x8 結語)會給出筆者的看法。

IDA分析主程序,絕大部分都是輸入法相關的操作,中規中矩。值得注意的是,此處創建了8個線程。

惡意傳播之——社工+白+黑

這其中第4個線程,即執行sub_427C80的線程會進一步調用sub_42F090函數,在該函數的子函數中,會加載HWSignature.dll,但此處被樣本劫持,用來執行其惡意功能。

惡意傳播之——社工+白+黑

0x03 DLL分析


跟進這個DLL,進一步分析該DLL的行為。無關行為不說,該DLL會打開HanziSort.dat文件:

惡意傳播之——社工+白+黑

讀取其內容,并解碼:

惡意傳播之——社工+白+黑

其解碼方式很簡單,只是把讀取到的文件內容逐字節的與0x56做異或運算。解碼之后,成為包含可執行指令的程序段:

惡意傳播之——社工+白+黑

此后,程序會通過retn的方式跳到解碼的代碼段執行。

0x04 DAT分析


在DAT解碼的代碼中,首先會尋找解碼內容為0xDDCCBBAA的位置:

惡意傳播之——社工+白+黑

通過該地址,可以輔助完成一些列的定位操作,具體內容不做介紹。進而會調用VirtualAlloc函數分配內存空間,然后通過memcpy函數將指定數據拷貝到申請的內存中:

惡意傳播之——社工+白+黑

惡意傳播之——社工+白+黑

而拷貝過去的內存段,會再一次進行解碼:

惡意傳播之——社工+白+黑

其解碼方式同樣比較簡單,是逐字節與0xCC進行異或運算。當完整所有解碼工作之后,可以發現解碼之后的內存為一個完整的PE文件:

惡意傳播之——社工+白+黑

將該PE文件dump出來,用查看CFF看下,可以確認是個完整的DLL:

惡意傳播之——社工+白+黑(忽略一些細節吧。筆者懶得打碼了。)

這個DLL叫做svchost2.dll,后面的代碼可想而知,新申請一塊內存

惡意傳播之——社工+白+黑

然后手動完成PE的加載流程:

惡意傳播之——社工+白+黑

以及根據導入表和重定位表做一些修復工作,并加載所需的各種DLL,最后調用VirtualProtect更改頁保護。

惡意傳播之——社工+白+黑

完成以上操作之后,調用DLL main函數:

惡意傳播之——社工+白+黑

DLL的主函數并沒有什么需要深入分析的地方,這里略過。DLL main返回后,會查找DLL導出的mystart函數:

惡意傳播之——社工+白+黑

最后調用mystart:

惡意傳播之——社工+白+黑

0x05 mystart分析


在該函數中,首先會獲得當前僅進程的名字,并判斷名字中是否包含”1.exe”字符串。

惡意傳播之——社工+白+黑

獲得的樣本中,當然是包含該字符串的。接下來,會進行一些有意思的事。首先會調用WinExec執行”taskkill /f /im cmd.exe”命令,然后創建一個互斥體。

惡意傳播之——社工+白+黑

進一步的,該樣本會在C:\Users\zzz\AppData\Roaming創建一個文件夾,其名字隨機:

惡意傳播之——社工+白+黑

在本次分析中為:C:\Users\zzz\AppData\Roaming\dptpbzwoztxwrh,并將樣本所在的文件夾中所有文件都復制到該目錄下,包括ida生成的幾個文件,但排除01.jpg.jpg。對于這幅圖片,該樣本會調用cmd執行rundll32.exe shimgvw.dll imageview_fullscreen 01.jpg.jpg,其作用就是把樣本中的01.jpg.jpg展示出來:

惡意傳播之——社工+白+黑(01.jpg.jpg :什么仇什么怨?)

如此一來,受害者看到了想了解的《價格表》,也不會懷疑該文件是木馬了。此外,復制到Roaming的主程序會重命名為MSUpdateXXXXXXXX.exe,XXXXXXXX表示8位隨機字母。注意,IDA生成的幾個文件也會被復制過去并重命名。

惡意傳播之——社工+白+黑

拷貝完成之后,釋放互斥體,并Sleep(0x2EE0)的時間。

惡意傳播之——社工+白+黑

并注冊表增加一些鍵值:

惡意傳播之——社工+白+黑

最后,通過shellexecute執行剛剛復制到Roaming的樣本文件。

惡意傳播之——社工+白+黑

0x06 第二次執行分析


當第二次執行時,之前的行為都是類似的,只有在mystart函數中,出現了變化。由于當前進程是復制到Roaming下的鏡像文件,重命名之后不包含”1.exe”字符串(參考上文)。所以會執行到另一個分支,調用Fi函數。

惡意傳播之——社工+白+黑

該函數為svchost2.dll的另外一個導出函數。該函數會隱藏自己的進程名以及其他的信息:

惡意傳播之——社工+白+黑

隱藏結果使自己的進程名變為csrss.exe的,如圖:

惡意傳播之——社工+白+黑

但這種隱藏手段并不高級,隨便一個工具就能識別出來。

進而,會調用Fa函數,該DLL的另一個導出函數。在該函數中出現了一些網絡行為。首先,會連接139.196.184.116:34176

惡意傳播之——社工+白+黑

并發送數據:

惡意傳播之——社工+白+黑

該數據是怎么來的,暫時沒有必要追究。有需要時,可以進一步分析,不過,可以肯定的是,對于同一臺機器,每次發送的數據是一樣的,應該是作為機器的ID標識。發送之后,會接收到如下內容:

惡意傳播之——社工+白+黑

針對返回的內容,會判斷是否含有”Set-Cookie:”字符串,如果有,則取出:

惡意傳播之——社工+白+黑

接下來,會用該Cookie作為機器的標識。

進而,會連接139.196.184.116:35131地址:

惡意傳播之——社工+白+黑

但是該端口已經掛掉了,無法連接上。所以,筆者只好重新定向到自己的IP,并模擬其通信。 連接上IP之后,會發送一些隨機生成的數據:

惡意傳播之——社工+白+黑

本機的監聽結果如下:

惡意傳播之——社工+白+黑

發送3次隨機生成的數據之后,會創建新線程用于接收返回數據:

惡意傳播之——社工+白+黑

該線程會接收來自139.196.184.116:35131回復的數據,但是由于該端口已經掛掉了,筆者只能隨意的回復點什么東西,[email?protected]

惡意傳播之——社工+白+黑

接收到回復之后,會在sub_12A50F0中做解碼工作。其解碼工作首先會將受到的數據逐比特與0xE9異或。

惡意傳播之——社工+白+黑

進而會對長度進行判斷,然后對幾個關鍵位置的內容進行判斷,如果出現不符合的情況就會結束該線程;如果全部滿足條件,則調用zlib 1.2.8版的庫函數解壓接收到的數據。

惡意傳播之——社工+白+黑

最后根據解壓縮出來的內容選擇初始化某個對象,并調用該對象的成員函數,實現惡意功能。

惡意傳播之——社工+白+黑

執行完畢后,該線程會進入循環接收新的數據,并執行相應功能。此外,主線程創建了上述之后,會統計當前系統的各種信息:

惡意傳播之——社工+白+黑

其中sub_100010F0實現捕獲攝像頭信息的相關操作。當獲取了所有的信息之后,發送給目標地址,目標地址同樣掛掉了。最后同樣進入發送和接收的循環中。

0x07 惡意功能分析


該樣本的惡意功能比較多,現隨機展示一個通過匿名雙管道實現遠程CMD的功能。該功能由編號0x31的分支實現。

惡意傳播之——社工+白+黑

詳情參考sub_10007DC0函數,該函數首先會調用sub_10004C00 初始化socket,進而調用sub_1000F060創建管道并啟動CMD進程:

惡意傳播之——社工+白+黑

惡意傳播之——社工+白+黑

0x08 結語


這個樣本并不復雜,但是能夠實現較為全面的木馬功能,另外通過游戲攻略進行傳播,利用白+黑的方式過殺軟。哪怕現在HWSignature.dll會被查殺。但有白名單宿主進程的話,繞過殺軟并不困難(基本瞬間就能想到好幾種繞過檢測的方式)。因此這種模式是值得我們警惕的。

 

除特別注明外,本站所有文章均為鐵匠運維網原創,轉載請注明出處來自http://www.kzrhud.live/25616.html

中國互聯是江蘇邦寧科技有限公司旗下的著名IT服務供應商品牌之一,是國內IDC行業十大之一、企業互聯網服務首選品牌。江蘇邦寧科技成立于2003年,是國內互聯網名稱與數字地址服務、云數據中心機房服務的引領者,是行業云計算解決方案、網站智能建設、企業智能辦公軟件、移動互聯網開發的創新者。自成立以來,公司秉承“一切為了客戶滿意”的核心理念,堅持“國際化、專業化、高端化”的發展思路,堅持“以客戶需求為導向、以技術創新為基礎、以服務創新為支撐”,先后為國內各級政府、社會服務機構、國內外眾多500強企業及中小企業、個人客戶提供了專業、高質、優越的互聯網應用服務。

發表評論

暫無評論

切換注冊

登錄

忘記密碼 ?

您也可以使用第三方帳號快捷登錄

切換登錄

注冊

掃一掃二維碼分享
青海11选5开奖结果走势图