標籤:
前言:
上一篇WPA/WAP2wifi 密碼破解筆記說到如何探測附近開放的AP並且破解進入,那麼進入別人據區域網路我們能幹些什麼呢?換句話說如果別人進入了我們內部網路,會有什麼影響?本文簡要介紹了ARP和MITM原理,並在實際環境中對目標主機的流量進行劫持。曝露了公用網路中普遍存在的問題,藉此來看看區域網路中的用戶端究竟面臨著怎樣的隱私泄漏和安全風險。
ARP與MITM原理什麼是ARP
ARP全稱為Address Resolution Protocol,即位址解析通訊協定。是根據IP地址擷取物理地址的一個TCP/IP協議。主機發送資訊時將包含目標IP地址的ARP請求廣播到網路上的所有主機,並接收返回訊息,以此確定目標的物理地址;收到返回訊息後將該IP地址和物理地址存入本 機ARP緩衝中並保留一定時間,下次請求時直接查詢ARP緩衝以節約資源。位址解析通訊協定是建立在網路中各個主機互相信任的基礎上的,網路上的主機可以自主 發送ARP應答訊息,其他主機收到應答報文時不會檢測該報文的真實性就會將其記入本機ARP緩衝;由此攻擊者就可以向某一主機發送偽ARP應答報文,使其發送的資訊無法到達預期的主機或到達錯誤的主機,這就構成了一個ARP欺騙。ARP命令可用於查詢本機ARP緩衝中IP地址和MAC地址的對應關係、添加或刪除靜態對應關係等。
例如,在Linux命令列下
$sudo arp -a
Address HWtype HWaddress Flags Mask Iface
192.168.1.1 ether 0A-11-22-33-44-01 C wlan0
192.168.1.2 ether 0A-11-22-33-44-02 C wlan0
可以看到區域網路中其他用戶端的內網地址和MAC地址。
工作過程 現假設主機A的IP地址為192.168.1.1,MAC地址為0A-11-22-33-44-01;主機B的IP地址為192.168.1.2,MAC地址為0A-11-22-33-44-02;當主機A要與主機B通訊時,位址解析通訊協定可以將主機B的IP地址(192.168.1.2)解析成主機B的MAC地址,以下為工作流程:
第1步:根據主機A上的路由表內容,IP確定用於訪問主機B的轉寄IP地址是192.168.1.2。然後A主機在自己的本地ARP緩衝中檢查主機B的匹配MAC地址。第2步:如果主機A在ARP緩衝中沒有找到映射,它將詢問192.168.1.2的硬體地址,從而將ARP請求幀廣 播到本網上的所有主機。源主機A的IP地址和MAC地址都包括在ARP請求中。本網上的每台主機都接收到ARP請求並且檢查是否與自己的IP地址 匹配。如果主機發現請求的IP地址與自己的IP地址不匹配,它將丟棄ARP請求。第3步:主機B確定ARP請求中的IP地址與自己的IP地址匹配,則將主機A的IP地址和MAC地址映射添加到本地ARP緩衝中。第4步:主機B將包含其MAC地址的ARP回複訊息直接發送回主機A。第5步:當主機A收到從主機B發來的ARP回複訊息時,會用主機B的IP和MAC地址映射更新ARP緩衝。本機緩衝是有生存期的,生存期結束後,將再次重複上面的過程。主機B的MAC地址一旦確定,主機A就能向主機B發送IP通訊了。
工作要素:ARP緩衝
ARP緩衝是個用來儲存IP地址和MAC地址的緩衝區,其本質就是一個IP地址->MAC地址的對應表,表中每一個條目分別記錄了網路上其他主機的IP地址和對應的MAC地址。每一個乙太網路或令牌環網路介面卡都有自己單獨的表。當位址解析通訊協定被詢問一個已知IP地址節點的MAC地址時,先在ARP緩衝中查看,若存在,就直接返回與之對應的MAC地址,若不存在,才發送ARP請求向區域網路查詢。為使廣播量最小,ARP維護IP地址到MAC地址映射的緩衝以便將來使用。ARP緩衝可以包含動態和靜態項目。動態項目隨時間推移自動添加和刪除。每個動態ARP快取項目的潛在生命週期是10分鐘。新加到緩衝中的項目帶有時間戳記,如果某個項目添加後2分鐘內沒有再使用,則此項目到期並從ARP緩衝中刪除;如果某個項目已在使用,則又收到2分鐘的生命週期;如果某個項目始終在使用,則會另外收到2分鐘的生命週期,一直到10分鐘的最長生命週期。靜態項目一直保留在緩衝中,直到重新啟動電腦為止。
ARP欺騙與MITM
MITM,全稱為Man In The Middle,即中間人。位址解析通訊協定是建立在網路中各個主機互相信任的基礎上的,它的誕生使得網路能夠更加高效的運行,但其本身也存在缺陷。ARP地址轉換表是依賴於電腦中高速緩衝儲存空間動態更新的,而高速緩衝儲存空間的更新是受到更新周期的限制的,只儲存最近使用的地址的映射關 系表項,這使得攻擊者有了可乘之機,可以在高速緩衝儲存空間更新表項之前修改地址轉換表,實現攻擊。ARP請求為廣播形式發送的,網路上的主機可以自主發送 ARP應答訊息,並且當其他主機收到應答報文時不會檢測該報文的真實性就將其記錄在本地的MAC地址轉換表,這樣攻擊者就可以向目標主機發送偽ARP應答報文,從而篡改本地的MAC地址表。ARP欺騙可以導致目標電腦與網關通訊失敗,更會導致通訊重新導向,所有的資料都會通過攻擊者的機器。攻擊者再對目標和網關之間的資料進行轉寄,則可作為一個“中間人”,實現監聽目標卻又不影響目標正常上網的目的。
具體攻擊實現
具體的中間人攻擊,大體上可以分為以下幾個步驟:
1. 對目標主機進行ARP欺騙,聲稱自己是網關。
2. 轉寄目標的NAT資料到網關,維持目標的外出資料。
3. 對網關進行ARP欺騙,聲稱自己是目標主機。
4. 轉寄網關的NAT資料到目標主機,維持目標的接收資料。
5. 監聽劫持或者修改目標的進入和外出資料,從而實現攻擊。
其中1,3都是ARP欺騙;2,4都是轉寄,下面會分別說到。
ARP欺騙
ARP欺騙又叫ARP投毒(ARP poisoning),實現方式有很多,但其原理都是通過不斷向攻擊目標發送ARP replies,從而實現重新導向從一個主機(或所有主機)到另一個主機的資料包的目的。
這裡以dsniff工具集的arpspoof命令為例:
# arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host
其中,
-i 指定使用的介面。
-c 指定當還原arp配置時t使用的MAC地址,預設為使用原來的MAC。(即當停止arpspoof命令後,預設取消毒化)
-t 指定要毒化的主機,如果不指定的話預設為區域網路下所有主機。
-r 雙向毒化(host和target),從而雙向撲捉資料。(僅當同時指定 -t的時候才有效)
host 為你想要偽裝成的主機,通常是本地網關。所有從target到host的資料包都被重新導向到本機。
資料流轉寄
毒化了目標主機的ARP緩衝表之後,其經過網關外出的資料流將會發送到攻擊者的主機。但此時由於目的地址出錯,目標主機對外的請求將無法到達,亦即無法訪問互連網了。為了維持目標正常上網,需要我們在收到目標來的資料時將其進行轉寄到真正的網關。
首先開啟連接埠轉寄,允許本機像路由器一樣轉寄資料:
# echo 1 > /proc/sys/net/ipv4/ip_forward
此時本機收到的資料包含源地址和目的地址(外網地址),我們需要將其轉寄到網關。這裡進行了(NAT)網路位址轉譯的功能,關於NAT可參考我上一章P2P通訊原理與實現(C++):
# iptables -t nat -A POSTROUTING -p tcp -s 192.168.1.0/24 -j SNAT --to-source 192.168.1.110
這條命令的作用是修改原生轉寄規則,將所有從本機出去的源地址為192.168.1.XXX的資料包都修改為本機地址192.168.1.110
其中,
-t 指定要操作的表,這裡是nat
-A 即--append,表示增加一條規則。nat有三個內建規則,分別是
PREROUTING,在資料包進入時改變其地址
POSTROUTING,在資料包將要出去時改變其地址
OUTPUT,在路由前改變本地產生的資料包地址
-p 表示資料包要檢查的協議
-s 指定源地址。地址格式可以是網路名稱字,主機名稱字,IP地址或者是address/mask格式的網路地址。可以指定多個,-s前加!表示取補集
-j 指定規則的目標,即如果資料包符合規則該如何做;SNAT表示修改資料包的源地址,且此次連結的餘下資料包都不再檢查
--to-source 在SNAT選項下指定所轉寄資料包的新的源地址,這裡設為192.168.1.110,即攻擊者的地址
關於iptables的詳細用途可以man iptables查看。上述命令描述了外出資料的轉寄規則,那麼從外部來的資料要轉寄到被攻擊主機上也是同理:
# iptables -t nat -A PREROUTING -p tcp -d 192.168.1.110 -j DNAT --to 192.168.1.114
在本機轉寄之前將資料包目的地址為192.168.1.110的修改為192.168.1.114(被攻擊主機),然後轉寄出去。
其他工具
上面為了說明原理,吧arp毒化和資料轉寄分開做,其實利用現有的工具,可以很簡單地執行上面的工作,例如用ettercap:
# ettercap -i wlan0 -Tq -M arp:remote /target/ /host/
一條命令即可完成arp毒化和轉寄的功能。其中-M表示指定MITM攻擊。
後記
一旦中間人建立攻擊成功,劫持了目標的上網流量,那麼接下來也就為所欲為了。輕則監控目標的上網行為,就如同二十四小時站在你身後看你上網;或者劫持目標的cookie從而用目標的帳號登入諸如微博,百度,豆瓣等網站,瀏覽其隱私資料,進行發貼刪貼等操作;重責進行釣魚攻擊,使目標下載惡意程式或者執行惡意指令碼,從而威脅其電腦安全。當然,應對這種攻擊的防範方法也有很多,最簡單的一種就是綁定MAC地址,並且在網關MAC地址改變的時候發出提醒,從而防止ARP毒化攻擊。還有就是最好不要在公用WiFi下瀏覽有重要隱私的網站,萬一碰上不懷好意的人就在區域網路中,那可就是真的“在陽光下行走”了。
ARP欺騙與中間人攻擊