摘要
- 趨勢科技在監控中文駭客集團 Earth Lusca 的期間,發現了一個新的多平台後門程式並將它命名為「KTLVdoor」,它使用 Golang 所撰寫,擁有 Microsoft Windows 和 Linux 兩種版本。
- KTLVdoor 是一個高度加密编码的恶意程式,可偽裝成各種不同的系統工具,以便駭客執行各種工作,包括:操作檔案、執行指令,以及掃描遠端連接埠。
- 恶意程式的组态设定與通訊都使用了精密的加密與編碼技巧來阻礙恶意程式被分析。
- 這起攻擊行動的規模相當龐大,擁有超過 50 台幕後操縱 (CC) 伺服器,全部由同一家中國公司所代管。目前我們仍不清楚這一整個基礎架構是由 Earth Lusca 所獨享還是會與其他駭客集團共用。
我们在监控先前发现的中文駭客集團 Earth Lusca 期間,發現了一個新的多平台後門程式,採用 Golang 所撰寫,我們將它命名為「KTLVdoor」。除此之外,我們還發現這個新的恶意程式家族同時擁有 Microsoft Windows 和 Linux 兩種版本。
這個先前從未報導過的恶意程式,比該集團一般常用的工具更加複雜,它經過了高度加密编码,並且冒用各種系統工具或類似工具的名稱在網路上散播,例如:sshd、java、sqlite、bash、edr-agent 等等。此後門程式 (代理程式) 通常以動態連結函式庫 (DLL、SO) 的形式散播。其恶意程式功能可讓駭客完全掌控被感染的環境:執行指令、操作檔案、提供系統與網路資訊、使用代理器 (proxy)、 下载/上傳檔案、掃描遠端連接埠等等。
這起攻擊行動的規模令人乍舌,因為我們發現了超過 50 台幕後操縱 (CC) 伺服器,全部由中國阿里巴巴所代管,並與該恶意程式家族的多個變種進行通訊。雖然這些恶意程式的樣本當中,有些與 Earth Lusca 具備高度關聯,但我們無法確定是否整個基礎架構都完全只有該集團在使用,或是還有其他中文駭客集團也在共用同一個基礎架構。
针对这起行动,目前我们只发现了一个攻击目标,也就是一家中国境内的贸易公司。这并非中文骇客集团第一次攻击中国公司,例如像 Iron Tiger 及 Void Arachne 这样的集团也都使用了一些专為中文使用者设计的工具。
KTLVdoor 恶意程式分析
高度加密编码
這起攻擊行動當中發現的恶意程式樣本大多經過加密編碼:其內嵌的字串無法直接閱讀、一些符號被刪除,還有大多數的函式和套件也都重新命名成隨機的 Base64 字串,這很顯然是開發者為了拖慢資安人員分析恶意程式的速度 (圖 1)。

组态设定
此代理程式執行時,第一步就是初始化其组态设定参数,初始化数值在代理程式的二進位檔中採用了 XOR 加密與 Base64 編碼 (圖 2)。?

组态设定檔案的格式是一種 (長度-类型-長度-数值) 的客製化格式,檔案中的「KTLV」標記前面通常會附加一個 4 位元組的結構長度值,其作用就好像結構的開頭標記一樣。接著後面是一連串的参数及對應的数值。圖 3 當中可以看到一個「proto」参数,其長度是 5 個位元組 (注意「05」後面跟著「proto」這串字)、然後是类型「02」(也就是 string)、然後是長度「04」(4 個位元組)、然後是字串「http」,也就是使用的通讯协定。


以下表 1 列出其支援的类型格式:
数值 | 类型 |
01 | structure/iteration (後面緊接著 KTLV 標記) |
02 | string |
03 | boolean (1 位元組) |
08 | long long (8 位元組) |
09 | integer (4 位元組) |
0B | byte (1 位元組) |
以下表 2 列出组态设定檔可能包含的参数:
参数名称 | 类型 | 说明/备註 |
listen | string | 主動模式 (預設) / 被動模式。 |
connect | string | 加密的 CC 伺服器。 |
duplex | boolean | 單工 (Simplex) 或雙工 (duplex) 傳輸。 |
conn_timeout | long long | ? |
max_read_limit | long long | ? |
conn_max_retry | long long | ? |
proxy | string | ? |
proto | string | 丑迟迟辫、迟肠辫、诲苍蝉、颈肠尘辫。 |
domain | string | ? |
host | string | ? |
secret | string | 用來將「connect」数值解密。 |
tls | boolean | 啟用或停用。 |
stls | boolean | 啟用或停用。 |
sleep | long long | ? |
jitter | long long | 睡眠时间变化。 |
silent | boolean | ? |
long_connection_boundary | long long | ? |
short_connection_wait_time | long long | ? |
client_id | string | 寫死的目標 GUID。 |
external_channel_enabled | boolean | 是否該取得外部 IP。 |
external_type | string | ? |
auth_param | struct | 含有 http_header 與 uri。 |
http_header | string | ? |
uri | string | 请求的网址路径。 |
debug | boolean | 啟用或停用。 |
组态设定處理完後,內部的组态设定結構 (Config) 便完成更新。Config 結構當中有一部分是 HostInfo 結構,裡面還有一些關於目前被感染電腦的額外参数 (表 3),這些参数記載著當前電腦環境的狀況。
参数名称 | 类型 | 说明/备註 |
Session | string | 每次執行都會隨機產生的 GUID。 |
RealIP | string | 經由 ipconfig / ifconfig 取得。 |
Username | string | ? |
Hostname | string | ? |
ProcessName | string | ? |
Executable | string | ? |
PID | uint32 | 處理程序 ID。 |
ParentProcessName | string | ? |
PPID | uint32 | 父處理程序 ID。 |
Arch | string | 32 或 64 位元。 |
OS | string | 作业系统名称。 |
Platform | string | 作業系統名稱 + 版本。 |
Disks | string | 所有可用的硬碟清单。 |
DiskDetails | string | 可用的硬碟 + 硬碟大小清單。 |
Uptime | string | ? |
Feature | string | 取自「贬碍尝惭袄厂翱贵罢奥础搁贰袄惭颈肠谤辞蝉辞蹿迟袄颁谤测辫迟辞驳谤补辫丑测」的「惭补肠丑颈苍别骋耻颈诲」。 |
Protocol | string | 取自 Config 的数值。 |
Proxy | string | 取自 Config 的数值。 |
Domain | string | 取自 Config 的数值。 |
Host | string | 取自 Config 的数值。 |
TLSEnable | boolean | 取自 Config 的数值。 |
STLSEnable | boolean | 取自 Config 的数值。 |
ExternalIP | string | 透过 取得的外部 IP 位址 (唯有當 external_channel_enabled 数值有設定時)。 |
SleepTime | uint64 | 取自 Config 的数值。 |
Jitter | uint64 | 取自 Config 的数值。 |
ReConnectTime | uint64 | 取自 Config 的数值。 |
Env | string | 环境变数。 |
ClientID | string | 取自 Config 的数值。 |
IsAdmin | boolean | True 或 False。 |
Mode | string | 主动或被动。 |
连线设定
CC 伺服器式儲存在「connect」参数中,其数值已經過 AES-GCM 加密並採用 Base64 編碼。AES-GCM 加密方使用一個標準的前綴 12 位元組 nonce 以及後綴 16 位元組 tag。AES-GCM 金鑰產生自一個「secret」数值,先計算出該值的 MD5 雜湊碼然後再使用金鑰填充方式將其長度增加到 32 位元組,也就是後面增加 16 個位元組的「0x00」。
KTLVdoor 恶意程式通訊
在初始化步驟完成後,代理程式就會開始進入與 CC 伺服器通訊的迴圈。通訊過程會發送和接收訊息,這些訊息會使用 GZIP 壓縮和 AES-GCM 加密。根據组态设定而定,這些訊息的發送過程可能採用單工 (simplex) 模式 (同一時間通道上只能有一個裝置在發送,另一個裝置只能接收) 或是雙工 (duplex) 模式 (兩個裝置可同時發送和接收訊息)。
每個訊息都先有一個訊息標頭,後面再接著訊息資料 (msg)。
栏位名称 | 欄位类型 | 欄位数值 |
sender | String | Session ID 或「admin」。 |
receiver | String | Session ID 或「admin」。 |
token | String | ? |
route | String | ? |
task_id | uint64 | ? |
task_status | uint8 | ? |
task_type | uint64 | ? |
sub_task_type | uint64 | ? |

請注意,外送訊息 (從受感染電腦到 CC 伺服器) 的發送者會攜帶著目前受感染電腦的 Session ID,接收者則是「admin」,也就是 CC 伺服器。反過來,如果是內送訊息 (從 CC 伺服器到受感染的電腦),發送者就會是「admin」,接收者則是 Session ID。如果是發送 HostInfo 訊息到 CC 伺服器,請注意参数「msg」(含有訊息內容) 的名稱後面會接著「KTLV」標記 (圖 5),訊息當中將包含 HostInfo 結構的所有欄位 (表 4)。
接收 CC 伺服器指派的工作
代理程式實作了多個处理函式 (handler) 來處理 CC 伺服器指派的工作 (表 5)。
处理函式 | 子工作 | 参数 | 说明 |
Breakchain | ? | shell flag cmd abs_path |
啟动指令列介面。 执行指令。 等候 3 秒鐘。 結束指令列介面 (SIGKILL)。 |
Exit | ? | ? | 结束处理程序。 |
FileDownload | ? | file_path section_size |
读取档案, 將檔案上傳至 CC 伺服器。 |
FileMD5 | ? | file_path | 读取档案。 計算其 MD5 雜湊碼。 |
FileManager | 01 - 列出所有檔案 02 - 建立目錄 03 - 建立檔案 04 - 刪除檔案 05 - 複製檔案 06 - 重新命名 07 - 寫入檔案 08 - 讀取檔案 09 - 變更存取權限 |
dirName 或 file_path 或 dst_path src_path 或 file_path file_content 或 mode |
档案与目录操作。 |
FileUpload | ? | file_path file_contents position |
将来自伺服器的资料写入受害电脑上的档案。 |
GC | ? | ? | 执行垃圾清理动作。 |
InteractiveShell | ? | send data 或 start 或 stop 或 recv |
? |
NetStat | 01 - 列出連線 | ? | ? |
portscan | ? | gateway ips ports ? |
? |
Process | 01 - 列出清單 02 - 結束 |
pid | ? |
RefreshHostInfo | ? | ? | ? |
Run | ? | cmdn! | 执行指令。 |
Sleep | ? | sleep_time jitter |
? |
TimeStomp | ? | src_path dst_path time |
? |
TaskCache | 01 - 列出工作清單 02 - 刪除工作 03 - 清除工作快取 |
task_id ? |
? |
SoInject | 04 - ?注入到函式庫 | plugin_task_type tmp_payload_cache params |
執行 shellcode (Linux 平台)。 |
ReflectDllInject | ? | ? | 執行 shellcode (Windows 平台)。 |
Socks | 01 – 啟動处理函式 02 – 取得工作 04 – 經由 TCP 傳送資料 05 – 關閉 TCP 06 – 經由 UDP 傳送資料 08 – 經由 UPD 連線到某位址 |
seq addr username password 或 task_id 或 seq data ? |
Socks 代理器 (proxy)。 |
PortScan 會實作多種掃描方式,包括:
- ScanTCP
- ScanRDP
- ScanWinRM
- ScanSmb2
- RdpWithNTLM
- DialTLS
- DialTCP
- ScanPing
- ScanPing
- ScanMssql
- ScanBanner
- ScanWeb
结论
我們相當肯定 KTLVdoor 的樣本應該屬於 Earth Lusca 駭客集團所有,但此恶意程式家族的其他某些樣本我們就無法跟此駭客集團連結。此外,我們這次發現到的基礎架構規模相當不尋常,由於所有的 CC 伺服器都位於中國阿里巴巴的 IP 位址,我們覺得這個新的恶意程式與 CC 伺服器看起來應該不是在早期測試新工具的階段。
這個新的工具固然是由 Earth Lusca 所使用,但也有可能會分享給其他中文駭客集團使用。由於這起攻擊行動還有很多細節目前仍不明朗,所以我們會繼續監控這起活動,後續若有最新消息再隨時發布。
趨勢科技解决方案
凡是希望防範精密攻擊的公司都可考慮採用像?Trend Vision One? 這樣的強大資安技術來讓資安團隊持續發掘攻擊面,包括已知及未知、以及受管理和未受管理的網路資產。Vision One 提供了多層式防護與行為偵測,能在使用者的電腦和系統遭到危害之前預先攔截惡意工具和服务。
入侵指標 (IoC)
如需完整的入侵指標 (IoC) 清單,請至此处。