![]() |
| (修改自 Wireshark 的圖片) |
如此一來,就可能需要其它特別的硬體配合,例如找以前舊式的 Ethernet Hub、找支援 monitoring 或 mirroring 的高階 Ethernet switch、有兩個 Ethernet 介面的電腦、使用 Passive Ethernet TAP、使用 Passive Ethernet Hub 等。
也有純粹軟體的解法,一種方式是利用 ARP Poisoning (或稱 ARP spoofing),放 ARP 毒藥給雙方,分別告訴雙方的對方是自己的 MAC 位址,掩蓋正常的 ARP,這樣雙方之間的封包就會送到自己的 MAC 位址,自己再分別轉送來維持他們通訊暢通,自己也順便「觀察」。程式 ettercap 有支援,這是我認為最方便的方式。
使用步驟如下:
- 安裝 ettercap,我安裝個板本是 NG-0.73
- sudo apt-get install ettercap-gtk
- 執行 ettercap
- 「Sniff」→「Unifed Sniffing」,選自己的網卡。 (不知為何,此步驟會將 /proc/sys/net/ipv4/ip_forward 設為 0)
- 「Hosts」→「Scan for hosts」。會對子網上每個 IP 發 ARP 詢問。
- 「Hosts」→「Hosts lists」,將雙方分別「Add to Target 1」及「Add to Target 2」。
- 「Mitm」→「Arp Poisoning。此時開始假冒雙方,會先 ping 雙方,再多次 ARP 雙方,雙方間的封包就會跑過來了
- 啟用 IP 轉發功能,維持被觀察機器的通訊暢通。(似乎不能直接 sudo 執行,所以先變成 root 再執行)
- sudo -i
- echo 1 > /proc/sys/net/ipv4/ip_forward
- exit
- 此時 Wireshark 可以抓到雙方間的封包,封包會看到兩份,一份是進來的,一份是轉發出去的,兩者的來源 MAC 位址跟目標 MAC 位址是不同的。
- 停止 Arp Poisoning
- 在 ettercap,「Mitm」→「Stop mitm attack(s)」。
註:ettercap 也有 Windows 版,在 http://sourceforge.net/projects/ettercap/files/unofficial%20binaries/windows/ 下載。
註:Mitm 是 man-in-the-middle。
註:由此可知,你的封包是很容易被觀察的,即使硬體都沒動到。但用 ARP Poisoning 也不是都能成功,機器的 ARP 表改用靜態的、router 紀錄並檢查每個 IP 位址的 MAC 位址等可以防止封包被導向。監聽是否有異常的 ARP 回應也可以發現。
註:還有別的軟體方式,例如 MAC Flooding,用封包把 Ethernet switch 的 MAC Table 灌爆,而將所有封包都 broadcast 處理。dsniff 等軟體有支援這種功能。
參考:
- Wireshark: Ethernet capture setup (說明許多抓封包方式)
- Ettercap MITM攻擊詳細教學 (裡面所言並不是所有步驟都需要)
延伸閱讀
- 如何防止 ARP 詐欺或攻擊? (不用 DHCP 取得位址,IP 位址綁 MAC 位址)
- Passive Ethernet TAP (傳跟收分別接到另兩個 Ethernet 界面的收,兩個都接到一台有兩個 Ethernet 界面的電腦,將兩個 bonding/trunking/bridge 在一起來同時看雙向資料)
- Passive Ethernet Hub (大概只支援 10 Mbps half duplex)

沒有留言:
張貼留言