一例針對中國政府機構的準APT攻擊中所使用的樣本分析

wyzsk發表於2020-08-19
作者: SwordLea · 2015/05/28 15:43

作者:安天

微信公眾號:Antiylab

博文地址:http://www.antiy.com/response/APT-TOCS.html

0x00 背景


安天近期發現一例針對中國政府機構的準APT攻擊事件,在攻擊場景中,攻擊者依託自動化攻擊測試平臺Cobalt Strike生成的、使用信標(Beacon)模式進行通訊的Shellcode,實現了對目標主機進行遠端控制的能力。這種攻擊模式在目標主機中體現為:無惡意程式碼實體檔案、每60秒傳送一次網路心跳資料包、使用Cookie欄位傳送資料資訊等行為,這些行為在一定程度上可以躲避主機安全防護檢測軟體的查殺與防火牆的攔截。鑑於這個攻擊與Cobalt Strike平臺的關係,我們暫時將這一攻擊事件命名為APT-TOCS(TOCS,取Threat on Cobalt Strike之意。)

APT-TOCS這一個攻擊的核心步驟是:載入Shellcode的指令碼功能,透過命令列呼叫powershell.exe將一段加密資料載入到記憶體中執行。解密後的資料是一段可執行的Shellcode,該Shellcode由Cobalt Strike(一個自動化攻擊測試平臺)所生成。安天分析小組根據載入Shellcode的指令碼進行了關聯,亦關聯出一個可能在類似攻擊中的作為指令碼前導執行檔案的PE程式,但由於相關指令碼可以透過多種方式來執行,並不必然依賴前導PE程式載入,且其是Cobalt Strike所生成的標準攻擊指令碼,因此無法判定該前導PE檔案與本例攻擊的關聯。

這種基於指令碼+Shellcode的方式注入記憶體執行沒有硬碟寫入操作,使用信標(Beacon)模式進行通訊,支援多信標通訊,可以同時和多個信標工作。這種攻擊方式可以不依賴載體檔案進行攻擊,而可以依靠網路投放能力和內網橫向移動按需投放,這將會給取證工作帶來極大的困難,而且目前的一些沙箱檢測產品也對這種攻擊無效。

APT-TOCS攻擊儘管看起來已經接近APT水準的攻擊能力,但並非更多依賴攻擊團隊自身的能力,而是依託商業的自動化攻擊測試平臺來達成。

0x01 事件樣本分析


2.1 前導檔案與樣本載入


APT-TOCS是利用了"powershell.exe"執行Shellcode的指令碼實現對目標系統的遠端控制。安天分析人員認為攻擊者掌握較多種最終可以達成多種指令碼載入許可權的遠端注入手段,如利用安全缺陷或漏洞直接實現指令碼在主機上執行。同時,透過關聯分析,發現如下的二進位制攻擊前導檔案(以下簡稱Sample A),曾被用於類似攻擊:

病毒名稱 Trojan/Win32.MSShell

原始檔名 ab.exe

MD5 44BCF2DD262F12222ADEAB6F59B2975B

處理器架構 X86

檔案大小 72.0 KB (73,802 位元組)

檔案格式 BinExecute/Microsoft.EXE[:X86]

時間戳 2009-05-10 07:02:12

數字簽名 NO

加殼型別 未知

編譯語言 Microsoft Visual C++

該PE樣本中嵌入的指令碼,與安天獲取到的Shellcode指令碼功能程式碼完全相同,但加密資料存在差異,該PE樣本曾在2015年5月2日被首次上傳到Virustotal。

enter image description here

圖1 PE檔案內嵌的使用powershell.exe載入加密資料

該PE樣本使用WinExec執行嵌入的惡意程式碼:

enter image description here

圖2使用WinExec函式呼叫powershell.exe載入加密資料

由此可以初步看到,這一"前導檔案"可以被作為類似攻擊的前導,依託系統和應用漏洞,不依賴類似檔案,依然可以實現指令碼的執行與最終的控制。 從目前來看,並不能確定這一前導樣本與本起APT事件具有關聯關係。

2.2 關鍵機理


APT-TOCS攻擊遠控的核心部分是依託PowerShell載入的加密資料指令碼(以下簡稱Sample_B),圖1為指令碼各模組之間的衍生關係和模組主要功能:

enter image description here

2.3 APT-TOCS的主樣本(SampleB)分析


Sample B檔案的內容(base64的內容已經省略)如下:

enter image description here

圖4 Sample B的內容

該部分指令碼的功能是:將base64加密過的內容進行解密,再使用Gzip進行解壓縮,得到模組1,並使用PowerShell來載入執行。

2.4 指令碼1分析


指令碼1的內容(base64的內容已經省略)如下:

enter image description here

圖5指令碼1的內容

此部分內容的功能是將經過base64加密的資料解密,得到模組1,寫入到powershell.exe程式內,然後呼叫執行。

2.5 模組1分析


該模組的主要功能是呼叫wininet模組的函式,進行連線網路,下載模組2的操作;並載入到記憶體中執行。

enter image description here

圖6HTTP GET請求

上圖為使用HTTPGET請求,獲取檔案:http://146.0../hfYn。

2.6 模組2分析


模組2建立並掛起系統程式rundll32.exe:

enter image description here

圖7建立掛起系統程式rundll32.exe

寫入模組3的資料:

enter image description here

圖8寫入模組3的資料

模組3的資料雖然是以"MZ"開頭,但並非為PE檔案,而是具有後門功能的Shellcode。

enter image description here

圖9以MZ(4D 5A)開頭的Shellcode

2.7 模組3分析


該模組會連線兩個地址,埠號為80:

146.0.***.***   (羅馬尼亞) 

dc.******69.info (146.0.***.***)    (羅馬尼亞)

傳送請求資料,接收返回資料。

enter image description here

圖10傳送請求資料

上述IP、域名和訪問地址的解密方式是"異或0x69"。 從該模組的字串與所呼叫的系統函式來判斷,該模組為後門程式,會主動向指定的地址傳送GET請求,使用Cookie欄位來傳送心跳包,間隔時間為60秒。心跳包資料包括校驗碼、程式ID、系統版本、IP地址、計算機名、使用者名稱、是否為64位程式,並將該資料使用RSA、BASE64加密及編碼。

enter image description here

圖11心跳包原始資料

由於程式ID與校驗碼的不同,導致每次傳輸的心跳包資料不相同。校驗碼是使用程式ID和系統開機啟動所經過的毫秒數程式計算得出的。演算法如下:

enter image description here

圖12校驗碼演算法

加密後的心跳包使用Cookie欄位進行傳輸:

enter image description here

圖13資料包內容

0x03 攻擊技術來源的驗證分析


安天CERT分析人員關聯的PE前導檔案Sample_A和Sample B利用PowerShell的方法和完全相同,但正應為相關指令碼高度的標準化,並不排除Sample_A與本次攻擊沒有必然聯絡。而基於其他的情況綜合分析,我們依然判斷是一個系列化的攻擊事件,攻擊者可能採用了社工郵件、檔案捆綁、系統和應用漏洞利用、內網橫向移動等方式實現對目標主機的控制。

而在分析"模組1"時,我們發現了"Beacon"等字串,依託過往分析經驗,懷疑該Shellcode與自動化攻擊測試平臺Cobalt Strike密切相關。於是,分析人員對使用Cobalt Strike生成的Beacon進行對比分析,驗證兩者之間的關係。 Cobalt Strike 是一款以metasploit(一個滲透測試平臺)為基礎的GUI的框架式滲透工具,Cobalt Strike的商業版,整合了服務掃描、自動化溢位、多模式埠監聽、多種木馬生成方式(dll木馬、記憶體木馬、office宏病毒和Beacon通訊木馬等)、釣魚攻擊、站點克隆、目標資訊獲取,瀏覽器自動攻擊等。

3.1 模組1比較


我們將模組1與使用Beacon生成的Payload進行比較,發現只有三處資料不同,分別為:Get請求時所傳送的Head資料、請求的檔名稱和IP地址。

enter image description here

圖14模組1對比

左側為樣本模組1,右側為由Beacon所生成的模組,從圖中對比來看,可以得出結論,模組1是由Beacon所生成。 在請求時的資料包截圖如下:

enter image description here

圖15模組1發包資料對比

3.2 模組2反彙編指令比較


分析人員將樣本的模組2與Beacon相關的檔案進行比較,發現兩者的反彙編指令除了功能程式碼不同之外,其它指令完全一致,包括入口處的異或解密、載入系統DLL、獲取函式地址、函式呼叫方式等,下面列舉三處:

樣本模組2

enter image description here

Beacon相關檔案

enter image description here

入口處異或解密(使用x86/shikata_ga_nai變形)

enter image description here

enter image description here

解密後入口處程式碼

enter image description here

enter image description here

函式呼叫

3.3 模組3資料包對比分析


下面是樣本模組3與Beacon所生成模組的Get請求比較,可以看出,兩者都是使用Cookie來傳輸資訊,該資訊進行了加密,每間隔60秒主動傳送請求,該資料為上線包/心跳包。

enter image description here

圖16模組3資料包對比

3.4 Cobalt Strike特點


利用Cobalt Strike的攻擊可以在目標系統中執行多種操作,如:下載檔案、上傳檔案、執行指定程式、注入鍵盤記錄器、透過PowerShell執行命令、匯入PowerShell指令碼、透過CMD執行命令、利用mimikatz抓取系統密碼等。 Cobalt Strike具有以下特點:

  • 穿透沙箱
  • 躲避白名單機制與雲檢測
  • 內網滲透
  • 持久化攻擊
  • 攻擊多種平臺

0x04 總結


使用自動化攻擊測試平臺Cobalt Strike進行攻擊滲透方式具有穿透防火牆的能力,其控制目標主機的方式非常隱蔽,難以被發現;同時具備攻擊多種平臺,如Windows、Linux、Mac等;同時與可信計算環境、雲檢測、沙箱檢測等安全環節和手段均有對抗能力。從安天過去的跟蹤來看,這種威脅已經存在近五年之久,但依然卻缺乏有效檢測類似威脅的產品和手段。

安天CERT分析小組之所以將APT-TOCS事件定位為準APT事件,是因為該攻擊事件一方面符合APT攻擊針對高度定向目標作業的特點,同時隱蔽性較強、具有多種反偵測手段。但同時,與我們過去所熟悉的很多APT事件中,進攻方具備極高的成本承擔能力與巨大的能力儲備不同,其成本門檻並不高,事件的惡意程式碼並非由攻擊者自身進行編寫構造,商業攻擊平臺使事件的攻擊者不再需要高昂的惡意程式碼的開發成本,相關攻擊平臺亦為攻擊者提供了大量可選注入手段,為惡意程式碼的載入和持久化提供了配套方法,這種方式降低了攻擊的成本,使得缺少雄厚資金、也沒有精英駭客的國家和組織依託現即有商業攻擊平臺提供的服務即可進行接近APT級攻擊水準,而這種高度"模式化"攻擊也會讓攻擊缺少鮮明的基因特點,從而更難追溯。

我們不僅要再次引用資訊保安前輩Bruce Schiner的觀點"一些重大的資訊保安攻擊事件時,都認為它們是網路戰的例子。我認為這是無稽之談。我認為目前正在發生而且真正重要的趨勢是:越來越多戰爭中的戰術行為擴散到更廣泛的網路空間環境中。這一點非常重要。透過技術可以實現能力的傳播,特別是計算機技術可以使攻擊行為和攻擊能力變得自動化。"顯然,高度自動化的商業攻擊平臺使這種能力擴散速度已經超出了我們的預測。

我們需要提醒各方關注的是,鑑於網路攻擊技術具有極低的複製成本的特點,當前已經存在嚴峻的網路軍備擴散風險。商業滲透攻擊測試平臺的出現,一方面成為高效檢驗系統安全的有利工具,但對於缺少足夠的安全預算、難以承擔更多安全成本的國家、行業和機構來說,會成為一場噩夢。在這個問題上,一方面需要各方面建立更多的溝通和共識;而另一方面毫無疑問的是當前在攻防兩端均擁有全球最頂級能力的超級大國,對於有效控制這種武器級攻擊手段的擴散,應該負起更多的責任。

同時,APT-TOCS與我們之前所發現的諸多事件一樣,體現了一個擁有十三億人口、正在進行大規模資訊化建設的國家,所面對的嚴峻的網路安全挑戰;當然,也見證著中國使用者與安全企業為應對這種挑戰所做的努力。

附錄一:關於Cobalt Strike及其作者的參考資料


Cobalt Strike是Armitage的商業版本。Armitage是一款Java寫的Metasploit圖形介面的滲透測試軟體,可以用它結合Metasploit已知的exploit來針對存在的漏洞自動化攻擊。bt5、kali linx下整合免費版本Armitage,最強大的功能是多了個Beacon的Payload。

enter image description here

Cobalt Strike作者:Raphael Mudge(美國),他是Strategic Cyber LLC(戰略網路有限責任公司)創始人,基於華盛頓的公司為RED TEAM開發軟體,他為Metaslpoit創造了Armitage,sleep程式語言和IRC客戶端jIRCii。此前作為美國空軍的安全研究員,滲透實驗的測試者。他設定發明了一個語法檢測器賣給了Automattic。發表多篇文章,定期進行安全話題的演講。給許多網路防禦競賽提供RED TEAM,參加2012-2014年駭客大會。

enter image description here

教育背景:Syracuse University 美國雪城大學,密歇根科技大學

目前就職:Strategic Cyber LLC(戰略網路有限責任公司);特拉華州空軍國民警衛隊

技能:軟體開發資訊保安物件導向的設計分散式系統圖形介面計算機網路設計部落格系統社會工程學安全研究等等

enter image description here

支援的組織機構:

大學網路防禦競賽(CCDC)
東北North East CCDC 2008-2015
東部地區Mid Atlantic CCDC 2011-2015
環太平洋Pacific Rim CCDC 2012, 2014
東南South East CCDC - 2014
西部Western Regional CCDC - 2013
國家National CCDC 2012-2014

所做專案:

Sleep指令碼語言(可擴充套件的通用語言,使用受JAVA平臺啟發的Perl語言)sleep是開源的,受LGPL許可。
jIRCii(可編寫指令碼的多人線上聊天系統客戶端,Windows, MacOS X, and Linux平臺,開源)

出版作品:

《使用Armitage 和Metasploit的實彈安全測試(Live-fire Security Testing with Armitage and Metasploit)》linux雜誌
《透過後門入侵:使用Armitage的實施漏洞利用》(Get in through the backdoor: Post exploitation with Armitage)Hakin9雜誌
《教程:用Armitage進行駭客攻擊Linux》(Tutorial: Hacking Linux with Armitage)ethicalhacker.net
《校對軟體服務設計》(The Design of a Proofreading Software Service)NAACL HLT2010計算機的語言學和寫作研討會
《基於代理的流量生成》(Agent-based Traffic Generation)Hakin9雜誌等

貢獻:

cortana-scripts
metasploit-loader
malleable-c2-profiles
layer2-privoting-client
armitage
專案:
商業合資企業類
After the Deadline 
Feedback Army 
Cobalt Strike
開源軟體
Armitage
Far East 
jIRCii
Moconti
One Hand Army Man s
phPERL Same Game
Sleep

資訊參考連結:

https://plus.google.com/116899857642591292745/posts (google+)
https://github.com/rsmudge (GitHub)
https://www.youtube.com/channel/UCJU2r634VNPeCRug7Y7qdcw (youtube)
http://www.oldschoolirc.com/
https://twitter.com/rsmudge
http://www.hick.org/~raffi/index.html 
http://www.blackhat.com/html/bh-us-12/speakers/Raphael-Mudge.html
http://www.linkedin.com/in/rsmudge
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章