數據轉發過程
在聊ARP之前,我們需要先了解一下我們在發送一個數據時在網絡中發生了什么 ,它需要什么東西,又是怎么獲得的?對方又是怎么接收到的?當前現網中我們都是使用TCP/IP協議棧進行網絡通信的,假設當前你正在通過火狐瀏覽器訪問tide官網(www.tidesec.com),當你輸入完網址,敲下回車鍵后,計算機內部會發生如下事情:首先當前計算機只知道域名為www.tidesec.com,此時要先向DNS服務器發送數據去請求www.tidesec.com的IP地址,DNS服務器收到數據包后發現計算機請求獲得www.tidesec.com的IP地址,將www.tidesec.com所綁定的IP地址打包發送給計算機。
火狐瀏覽器調用HTTP協議,完成應用層數據封裝,HTTP依靠傳輸層的TCP進行數據的可靠性傳輸,將封裝好的數據傳輸到傳輸層,傳輸層將應用層傳遞下來的Data添加上相應的TCP頭部信息(源端口、目的端口)后。傳遞給網絡層,網絡層收到傳輸層傳遞愛的數據段后添加上相應的IP頭部信息(源IP、目的IP)后將數據包傳遞給數據鏈路層,數據線路層收到后,添加上相應的Ethernet頭部信息(源MAC地址、目的MAC地址)和FCS幀尾后將數據幀傳遞給物理層,根據物理介質的不同,物理層負責將數字信號轉換成電信號、光信號、電磁波信號等,轉換完成的信號在網絡中開始傳遞。
如剛剛上面數據發送方數據封裝的流程,我們看到了在封裝時,傳輸層需要源目端口,這里源端口隨機分配,目的端口由服務器的應用指定,網絡層需要源目IP,這里剛剛我們向DNS服務器請求www.tidesec.com時也獲得了tide官網的IP地址,也能實現,那么現在數據鏈路層需要源目MAC地址,源MAC地址好說,自己的mac地址,那目的mac地址呢?該怎么獲取呢?這時就需要用到我們的ARP協議了。
地址解析協議(ARP)
ARP(Address Resolution Protocol)是一種網絡層協議,根據已知的目的IP地址解析獲得其對應的MAC地址。在局域網中,每臺設備都有唯一的MAC地址,就像我們的身份證號一樣在全球獨一無二的,而IP地址是可以重復分配的。因此,當一個設備需要發送數據包到另一個設備時,它需要知道另一個設備的MAC地址。
那么ARP是怎么工作的呢?一般設備里都會有一個ARP緩存表,用來存放IP地址和MAC地址的關聯信息,在發送數據前,設備會先查找ARP緩存表,如果緩存表中存在對方設備的MAC地址,則直接采用該MAC地址來封裝幀,然后將幀發送出去。如果緩存表中不存在相應信息,則通過ARP來獲取。
當ARP緩存表為空時,主機1通過發送ARP request報文來獲取主機2的MAC地址,由于不知道目的地址,因此ARP Request報文內的目的MAC為廣播地址FF-FF-FF-FF-FF-FF,因為ARP Request是廣播數據幀,因此交換機收到后,會對該幀執行泛洪操作,也就是說該網絡中所有主機包括網關都會接收到此ARP Request報文。
所有的主機接收到該ARP Request報文后,都會檢查它的目的IP地址字段與自身的IP地址是否匹配。主機2發現IP地址匹配,則會將ARP報文中的發送端MAC地址和發送端IP地址信息記錄到自己的ARP緩存表中。
這時主機2通過發送ARP Reply報文來響應主機1的請求,此時主機2已知主機1的MAC地址,因此ARP Reply是單播數據幀。
主機1收到ARP Reply以后,會檢查ARP報文中目的端IP地址字段與自身的IP地址是否匹配。如果匹配,ARP報文中的發送端MAC地址和發送端IP地址會被記錄到主機1的ARP緩存表中。
至此,ARP工作結束,獲得目的IP對應的MAC地址后,即可封裝完整的數據包進行數據包的發送(上述工作過程為局域網內的工作過程,如訪問其他網段或外網中的IP地址時,所獲得的MAC地址為網關的MAC地址,網關收到此ARP Request后會發送ARP Reply)
ARP欺騙
剛剛我們也看到了,ARP協議是通過廣播來獲取目標設備的MAC地址的,當一個設備需要發送數據到另一個設備時,他會發送一個ARP請求,詢問局域網內的所有設備,是否具有指定IP地址對應的MAC地址,目標設備收到請求后會回復一個ARP應答,告訴請求主機它的MAC地址。ARP欺騙利用了這種工作原理,攻擊者會發送偽造的ARP數據包,將自己偽裝成網關或其他設備,目標設備收到偽造的ARP數據包后,會將攻擊者的MAC地址和其目標IP地址相對應寫入ARP緩存表中,并將后續數據包發送給攻擊者。攻擊者就可以截獲目標設備發送的數據包,甚至可以修改、篡改數據包中的內容。同樣的ARP欺騙也分為單向欺騙和雙向欺騙。
單向欺騙
如下圖所示,攻擊者通過偽造ARP Request來將自己的MAC地址偽裝成網關IP相對應的mac地址廣播出去,主機A收到該ARP Request后會將發現該ARP Request目的IP地址為自己,將該ARP Request中的目的IP地址與MAC地址寫入到ARP緩存表后,然后發送ARP Reply,將本該傳輸給網關的數據錯誤的傳輸給攻擊機,使主機A得不到網關的響應數據,從而導致斷網。
以上就是ARP單向欺騙的原理,那我們怎么來實現呢?往下看 首先我們先來查看一下主機A的mac地址緩存表,當前192.168.45.2就是當前系統的網關地址,所對應的也是真實的MAC地址
那么現在主機A也是可以正常上網的。
根據我們上面的思路來看,我們如果想要讓主機A找不到網關無法上網,我們只需要構造一個IP地址為192.168.45.2的虛假mac地址的ARP Reply數據包就可以了,這里我們使用科萊網絡分析系統這個工具就可以實現這個功能。首先我們來先對當前網段的MAC地址進行一個掃描,獲得主機A的MAC地址。
這里獲得了主機A的MAC地址后,就可以點擊上面的數據包生成器。
添加ARP數據包
然后在目的MAC地址和目的IP中輸入我們的目標主機的IP和MAC地址,源MAC地址任意輸即可,源IP輸入網關的IP地址。
然后點擊發送,選擇網卡,這里選擇循環發送,次數為0,讓它一直發送偽造的ARP數據包后點擊開始。
這時我們抓包看一下當前的網絡狀況,可以看到,源mac為00-01-02-03-04-05,尋找目的IP地址為192.168.45.131的ARP Request已經發出。
這時我們再來看主機A的ARP地址表中是否有了變化
image.png
可以看到主機A中對應192.168.45.2的MAC地址成功被我們修改為了00-01-02-03-04-05,那這時我們再訪問一下百度來看看。
可以看到主機A目前已經無法正常返回百度。
雙向欺騙
如下圖所示,攻擊機一直發送偽造的ARP Reply,欺騙網關自己是主機A,欺騙主機A自己是網關,同時開啟路由轉發功能,就可以讓主機A在正常上網的情況下截獲網絡數據包,所有數據都會經過攻擊機然后再轉發給主機A。
如上圖所示,進行ARP雙向欺騙后,主機A所有的通信都需要經過攻擊機,攻擊者再對目標和網關之間的數據進行轉發,則可作為一個"中間人",實現監聽目標卻又不影響目標正常上網的目的。可通過kali中自帶的arpspoof工具進行攻擊,首先在kali上開啟數據轉發
#終止 echo0>/proc/sys/net/ipv4/ip_forward #允許 echo1>/proc/sys/net/ipv4/ip_forward
首先來看我們攻擊機的mac地址為0029AE:FB
然后使用arpspoof進行雙向毒化攻擊
arpspoof-ieth0-t192.168.45.143-r192.168.45.2
開啟后我們再來看當前網絡情況
可以看到當前網絡中同時發出了兩個ARP Reply,源IP分別為網關和主機A,源mac為攻擊機的mac地址,這里我們再來看下主機A的MAC地址緩存表
可以看到當前主機A的MAC地址緩存表中,192.168.45.2的mac地址與我們的攻擊機一致,這里我們訪問一下TideFinger 潮汐指紋識別網站,也是可以正常訪問的。
然后再看我們攻擊機有沒有抓到主機A訪問http://finger.tidesec.net/的流量
以上就是ARP雙向欺騙劫持流量的內容,那么,ARP雙向欺騙除了能做流量劫持外,還可以做DNS劫持,假如主機A想要訪問www.baidu.com,我們可以通過毒化DNS來達到讓主機A跳轉到我們的釣魚站點來。這里需要用到我們在kali中自帶的ettercap,在使用前先修改一下它DNS的配置文件。
vim/etc/ettercap/etter.dns
然后打開ettercap,點擊開始按鈕
ettercap-G
掃描當前網絡
將目標主機和網關分別添加到Target1和Target2中
添加完畢之后,打開ARP poisoning,選擇Sniff remote connections,點擊OK
然后選擇Plugins-Manager Plugins,勾選DNS_Spoof。
然后點擊左上角的start按鈕即可開始攻擊。
這時再去訪問www.baidu.com時,即可跳轉的我們剛剛所劫持的網站中,如下圖所示。
審核編輯:劉清
-
DNS服務器
+關注
關注
0文章
21瀏覽量
8420 -
電磁波
+關注
關注
21文章
1426瀏覽量
53565 -
FCS
+關注
關注
4文章
32瀏覽量
14406 -
TCP協議
+關注
關注
1文章
87瀏覽量
12044
原文標題:簡析ARP欺騙
文章出處:【微信號:Tide安全團隊,微信公眾號:Tide安全團隊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論