資源描述:
《arp 協(xié)議詳解 攻擊原理 簡單攻擊源碼》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、一.關(guān)于ARP協(xié)議的基礎(chǔ)知識(shí)1.ARP的工作原理我們都知道以太網(wǎng)設(shè)備比如網(wǎng)卡都有自己全球唯一的MAC地址,它們是以MAC地址來傳輸以太網(wǎng)數(shù)據(jù)包的,但是它們卻識(shí)別不了我們IP包中的IP地址,所以我們?cè)谝蕴W(wǎng)中進(jìn)行IP通信的時(shí)候就需要一個(gè)協(xié)議來建立IP地址與MAC地址的對(duì)應(yīng)關(guān)系,以使IP數(shù)據(jù)包能發(fā)到一個(gè)確定的地方去。這就是ARP(AddressResolutionProtocol,地址解析協(xié)議)。講到此處,我們可以在命令行窗口中,輸入arp–a來看一下效果,類似于這樣的條目210.118.45.10000-0b-5f-e6-c5-d7dynamic就是我們電腦里存儲(chǔ)的關(guān)于
2、IP地址與MAC地址的對(duì)應(yīng)關(guān)系,dynamic表示是臨時(shí)存儲(chǔ)在ARP緩存中的條目,過一段時(shí)間就會(huì)超時(shí)被刪除(xp/2003系統(tǒng)是2分鐘)。這樣一來,比如我們的電腦要和一臺(tái)機(jī)器比如210.118.45.1通信的時(shí)候,它會(huì)首先去檢查arp緩存,查找是否有對(duì)應(yīng)的arp條目,如果沒有,它就會(huì)給這個(gè)以太網(wǎng)絡(luò)發(fā)ARP請(qǐng)求包廣播詢問210.118.45.1的對(duì)應(yīng)MAC地址,當(dāng)然,網(wǎng)絡(luò)中每臺(tái)電腦都會(huì)收到這個(gè)請(qǐng)求包,但是它們發(fā)現(xiàn)210.118.45.1并非自己,就不會(huì)做出相應(yīng),而210.118.45.1就會(huì)給我們的電腦回復(fù)一個(gè)ARP應(yīng)答包,告訴我們它的MAC地址是xx-xx-xx-xx
3、-xx-xx,于是我們電腦的ARP緩存就會(huì)相應(yīng)刷新,多了這么一條:210.118.45.1xx-xx-xx-xx-xx-xxdynamic為什么要有這么一個(gè)ARP緩存呢,試想一下如果沒有緩存,我們每發(fā)一個(gè)IP包都要發(fā)個(gè)廣播查詢地址,豈不是又浪費(fèi)帶寬又浪費(fèi)資源?而且我們的網(wǎng)絡(luò)設(shè)備是無法識(shí)別ARP包的真?zhèn)蔚?,如果我們按照ARP的格式來發(fā)送數(shù)據(jù)包,只要信息有效計(jì)算機(jī)就會(huì)根據(jù)包中的內(nèi)容做相應(yīng)的反應(yīng).試想一下,如果我們按照ARP響應(yīng)包的相應(yīng)的內(nèi)容來刷新自己的ARP緩存中的列表,嘿嘿,那我們豈不是可以根據(jù)這點(diǎn)在沒有安全防范的網(wǎng)絡(luò)中玩些ARP包的小把戲了?在后面的文章里我就手把手來
4、教你們?nèi)绾翁畛浒l(fā)送ARP包,不過先別急,我們?cè)倮^續(xù)學(xué)點(diǎn)基礎(chǔ)知識(shí)^_^2.ARP包的格式既然我們要來做一個(gè)我們自己的ARP包,當(dāng)然首先要學(xué)習(xí)一下ARP包的格式。從網(wǎng)絡(luò)底層看來,一個(gè)ARP包是分為兩個(gè)部分的,前面一個(gè)是物理幀頭,后面一個(gè)才是ARP幀。首先,物理幀頭,它將存在于任何一個(gè)協(xié)議數(shù)據(jù)包的前面,我們稱之為DLCHeader,因?yàn)檫@個(gè)幀頭是在數(shù)據(jù)鏈路層構(gòu)造的,并且其主要內(nèi)容為收發(fā)雙方的物理地址,以便硬件設(shè)備識(shí)別。DLCHeader字段長度(Byte)默認(rèn)值備注接收方MAC6廣播時(shí),為ff-ff-ff-ff-ff-ff發(fā)送方MAC6Ethertype20x08060x0
5、806是ARP幀的類型值圖1物理幀頭格式圖1是需要我們填充的物理幀頭的格式,我們可以看到需要我們填充的僅僅是發(fā)送端和接收端的物理地址罷了,是不是很簡單呢?接下來我們看一下ARP幀的格式.ARPFrame字段長度(Byte)默認(rèn)值備注硬件類型20x1以太網(wǎng)類型值上層協(xié)議類型20x0800上層協(xié)議為IP協(xié)議MAC地址長度10x6以太網(wǎng)MAC地址長度為6IP地址長度10x4IP地址長度為4操作碼20x1表示ARP請(qǐng)求包,0x2表示應(yīng)答包發(fā)送方MAC6發(fā)送方IP4接收方MAC6接收方IP4填充數(shù)據(jù)18因?yàn)槲锢韼钚¢L度為64字節(jié),前面的42字節(jié)再加上4個(gè)CRC校驗(yàn)字節(jié),還差1
6、8個(gè)字節(jié)圖2ARP幀格式我們可以看到需要我們填充的同樣也只是MAC,IP,再加上一個(gè)1或2的操作碼而已。3.ARP包的填充1)請(qǐng)求包的填充:比如我們的電腦MAC地址為aa-aa-aa-aa-aa-aa,IP為192.168.0.1我們想要查詢192.168.0.99的MAC地址,應(yīng)該怎么來做呢?首先填充DLCHeader,通過前面的學(xué)習(xí)我們知道,想要知道某個(gè)計(jì)算機(jī)對(duì)應(yīng)的MAC地址是要給全網(wǎng)發(fā)送廣播的,所以接收方MAC肯定是ffffffffffff,發(fā)送方MAC當(dāng)然是自己啦,于是我們的DLCHeader就填充完成了,如圖,加粗的是我們要手動(dòng)輸入的值(當(dāng)然我編的程序比較智
7、能,會(huì)根據(jù)你選擇的ARP包類型幫你自動(dòng)填入一些字段,你一用便知^_^)。DLCHeader字段長度(Byte)填充值接收方MAC6ffffffffffff發(fā)送方MAC6aaaaaaaaaaaaEthertype20x0806圖3ARP請(qǐng)求包中DLCHeader內(nèi)容接下來是ARP幀,請(qǐng)求包的操作碼當(dāng)然是1,發(fā)送方的MAC以及IP當(dāng)然填入我們自己的,然后要注意一下,這里的接收方IP填入我們要查詢的那個(gè)IP地址,就是192.168.0.99了,而接收方MAC填入任意值就行,不起作用,于是,如圖,ARPFrame字段長度(Byte)填充值硬件類型21上層協(xié)議