概述
2019年奇安信威脅情報中心發佈《阻擊「幻影」行動:奇安信斬斷東北亞APT組織「虎木槿」伸向國內重要機構的魔爪》全網首次披露東亞APT團伙「虎木槿」,奇安信內部跟蹤代號APT-Q-11,在此後的數年間我們一直對其保持高強度的跟蹤,該團伙在2019-2021三年間使用了多個瀏覽器0day漏洞,使用多種攻擊手法對目標進行滲透攻擊,基於奇安信大資料平臺捕獲到的攻擊手法如下:
1. 普通魚叉郵件釣魚
2.瀏覽器0day+魚叉郵件
3. 內網水坑攻擊
4.內網0day橫向移動
由於該團伙非常善於挖掘本土化軟體的0day漏洞,技術較為高超,我們沒有十足的把握洞悉「虎木槿」過去三年中所有的攻擊活動,本文披露的活動也只是冰山一角,希望友商對本報告進行補充擴展。本篇以年份為單位,披露漏洞細節(漏洞軟體目前均已修復)、成因以及利用,文末會公佈歷史活動的IOC,相關IOC均已無法訪問,截止到報告完成前尚未捕獲到新活動。
2019年
魚叉郵件釣魚
「虎木槿」在2019年初時通過使用可信郵箱向目標人員投遞帶有invoice主題的魚叉郵件。
我們收集到的PC端釣魚頁面如下:
以新冠疫情作為誘餌的釣魚頁面:
手機端釣魚頁面如下:
會將輸入的資料和使用者名進行拼接後經過RSA加密發送到後臺頁面。
加密程式碼如下:
最後跳轉到帶有PDF的頁面,有些則會跳轉到合法的網盤檔案下載連結,引導受害者下載安全的PDF。
部分郵件中的釣魚連結採用google白域名轉發的形式來繞過郵件檢測:
https://www.google.com/url?q=http://{domain}/index.php?addr=XXX&rc=XXX&source=gmail&ust=XXX&usg=XXX
通過奇安信大資料平臺關聯我們觀察到虎木槿對海外目標的攻擊活動,冒充聯合國網站對外國駐北韓大使館以及北韓駐外國大使館進行攻擊。
cloud.unite.un.org.docs-verify.com
返回的PDF內容為波蘭駐平壤大使館邀請函:
還會仿冒office相關的(www.ms0ffice.guest-mailclouds.com)釣魚頁面,遺憾的是我們並沒有獲取到完整的html。
魚叉郵件+瀏覽器0day
攻擊者除了在郵件中投遞釣魚連結外,還會投遞帶有針對部分瀏覽器0day漏洞的惡意連結,漏洞利用流程如下:
URL | 功能 |
/ccps/20191031.pdf | 偽裝pdf後綴的手稿語言 |
/ccps/start00.html | 判斷瀏覽器版本是不是對應瀏覽器,如果不是的話,顯示正常的pdf不攻擊 |
/ccps/exp.html | 觸發漏洞 |
/ccps/exp2.html | 執行惡意程式碼 |
/ccps/d.jpg | 圖片隱寫加密,一個瀏覽器控制元件的dll,劫持執行木馬 |
/ccps/e.jpg | 圖片隱寫加密,解密後為木馬檔案,下載帶360a.exe |
郵件截圖如下:
Eml檔案中包含了兩個連結,第一個連結為探針,第二個連結使用了某域名的白名單跳轉:
http://dict.XXXXX.com/appapi/redirect?module=compose.ComposeModule&redirectUrl=http://oversea-cnki[.]net/ccps/20191031.pdf
之後會再跳轉到http://datasectioninfo[.]com/ccps/20191031.pdf
訪問同目錄下的start00.html,進入漏洞利用流程,start00.html主要用來判斷當前瀏覽器是否可利用,無論是否可利用最後都會載入正常的PDF。
值得一提的是,PDF檔案同樣有檢測機制,如果Agent包含某些設備特徵則會跳轉到404頁面。
如果存在可利用的瀏覽器則會執行exp.html。
判斷瀏覽器版本和系統版本後執行exp2.html,下載兩個隱寫的PNG檔案。
並在解密後把檔案下載到Mediaplay 播放器的外掛目錄下,實現DLL劫持,檔案名:np-mswmp.dll,在播放1.wmv 後,會默認載入該dll,然後dll執行起來後會執行360a.exe的木馬的操作。
漏洞分析
由於部分瀏覽器chrome核心版本過低,攻擊者使用了兩個Chrome核心漏洞,分別位於exp1.html和exp2.html,其中exp1.html由project zero 的lokihardt@google.com發現,通過該漏洞實現程式碼執行功能。
獲取全局記憶體讀寫的能力。
獲取任意對應的函數地址。
之後通過程式碼執行啟動shellcode修改對應記憶體中的部分參數。
其中修改如下的字串為catalog。
之後通過CVE-2018-6055繞過chrome沙箱,該漏洞由laginimaineb@google.com 發現,mojo接口filesystem::mojom::Directory存在漏洞,可導致任意檔案讀寫,這個接口存在於mojo server catalog中,也就是上文中通過shellcode修改的的字符。
因此,執行exp1後啟動mojo對應的catalog服務,執行exp2調用對應的漏洞接口實現沙盒逃逸,從而在系統中寫入對應的惡意外掛,以實現劫持mediaplayer,此時運行一個wmv檔案以實現最終的惡意程式碼啟動。
惡意程式碼分析
本次活動涉及到4個落地檔案和5個記憶體載入的外掛。
檔案名 | MD5 | 編譯時間 | 功能 |
360a.exe | 580da4e63c9e617573831127df6e02fe | 2019-10-31,07:23:22 | 木馬Dropper,釋放svctask.exe 和SndVolSSO.dll |
np-mswmp.dll | 8962b07c12f1e8d1a0cff81b94e21538 | 2007-04-11,00:18:18 | 劫持瀏覽器的控制元件 |
SndVolSSO.dll | e356e764bc0f2d2807314dae322889de | 2019-10-31,07:22:16 | Dropper釋放的,Bypass uac啟動svctask.exe |
svctask.exe | 2c5f443b2af64be2c35ebbbc56f61ff0 | 2019-10-31,07:20:59 | 遠控主檔案 |
漏洞利用執行完畢後,會先通過Dll side-loading載入np-mswmp.dll,修改了正常的np-mswmp.dll的一個函數,被patch的地方如下:
被patch的函數會獲取CreateProcessA的地址,並運行起來360a.exe。
360a.exe基於開源putty項目,將main函數里正常程式碼替換為惡意程式碼,主要功能為解密釋放loader程序SndVolSSO.dll和遠控主程序svctask.exe,使用Bypass UAC技術通過iFileOperation的方式將SndVolSSO.dll複製到Windows目錄下,實現explorer.exe劫持持久化。
SndVolSSO.dll被載入起來後使用另一種Bypass UAC的方法運行svctask.exe。
該樣本的具體執行流程如下:
1. 創建名字為「lb@\x06g」的互斥體,這個互斥體在第一個資料包/qn/doil.php裡當參數傳遞了出去,等待資料包返回,如果資料包返回的資料通過驗證,木馬會請求下一個資料包。
2. 木馬發送的第二個資料包為/qn/doil.php?adm,該資料包是GET請求,會返回下一個資料包返回的資料的大小(外掛包pkg的大小)。
3. 木馬會以POST請求發送第三個資料包,該資料包會返回加密後的外掛包(webroot/dn/pkg目錄),以0x8111212為外掛的分割字符,包含5個外掛;加密演算法為xor 0x21。
4. 把5個外掛通過遠端執行緒注入到進程名為svctask.exe(自身)的進程裡,載入起來。
返回的外掛包是一個偽裝jpg的圖片,頭部16位元組是jpg頭,如圖為瀏覽器打開的截圖:
獲取到的外掛列表如下:
檔案名 | 功能 | 編譯時間 |
Pear.dll | 網路通訊模組,主要通過管道給其他外掛下發命令 | 2019-11-01,04:55:02 |
Mango.dll | 控制者下發檔案到受害者(ACFVXZseD) | 2019-11-01,04:55:01 |
Melon.dll | 獲取計算機基本資訊保存到檔案 | 2019-11-01,04:55:02 |
Peach.dll | 從受害者上傳資料到控制者(ACFVXZseU) | 2019-11-01,04:55:01 |
Durain.dll | 獲取受害者電腦上的特定目錄的檔案結構和敏感檔案 | 2019-11-01,04:55:02 |
Lemon.dll | 注入惡意程式碼到指定進程中 | – |
具體的管道功能如下:
檔案名 | 功能 |
ACFVXZseR | 刪除指定檔案 |
ACFVXZseE | 運行指定檔案 |
ACFVXZseU | 從受害者上傳檔案到控制者 |
ACFVXZseX | 退出 |
ACFVXZseD | 控制者下發檔案到受害者 |
ACFVXZseL | 把惡意程式碼注入到指定進程 |
RES | 命令執行後返回的結果 |
BUN | 獲取本次會話的金鑰 |
RQT | 獲取待執行的命令隊列 |
返回狀態的資料包分為四個狀態:
狀態碼 | 含義 |
[GET_CMD] | 等待控制者下發指令 |
[CONNECT] | 連接中 |
[SUCCEED] | 執行成功 |
[FAILED] | 執行失敗 |
URL接口功能如下:
URI | 用途 |
/qn/doil.php | 驗證包和接收外掛包 |
/qn/map.php | 用於接收互動命令 |
/qn/daily.php | 未知 |
/qn/flight.php | 用於傳送檔案 |
通過奇安信大資料平臺我們找到了一些同源樣本:
MD5 | Mutex | 功能 |
0e59d990a6cd93c999481c802ff83c3d | ACFVXZseL | 從管道ACFVXZseL接收過來的惡意程式碼,解密後注入到指定進程 |
2205e0119c825b8b5086e648957edf79 | ACFVXZseL | 和C2進行通訊lion.waitnetwork.net下載Apple.exe到本地執行起來,命令列參數「-Snmuery」 |
5b63114850a148dc74cce50a36778880 | 循環讀取temp下的q檔案,解密後執行起來 |
2020年
內網橫向移動0day漏洞
漏洞分析
部分瀏覽器默認安裝一個獨立服務會監聽高埠實現部分功能的調用,我們推測虎木槿團伙對該服務進程進行了程式碼審計,最終找到任意命令執行漏洞,凡是安裝了部分瀏覽器的終端無論在內網或者在外網對映了IP均能被穩定RCE。
奇安信威脅情報中心觀察到相關攻擊後,第一時間對漏洞進行了覆盤,現將相關細節公開,供安全研究人員參考。
綁定埠程式碼如下:
通過該埠接受的資料格式需要以/?開頭,以 /r/n 結尾,因此此時可以得出以下形式的exp構造/?*****/r/n
接著依次解析appid、path、channel、callback等參數,每個參數以&分割,Exp格式如下:
/?appid&path&channel&callback/r/n
之後進入一個if,該大流程為–programid=分支,漏洞觸發函數在here位置,因此可以判定我們的exp中一進入–programid=流程,其值會來自於appid,其中–msg_program_suburl=來自前面的path,–msg_program_channel=來自前面channel,因此這裡可以得出以下exp的格式,這裡通過寫入斷點觀察可以發現if中判斷的0x12的值實際是appid的長度,必須為18。
Exp構造格式如下:
/?appid=111111111111111111&&path&channel *****/r/n
最終appid轉為–programid=,channel轉為msg_program_channel,故結合我們檢測到的資料最終的EXP構造如下:
/?appid=qheejtaunxfk8pj2p9&channel=1 –no-sandbox –headless –renderer-cmd-prefix=”cmd.exe /c start calc.exe&\r\n”
值得一提的是recv後會通過空格對buffer進行分割,所有空格被格式化,導致無法順利執行EXP,通過分析發現在channel轉為msg_program_channel時,會在fun_setStr中處理對應的資料。
會依次判斷該資料是否為%,+,實際上%是用於處理unicode,而會將+轉化為空格,也就是說exp中只需將空格替換為+號,後續程式碼中會自動將空格恢復。
因此完整exp如下所示:
/?appid=qheejtaunxfk8pj2p9&channel=1+–no-sandbox+–headless+–renderer-cmd-prefix=”cmd.exe /c start calc.exe&\r\n”
最終會調用ShellExecuteW執行對應的命令。
VBS分析
虎木槿利用該漏洞調用wscript執行v.vbs,從遠端伺服器下載Payload。
遺憾的是我們捕獲到的樣本均已損壞。
2021年
OA內網水坑
在2021年攻擊者除了使用瀏覽器漏洞外還使用了一種全新的攻擊模式,即入侵內網OA系統,替換OA系統網盤上的常用工具,進行水坑攻擊。
尚不清楚攻擊者是通過何種方式入侵內網OA的,替換的檔案如下:
Md5 | 檔案名 | 被替換的工具 |
0782a0d6313fbb19a61d1fdc59234812 | Filelocator pro 8.5 build 2912 | 檔案內容搜尋工具 |
29f84b0c138f0a8c3b1f6c9a43911984 | filelocatorproportable.exe | 檔案內容搜尋工具 |
d2ea8a53e5db1b1d78bdc08d66bc1cf6 | Launcher_Setup (1).exe | V2Conference視訊會議 |
字串解密邏輯如下:
從自身釋放出正常的軟體安裝包並啟動:
釋放惡意的SfAntiBot.exe,樣本偽裝成友商殭屍網路查殺工具:
Md5 | 檔案名 | 編譯時間 |
c296fc1c0d181c2e39f4fd5a8bceb70b | SfAntiBot.exe | 02/10/2021 05:30:20am |
樣本起始會動態載入API,並嘗試提升到管理員許可權。
如果許可權提升失敗,則會用內建的UACME進行bypass UAC提權。
核心邏輯在窗口回呼函式中。
生成配置檔案,存放經過加密的C2:
讀取配置檔案解密C2。
http://190.2.147[.]128/sangfor/cloud/edrTL.php
收集本機資訊,將資料上傳到遠端伺服器上。
從遠端伺服器讀取payload資料並寫入檔案。
啟動payload,獲取螢幕截圖發送到遠端伺服器
下載的payload如下:
Md5 | 檔案名 | 功能 |
87b65abafbd51bbd30a5eae624401912 | vmcret.exe | 反彈shell到遠端伺服器 |
63b80446ff4cefa9db70f6cdffaa6a05 | mscowlib.dll | 下載者 |
aef737cc72ac492ae54cf916cd60b7c1 | 360chkcloud.exe | 下載者 |
vmcret.exe為攻擊者自己編譯的Cryptcat,主要功能反彈shell。
194.88.107.34:443193.9.113.180:80
攻擊者利用反彈shell執行一些cmd命令創建計劃任務和橫向移動,接著攻擊者先是下發了一個名為360ChkCloud的下載者測試檔案,功能非常簡單。
接著下發了帶有混淆的下載者,但被天擎查殺。
CC=88.150.227.110:13
總結
目前,基於奇安信威脅情報中心的威脅情報資料的全線產品,包括奇安信威脅情報平臺(TIP)、天擎、天眼高級威脅檢測系統、奇安信NGSOC、奇安信態勢感知等,都已經支持對此類攻擊的精確檢測。
IOC
2019年
MD5:
580da4e63c9e617573831127df6e02fe
8962b07c12f1e8d1a0cff81b94e21538
e356e764bc0f2d2807314dae322889de
2c5f443b2af64be2c35ebbbc56f61ff0
0e59d990a6cd93c999481c802ff83c3d
2205e0119c825b8b5086e648957edf79
5b63114850a148dc74cce50a36778880
CC:
Microsoft.ccivde.com
mail-hostfile.com
141.255.160.250
oversea-cnki.net
datasectioninfo.com
blue.chinfoset.com
lion.waitnetwork.net
cloud.unite.un.org.docs-verify.com
www.ms0ffice.guest-mailclouds.com
service-hq.com
netease.smartsystem36.com
www.morning-place.com
helpdesk-mailservice.com
netease.mail-drivecenter.com
2020年
CC:
http://62.112.8.79/Images/Png/p
2021年
MD5:
0782a0d6313fbb19a61d1fdc59234812
29f84b0c138f0a8c3b1f6c9a43911984
d2ea8a53e5db1b1d78bdc08d66bc1cf6
c296fc1c0d181c2e39f4fd5a8bceb70b
87b65abafbd51bbd30a5eae624401912
63b80446ff4cefa9db70f6cdffaa6a05
aef737cc72ac492ae54cf916cd60b7c1
2353c6bc28050fc95ceca63ef608bca8
fe39b7713f040e839f54edc42af7b63a
CC:
http://190.2.147[.]128/sangfor/cloud/edrTL.php
http://190.2.147[.]128/360-Cloud/Chk
194.88.107.34:443
193.9.113.180:80
88.150.227.110:13
點選閱讀原文至ALPHA 5.0
即刻助力威脅研判