Social Icons

twitterfacebookgoogle plusrss feedemail

3/31/2013

抓取網路ARP封包

沒有留言:
點圖可放大
前面幾篇文章談到過Sock_RAW用法ARP介紹以及攻擊防禦方法,在這邊我們要先學習如何抓取封包資訊,這樣我們才能夠去更改封包欄位資訊~!
以下系列文章只用於學術學習,請不要拿來攻擊別人電腦

完整程式碼會在教完作業後發佈上來,這邊稍為介紹一下怎麼抓ARP封包
記得使用root權限執行!
一、步驟:
1.假設自己IP為192.168.1.131
2.假設arp請求發起方的IP為192.168.1.254
3.在自己電腦中開啟程式
4.觀察程式的輸出

linux sock raw

沒有留言:

sock_raw可以接收到本機網卡上的數據幀或者數據包,對與監聽網絡的流量和分析是很有作用的.一共可以有3種方式創建這種 socket
1.socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_ICMP)
發送接收ip數據包
2.socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ALL))
發送接收以太網數據幀
3.socket(AF_INET, SOCK_PACKET, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ALL))
過時了,不要用啊

PF_PACKET 與 AF_INET 兩個值是相同的,一個主要用在協定,另一個主要用在位址,不過現在比較少人使用AF_INET了

理解一下SOCK_RAW的原理, 比如網卡收到了一個 14+20+8+100+4 的udp的以太網數據幀.
首先,網卡對該數據幀進行硬過濾(根據網卡的模式不同會有不同的動作,如果設置了promisc混雜模式的話,則不做任何過濾直接交給下一層輸 入例程,否則非本機mac或者廣播mac會被直接丟棄).
按照上面的例子,如果成功的話,會進入ip輸入例程.但是在進入ip輸入例程之前,系統會檢查系 統中是否有通過socket(PF_PACKET, SOCK_RAW, ..)創建的套接字.如果有的話並且協議相符,在這個例子中就是需要ETH_P_IP或者ETH_P_ALL類型.系統就給每個這樣的socket接收緩 沖區發送一個數據幀拷貝.然後進入下一步.

國際大師人文講座 邁克 桑德爾 -錢買不到的東西

沒有留言:

ARP spoofing (ARP 欺騙攻擊)-原理

沒有留言:
ARP spoofing(ARP 欺騙攻擊,是針對IPv4的一種攻擊技術。此種攻擊可讓攻擊者取得區域網路上的"資料封包"甚至可"篡改"封包,且可讓網路上特定電腦或所有電腦無法正常連線。


簡單案例分析:
這裡用一個最簡單的案例來說明ARP欺騙的核心步驟。
假設在一個局網裡,只有三台主機A, B, C 而  C是攻擊者。

1.攻擊者聆聽局網上的MAC位址。它只要收到兩台主機洪泛的ARP Request,就可以進行欺騙活動。
2.主機A,B都洪泛了ARP Request.攻擊者現在有了兩台主機的IP、MAC位址,開始攻擊。
3.攻擊者發送一個 ARP Reply給主機B,把此包protocol header 里的sender IP設為A的IP位址, sender mac設為攻擊者自己的MAC位址。
4.主機B收到ARP Reply後,更新它的ARP表,把主機 A的條目 (IP_A, MAC_A)改為(IP_A, MAC_C)。
5.當主機B要發送資料包給主機A時,它根據ARP表來封裝資料包的Link報頭,把目的MAC位址設為MAC_C,而非MAC_A.
6.當交換機收到B發送給A的資料包時,根據此包的目的MAC位址 (MAC_C) 而把資料包轉發給攻擊者C.
7.攻擊者收到資料包後,可以把它存起來後再發送給A,達到偷聽效果。攻擊者也可以篡改資料後才發送資料包給A,造成傷害。

當然今天如果假設A是gateway,則攻擊者C則可以故意不把MAC_A改成MAC_C,改成其它任意的MAC Adress這時候B就會發生不能上網的情形。


Address Resolution Protocol (ARP) 介紹

沒有留言:
最近在寫ARP 攻擊與防禦的程式,在開始之前要先了解一下什麼是ARP!了解後我們就可以撰寫程式攻擊或者針對ARP攻擊做防禦。

ARP(Address Resolution Protocol),ARP的基本功能就是通過目標設備的IP位址,查詢目標設備的MAC地址,以保證通信的順利進行。IPv6中已不再適用,並被ICMPv6取代。
在每台安裝有TCP/IP協議的電腦或路由器裡都有一個ARP緩存表,表裡的IP位址與MAC地址是一對應的,如下表所示。
主機名稱IP位址MAC地址
A192.168.38.1000-AA-00-62-D2-02
B192.168.38.1100-BB-00-62-C2-02
C192.168.38.1200-CC-00-62-C2-02
D192.168.38.1300-DD-00-62-C2-02
E192.168.38.1400-EE-00-62-C2-02
.........
以主機A(192.168.38.10)向主機B(192.168.38.11)發送數據為例。
當發送數據時,主機A會在自己的ARP緩存表中尋找是否有目標IP位址。如果找到了,也就知道了目標MAC地址為(00-BB-00-62-C2-02),直接把目標MAC地址寫入幀裡面發送就可以了;如果在ARP緩存表中沒有找到相對應的IP位址,主機A就會在網路上發送一個廣播(ARP request),目標MAC地址是「FF.FF.FF.FF.FF.FF」,這表示向同一網段內的所有主機發出這樣的詢 問:「192.168.38.11的MAC地址是什麼?」網路上其他主機並不響應ARP詢問,只有主機B接收到這個幀時,才向主機A做出這樣的回應(ARP response):「192.168.38.11的MAC地址是(00-BB-00-62-C2-02)」。 這樣,主機A就知道了主機B的MAC地址,它就可以向主機B發送信息了。同時它還更新了自己的ARP緩存表,下次再向主機B發送信息時,直接從ARP緩存表裡查找就可以了。