Kimsuky APT組織使用新型的AppleSeed Android元件偽裝成安全軟體對韓特定目標進行攻擊
本文一共2922字,36張圖 預計閱讀時間13分鐘
一.前言:
kimsuky
APT組織(又名Mystery Baby, Baby Coin, Smoke Screen, BabyShark, Cobra Venom) ,該組織一直針對於韓國的智囊團,政府組織,新聞組織,大學教授等等進行活動.並且該組織擁有windows
平臺的攻擊能力,載荷便捷,階段繁多。並且該組織十分活躍.其載荷有帶有漏洞的hwp檔案,攜帶惡意宏文件,釋放dll載荷的PE檔案,遠端模板注入技術docx文件,惡意的wsf以及js的指令碼檔案等
近日,Gcow
安全團隊追影小組在日常的檔案監控中發現該組織正在積極的使用分階段的惡意宏文件,惡意的wsf以及js檔案釋放並載入載荷同時釋放並開啟相關的誘餌文件以迷惑受害者以及部分模板注入技術的相關樣本。同時我們也發現了其使用冒充KISA(Korea Internet & Security Agency)的官方安卓端安全檢查軟體針對特定目標進行釣魚的活動,同時根據我們的分析發現其APK載荷與該組織之前一直在使用的AppleSeed(又名AutoUpdate)元件有很強的關聯性,所以我們猜測該APK屬於AppleSeed元件集下的Android攻擊載荷。
故此我們判斷該組織已經具有了Windows
,MacOs
,Android
的攻擊能力,並且將在未來的一段時期持續的活躍。
二.樣本分析:
該惡意APP偽裝成KISA的安卓端安全檢查軟體
執行之後申請相關的許可權,彈出介面以迷惑受害者:
在 LaunchActivity
的 onCreate
方法中,啟動了 MainService
服務。 MainService 中,字串經過了加密,對關鍵字串解密後,可得到上傳資料的 url
解密程式碼如下
public static void decrypt(String arg10) {
String v0_2;
int v5;
try {
int v0 = arg10.length();
int v1 = v0 / 2;
byte[] v2 = new byte[v1];
int v3 = 0;
int v4;
for(v4 = 0; true; v4 += 2) {
v5 = 16;
if(v4 >= v0) {
break;
}
v2[v4 / 2] = ((byte)((Character.digit(arg10.charAt(v4), v5) << 4) + Character.digit(arg10.charAt(v4 + 1), v5)));
}
v1 -= v5;
byte[] v10 = new byte[v1];
byte[] v0_1 = new byte[v5];
System.arraycopy(v2, 0, v0_1, 0, v5);
v4 = 0;
int v6;
int v8;
for(v6 = 0; v3 < v1; v6 = v8) {
if(v4 >= v5) {
v4 += -16;
}
int v7 = v3 + 16;
v8 = v2[v7];
v10[v3] = ((byte)(v6 ^ (v2[v7] ^ v0_1[v4])));
++v3;
++v4;
}
v0_2 = new String(v10, StandardCharsets.UTF_8);
}
catch(Exception e) {
v0_2 = "";
}
System.out.println(v0_2);
return;
}
hxxp://download.riseknite.life/index.php
然後把 url 傳入了 c.c.a.c 方法,並使用 scheduleAtFixedRate
設定每分鐘執行一次
在 c.c.a.c 中,並行執行了兩個方法 d() 和 c.c.a.e.c(),分別檢視邏輯
d()主要是取得一些裝置資訊,並 POST 傳送資料。
hxxp://download.riseknite.life/index.php?m=a&p1={url 編碼後的 android_id}&p2={裝置型號 }+{SDK 版本}+{後門版本號}
引數 | 值 |
---|
m | a |
p1 | url 編碼後的 android_id |
p2 | 裝置型號 + SDK 版本 + 後門版本號 |
c.c.a.e.c() 先建立了一個臨時檔案 cmd_xxxxx.dat
(以下檔案不特殊說明均為臨時檔案,注意:[xxxxx為五位字元數字的隨機檔名]) ,然後下載資料寫入檔案
hxxp://download.riseknite.life/index.php?m=c&p1={url 編碼後的 android_id}
hxxp://download.riseknite.life/index.php?m=d&p1={url 編碼後的 android_id}
引數 | 值 |
---|
m | c,d |
p1 | url 編碼後的 android_id |
返回值 | 檔案資料 |
新建 a 物件並把剛才下載的資料傳入 a 方法, a 方法中對 dat 的內容進行了解析
資料 | 大小 |
---|
指令型別(1-8) | int |
指令組數量 | int |
第一組指令長度 | int |
指令內容 | byte[] |
第二組指令長度 | int |
指令內容 | byte[] |
... | ... |
最終呼叫 a.d() 方法,a.d() 會根據指令型別執行相應的操作
指令型別為 1 時,會提醒使用者更新並進行更新操作
指令型別為 2 時,a.d() 建立了 list.xls
和 zip.dat
,並遍歷/sdcard目錄及其子資料夾下的所有檔案,把檔案資訊寫入了 list.xls
NAME | SIZE | LAST MODIFIED | PATH |
---|
檔名 | 檔案大小(按KB計算) | 修改時間 | 絕對路徑 |
list.xls 經過壓縮,寫入 zip.dat ,並在 c.b.a.a.a.u() 中偽裝了 pdf 檔案頭並加密內容,逃避沙箱對流量的檢測
呼叫 c.d( url , 日期 , 檔案路徑 ) 上傳,url 的引數如下
hxxp://download.riseknite.life/index.php?m=b&p1={url 編碼後的 android_id}&p2=a
c.d() 對檔案進行了分塊上傳,以 “$$$$$$$$$$$$$$$$” 為分隔符
指令型別為 3 時,上傳指定的檔案
指令型別為 4 時,使用 " sh -c " 對 cmd_xxxxx.dat
的內容進行執行,把執行結果寫入cmd_xxxxx.txt
,經過相同的偽裝,呼叫 c.d() 上傳
hxxp://download.riseknite.life/index.php?m=b&p1={url 編碼後的 android_id}&p2=b
指令型別為 5 時,建立 sms.txt ,呼叫安卓簡訊協議,獲取資訊寫入 sms.txt
日期 型別(收到/傳送) 傳送/接受人手機號碼 簡訊內容
然後偽裝,上傳
hxxp://download.riseknite.life/index.php?m=b&p1={url 編碼後的 android_id}&p2=c
指令型別為 6 和 7 時分別清除 app 的資料和快取
指令型別為 8 時,傳送簡訊
指令id | 功能 |
---|
1 | 提醒使用者更新並進行更新操作 |
2 | 收集/sdcard目錄下的檔案的資訊壓縮後偽裝並且上傳 |
3 | 上傳指定的檔案 |
4 | 執行命令並將回顯壓縮後偽裝上傳 |
5 | 呼叫安卓簡訊協議,獲取資訊寫入 sms.txt,偽裝後傳送給c2 |
6&7 | 清除app的快取與資料 |
8 | 傳送簡訊給特定的目標 |
此外我們還觀察到奇安信紅雨滴實驗室在其推特上公開了該組織的js樣本(參考連結見尾部)
其js程式碼的主要功能就是將誘餌文件以及加upx的AppleSeed
載荷寫入%ProgramData%下,並且呼叫certutil.exe
解密,然後執行誘餌文件以迷惑受害者,呼叫regsvr32.exe /s
載入AppleSeed
載荷
其顯示的誘餌文件截圖如下:
其話題主要關於韓國外交部海外任務服務狀況的調查表。而在今年三月份的時候我們也觀察到其使用wsf指令碼釋放相應的載荷,其相關程式碼與js的釋放物相似,故此不再贅述,其釋放的誘餌關於韓國國防部空軍Wargame模型的改進計劃內容以針對該國的國防工業
AppleSeed
載入器分析:
呼叫解密函式解密相關的字串變數,寫登錄檔項,創造新鍵以達到許可權維持的效果。鍵名:WindowsDefenderAutoUpdate
,鍵值:regsvr32.exe /s "C:\ProgramData\Software\Microsoft\Windows\Defender\AutoUpdate.dll
獲取當前檔案路徑並且複製當前檔案到C:\ProgramData\Software\Microsoft\Windows\Defender\AutoUpdate.dll
創造名為DropperRegsvr32-20210418013743
的互斥體並且防止其多開
啟動主要功能執行緒:
主要功能執行緒:
獲取系統所在磁碟機代號以及其所在磁碟機代號驅動器的卷標序列號,並且將其取hex後取前八位
解密C2後將資訊進行拼接
onedrive-upload.ikpoo.cf/?m=c&p1={C盤卷標序列號}
onedrive-upload.ikpoo.cf/?m=d&p1={C盤卷標序列號}
將其傳送到C2並將回顯資料寫入%temp%\xxxx.tmp中注意:[xxxx為前兩位數字後兩位字母的隨機檔名]
收集系統資訊並且進行篩選再依據格式Win%d.%d.%d%s進行格式化
解密相關配置資料,根據形式/?m=a&p1={C盤卷標序列號}&p2={系統位數名稱}-{downloader名稱}-v{後門版本號}拼接報文格式
onedrive-upload.ikpoo.cf/?p1={C盤卷標序列號}&p2={系統位數名稱}-D_Regsvr32-v2.0.74
將資料包傳送到c2上
三.樣本關聯:
1.報文相似性
其二者在報文的引數上都以m=a&p1=,m=c&p1=,m=d&p1=進行相關的傳參,同時其p2的第一個引數以及第三個引數分別都為所收集到的本機資訊以及其後門的版本號.且p1都是根據本身的獨特序列號以及id所構成的唯一認證因素,所以二者在流量報文的指令碼上具有一定的相似性
2.解密程式碼的相似性
二者的解密程式碼具體一定的相似性也成為二者被歸因到一類惡意軟體的一項重要的指標。不過由於dll使用了大量的程式碼流平坦化,導致解密函式的流程被嚴重的混淆,故此不能作為很強的歸因形式.不過根據APK所提供的解密演算法可以還原dll檔案中的相關密文。
四.結語
Kimsuky
APT組織作為東北亞地區最為活躍的APT
組織之一,其一直在更新自己的相關武器庫以及更新其載荷的植入方式不斷追求逃脫防毒軟體的檢測。如下圖,本文提到的APK木馬當其剛上傳到Virustotal平臺的時候,其殺軟檢測的狀況為:0/63。該組織也成為了東北亞地區地緣政治下的網路威脅的焦點,當然這值得我們去更多關注該組織的活動,Gcow
安全團隊追影小組將繼續跟蹤該組織更多的動向。
五.IOCs:
Script Dropper:
3A4AB11B25961BECECE1C358029BA611(2021 외교부 재외공관 복무관련 실태 조사 설문지.hwp.js)
14B95DC99E797C6C717BF68440EAE720(창공모델 성능개량 체계개발사업 현장확인자료 - 협력업체 배포용.wsf)
AppleSeed Dll implant:
80A2BB7884B8BAD4A8E83C2CB03EE343(AutoUpdate.dll)
A03598CD616F86998DAEF034D6BE2EC5(temp.db)
AppleSeed Android:
4626ED60DFC8DEAF75477BC06BD39BE7(KisaAndroidSecurity.apk)
C2:
download.riseknite.life
onedrive-upload.ikpoo.cf
alps.travelmountain.ml
六.參考連結以及引用
blog.alyac.co.kr/3536
twitter.com/RedDrip7/status/1386165998709972995
twitter.com/issuemakerslab/status/1385712773024210944
twitter.com/unpacker/status/1377796351589642241