惡意程式
Earth Lusca 駭客集團使用 KTLVdoor 後門程式入侵多重平台
趨勢科技在監控 Earth Lusca 駭客集團的期間,發現該集團在某大型攻擊行動當中使用了 KTLVdoor 這個高度加密編碼的多平台後門程式。
摘要
- 趨勢科技在監控中文駭客集團 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)。
組態設定檔案的格式是一種類似 TLV (長度-類型-長度-數值) 的客製化格式,檔案中的「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 | http、tcp、dns、icmp。 |
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 | 取自「HKLM\SOFTWARE\Microsoft\Cryptography」的「MachineGuid」。 |
Protocol | string | 取自 Config 的數值。 |
Proxy | string | 取自 Config 的數值。 |
Domain | string | 取自 Config 的數值。 |
Host | string | 取自 Config 的數值。 |
TLSEnable | boolean | 取自 Config 的數值。 |
STLSEnable | boolean | 取自 Config 的數值。 |
ExternalIP | string | 透過 http://myip.ipip.net 取得的外部 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) 清單,請至此處。