團伙背景
Kimsuky,別名 Mystery Baby、Baby Coin、Smoke Screen、Black Banshe 等,奇安信內(nèi)部跟蹤編號為 APT-Q-2。該 APT 組織于 2013 年公開披露,攻擊活動最早可追溯至 2012 年。Kimsuky 主要攻擊目標(biāo)為韓國,涉及國防、教育、能源、政府、醫(yī)療以及智囊團等領(lǐng)域,以機密信息竊取為主。該組織通常使用社會工程學(xué)、魚叉郵件、水坑攻擊等手段投遞惡意軟件,攻擊手法多樣,擁有針對 Windows 和 Android 平臺的攻擊武器。
事件概述
近期奇安信威脅情報中心發(fā)現(xiàn)一批 Kimsuky 組織使用的 Endoor 樣本,該后門軟件使用 Go 語言編寫,曾在我們于 2024 年初發(fā)布的報告《軟件安裝包偽裝下的 Kimsuky(APT-Q-2)竊密行動》[1]中提及,韓國安全廠商 Ahnlab 將其命名為 Endoor,名字取自樣本中 Go 函數(shù)路徑帶有的 “/En/En/” 字符串[2]。
詳細分析
相關(guān)樣本信息如下:
MD5 | VT?上傳時間 | 文件名 | 文件類型 |
e5c4f8ad27df5aa60ceb36972e29a5fb | 2025-06-04 00:10:15 UTC | ex.pdf_ | EXE |
b15cadf2a4e6670c075f80d618b26093 | 2025-06-06 07:03:07 UTC | icon.db | DLL |
DLL 樣本本身為 Endoor,而 EXE 樣本是從自身數(shù)據(jù)解密出 Endoor 并在內(nèi)存加載,不過兩者使用的 Endoor 核心代碼幾乎一致,因此先以 DLL 樣本為例進行分析,再介紹 EXE 樣本作為加載器額外添加的操作。
Endoor
DLL 樣本(MD5: b15cadf2a4e6670c075f80d618b26093)的惡意功能通過導(dǎo)出函數(shù) XX 進入,最終調(diào)用 Go 編寫的函數(shù) main_XX。
Endoor 核心代碼帶有 “local.github.com” 字符串,疑似偽裝為開源代碼掩蓋其惡意行為。
初始化操作
首先生成標(biāo)記受害者的 UID。獲取 Endoor 感染設(shè)備的的主機名和用戶名,字符串拼接后計算 MD5 hash,提取 hash 值前 5 字節(jié)并轉(zhuǎn)換為十六進制字符串格式,再帶上 “XX-” 前綴和表示是否具有管理員權(quán)限的后綴(”N” 或 “Y”)。完整的 UID 格式如下:
“XX-[MD5 hash 部分值]N”或者”XX-[MD5 hash 部分值]Y” |
切換工作目錄,并創(chuàng)建 lock 文件保證惡意程序單例運行,lock 文件以生成的 UID 命名。執(zhí)行完這些初始化操作后,Endoor 進入 LoopSession 的循環(huán)。
C&C 通信
Endoor 連接的 C&C 服務(wù)器 URL 為 “hxxp://june.drydate.p-e.kr:53/”,通過 POST 請求傳遞數(shù)據(jù),與 C&C 服務(wù)器的交互主要有獲取下發(fā)指令(DownloadCommand)和回傳結(jié)果(UploadResult)兩部分。
(1) 獲取下發(fā)指令
獲取指令的請求數(shù)據(jù)格式如下,參數(shù) 1 的值為 “2”,參數(shù) 2 的值在 UID 后添加了字符 “1”。
a[9 字節(jié)隨機字符串]=2&b[9 字節(jié)隨機字符串]=[UID]1&c[9 字節(jié)隨機字符串]= |
接收到服務(wù)器響應(yīng)后,Endoor 判斷首字母是否為 “S”(表示 Success),如果是則嘗試對首字母之外的其他數(shù)據(jù)進行 base64 解碼。解碼數(shù)據(jù)由 4 字節(jié)的加密 key 和加密數(shù)據(jù)組成,然后進一步執(zhí)行解密操作。
(2) 回傳結(jié)果
回傳結(jié)果的請求數(shù)據(jù)格式如下,參數(shù) 1 的值為 “1”,參數(shù) 2 的值在 UID 后加了字符 “2”。
x[9 字節(jié)隨機字符串]=1&y[9 字節(jié)隨機字符串]=[UID]2&z[9 字節(jié)隨機字符串]=[加密數(shù)據(jù)] |
POST 請求中的加密數(shù)據(jù)通過隨機生成的 4 字節(jié) key 進行加密,然后再用 base64 編碼。
回傳數(shù)據(jù)后,后門根據(jù)服務(wù)器響應(yīng)是否為 “S” 判斷是否回傳成功。
后門指令
獲取指令后,后門根據(jù)響應(yīng)數(shù)據(jù)的前兩字節(jié)進行指令分發(fā),之后的數(shù)據(jù)作為指令參數(shù)。
后門支持的指令如下:
C&C?指令 | 函數(shù)名 | 功能 |
“01” (0x3130) | Process_Sleep | 休眠指定時間,結(jié)束當(dāng)前 C&C 通信會話 |
“02” (0x3230) | Process_Cmd | 創(chuàng)建 shell,執(zhí)行指定遠程命令 |
“03” (0x3330) | Process_Pwd | 獲取當(dāng)前工作目錄 |
“04” (0x3430) | Process_Cd | 切換工作目錄 |
“05” (0x3530) | Process_Conn | 向指定服務(wù)器建立 TCP 連接 |
“06” (0x3630) | Process_Exit | 退出后門程序 |
“07” (0x3730) | Process_Where | 獲取后門程序的文件路徑 |
“08” (0x3830) | Process_Dirsize | 獲取指定目錄的統(tǒng)計信息(子目錄和文件數(shù)量,目錄中文件總大小) |
“09” (0x3930) | Process_GetInfo | 獲取設(shè)備信息,包括主機名、用戶名、CPU 信息、內(nèi)存信息、網(wǎng)卡信息 |
“10” (0x3031) | Process_CmdPath | 設(shè)置執(zhí)行shell 命令的文件路徑(默認為 cmd.exe) |
“11” (0x3131) | Process_Codepage | 設(shè)置代碼頁,默認為euc-kr(韓語) |
“12” (0x3231) | Process_Hibernate | 設(shè)置下次連接的具體日期時間(解析時區(qū)為韓國時區(qū)Asia/Seoul),結(jié)束當(dāng)前C&C 通信會話 |
“13” (0x3331) | Process_Die | 刪除后門程序文件 |
“14” (0x3431) | Process_SocksAdd | 添加 Socks5 代理,并建立連接 |
“15” (0x3531) | Process_SocksList | 列出 Socks5 代理 |
“30” (0x3033) | Process_Upload | 向感染設(shè)備上傳文件 |
“31” (0x3133) | Process_Download | 從感染設(shè)備下載文件 |
加載器
EXE 樣本(MD5: e5c4f8ad27df5aa60ceb36972e29a5fb)通過異或解密的方式從自身數(shù)據(jù)中恢復(fù)出一段 Shellcode,然后執(zhí)行。
Shellcode 進一步解密出一段 PE 文件數(shù)據(jù),長度為 0x6f7000 字節(jié),并在內(nèi)存中加載執(zhí)行。
提取的 PE 中包含基本相同的 Endoor 代碼。
該 Endoor 樣本會檢查程序啟動時的命令行參數(shù),如果不帶指定參數(shù)運行,則直接執(zhí)行自刪除操作。支持的參數(shù)有 “dkgei” 和 “dkeig” 兩種。
參數(shù) “dkgei” 下,樣本將自身復(fù)制為當(dāng)前用戶目錄下的”svchost.exe” 文件(即”C:\\\\Users\\\\[用戶名]\\\\svchost.exe”),然后創(chuàng)建名為 “Windows Backup” 的計劃任務(wù),以參數(shù) “dkeig” 啟動。如果計劃任務(wù)創(chuàng)建成功,則進行自刪除,否則嘗試與 C&C 服務(wù)器通信。
參數(shù) “dkeig” 運行模式下,則直接進入與 C&C 服務(wù)器的通信過程。
溯源關(guān)聯(lián)
此次發(fā)現(xiàn)的 Endoor 樣本和之前披露的 Kimsuky 后門[1]特征完全一致,包括網(wǎng)絡(luò)通信的數(shù)據(jù)格式、后門指令的代碼和對應(yīng)功能。
不過此次 Endoor 后門有兩點和歷史樣本不一樣的地方,首先是記錄下一次連接 C&C 服務(wù)器的時間不再保存在注冊表中,而是直接存儲在樣本的全局變量里。其次,樣本在自刪除時,使用的是硬編碼路徑 “C:\\\\Programdata\\\\Cache.db”,而不是樣本實際的保存位置,比如上面提到的 Endoor 樣本將自身復(fù)制為 svchost.exe,這會導(dǎo)致自刪除操作無法生效,推測可能是攻擊者在調(diào)整代碼時留下的錯誤。
C&C 服務(wù)器域名 june.drydate.p-e.kr 綁定 IP 162.216.114.133,該 IP 在近期還綁定了其他類似的域名:summer.cooldate.p-e.kr 和 uni.oxford.p-e.kr,后者可能模仿牛津大學(xué)。
總結(jié)
本次發(fā)現(xiàn)的 Endoor 后門在功能上變化不大,但攻擊者掩蓋攻擊的方式別出心裁,一方面是惡意函數(shù)的文件路徑以 local.github.com 開頭,試圖偽裝為來自 github 的開源代碼,避開代碼審查,另一方面后門連接 C&C 服務(wù)器的 53 端口,而不是常規(guī)的 80 或者 443 端口,一定程度上可以繞過對惡意流量的檢測,體現(xiàn)了 Kimsuky 組織在實施攻擊時不斷調(diào)整手法的靈活性。
防護建議
奇安信威脅情報中心提醒廣大用戶,謹(jǐn)防釣魚攻擊,切勿打開社交媒體分享的來歷不明的鏈接,不點擊執(zhí)行未知來源的郵件附件,不運行標(biāo)題夸張的未知文件,不安裝非正規(guī)途徑來源的 APP。做到及時備份重要文件,更新安裝補丁。
若需運行,安裝來歷不明的應(yīng)用,可先通過奇安信威脅情報文件深度分析平臺(https://sandbox.ti.qianxin.com/sandbox/page)進行判別。目前已支持包括 Windows、安卓平臺在內(nèi)的多種格式文件深度分析。
目前,基于奇安信威脅情報中心的威脅情報數(shù)據(jù)的全線產(chǎn)品,包括奇安信威脅情報平臺(TIP)、天擎、天眼高級威脅檢測系統(tǒng)、奇安信 NGSOC、奇安信態(tài)勢感知等,都已經(jīng)支持對此類攻擊的精確檢測。
IOC
MD5
b15cadf2a4e6670c075f80d618b26093
e5c4f8ad27df5aa60ceb36972e29a5fb
d4db59139f2ae0b5c5da192d8c6c5fa0
C&C
june.drydate.p-e.kr
summer.cooldate.p-e.kr
uni.oxford.p-e.kr
URL
hxxp://june.drydate.p-e.kr:53/
參考鏈接
[1].https://mp.weixin.qq.com/s/kKNkTAlUpLL2skXq3TcBfw
[2].https://asec.ahnlab.com/en/63396/