釣魚郵件威脅檢測實戰及典型樣本分析
0x00 背景介紹
近些年來,越來越多的攻擊者利用社會工程學技巧偽造正常郵件內容,誘騙用戶點擊郵件鏈接或下載附件文件,這種攻擊方式瞄準了企業安全防護中最薄弱的環節普通用戶和終端環境,結合社會工程學和終端安全漏洞進行有效攻擊,也為惡意代碼的大范圍感染和傳播提供了諸多便利。多家企業和機構曾對釣魚郵件攻擊展開過調查:Google與加州大學伯克利分校的研究人員近期的一份調查研究報告顯示:網絡釣魚攻擊對用戶賬戶安全的威脅甚于信息泄露[1];APWG(Anti-Phishing Working Group)曾在多次釣魚攻擊活動趨勢報告中指出釣魚攻擊各個行業的威脅[2];過去一段時間,有大量釣魚郵件用來傳播Cerber、Locky等勒索軟件[3]; 在已經曝光的APT事件中,多數攻擊者都是將釣魚郵件作為滲透到目標內部網絡的入口,魚叉攻擊方式也成為APT組織常用載荷投遞方式之一。
因此,無論對個人用戶還是企業、組織來說,釣魚郵件攻擊都是最為嚴重的安全威脅之一。為了更好地保障企業網絡安全,及時發現并處置來自于釣魚郵件的威脅,我們結合內網威脅檢測的安全需求,結合業務場景,設計了一套釣魚郵件威脅可落地的檢測方法。

我們對釣魚郵件攻擊的檢測方法主要可以從以下幾個方面描述:
郵件威脅防護的總體思路:
釣魚郵件攻擊的威脅檢測主要立足于建立一套針對郵件威脅場景的安全運營流程,對外部投遞的電子郵件進行威脅檢測和有效攔截。首先,通過在郵件網絡入口部署郵件網關型產品,通過定義規則對已知釣魚郵件進行過濾,包括純粹通過社工手段收集賬號密碼的場景或已知可查殺的惡意附件樣本都依靠郵件網關規則和特征進行攔截;對已經繞過郵件網關檢測規則和樣本查殺的威脅檢測,結合威脅情報技術和沙箱技術,主要針對終端漏洞利用型釣魚郵件的攻擊檢測。
郵件威脅檢測的理論依據:
威脅檢測的方法主要是結合威脅情報技術和沙箱技術,威脅情報源往往來源于全球網絡環境,而內網中的終端病毒查殺和郵件網關中的樣本查殺特征往往有本地殺軟的局限性,基于威脅情報的檢測機制往往能夠超前于殺毒軟件特征檢測,對于威脅情報未能命中的入侵過程,則可通過沙箱行為檢測,在及時發現基于Nday或0day漏洞的攻擊方式,又能夠產生新的威脅情報,補充到現有的防護策略當中。基于這種靜態結合動態的威脅檢測分析模型,可以準確提煉入侵事件,還原攻擊的每個階段,提取攻擊特征,在攻擊實施前切斷其傳播路徑,從而達到保護目標的目的。
釣魚郵件檢測流程:
檢測線索主要源于兩方面數據源:終端側和流量側。終端側可以通過主機Agent對郵件進程進行分析并提取郵件附件MD5生成格式化日志信息;流量側的信息則主要來自于流量DPI解析獲取的流量日志和還原樣本本身。
通過威脅情報碰撞郵件附件MD5信息和惡意URL信息,并對可疑的文件投放到沙箱中進行動態檢測,基于威脅情報和沙箱行為的威脅評級模型進行判定,產生告警信息投遞到消息隊列系統中,同時在運營平臺生成告警工單。由于郵件內容的敏感性,檢測過程不作落地處理僅生成告警信息。如發現高危釣魚郵件樣本,則第一時間由分析人員跟進深度安全分析,對內網資產進行威脅判定和應急處置工作。并提取相關高危樣本的特征輸入到郵件網關的規則庫中。提取沙箱檢測產生的新的IOC會添加到檢測引擎中,成為新的檢測規則。
0x01 事件簡述
本文接下來將以我們團隊近來一次通過上文描述的郵件威脅檢測系統發現一起釣魚郵件的攻防實戰經歷,來分析一起典型的釣魚郵件攻擊樣本。
最近我們捕捉到投遞到公司多個公共郵箱的帶有郵件附件電子郵件告警,郵件的內容描述的是一些通用的商務場景,該郵件繞過了公司郵件網關的查殺,郵件威脅檢測對該郵件的附件判定為高風險,威脅情報判定為高風險,接受到郵件時通過virustotal查詢只有有限的殺軟廠商檢測到該附件為惡意樣本,沙箱行為檢測結果也顯示該郵件附件有諸多危險行為。



釣魚郵件攻擊者的IP地址為104.160.176.215,經查確認為Sharktech VPS洛杉磯機房,投遞的郵箱為公開域名的郵件組,懷疑是通過互聯網渠道獲取的公共組郵箱針對商業組織群發的釣魚郵件。通過對郵件內容和樣本進行分析,我們認定這是一次利用.NET 漏洞(CVE-2017-8759)傳播AutoIt惡意代碼釣魚郵件攻擊。CVE-2017-8759是一個遠程代碼執行漏洞,該漏洞產生的原因在于.NET庫中的SOAP WSDL 解析模塊IsValidUrl函數沒有正確處理包含回車換行符的情況,導致調用者函數PrintClientProxy存在代碼注入執行,影響多個主流.NET版本,且穩定觸發。而AutoIt腳本惡意代碼則很容易避過主流殺毒軟件的檢測。這也可能是攻擊者選用此種攻擊方式的原因。
0x02 樣本分析
樣本原始文件是一個RTF文檔,MD5為9BDA03073A4A52142F021D9AC7E4735C。漏洞觸發過程和原理,此前已有研究人員詳細分析過,在這里就不做贅述了[4]。
漏洞觸發后,訪問https:[//]longstop[.]club/avatars/gues/lnd[.]php, 并下載名稱為 nobenow.exe的PE文件,然后在本地執行。漏洞觸發后的進程樹如下圖所示:

2.1 Nobenow.exe
樣本標簽
文件名稱: nobenow.exe
文件大小: 973 KB (996,472 字節)
文件時間: 2017-11-21 10:15:14
時 間 戳: 4FD34D75->2012-06-09 21:19:49
文件 MD5: 9F1B411E5006780E69F6775C5E849714
行為分析和描述
對該樣本進行動態分析的結果是這樣的:這個樣本會在系統臨時目錄下創建多個文件,并創建子進程,帶參數運行vvk.exe,參數名為jvc-qek。出于這樣的行為,基本認定該樣本行為類似于自解壓文件。實際分析的結果印證了這種猜測,且該樣本對解壓代碼進行了混淆。

混淆代碼由法語寫成,敘述的是權力的游戲(Game of Throne)的故事簡介。
2.2 Vvk.exe & jvc-qek
樣本標簽
文件名稱: vvk.exe
文件大小: 732 KB (750,320 字節)
文件時間: 2012-01-29 22:34:20
時 間 戳: 2012-01-30 05:32:28
文件 MD5: 71D8F6D5DC35517275BC38EBCC815F9F



從樣本屬性看,該樣本是AutoIT腳本的解釋器。是AutoIT腳本封裝成exe后用來運行腳本的。所以jvc-qek就是樣本核心的腳本文件。

這個腳本文件大小為2986KB,顯然是不正常的。打開文件,看到了大量混淆的語句。

對混淆字符串進行進一步處理,得到一個代碼相對清晰的腳本文件:

腳本代碼首先讀取svo.jpg,用文本方式打開這個jpg文件,發現是一個混淆過的配置文件,用于配置腳本的各種功能。我們可以看到幾個字段。

腳本代碼也會檢查系統進程中是否有avastui.exe,并通過sleep函數躲避殺軟的檢測。然后會檢查當前temp路徑下是否存在34772436目錄,如果條件不滿足,腳本會刪除目錄下的文件并立即強制重啟系統。

腳本會設置目錄文件為隱藏和只讀屬性,然后會去讀取svo.jpg中的二進制數據,解密出另一個腳本,并生成長度為五的隨機大寫字符串作為新的文件名。


調試過程中產生的隨機文件名為QRIFT。在腳本生成完畢后,會重新調用vvk.exe,運行新生成的腳本。


2.3 QRIFT & RegSvcs.exe
QRIFT樣本標簽
文件名稱: QRIFT
文件大小: 271 KB (277,864 字節)
文件時間: 2017-11-23 17:44:38
時 間 戳: n/a
文件 MD5: 5374CF136115A54E3B6470ACB430888F
轉儲樣本標簽
文件名稱: Dumped.exe
文件大小: 650 KB (666,130 字節)
文件時間: 2017-11-24 12:55:46
時 間 戳: 2016-06-24 00:04:21
文件 MD5: 5374C0A78E5766C9B273F7A75737FC28
QRIFT是新生成的惡意腳本。這個腳本同樣是被混淆過的,且變量名等信息做了散列。這段腳本的行為是讀取”\Microsoft.NET\Framework\v2.0.50727\RegSvcs.exe”,并將該文件賦復制到臨時目錄下,然后附加svo.jpg的一段數據到RegSvcs.exe的末尾。


在創建并掛起RegSvcs.exe后,腳本會利用DllStructCreate等API完成進程映像替換。替換后RegSvcs.exe也就變成了一個腳本解釋器。

此時RegSvcs.exe的進程空間中也會運行腳本。再次執行腳本時,由于代碼邏輯不同,新的腳本會多次執行一段shellcode,而且參數是有變化的。



通過分析得知,這段shellcode的行為是收集主機的信息并發送到服務器maxontre.shop上。被收集的信息有:主機名稱,設備GUID、用戶主機安裝的瀏覽器中存儲的網站密碼、郵箱賬戶密碼及FTP軟件的賬號密碼等。Shellcode 竊取賬戶文件的方式有兩種,一種是訪問相關軟件的數據庫文件和配置文件,如 %Application Data%\Google\Chrome\User Data\Default\Login Data,C:\Users\Username\Documents\yMail2\Accounts.xml等文件;另一種是通過注冊表信息獲取賬戶信息,如HKLM\Software\NCH Software\ClassicFTP\FTPAccounts等注冊表項。
對惡意代碼針對的軟件做了相關統計,結果如下面各表所示:
惡意代碼嘗試竊取瀏覽器賬戶信息如下:

惡意代碼嘗試竊取FTP軟件賬戶信息如下:

惡意代碼嘗試竊取郵件和其他軟件信息如下:

2.4 其他行為和功能
腳本還有其他行為和功能。比如設置開機自啟動:

反沙箱檢測和主機抗調試:

另外,該惡意代碼有很強的兼容性,能支持64位和32位系統環境,同時支持win2000操作系統。



0x03 總結
本次釣魚郵件攻擊事件被定性為一次利用新漏洞傳播惡意代碼的垃圾郵件攻擊。之所以受到我們的關注,是因為它有兩個比較鮮明的標簽——CVE-2017-8759和AutoIt腳本漏洞。
該樣本具備比較強的對抗能力,釋放的程序做了大量的技術混淆并增加了反沙箱檢測和主機抗調試的功能,此外AutoIt惡意代碼一個顯著特點是需要封裝腳本解釋器形成一個較大的可執行文件。由于封裝的腳本解釋器本身并非惡意代碼,所以該類惡意代碼常常能夠規避掉殺毒軟件的檢測。而腳本文本屬性使得此類惡意代碼功能修改和添加更為靈活,容易產生變種,導致惡意代碼大量增殖,可能會導致此類惡意代碼數量短期內呈現增長的趨勢。CVE-2017-8759影響幾乎所有主流.NET版本,且披露時間較短,互聯網已經流傳開放源碼的POC程序,利用成本低,可能未來一段時間類似樣本可能會廣泛傳播。據報到Cobalt在內的眾多攻擊組織此前就曾多次利用這個漏洞開展過攻擊活動,近日Cobalt組織在一個新Office漏洞 CVE-2017-11882曝出數天內,大量利用新漏洞進行攻擊[5]。因互聯網上已公開了多個版本POC,該漏洞制作釣魚利器成本非常低,且漏洞本身比CVE-2017-8759具備更好的適用性。從企業網絡安全防護上我們需要做到的就是及時補丁修復終端漏洞,提升終端用戶的安全意識,針對該類型的釣魚郵件攻擊進行專項威脅檢測。
0x04 樣本IOC
9bda03073a4a52142f021d9ac7e4735c
9F1B411E5006780E69F6775C5E849714
71D8F6D5DC35517275BC38EBCC815F9F
5374CF136115A54E3B6470ACB430888F
Fex[.]net 194.106.216.20
maxontre[.]shop 162.221.190.147
klotshop[.]tech 194.88.105.79
fs12.fex[.]net 194.106.216.70
longstop[.]club 194.88.105.79
https://longstop.club/avatars/gues/lnd[.]php
http://maxontre.shop/Themes/core/morre/fre[.]php