摘要:在這個案例里,這些是欺騙性的功能,它們似乎有一個唯一目的,即混淆自動檢測系統,反病毒軟件,或者那些甚至嘗試手工分析這些程序樣本的分析人員。受害機器的處于所規定的地址空間,攻擊者是無法通過到達的。
初始傳染手段?-?Nuclear?Pack
已經有一些其他的文章介紹過Nuclear?Pack破解工具包。可能它還不像g10pack或者BlackHole這些工具那么流行,也沒有像CoolEK或者Phoenix工具有那么多的破解功能,但仍然可以看到它的價值。
Nuclear?Pack因使用了重定向層次結構以及在傳遞惡意代碼前檢查用戶活動而被人所熟知。另外,眾所周知它被不同的犯罪分子用于分發各種惡意軟件,而其中大多數是犯罪軟件。在這篇文章里,我們詳細介紹了一個特殊的事件,在這個事件里一個客戶受到Nuclear?Pack入侵系統的攻擊。
Nuclear?Pack的工作原理如下:
受害者訪問Nuclear?Pack入侵系統的初始登錄頁面,JavaScript程序檢測其鼠標的移動;
受害者被重定向到JavaScript程序,由其決策哪個入侵系統對受害者進行攻擊;
JavaScript程序重定向受害者到合適的入侵系統,提供參數解碼URL供漏洞有效負載取回;
入侵軟件在受害者機器上運行,為有效負載解碼URL;
入侵軟件下載適合受害者系統的合適的程序,并執行(在這個案例里是Initial?Dropper)。
在下面的Previct的界面中,你可以看到檢測的結果信息:
事件的細節信息如下:
這個Java程序成功控制了受害者,就像在下圖所看到的,它立即下載了惡意的可執行程序load2.exe(其MD5值是78cfa36112cd0797690327a9a07d5890?,該程序即是上文中所提到的initial?dropper)。
不尋常的可執行程序,詳細的分析當我們第一次看到load2.exe時,很快就覺得這是一種誤報。程序樣本看起來根本不像是惡意軟件。VirusTotal的快速檢查結果也沒有幫助我們做出決定;根據VT的結果,這種情況看起來也像是一個可能的誤報。
Dropper病毒Initial?Dropper是NullSoft的安裝程序,它首先放置6個文件到臨時目錄里:
正如你在下圖中所看到的,被安裝的可執行程序有一個圖標,類似“設置”或“更新”符號;而被安裝的DLL中有一個的描述信息是“Google?Chrome?Patches”。
然后,它啟動可執行程序文件wobiqacaxa.exe
The Second?StageSecond?Stage可執行程序(即wobiqacaxa.exe)會做一些數學計算,像下面的函數這樣:
從其它DLL中導入函數:
并在main函數中調用它們:
它也會計算剩余的電池壽命,這就是可執行程序的程度了。到目前為止還沒有什么可疑的地方。
讓我們看看這些DLL。首先,它們在體積上都非常的小,每一個有一個導出的函數。這些導出的函數看起來并不非常可疑。在對它們做了一些檢查之后,有人會想說“這些東西不是惡意軟件,我們這么做感覺像是在浪費時間”,并且你考慮就此停止。但接著,你提醒你自己截止目前已經在安裝程序中發現了非常奇怪的行為,因此得繼續分析。
讓我們看看:
動態庫womajejunuc.dll輸出了函數Nalexavo
動態庫tapevacanop.dll輸出了函數Miqudigob
動態庫horikipusac.dll輸出了函數humolu
這似乎沒有一點像是惡意軟件。但某些東西在困擾著你,你不想就此停止挖掘其中的秘密。為什么會這樣?
并置這些代碼沒有任何意義,即使是對于一個合法的二進制程序,也沒有什么意義去做如下的事情:
1.?調用一個數學函數,諸如“y?=?10?-?cos(2x)”
2.?獲得本地貨幣格式,應用它到串"-3.80",然后對它沒有再做任何事情
3.?計算剩余的電池時間
4.?遍歷驅動器列表
所有這些僅僅是一個合法程序可能會使用到的常用函數,但不會一起并且不會以這種順序使用。在這個案例里,這些是欺騙性的功能,它們似乎有一個唯一目的,即混淆自動檢測系統,反病毒軟件,或者那些甚至嘗試手工分析這些程序樣本的分析人員。
當我們檢查了之前所說的二進制數據文件(jepuculoguh.vat)后,所有的疑問消失了。
可以確定的是它的數據十分像是使用了一個短的密匙由序列加密法加密的模式。
解包因此,除了之前所述的偽裝邏輯,這個惡意軟件會做如下事情:
(1)?計算一個解密密匙(由來自動態庫horikipusac.dll的humolu函數完成)
(1)?讀二進制文件到內存(由來自動態庫womajejunuc.dll的Nalexavo函數完成)
(2)?在內存中解密數據(由來自動態庫tapevacanop.dll的Miqudigob函數完成)
現在看看最后一個DLL:
動態庫Qotowokami.dll導出函數Siwusonivin,它實現了相當于標準的處理模式“注入解密的數據到新的進程中”:
調用GetCommandLine和PathGetArgs去獲取初始安裝程序的路徑。這是可行的,因為安裝程序自己啟動被安裝的程序是作為在命令行上的一個參數
調用CreateProcessA去創建一個新的安裝程序的進程實例,但其被掛起
調用ZwUnmapViewOfSection和VirtualAllocEx去釋放初始進程的內存,并在被創建的進程里為解密數據分配內存
調用WriteProcessMemory去拷貝解密的數據到進程地址空間
調用GetThreadContext,SetThreadContext和ResumeThread去改變進程中線程的入口點,然后使得它們繼續運行
但是,動態庫Qutowokami.dll本身并沒有包含任何函數名稱,函數Siwusonivin通過調用LoadLibrary和GetProcAddress動態地獲取所有的API函數。這些函數都位于解密的內存中。因此,沒有解密數據是不可能看見這個DLL的實際運行內容的。
沙盒和免殺這個惡意軟件編寫的方式使得如果這些組件被多帶帶地分析或如果任意一個組件丟失,都非常難去識別出這個程序樣本應該要做什么,以及是否它是惡意軟件。
由于絕大多數的反病毒產品沒有真正的分析(未知格式的)二進制文件,而僅僅是檢查整個文件的哈希值,而惡意軟件的作者越來越傾向在不可執行的二進制文件中保存加密的惡意內容,然后使用一個多帶帶的文件抽取加密內容,其中包含的是一個看起來并不讓人感到懷疑的加載/解密程序。我們已經在之前的文章(http://www.lastline.com/an-analysis-of-plugx)中探討過類似的技術。
我們的分析平臺檢測到了一個隱藏入侵:這個程序樣本嘗試讀取注冊表鍵(HKLMSYSTEMCURRENTCONTROLSETSERVICESDISKENUM)的值,并比較它的值是否有以下子串:
(1)?"vbox"?(出現在VirtualBox虛擬機中)
(1)?"qemu"?(出現在QEMU虛擬機中)
(2)?"vmwa"?(出現在VMWare虛擬機中)
來檢查它是否工作在一個虛擬機環境中。
所以這里的解密數據還不是實際的內容,而是另一種殼程序,它首先檢查其是否運行在沙盒中(像這樣的虛擬機隱藏入侵正在變得越來越常見)。
接著,這個殼程序解析API函數。需要說明的是包裝程序是通過哈希查找DLL的地址和API函數。惡意軟件的作者肯定不希望簡單地搜索可疑的字符串,比如可疑的API函數的名字,就能檢測到它。
殼程序最后會解密惡意代碼,然后,以一種有趣的方法,為它創建一個導入表:
對于它使用的每個API函數,首先檢測它的第一條指令
如果指令是跳轉指令jump(0xEB或0xE9),包裝程序獲取其目標地址,并遞歸地重復這個檢查過程
當找到第一個非跳轉指令時,包裝程序拷貝這條指令到分配的內存區,并在這條指令之后添加到實際API函數的第二條指令的跳轉指令
使用這種技術,惡意軟件可以逃避安全組件(比如:HIPS)的鉤子(hooks)。
下面是惡意軟件導出函數的一個樣例。需要說明的是導入使用的是跳轉指令jump(通常導入的構成是調用指令call?[x]或者jmp?addr)
為了替換API函數,使得jump跳轉指令按照上文所述特定地產生了如下代碼:
最后是沒加殼的代碼惡意代碼是位置無關的,在經過重新構造后,它看起來像這樣:
這是一個典型的“后門程序”或者“綁定外殼程序”,它在一個端口上監聽,然后執行接收到的命令。并且因為所有的活動都是在隱藏進行的,又是做過免殺的,所以這個連接是未加密的,且沒有采取任何驗證方法進行保護。
結論這個事件的簡要摘要如下:
安裝的文件名 | 表面文件類型 | md5 | 角色 |
---|---|---|---|
Qotowokami.dll | PE32可執行程序(DLL) | 33a3d73982ff030150429f9e50ff9a00 | 被解密函數的注入程序 |
horikipusac.dll | PE32可執行程序(DLL) | 2551a6ed18384e6dececb5fc45bc839f | 解密密匙的計算程序 |
jepuculoguh.vat | 二進制數據 | 3c641ccae35380feebe9d2d53ece8da9 | 加密的二進制數據,解密后即是實際的惡意代碼 |
tapevacanop.dll | PE32可執行程序(DLL) | 2bb51cf2091d124d15a28b19f9fd5326 | 加密二進制數據的解密程序 |
wobiqacaxa.exe | PE32可執行程序 | ddb6d2b7a78e71522893c349ddee5195 | Second?Stage可執行程序 |
womajejunuc.dll | PE32可執行文件(DLL) | 5b1ff7476bf1787e4df9c9b74b05ba16 | 加密二進制數據的讀入程序 |
功能模塊與物理文件對應關系如下:
Initial?dropper?對應?load2.exe
second?stage對應wobiqacaxa.exe
key?calculator對應horikipusac.dll
encrypted?binary?data?對應jepuculoguh.vat
reader?對應womajejunuc.dll
decryptor?對應tapevacanop.dll
injector?對應Qotowokami.dll
Initial?Dropper之后惡意軟件的運行過程如上圖所示:
運行wobiqacaxa.exe,其首先做一些數學計算
接著從安裝的DLL中導入函數
獲取安裝的設備和計算密匙(代碼位于horikipusac.dll)
檢查電源狀態和電池壽命
打開加密文件,讀入它到內存中。做貨幣計算(代碼位于womajejunuc.dll)
解密文件到內存中(代碼位于tapevacanop.dll)
獲取Initial?Dropper程序的路徑,創建一個新的掛起的進程(代碼位于Qotowokami.dll)
釋放當前進程內存,并在新進程空間中分配新的內存
注入解密的數據到新分配的內存中
改變入口點,然后繼續運行線程
從這里開始進入解密后的代碼中運行
檢查是否運行在虛擬機環境中
如果不是,則再次執行解密,并為進程創建函數導入表
安裝自己作為一個服務,名為SunJavaUpdateSched
打開TCP套接字,在端口8000上監聽,當有連接請求到來時,啟動cmd.exe,其I/O重定向到了socket上
所有這些努力都是為了保護一個簡單的TCP綁定外殼程序,使其不被檢測到嗎?為什么一個攻擊者會利用一個部署在Internet上的,位于受害機器的網絡之外的控制入侵軟件?這樣做,他可能無法進入到缺乏抵抗力的主機。受害機器的IP處于RFC1918所規定的地址空間,攻擊者是無法通過Internet到達的。
一個可能的解釋是攻擊者來自于某個家庭網絡。在這樣一個網絡中的攻擊者可能不太關注對到本地網絡中的其它機器上的連接進行加密,而更關心的是可以在網絡中傳遞數據。
這似乎是攻擊者在受害者機器的網絡中建立了一個前沿陣地后,想要訪問網絡中其它機器時,進行橫向入侵的技術。使用從第一臺機器上搜集的信息,他們可以制造一個可信的消息(一種釣魚法),在潛在的受害者因為某種不可抗拒的原因訪問了一個包含在其中的URL時,采取如文章開始時所描述的方法,對受害者進行入侵控制。
原文 Analysis of an evasive backdoor
翻譯 周耀平
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/11085.html
摘要:安全研究員于上周四檢測到名為的惡意軟件,該惡意軟件利用多個漏洞攻擊系統和多個應用程序。軟件系統的安全漏洞成為網絡犯罪分子發動攻擊的輔助工具。 .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x:hidden;color:#333}.markdown-b...
閱讀 2060·2021-11-23 09:51
閱讀 3352·2021-09-28 09:36
閱讀 1119·2021-09-08 09:35
閱讀 1757·2021-07-23 10:23
閱讀 3257·2019-08-30 15:54
閱讀 2998·2019-08-29 17:05
閱讀 438·2019-08-29 13:23
閱讀 1293·2019-08-28 17:51