安天近期發現一例針對中國政府機構的準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水準的攻擊能力,但并非更多依賴攻擊團隊自身的能力,而是依托商業的自動化攻擊測試平臺來達成。
APT-TOCS是利用了”powershell.exe”執行Shellcode的腳本實現對目標系統的遠程控制。安天分析人員認為攻擊者掌握較多種最終可以達成多種腳本加載權限的遠程注入手段,如利用安全缺陷或漏洞直接實現腳本在主機上執行。同時,通過關聯分析,發現如下的二進制攻擊前導文件(以下簡稱Sample A),曾被用于類似攻擊:
該PE樣本中嵌入的腳本,與安天獲取到的Shellcode腳本功能代碼完全相同,但加密數據存在差異,該PE樣本曾在2015年5月2日被首次上傳到Virustotal。
該PE樣本使用WinExec運行嵌入的惡意代碼:
由此可以初步看到,這一”前導文件”可以被作為類似攻擊的前導,依托系統和應用漏洞,不依賴類似文件,依然可以實現腳本的執行與最終的控制。
從目前來看,并不能確定這一前導樣本與本起APT事件具有關聯關系。
APT-TOCS攻擊遠控的核心部分是依托PowerShell加載的加密數據腳本(以下簡稱Sample_B),圖1為腳本各模塊之間的衍生關系和模塊主要功能:
Sample B文件的內容(base64的內容已經省略)如下:
該部分腳本的功能是:將base64加密過的內容進行解密,再使用Gzip進行解壓縮,得到模塊1,并使用PowerShell來加載執行。
腳本1的內容(base64的內容已經省略)如下:
此部分內容的功能是將經過base64加密的數據解密,得到模塊1,寫入到powershell.exe進程內,然后調用執行。
該模塊的主要功能是調用wininet模塊的函數,進行連接網絡,下載模塊2的操作;并加載到內存中執行。
上圖為使用HTTPGET請求,獲取文件:http://146.0.***.***/hfYn。
模塊2創建并掛起系統進程rundll32.exe:
寫入模塊3的數據:
模塊3的數據雖然是以”MZ”開頭,但并非為PE文件,而是具有后門功能的Shellcode。
該模塊會連接兩個地址,端口號為80:
146.0.***.***?????(羅馬尼亞)
dc.******69.info (146.0.***.***)?(羅馬尼亞)
發送請求數據,接收返回數據。
上述IP、域名和訪問地址的解密方式是”異或0x69″。
從該模塊的字符串與所調用的系統函數來判斷,該模塊為后門程序,會主動向指定的地址發送GET請求,使用Cookie字段來發送心跳包,間隔時間為60秒。心跳包數據包括校驗碼、進程ID、系統版本、IP地址、計算機名、用戶名、是否為64位進程,并將該數據使用RSA、BASE64加密及編碼。
由于進程ID與校驗碼的不同,導致每次傳輸的心跳包數據不相同。校驗碼是使用進程ID和系統開機啟動所經過的毫秒數進程計算得出的。算法如下:
加密后的心跳包使用Cookie字段進行傳輸:
安天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通信木馬等)、釣魚攻擊、站點克隆、目標信息獲取,瀏覽器自動攻擊等。
我們將模塊1與使用Beacon生成的Payload進行比較,發現只有三處數據不同,分別為:Get請求時所發送的Head數據、請求的文件名稱和IP地址。
左側為樣本模塊1,右側為由Beacon所生成的模塊,從圖中對比來看,可以得出結論,模塊1是由Beacon所生成。
在請求時的數據包截圖如下:
分析人員將樣本的模塊2與Beacon相關的文件進行比較,發現兩者的反匯編指令除了功能代碼不同之外,其它指令完全一致,包括入口處的異或解密、加載系統DLL、獲取函數地址、函數調用方式等,下面列舉三處:
下面是樣本模塊3與Beacon所生成模塊的Get請求比較,可以看出,兩者都是使用Cookie來傳輸信息,該信息進行了加密,每間隔60秒主動發送請求,該數據為上線包/心跳包。
利用Cobalt Strike的攻擊可以在目標系統中執行多種操作,如:下載文件、上傳文件、執行指定程序、注入鍵盤記錄器、通過PowerShell執行命令、導入PowerShell腳本、通過CMD執行命令、利用mimikatz抓取系統密碼等。
Cobalt Strike具有以下特點:
使用自動化攻擊測試平臺Cobalt Strike進行攻擊滲透方式具有穿透防火墻的能力,其控制目標主機的方式非常隱蔽,難以被發現;同時具備攻擊多種平臺,如Windows、Linux、Mac等;同時與可信計算環境、云檢測、沙箱檢測等安全環節和手段均有對抗能力。從安天過去的跟蹤來看,這種威脅已經存在近五年之久,但依然缺乏有效檢測類似威脅的產品和手段。
安天CERT分析小組之所以將APT-TOCS事件定位為準APT事件,是因為該攻擊事件一方面符合APT攻擊針對高度定向目標作業的特點,同時隱蔽性較強、具有多種反偵測手段。但同時,與我們過去所熟悉的很多APT事件中,進攻方具備極高的成本承擔能力與巨大的能力儲備不同,其成本門檻并不高,事件的惡意代碼并非由攻擊者自身進行編寫構造,商業攻擊平臺使事件的攻擊者不再需要高昂的惡意代碼的開發成本,相關攻擊平臺亦為攻擊者提供了大量可選注入手段,為惡意代碼的加載和持久化提供了配套方法,這種方式降低了攻擊的成本,使得缺少雄厚資金、也沒有精英黑客的國家和組織依托現有商業攻擊平臺提供的服務即可進行接近APT級攻擊水準,而這種高度”模式化”攻擊也會讓攻擊缺少鮮明的基因特點,從而更難追溯。
我們不僅要再次引用信息安全前輩Bruce Schiner的觀點”一些重大的信息安全攻擊事件時,都認為它們是網絡戰的例子。我認為這是無稽之談。我認為目前正在發生而且真正重要的趨勢是:越來越多戰爭中的戰術行為擴散到更廣泛的網絡空間環境中,這一點非常重要。通過技術可以實現能力的傳播,特別是計算機技術可以使攻擊行為和攻擊能力變得自動化。”顯然,高度自動化的商業攻擊平臺使這種能力擴散速度已經超出了我們的預測。
我們需要提醒各方關注的是,鑒于網絡攻擊技術具有極低的復制成本的特點,當前已經存在嚴峻的網絡軍備擴散風險。商業滲透攻擊測試平臺的出現,一方面成為高效檢驗系統安全的有利工具,但對于缺少足夠的安全預算、難以承擔更多安全成本的國家、行業和機構來說,會成為一場噩夢。在這個問題上,一方面需要各方面建立更多的溝通和共識;而另一方面毫無疑問的是當前在攻防兩端均擁有全球最頂級能力的超級大國,對于有效控制這種武器級攻擊手段的擴散,應該擔負起更多的責任。
同時,APT-TOCS與我們之前所發現的諸多事件一樣,體現了一個擁有十三億人口、正在進行大規模信息化建設的國家,所面對的嚴峻的網絡安全挑戰;當然,也見證著中國用戶與安全企業為應對這種挑戰所做的努力。