国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ARP & ICMP

2019-11-17 05:46:10
字體:
來源:轉載
供稿:網友
    對于旁觀者來說,事物的缺點和優點往往是同時存在的。我很興奮可以向你們顯示兩
個正規的協議——arp和icmp,當你用一些非凡的方法使用它們的時候,卻得到意想不到的結果。
相對于被動攻擊(網絡監聽sniffing)來說,主動攻擊使用的并不普遍——許多治理
員都擁有一個網絡監聽工具,幫助他們治理局域網。在你的LAN中,主動攻擊將會給你的生活添
加光彩和樂趣。你知道,僅僅是一些技術細節使得這些角落有些昏暗不明。那么,我們去看看
那里究竟有些是什么。
我們首先描述一下網絡欺騙(spoofing)和拒絕服務(DoS-deny of service)。象ip
盲攻擊一樣,網絡攻擊經常非常普通并且功能強大,但是對使用者來說,需要做大量的工作(常
常是猜),而且難于實行。但是ARP欺騙正好相反,它非常輕易使用且方便。

一、ARP欺騙

ARP欺騙往往應用于一個內部網絡,我們可以用它來擴大一個已經存在的網絡安全漏洞。
假如你可以入侵一個子網內的機器,其它的機器安全也將受到ARP欺騙的威脅。
讓我們考慮一下的網絡結構
IP 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4
hostname cat rat dog bat
hw addr AA:AA BB:BB CC:CC DD:DD
所有的主機在以太網中以簡單的方式進行連接(沒有交換機,智能HUB)。你是cat,你
具有root權限,你的目標是侵入dog。而你知道dog信任rat,所以假如你能偽裝成rat,那么你就
能獲得一些意外的東西。
也許你首先想到的是,“為什么我不把我的IP設成rat的,然后...”,這種方式無法工
作,無法可靠的工作。假如你將cat的IP設置成10.0.0.2,那么cat將以這個IP回答ARP請求。但
是rat也會的。這樣你們就進入了一個純粹的競爭狀態,而這場比賽沒有贏家。相反的,你會輕
易的輸掉這場比賽,因為許多工具會立即發現這種IP沖突的現象,抱怨之聲隨之而來。一些網絡
交通分析工具還經常對它進行紀錄。在網絡治理員的日志文件中還會保留一條惡心的紀錄(cat
的物理地址),這可不是你想要的。你的不到你想要的東西,并且與你的目標背道而馳。
這個東西是你想要的,一個攻擊程序——send_arp.c,一個非常有效的工具。正如它的
名字所示,它發送一個ARP包(ARP回答,準確的說:由于這個協議是無狀態的,即使在沒有請求
的時候也可以做出應答。請求同應答是一樣的。)向網絡上,你可以把這個包做成你想要的樣子。
而你想要的只不過是可以去定制源IP與目的IP,還有硬件地址。
當你進行ARP欺騙的時候,你不希望你的網卡亂說話,那么你可以用“ifconfig eth0 -arp”
關掉你的ARP協議。當然,無論如何你都需要ARP的信息,手動的構建它并使它發向內核。重要的
事你要獲得你四周人們的信任。在這個例子中,你希望dog認為rat的硬件地址是AA:AA(cat),
所以你發送一個ARP應答,它的源地址是10.0.0.2,源硬件地址是AA:AA,目標地址是10.0.0.3和目
標硬件地址是CC:CC。現在,dog完全相信rat的硬件地址是AA:AA。當然dog中緩存會過期,所以它
需要更新(重新發送請求)。多長時間發出請求,各個操作系統不同,但是大多來說是40秒鐘左
右。經常發送ARP應答,這對你來說不會有壞處的。
對于ARP緩存處理方法的不同會帶來問題的復雜性。一些操作系統(例如linux)會用向
緩存地址發非廣播的ARP請求來要求更新緩存(就象你妻子打電話來看你在不在一樣)。這種緩
存更新會給你增加麻煩,會使你剛剛偽造的ARP緩存被更改掉,所以必須避免此事發生。經常的
向dog發出應答數據,這樣它就不會發出請求。正是預防為主。對于rat來說,它根本就沒有機會
來改變這一切。
所以過程是簡單的。首先來設置網絡接口別名(ifconfig eth0:1 10.0.0.2),添加rat
的IP地址并且打開ARP協議(ifconfig eth0 arp)——你需要設置你的ARP緩存,當沒有ARP時,
它不會工作。然后在正確的網絡接口上設置到dog的路由。再設置dog的ARP緩存。最后,關掉網絡

接口的ARP功能。這樣一切就OK了。
現在,當你用send_arp將毒液注入之后(dog和rat),那么,dog就會認為,你就是rat。
一定要記住,要持續不斷的向dog和rat發出ARP包。
這種攻擊方式就僅僅工作在局域網內(通常的,ARP包是不會路由的)。一個有趣的嘗試
是,把我們上述試驗中dog替換成路由器,假如可以實現的話(我不確定它是否會永遠成立,路由
器的ARP功能不是那么輕易欺騙的),你可以輕易的冒充這個局域網內的機器去欺騙這個Internet
世界了。所以目標可以是任何一臺機器,但是你要偽裝的機器,必須是這個局域網內的。
除了欺騙以外,你還可以用ARP作很多事。藍天之下,皆可任你遨游。或者,DoS也是一個
非常有用的程序。
給rat一個錯誤的硬件地址,是一個非常有效的讓它閉嘴的方法。你可以避免它向一些特
殊的機器發出請求(一個ARP緩沖池通常可以容括整個網絡的內容,所以你可以在一段時間內有效
的防止它向其它機器發出請求)。非常明顯目標也可以是一臺路由器。干擾緩存需要兩步:攪亂被
偽裝的機器和你不希望它與之通訊的機器。這種方法不是經常奏效,當這臺機器發現緩存中沒有目
標機器時,會主動發出ARP請求。當然你的下一滴毒液會迅速注入,但是你需要經常維持這種狀態。
一個比較有效的方法是,給rat一個錯誤的dog硬件地址,這樣rat既能保持正常的工作狀態,又不
會干擾你的活動。同樣的,這種方法也依靠于不同的環境,通常的情況是rat會經常的向錯誤的目
標發出各種不同的包,目標會返回ICMP不可抵達信息,從而用一種不正當的方式維持了連接。這種
偽裝的連接可以推遲緩存的更新時間。在Linux上,我們可以是更新時間從1分鐘提升到10分鐘。在
這一段時間內,你已經可以完成一個TCP連接可以完成的大多數事情了。
這里存在一個有趣被稱為“無理ARP”。在這個ARP請求包中,源IP與目的IP是相同的,通
常它是經過以太網廣播進行發送。一些執行程序認為這是一種非凡情況——系統發出的自身更新信
息,并且將這個請求添加在自己的緩存中。這種方式里,影響的是整個網絡。這是毋庸置疑的,但
這并不是ARP協議的一部分,而是由執行者決定是否作(或是不作),這漸漸的變得不受人歡迎。
ARP也可以用來開一些非常專業的笑話。假想一下某人設置了一個中繼器或者是一個管道,
僅僅是利用自己的機器去騙取兩臺相鄰機器的信任,并且把通訊的包都發給這臺機器。假如這臺機
器僅僅是轉發數據,那么誰也不會發現。但是當它僅僅作一些很少的改動時,就會給你添加非常大
的麻煩。例如,隨機的更改數據包中的幾位,這樣就會造成校驗和錯誤。數據流似乎是毫發無損,
卻會毫無原因的出現不可預料的錯誤。

二、ICMP重定向

另外一個比較有效的并且類似與ARP欺騙的手段是利用另外一個正常的協議——ICMP重
定向。這種重定向通常是由你的默認路由器發來的,通告你有一個到達某一網絡的更近的路由。
最初,既可以通告網絡重定向,也可以通告主機的重定向,但是現在,由于網絡重定向被否決,
僅剩下了主機重定向。正確的制作一個經過完整檢查的ICMP包(必須由默認路由器發來,發向重
定向機器,新的路由應該是一個網絡的直接連接等等),接收者會對系統的路由表進行更新。
這是ICMP的安全問題。偽裝一個路由器的IP地址是簡單的,icmp_redir.c正是作的這個
工作。RFC聲明系統必須遵循這個重定向,除非你是路由器。實際上幾乎所有的系統都支持這一
點(除了vanilla Linux 2.0.30)。
ICMP重定向提供了一個非常有力的DoS工具。不像ARP緩存更新,路由表不存在的過期問
題。并且不需要在本地網絡,你可以發起攻擊從任何地方。所以當目標接受了ICMP重定向之后(
包確切抵達),目標就不會再和網絡上的一些機器進行通訊(是的,并不是所有的機器,但是一
些與目標機器不在同一個網絡上的機器)。域名服務器會是一個非常好的攻擊目標。

/* send_arp.c
這個程序發送ARP包,由使用者提供源/目的IP和網卡地址。編譯并運行在Linux環境下,
也可以運行在其它的有SOCK_PACKET的Unix系統上。
這個程序是對上述理論的驗證,僅此而已。
*/

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <netdb.h>
#include <sys/socket.h>
#include <linux/in.h>
#include <arpa/inet.h>
#include <linux/if_ether.h>


#define ETH_HW_ADDR_LEN 6
#define IP_ADDR_LEN 4
#define ARP_FRAME_TYPE 0x0806

#define ETHER_HW_TYPE 1
#define IP_PROTO_TYPE 0x0800
#define OP_ARP_REQUEST 2

#define DEFAULT_DEVICE "eth0"

char usag

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巨鹿县| 沙湾县| 连江县| 正宁县| 德州市| 新竹市| 密云县| 万盛区| 六安市| 五原县| 蓬安县| 汉寿县| 清河县| 通辽市| 江华| 大洼县| 通江县| 万山特区| 普洱| 工布江达县| 类乌齐县| 岳阳市| 福清市| 邳州市| 民丰县| 宁安市| 潞城市| 钟山县| 青河县| 乌鲁木齐县| 兴文县| 谷城县| 丘北县| 康保县| 黄冈市| 和田县| 荥阳市| 手游| 阳新县| 绥棱县| 额尔古纳市|