Skip to content

防禦工具

在 SimNet 的 傳輸防禦(Transmission Defense) 類別中,網路已經被攻擊者入侵了。你的任務不是「抓壞人」,而是在敵意環境中保護自己的通訊——就像在一個有小偷出沒的社區裡,你要鎖好門窗、裝監視器、加密信件。

本頁介紹三種主要的防禦工具,每一種都對應一個特定的攻擊手法。

靜態 ARP 條目 — 防禦 ARP Spoofing

它在防禦什麼?

ARP Spoofing(ARP 欺騙)是攻擊者偽造 ARP Reply,讓你的電腦把攻擊者的 MAC 位址記成閘道器的 MAC 位址。結果你以為封包送到了路由器,其實全部送到了攻擊者那裡——這就是中間人攻擊(MITM)的第一步。

你可以把它想像成有人偷偷把你家信箱上的門牌號碼換掉,讓郵差把你的信送去隔壁。

怎麼用?

arp -s 指令,手動把閘道器的 IP 和它「真正的」MAC 位址綁在一起:

bash
simnet@pc1:~$ arp -s 192.168.1.1 aa:bb:cc:dd:ee:01
Static ARP entry added: 192.168.1.1 aa:bb:cc:dd:ee:01

設定完成後,即使攻擊者繼續發送偽造的 ARP Reply,你的設備也不會被騙——因為靜態條目不會被動態 ARP 覆蓋。就像你用麥克筆把正確的門牌號碼寫死在信箱上,誰也換不掉。

操作步驟

  1. 確認閘道器的真實 MAC 位址 — 從拓撲圖上,懸停閘道器(Router)圖示查看
  2. 設定靜態 ARParp -s <gateway-ip> <real-mac>
  3. 驗證 — 用 arp -a 確認條目已變成靜態(Flags 欄位顯示 M
bash
simnet@pc1:~$ arp -a
Address          HWtype  HWaddress           Flags Iface
192.168.1.1      ether   aa:bb:cc:dd:ee:01   M     eth0

M 表示 Manual(手動設定),這筆資料不會被 ARP 封包覆蓋。

相關挑戰

範本內無內附 ARP 防禦範例挑戰;下游採用本模板時可依 挑戰範例首頁 的 quickstart 新增。

TLS / HTTPS — 防禦 MITM 竊聽與篡改

它在防禦什麼?

即使攻擊者成功攔截了你的網路流量(透過 ARP Spoofing 或其他手段),如果你用的是加密連線(TLS / HTTPS),攻擊者看到的只是一堆亂碼——既看不懂內容,也沒辦法偷改。

把明文 HTTP 想像成寄明信片——沿途每個經手的人都能讀;HTTPS 就像密封信件——只有收件人能打開。

怎麼用?

有兩種方式啟用加密連線:

方式 1:直接在 URL 使用 https://

bash
simnet@pc1:~$ curl https://192.168.1.100/flag
<html><body>FLAG{encrypted_and_safe}</body></html>

方式 2:使用 tls enable 全域啟用

bash
simnet@pc1:~$ tls enable
TLS enabled. HTTP connections will use encryption.

simnet@pc1:~$ curl http://192.168.1.100/flag
(auto-upgraded to HTTPS)
<html><body>FLAG{encrypted_and_safe}</body></html>

tls enable 之後,即使你寫 http://,系統也會自動升級為加密連線。

發生了什麼事?

啟用 TLS 後:

  • 你的 PC 和 Server 之間會建立 TLS Handshake(交換加密金鑰)
  • 所有傳輸內容都被加密
  • 中間人攔截到的封包全是密文,無法讀取或篡改
  • 在 Traffic Log 中,你會看到封包的 Protocol 標示為 TLS 而不是 HTTP

相關挑戰

範本內無內附 TLS / MITM 防禦範例挑戰;下游可自行新增。

DNS 驗證 — 防禦 DNS Spoofing

它在防禦什麼?

DNS Spoofing(DNS 欺騙)是攻擊者篡改 DNS 回應,讓你查 flag.simnet.local 的時候,得到攻擊者的 IP 而不是真正伺服器的 IP。結果你以為連上了正牌伺服器,其實是假的。

你可以把它想像成有人竄改了你手機裡的通訊錄——你打「媽媽」的電話,實際上撥到了詐騙集團。

怎麼用?

dns verify 指令來驗證 DNS 解析是否被篡改:

bash
simnet@pc1:~$ dns verify flag.simnet.local
 DNS response mismatch detected!
  Expected: 10.0.0.3
  Got:      10.0.0.99 (possible DNS spoofing)

如果顯示 mismatch,表示 DNS 被動了手腳。這時候你可以:

選項 A:直接用 IP 連線(跳過 DNS)

bash
simnet@pc1:~$ curl https://10.0.0.3/flag

從拓撲圖上查到 Server 的真實 IP,直接連過去,完全不依賴 DNS。

選項 B:驗證後系統會修正

在某些挑戰中,dns verify 除了偵測問題,還會將正確的 IP 快取起來,讓後續的域名查詢指向正確的伺服器。

操作步驟

  1. 先驗證 DNSdns verify <domain> 看看結果是否正常
  2. 如果被篡改 — 用真實 IP 連線,或等驗證修正後再用域名
  3. 驗證修復 — 再 nslookup <domain> 一次確認 IP 正確
bash
simnet@pc1:~$ dns verify flag.simnet.local
 DNS response verified: flag.simnet.local 10.0.0.3

simnet@pc1:~$ nslookup flag.simnet.local
Name:      flag.simnet.local
Address:   10.0.0.3

相關挑戰

範本內無內附 DNS 驗證範例挑戰;下游可自行新增。

防禦組合技

在綜合挑戰中(下游可自行設計),攻擊者可能同時使用 ARP、DNS、MITM 多種攻擊。此時需要同時部署全部三道防線:

bash
# 1. 設定靜態 ARP — 防止閘道器被冒充
simnet@pc1:~$ arp -s 192.168.1.1 aa:bb:cc:dd:ee:01

# 2. 驗證 DNS — 防止域名被劫持
simnet@pc1:~$ dns verify flag.simnet.local

# 3. 啟用 TLS — 防止內容被竊聽或篡改
simnet@pc1:~$ tls enable

# 全部就位後,安全取得 Flag
simnet@pc1:~$ curl https://flag.simnet.local/flag
<html><body>FLAG{defense_in_depth}</body></html>

三道防線的順序不重要,但缺少任何一道,攻擊者都有辦法得逞。這就是資安中 Defense in Depth(縱深防禦) 的核心概念——沒有一道防線是萬能的,安全來自於層層疊加。

速查表

工具指令防禦對象原理
靜態 ARParp -s <ip> <mac>ARP Spoofing鎖定 IP-MAC 對應,不被偽造封包覆蓋
TLS / HTTPStls enablecurl https://...MITM 竊聽/篡改加密傳輸內容,中間人看不懂也改不了
DNS 驗證dns verify <domain>DNS Spoofing驗證域名解析是否指向正確的 IP