測試環境說明
網關:
IP:172.20.150.1 mac:24050FCE53
靶機(手機):
IP:172.20.150.20 mac:000822D806D2
攻擊主機(虛擬機):
IP:172.20.150.2 mac:6C40089A1F16
Wifi接入點(360免費wifi):
BSSID: 24050FCE53(就是網關的mac),SSID:private(wifi名稱)
攻擊場景:
攻擊主機利用Cain對網關和靶機進行雙向Arp欺騙。
Arp工作原理及欺騙原理
局域網的網絡流通不是根據IP地址進行,而是根據MAC地址進行傳輸。
當主機A要和主機B通信時,這時候假定A,B剛開機,或者ARP緩存表是空的。既然談到通信,那么一般來說,它們應該對數據完成一個封裝和解封裝的過程。其他的層次我們先不談,只看數據鏈路層和網絡層。在A這邊,做為一個數據的源,它在發送數據時,數據被封裝到網絡層,需要添加一個IP報頭,里面有源和目標IP地址字段,源的IP和目標的IP都知道,那么是可以順利的封裝的,但是封裝好的包交給數據鏈路層,進行再一次封裝時,問題發生了,因為在數據鏈路層,需要封裝成幀,那么在幀的頭部有源MAC和目標MAC字段,源MAC是它自己,當然知道,但是目標的MAC呢?沒有!也就是說,沒有實際的地址。那封裝還能繼續下去嗎?那么通信難道要終止嗎?
其實在封裝之前,主機A將會查看自己的ARP緩存表(我們可以通過手工查看start—run—cmd—arp-a)。如果緩存表中存在目標主機(主機B)的MAC和IP信息,那么就可以順利的成幀。如果沒有的話,那么它將經歷一次ARP的解析過程。它發出一個broadcast request(一個廣播請求,請求對方的MAC地址。)用sniffer可以看到。
這個ARP請求數據里面有一個問題:“喂,我是192.168.12.1,我的MAC地址是A。192.168.12.2,你的MAC地址是多少?”這個時候,該網段中所有的主機都能收到該廣播,只有IP地址是192.168.12.2的主機會響應(response)。同時接收主機會把A的IP地址和MAC地址的對應關系記錄下來,放入ARP緩存中。通過了這個過程,A和B都有了對方的IP和MAC的對應關系了,那么第二層,第三層的封裝就可以順利的完成。
大家可以想像一下,如果在A發出廣播后,收到了來自B的回應請求,同時,又有一個第三者C通過某種方式監聽到了A—B的對話,并截獲了B回應給A的arp response。他可以把這個回應中的MAC地址字段該成另一個MAC地址,再把修改過的幀交給A。這個時候A是不是拿到了兩種回應呢?它會以誰為準呢?它會以后來的為準。通過截獲修改,A將緩存被修改后的MAC。A用錯誤的MAC封裝數據幀,數據就被發送的C可以控制的主機上了。
在計算機網絡中,路由表(routing table)或稱路由擇域信息庫(RIB, Routing Information Base),路由表存儲著指向特定網絡地址的路徑(在有些情況下,還記錄有路徑的路由度量值)。路由表中含有網絡周邊的拓撲信息。簡單來說,路由表是完全工作在網絡層的,根據路由表信息,主機將想要發送的ip數據從指定的網卡上發出。
Destination,Gateway,Mask均采用逆向十六進制表示法,比如:019614AC,其實表示的是AC:14:96:01,轉換為十進制就是:172.20.150.1
Destination,路由的目標網段,會和Mask進行運算求得網段,運算結果是00000000表示所有網段,上圖的第一條記錄表示:所有網段的數據的網關是172.20.150.1,由wlan0網卡發出。
Wifi的BSSID和SSID:
SSID: ServiceSet Identifier(服務集標識),SSID技術可以將一個無線局域網分為幾個需要不同身份驗證的子網絡,每一個子網絡都需要獨立的身份驗證,只有通過身份驗證的用戶才可以進入相應的子網絡,防止未被授權的用戶進入本網絡。SSID就是WIFI名稱。
BSSID: Basic Service SetIdentifier(基本服務單元標識符),BSSID就是Wifi接入點的Mac地址。
Android環境下Arp欺騙檢測原理
用戶在使用手機連接wifi時,通常是搜索wifi名稱,輸入密碼,然后連接上網,很少有情況會需要自己再去配置網關,流量也僅僅是和網關在交換。因此,用戶默認的網關就是wifi接入點,于是wifi的BSSID和用戶的網關mac將是同一個,基于此有了如下arp檢測原理:
1. 獲取BSSID,也就是網關的Mac(mac1)
2. 通過route表信息獲取全網段路由對應的網關IP
3. 通過arp表,查詢此網關IP對應Mac(mac2)
如果mac1和mac2相同,則表示沒有arp攻擊,如果不相同(mac2是arp欺騙引入的),則arp攻擊正在發生。
衍生:如果用戶配置了網關,也就是route記錄的IP和BSSID將沒有任何關系,根據arp發生并不會修改網關ip,可以不斷監聽arp緩存表中網關IP對應的mac是否在變化,變化則表示arp正在發生或者arp攻擊結束,可以結合別的手段,比如長時間統計來確定正確的網關IP和Mac,當arp表中IP發生變化,則檢測arp攻擊發生。
其他
本文通過逆向wifi保護令的原理分析得出,wifi保護令能準確檢測arp發生,wifi保護令一些技術細節如下:
1. 5s循環監聽路由表和arp的變化,通過上述的原理來檢測arp欺騙
2. Arp發生后,給予用戶如下提示:
a) 震動
b) 響鈴
c) 斷開當前連接wifi
d) 狀態欄提示
e) 開啟Activity,顯示攻擊發生
apk下載:http://pan.baidu.com/s/1qWmceLm