防禦工具
在 SimNet 的 傳輸防禦(Transmission Defense) 類別中,網路已經被攻擊者入侵了。你的任務不是「抓壞人」,而是在敵意環境中保護自己的通訊——就像在一個有小偷出沒的社區裡,你要鎖好門窗、裝監視器、加密信件。
本頁介紹三種主要的防禦工具,每一種都對應一個特定的攻擊手法。
靜態 ARP 條目 — 防禦 ARP Spoofing
它在防禦什麼?
ARP Spoofing(ARP 欺騙)是攻擊者偽造 ARP Reply,讓你的電腦把攻擊者的 MAC 位址記成閘道器的 MAC 位址。結果你以為封包送到了路由器,其實全部送到了攻擊者那裡——這就是中間人攻擊(MITM)的第一步。
你可以把它想像成有人偷偷把你家信箱上的門牌號碼換掉,讓郵差把你的信送去隔壁。
怎麼用?
用 arp -s 指令,手動把閘道器的 IP 和它「真正的」MAC 位址綁在一起:
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 覆蓋。就像你用麥克筆把正確的門牌號碼寫死在信箱上,誰也換不掉。
操作步驟
- 確認閘道器的真實 MAC 位址 — 從拓撲圖上,懸停閘道器(Router)圖示查看
- 設定靜態 ARP —
arp -s <gateway-ip> <real-mac> - 驗證 — 用
arp -a確認條目已變成靜態(Flags 欄位顯示M)
simnet@pc1:~$ arp -a
Address HWtype HWaddress Flags Iface
192.168.1.1 ether aa:bb:cc:dd:ee:01 M eth0M 表示 Manual(手動設定),這筆資料不會被 ARP 封包覆蓋。
相關挑戰
範本內無內附 ARP 防禦範例挑戰;下游採用本模板時可依 挑戰範例首頁 的 quickstart 新增。
TLS / HTTPS — 防禦 MITM 竊聽與篡改
它在防禦什麼?
即使攻擊者成功攔截了你的網路流量(透過 ARP Spoofing 或其他手段),如果你用的是加密連線(TLS / HTTPS),攻擊者看到的只是一堆亂碼——既看不懂內容,也沒辦法偷改。
把明文 HTTP 想像成寄明信片——沿途每個經手的人都能讀;HTTPS 就像密封信件——只有收件人能打開。
怎麼用?
有兩種方式啟用加密連線:
方式 1:直接在 URL 使用 https://
simnet@pc1:~$ curl https://192.168.1.100/flag
<html><body>FLAG{encrypted_and_safe}</body></html>方式 2:使用 tls enable 全域啟用
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 解析是否被篡改:
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)
simnet@pc1:~$ curl https://10.0.0.3/flag從拓撲圖上查到 Server 的真實 IP,直接連過去,完全不依賴 DNS。
選項 B:驗證後系統會修正
在某些挑戰中,dns verify 除了偵測問題,還會將正確的 IP 快取起來,讓後續的域名查詢指向正確的伺服器。
操作步驟
- 先驗證 DNS —
dns verify <domain>看看結果是否正常 - 如果被篡改 — 用真實 IP 連線,或等驗證修正後再用域名
- 驗證修復 — 再
nslookup <domain>一次確認 IP 正確
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 多種攻擊。此時需要同時部署全部三道防線:
# 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(縱深防禦) 的核心概念——沒有一道防線是萬能的,安全來自於層層疊加。
速查表
| 工具 | 指令 | 防禦對象 | 原理 |
|---|---|---|---|
| 靜態 ARP | arp -s <ip> <mac> | ARP Spoofing | 鎖定 IP-MAC 對應,不被偽造封包覆蓋 |
| TLS / HTTPS | tls enable 或 curl https://... | MITM 竊聽/篡改 | 加密傳輸內容,中間人看不懂也改不了 |
| DNS 驗證 | dns verify <domain> | DNS Spoofing | 驗證域名解析是否指向正確的 IP |