藍寶菇針對性攻擊技術細節揭秘
360公司在2018年7月5日首次對外公開了一個從2011年開始持續近8年針對我國政府、軍工、科研、金融等重點單位和部門進行網路間諜活動的高級攻擊組織-藍寶菇(APT-C-12),該組織的活動在近幾個月內呈現非常活躍的狀態。本文作為前期組織揭露報告的補充,詳述藍寶菇組織在近期攻擊活動的技術細節,希望安全業界了解其攻擊手法共同完善拼圖,輸出防禦方案聯合起來對抗這個國家級的威脅。
魚叉郵件
2018年4月以來,360安全監測與響應中心和360威脅情報中心在企業機構的協同下發現了一批針對性的魚叉攻擊,攻擊者通過誘導攻擊對象打開魚叉郵件雲附件中的LNK文件來執行惡意PowerShell腳本收集上傳用戶電腦中的敏感文件,並安裝持久化後門程序長期監控用戶計算機。該攻擊過程涉及一些新穎的LNK利用方式,使用了AWS S3協議和雲伺服器通信來偷取用戶的敏感資料,在此我們分析並公開整個攻擊過程。
360威脅情報中心確認多個政企機構的外部通信郵箱被投遞了一份發自boaostaff[@]163.com的魚叉郵件,釣魚郵件仿冒博鰲亞洲論壇向攻擊對象發送了一封邀請函:
郵件附件被放到163的雲附件里,此附件即為攻擊者的惡意Payload,這是一個通過RAR打包的快捷方式樣本。接下來我們對同一波攻擊中的另一個完全相同功能的樣本進行詳細分析,以梳理整個攻擊過程。
附件內容如下:
一旦攻擊對象被誘導打開該LNK快捷方式文件,LNK文件便會通過執行文件中附帶的PowerShell惡意腳本來收集上傳用戶電腦中的敏感文件,並安裝持久化後門程序長期監控用戶計算機。
樣本分析
Dropper
附件壓縮包內包含一個LNK文件,名字為:《政法網路輿情》會員申請.lnk,查看LNK文件對應的目標如下:
可以看到目標中並沒有任何可見字元,使用二進位分析工具查看LNK文件可以看到PowerShell相關的字元串,以及很多Unicode不可見字元:
通過分析LNK文件格式中幾個比較重要的結構,完整還原出樣本真實執行的惡意目標,其中涉及3個LNK文件格式的重要結構:LinkTargetIDList、COMMAND_LINE_ARGUMENTS和EnvironmentVarableDataBlock。
LinkTargetIDList,該結構是一個數組,用於標記具體的快捷方式的鏈接目標,而樣本中多個LIST里的元素拼接起來才是快捷方式的具體鏈接目標:
通過調試可以看到目標路徑和LinkTargetIDList拼接出來的結果一致:
COMMAND_LINE_ARGUMENTS,該選項為目標程序的參數
樣本中的目標程序參數則為具體需要執行的PowerShell惡意代碼,另外由於在參數中包含了大量的不可顯示Unicode字元,從而導致右鍵打開快捷方式時目標中並不會包含對應的PowerShell代碼:
EnvironmentVarableDataBlock,當鏈接目標程序涉及到環境變數時會使用
該值設置後會導致具體的快捷方式中的目標被設置為對應的EnvironmentVarableDataBlock值,但是需要注意的是,樣本中EnvironmentVarableDataBlock對實際的程序調用並不起作用(刪除並不影響最終的樣本啟動),最終Shell32.dll靠解析LInkTargetIDList數組來啟動PowerShell。
Payload(PowerShell腳本)
解密PowerShell腳本
將LNK文件指向執行的PowerShell腳本解密,該PowerShell命名為ps_origin,代碼如下:
PowerShell腳本會定位執行LNK文件的最後一行,文件的最後一行如下:
文件最後一行經過Base64編碼,解碼後的數據為[壓縮包+PowerShell腳本]的形式:
將最後的PowerShell腳本解密後如下(名稱為ps_start):
ps_start
被解密後的LNK文件最後一行中的PowerShell腳本中的ps_start會被首先執行,該PowerShell腳本主要用於解壓出後續的壓縮包,並繼續運行其中的腳本,同時壓縮包包含了相應的文件竊取模塊,如下圖所示腳本通過[convert]::frombase64string((gc $a|select -l 2|select -f 1)));以Base64解密出對應的壓縮包文件,之後使用Rundll32載入其中beoql.g後門文件(載入函數為DllRegister),同時將一段PowerShell腳本作為參數傳入,該PowerShell命名為ps_loader:
壓縮包解壓後包含名為beoql.g的DLL後門、合法的Rar.exe壓縮工具、以及真實呈現給用戶的誘惑性DOC文檔:
腳本會嘗試訪問以下3個IP地址,以確保C&C存活:
159.65.127.93
139.59.238.1
138.197.142.236
若確認C&C存活,則通過命令行收集系統的基本信息:
腳本獲取基本信息後,再通過Rar.exe壓縮為start.rar文件,之後使用RSA演算法加密一個隨機字元串e,秘鑰如下:
該隨機字元串為之後上傳文件的RAR加密密碼,腳本會將該加密後的字元保存成id.rar文件,並通過函數pv9上傳start.rar及id.rar文件到攻擊者的雲伺服器中:
最後腳本會遍歷系統中指定的後綴文件(jpg,txt,eml,doc,xls,ppt,pdf,wps,wpp,et,只獲取180天以內的文件),繼續使用Rar.exe壓縮獲取的指定文件,密碼為之前生成的變數e:
而函數pv9會將對應的RAR文件通過AWS S3 存儲協議上傳到一個網上的雲服務商的地址:0123.nyc3.digitaloceanspaces.com,代碼中包含的ACCESS_KEY和SECRET_KEY疑似亞馬遜S3雲服務存儲協議所使用的相關KEY信息:
Amazon S3相關介紹:
樣本中使用該協議不過是添加一些跟服務端協商的請求頭,請求頭的value是用AWS s3 V4簽名演算法算出來的,一個標準的請求頭如下所示:
一次通信流程由上圖代碼紅框中的函數ul3和ig3完成,其中ul3用於配置生成對應的請求頭,ig3完成文件的上傳。而ul3中用於封裝請求,aws3對應的請求頭如下圖為其中的$9,其中一個重要的參數為Signature,由函數a53,e77共同生成,之後$9會封裝到$g中,$g作為最終的請求頭返回:
最終完成上傳文件:
ps_loader
ps_start中載入執行DLL後門後會從內置的三個IP地址中選擇一個作為C&C,再次下載一段PowerShell,此處稱之為ps_loader:
ps_loader會首先生成用於請求的對應的us及Cookie欄位,具體請求如下所示,可以看到返回的數據是一系列的十進位字元:
接著對返回數據進行簡單的初始化後,通過函數sj8對數據進行解密,可以看到攻擊者使用了whatthefuckareyoudoing這個極富外國色彩的調侃俚語作為秘鑰:
解碼後的內容也是一段PowerShell,此處命名為ps_backdoor,ps_backdoor會調用其對應的函數ROAGC:
ps_backdoor
ps_backdoor腳本為一段PowerShell後門,其主功能函數ROAGC的各參數對應的含義為:
參數1:周期,此處為10
參數2:id,此處為zhengyi5
參數3:IP/Port二元組
參數4:對應加密KEY
參數5:對應的MAC地址
分析顯示後門支持以下命令:
該腳本還支持CMD命令功能,除了Windows外,還支持Linux下的命令執行:
上傳下載的通信流量通過AES進行了處理,KEY為ps_loader中傳入的Dqd6lfRDcXK2KxIFDqU1S/MMyxGJ7qPIwM/xZe0R6Ps=:
持久化
ps_start腳本會使用Rundll32.exe載入執行樣本中解壓出來的beoql.g後門文件,該DLL為一個實現惡意代碼持久化載入的模塊,用於載入ps_loader,並通過修改LNK文件來實現持久化,其導出的函數如下所示:
通過分析,DLL具體函數功能如下:
另外,ps_start中會直接調用該DLL的導出函數DllRegister,參數為對應的ps_loader腳本,函數首先會將ps_loader加密保存為beoql.g.ini,之後調用DllEntry和fun_Callinstall:
beoql.g.ini加密保存的PowerShell如下所示:
DllEntry被調用首先會通過CMD命令刪除相關的金山的安全組件:
之後通過CreateProcess函數啟動ps_loader腳本:
fun_Callinstall中解密出對應的加密字元,字元串為通過Rundll32.exe 調用導出函數DllInstall:
具體如下所示:
DllInstall函數首先遍歷多個目錄下的LNK文件:
之後生成nview32_update.bat腳本,並運行:
nview32_update.bat腳本執行後會檢測並刪除WPS的相關組件,之後對前面遍歷獲取的LNK文件進行修改操作:
首先通過調用導出函數DllCopyClassObject將該LNK文件拷貝到臨時目錄,再通過函數DllSetClassObject修改%temp%目錄下的LNK文件,最後將修改過的LNK文件拷貝覆蓋回去:
DllSetClassObject中通過函數fun_Changelnk修改默認的LNK文件:
修改過的LNK文件以多個感嘆號分割:
具體效果如下所示,LNK快捷方式文件被修改為通過Rundll32.exe調用該DLL的DllEntry函數,該函數的主要功能如前文所示用於運行對應的ps_loader腳本,通過劫持LNK快捷方式文件來起到持久化的作用:
攻擊流程
整體攻擊流程如下所示:
影響面評估
攻擊時間
根據360網路安全研究院的全網數據抽樣統計,對攻擊者使用的兩個雲服務域名地址(子域名分別為0123和05011)的訪問分別集中在4月和5月,這和我們捕獲到的樣本時間段完全一致,也就是說藍寶菇APT組織在這兩個月內使用本文描述的攻擊方式進行了大量針對性的攻擊:
攻擊對象
由於惡意樣本會將竊取的用戶數據通過Amazon S3雲存儲協議上傳到攻擊者的雲伺服器中,360威脅情報中心通過對AWS S3服務通信機制的深入解析,結合樣本分析得到的數據模擬通信成功獲取部分攻擊者攻擊過程中產生的中間數據,其中包括攻擊對象的計算機名、被攻擊時間等信息。數據顯示僅一天時間內就有數個受害人員的信息被上傳到伺服器,整波攻擊活動期間評估受控人員數量在百級。
總結
威脅情報在攻防對抗中發揮著越來越重要的作用,威脅情報不是簡單的從blog、twitter等公開渠道獲得開源情報。從本次事件中可以看出,只有具備紮實的安全能力、建立強大的數據基礎並對威脅情報涉及的採集、處理、分析、發布、反饋等一系列的環節進行較長時期的投入建設,才能獲得基於威脅情報的檢測、分析、響應、預警等關鍵的安全能力。
目前,基於360威脅情報中心的威脅情報數據的全線產品,包括360威脅情報平台(TIP)、天眼高級威脅檢測系統、360 NGSOC等,都已經支持對此APT攻擊團伙攻擊活動的實時檢測和相關未知攻擊的預警。
IOC
參考
[1].https://github.com/minio/minio-py
[2].https://docs.minio.io/docs/python-client-quickstart-guide
[3].https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/dev/Introduction.html
[4].https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/API/sig-v4-authenticating-requests.html
[5].https://developers.digitalocean.com/documentation/spaces/#authentication
[6].http://developer.huawei.com/ict/cn/doc/Object_Storage_Service_API_zh_p/zh-cn_topic_0016616545.html
※360安全專家:構築報業安全防護創新體系
※360安全專家發布伺服器勒索攻擊防護建議
TAG:360企業安全 |