【17】資安的原罪 ch.3-2.d 殭屍網路
本章見證範圍最大最廣的攻擊。^1 ^9
什麼是殭屍網路(Botnet)?
殭屍網路是一個由被入侵設備(稱為「殭屍」或「機器人」)組成的網路,這些設備通常在設備擁有者不知情的情況下,被攻擊者(稱為「殭屍網路主控者」或「殭屍主」)遠端控制。
基本組成部分
- 殭屍網路主控者/控制者:控制殭屍網路的人或組織。
- 指揮與控制(C2)基礎設施:殭屍接收指令的機制。
- 殭屍/機器人:被感染的設備(包括個人電腦、物聯網裝置、伺服器、行動裝置等)。
常見流程:
- 攻擊者製作或購買惡意程式(malware / payload)。
- 惡意程式藉由釣魚郵件、惡意下載或瀏覽器即時攻擊(drive-by)散播並初次攻陷目標。
- 投放器(dropper)將payload寫入磁碟,建立持久性(persistence)。
- payload 啟動回報程式(beacon),定期聯絡控制端(C2,如透過 HTTPS POST 到某個域名)。
- 控制端回傳指令(例如下載額外模組、執行命令、設定外洩路徑)。
- payload 按指令執行(偵察/recon、帳密竊取、側向移動等),並可能分階段部署其他惡意軟體(例如之後再放勒索軟體)。
常見用途
-
DDoS 攻擊 — 耗盡可用頻寬、網路連結、記憶體、儲存空間或 CPU 等資源,讓合法使用者無法存取服務;伺服器忙於回應大量虛假請求而癱瘓。
-
點擊詐欺 / 廣告詐欺 — 人為或機器人偽造點擊廣告或流量,導致廣告主支付無效點擊費用並扭曲廣告成效數據。
-
加密貨幣挖礦 — 在受害設備上暗中執行挖礦軟體,消耗 CPU/GPU 資源以挖掘加密貨幣,導致裝置變慢、耗電與硬體壽命縮短。
-
殭屍網路即服務(Botnets as a Service, BaaS) — 攻擊者把已控制的設備或整個 botnet 當作服務出售或租借,他人可付費發動攻擊或執行惡意任務。
-
流量操作 — 殭屍網路能夠大量且自動化地將流量導向特定網站、影片或線上服務,用於人為提高瀏覽量、點擊數或觀看時長(例如刷流量、提升排名、操控推薦演算法)。
-
資料竊取 — 竊取鍵盤紀錄、密碼、銀行與個人資料等敏感資訊,用於身份盜用、詐騙或販售於地下市場。
-
撞庫和暴力破解 — 利用大量已洩露的帳密組合自動嘗試登入(credential stuffing)或用暴力猜密碼(brute-force),以取得未授權存取。
-
垃圾郵件與釣魚郵件散發 — 大量散發垃圾郵件或釣魚郵件,誘騙收件人點擊惡意連結、下載附件或洩露機密資訊;有時會用特定工具(如所稱之 Reactor Mailer)自動化發送。
-
散布更多惡意軟體或勒索程式 — 利用已入侵的設備散布更多惡意軟體或勒索程式,擴大感染範圍或加密受害者資料以索取贖金。
-
代理流量以隱藏攻擊者身分 — 將攻擊流量轉發或代理出去以隱藏真實來源,讓追蹤和阻斷攻擊者變得更加困難。
-
進階攻擊 — 被用來掃描並利用已知或零日漏洞支援更大規模的攻擊活動,或作為「跳板」在企業或家庭網路內進行橫向移動。
什麼是Payload?
Payload(有效負載)指攻擊者放到被害系統上、實際執行惡意目的的程式碼/模組。它是入侵鏈中「做事」的那一段:蒐集資料、建立後門、下載其他模組、橫向移動或部署勒索軟體等,可存在磁碟或僅於記憶體。
Payload 的常見類型
-
Dropper / Installer(投放程式):把其他惡意檔案寫入磁碟並建立持久性。通常本身不做太多動作,只負責安裝。
-
Downloader / Fetcher(下載器):連回 C2 下載主 payload(stage)。
-
Implant / Backdoor(植入體 / 後門):常駐記憶體或系統,接收遠端指令或開放通道。
-
Beacon / Beaconing 模組:負責與 C2 聯絡,回報狀態並領取指令。
-
Module(模組):特定功能(credential theft、keylogger、ransomware payload、DDoS 模組 等)。
-
Loader / Shellcode:較低階,用於把記憶體內的 code 執行起來(例如 exploit 後注入的 shellcode)。
Staged vs Stageless
Staged(分階段)
-
定義:初期 payload(稱為 stage0,例如 dropper 或 downloader)很小,執行後再從 C2 或遠端位置下載更大的主要 payload(stage1、stage2 ...)。
-
優點:初始檔案較小、較難被靜態簽名比對攔截;攻擊者可動態選擇/更新後續模組;分階段可延遲風暴式活動降低早期偵測機會。
-
缺點:下載階段會產生網路行為(易留下痕跡);若 C2 被封鎖或註冊域名失效,後續階段失敗。
-
常見場景:利用 downloader 下載 Meterpreter、Cobalt Strike 之類的 payload(示意用途)。
Stageless(無階段 / 單體)
-
定義:初始投入的 payload 本身就是完整的惡意程式,不再向外下載主要功能;一個檔案(或記憶體塊)即完成所有功能。
-
優點:執行時不需再聯網下載大量程式,減少外部網路足跡;對抗 C2 封鎖更有彈性(本體已具備功能)。
-
缺點:初始檔案通常較大,容易被靜態分析或簽名偵測到;缺乏攻擊者在執行時動態更換 payload 的便利。
-
常見場景:一次性植入的勒索軟體樣本、純記憶體攻擊的單檔 implant(在記憶體執行且不再取下一步)。
什麼是 Beacon?
Beacon 指被感染主機定期向其 C2 發出的網路聯絡,用來:
- 檢查是否有新指令,
- 傳送狀態/元資料,
- 小規模外洩資料,
- 下載或取得額外模組。
Beacon 的行為特性
-
間隔(Interval):固定(例如每 60 秒)或隨機化以避開偵測。有些實作使用指數退避。
-
beacon 的負載(Payload):通常為小型 JSON、Base64 二進位塊、加密資料,或編碼於 DNS 子網域標籤中。
-
抖動(Jitter):在時間上做小幅變化以避免以簽名為基礎的偵測。
-
睡眠模式(Sleep modes):長時間休眠後突發活動。
-
回呼模式(Callback patterns):重試次數、使用多個備援網域或 IP 的策略。
什麼是 C2?
C2 是 駭客操控殭屍網路(Botnet) 的指揮中心,負責下達指令給被感染的電腦(Bot)並接收回傳資料。通常駭客不會讓 C2 直接暴露,而是透過一連串 代理伺服器、中繼點、跳板機 來隱藏真實位置。這些中繼可能是:
- 被入侵的伺服器
- 租用的 VPN / Proxy
- 暗網 / 匿名網路(如 Tor)
常見架構和手法
-
集中式(經典):單一 C2 伺服器或小型伺服器群(HTTP/HTTPS、IRC、自訂 TCP)。簡單但有單點故障風險。
-
點對點(P2P):感染主機形成網狀結構;指令在節點間傳播(較難一舉鏟除)。
-
去中心化 / 濫用雲端服務:利用雲端服務、社交平台、公開 API 或第三方託管。
-
Fast‑flux / 網域輪換:頻繁變更 DNS 紀錄以隱藏 C2 的實體 IP。
-
網域產生演算法(DGA):惡意程式計算大量網域名稱並嘗試連線;攻擊者只註冊其中部分。
-
隱寫/隱蔽通道:透過 DNS TXT、ICMP、Tor 或社交平台等方式傳遞 C2 指令;將命令藏在看似無害的流量中。
常見協定與技術
-
HTTP/S(GET/POST) — 與正常網頁流量混合。可能使用 TLS。
-
DNS 查詢(利用 TXT 或子網域標籤來外洩資料)。
-
自訂 TCP/UDP 協定、IRC。
-
使用合法憑證/CDN 的 HTTPS 來混淆流量來源。
-
電子郵件、雲端儲存(如 S3、Dropbox) 作為非同步 C2 通道。
SMB(Server Message Block)在 C2 / 攻擊中的角色
SMB 是微軟常用的檔案/印表機共享與 IPC(inter‑process communication)協定。攻擊者會利用 SMB 在內網建立或隱藏 C2 通道、傳送/分發 payload、橫向移動或執行遠端命令。SMB 的本地性與被廣泛允許的特性,使其在被外網封鎖的情況下仍能發揮作用。
常見被濫用的場景與手法
-
橫向移動 / 遠端執行:利用管理分享(\hostname\C$)、PsExec 類工具或遠端服務啟動程式在其他主機上執行 payload(載入後門、執行檔案)。
-
SMB 作為 C2 通道:利用 SMB 命名管線(\host\pipe)或在共享上放置小型 beacon 檔案來回傳指令/狀態,或使用 SMB 當作封包承載而不經外網。攻擊框架(如一些商用/公開框架)會提供 SMB beacon/transport。
-
Payload staging via SMB share:在內網共享上放置較大 payload,目標機器從共享遠端載入或執行(等同於內部的下載/傳輸通道)。
-
NTLM/SMB relay 與 權限濫用:攔截/轉送 SMB 認證以取得對內網資源的存取權,或橫向使用竊取的憑證。
-
Exploit SMB (v1/vulnerabilities):利用 SMBv1、EternalBlue 類漏洞快速散播或執行任意程式碼,進而建立 C2 控制面板。
-
隱蔽流量與混淆:在內部網段內,SMB 流量通常被視為可信,攻擊者可把命令藏在看似正常的 SMB 檔案/命名管線流中以逃避偵測。
持續和迴避偵測
攻擊者常透過持久化(persistence)與規避偵測(evasion)來維持對受害系統的長期控制並掩蓋其行為。rootkit / 高權限隱藏 是一套能奪取最高權限和隱藏自身的工具組。
持久化(Persistence)
讓攻擊者在受害者重新啟動或使用者介入後仍能恢復連線或重新取得控制權。攻擊者通常會組合多種持久化(例如 service + scheduled task + backdoor account)以增加生存力與恢復能力。
常見方式
-
啟動項 / 開機自動執行
- Windows:Registry Run keys、Startup 資料夾、Scheduled Tasks(排程任務)、Services(服務)、WMI persistence、Image File Execution Options (IFEO)、DLL search order hijacking
- Linux/macOS:systemd 單位、crontab、LaunchAgents/LaunchDaemons、cron、/etc/rc.local、init scripts、LD_PRELOAD、shared-object injection「Login Items、launchctl、cron、sticky plist 權限操控」'
-
系統服務 / 驅動程式
-
韌體 / 引導級別(Bootkits)
- 修改 MBR/GPT、EFI 或設備韌體以在系統啟動最早期植入惡意程式(例如 bootkit)
-
授權與帳號持久化
- 建立後門帳號、變更權限、竄改憑證或憑證緩存
- 常見手法:「Kerberos ticket/Golden Ticket、STOLEN credentials、SSH authorized_keys、credential dumping 並植入憑證」
-
應用層自恢復機制
規避偵測(Evasion)
降低被安全產品或分析人員察覺的機率,掩飾攻擊痕跡與行為。
常見技術(分類)
Rootkit / 高權限隱藏
rootkit 能在內核或較低層級(kernel、driver、firmware)執行,隱藏進程、檔案、網路連線與系統物件,並可能提供持久化和最高權限控制,對偵測與移除造成極大困難。
常見位置與手法
-
內核層(Kernel-mode):載入惡意驅動、篡改系統呼叫表或過濾器
-
使用者層(User-mode):對系統 API 封裝或攔截
-
韌體層(Firmware/UEFI):在設備啟動前植入,重灌 OS 也難以移除
原罪
1. 公地悲劇
殭屍網路的直接受害者,往往並非裝置受到感染的使用者本人,因此大多數人缺乏動機投入時間與精力改善問題,導致整體資安水平不斷下滑。
2. 無知的加害者
對一般使用者而言,即使他們沒有這樣的意願,也在自身完全不知情的情況下成為殭屍網路的幫兇,若因此苛責他們是不合理的。
3. 責任轉移
要解決殭屍電腦,相當於是要求所有用戶的裝置都不能被感染。當前不提供安全的產品與使用環境,期望使用者能具備資安意識與防範能力抵抗入侵是不切實際的。
4. 偽裝的正常現象
因為「流量壅塞」導致服務中斷是一種正常現象,就如同高峰時段的塞車。但真正的問題在於,有人可以隨意操縱大量流量癱瘓系統,而外部往往無從識別或阻止。唯一能做的,就是投入更多資源建構高容忍架構,卻也因此在平時浪費龐大成本。