抓包的方法
抓包的方法
抓包是將網(wǎng)絡(luò)傳輸發(fā)送與接收的數(shù)據(jù)包進(jìn)行截獲、重發(fā)、編輯、轉(zhuǎn)存等操作,也用來(lái)檢查網(wǎng)絡(luò)安全。以下是由學(xué)習(xí)啦小編整理關(guān)于什么是抓包的內(nèi)容,希望大家喜歡!
抓包的方法
安裝工具
目的就是用它分析網(wǎng)絡(luò)數(shù)據(jù)包的內(nèi)容。找一個(gè)免費(fèi)的或者試用版的抓包工具并不難。我使用了一種叫做SpyNet3.12 的抓包工具,非常小巧, 運(yùn)行的速度也很快。安裝完畢后我們就有了一臺(tái)抓包主機(jī)。你可以通過(guò)SpyNet設(shè)置抓包的類型,比如是要捕獲IP包還是ARP包,還可以根據(jù)目的地址的不同,設(shè)置更詳細(xì)的過(guò)濾參數(shù)。
配置網(wǎng)絡(luò)路由
你的路由器有缺省網(wǎng)關(guān)嗎?如果有,指向了哪里?在病毒爆發(fā)的時(shí)候把缺省網(wǎng)關(guān)指向另外一臺(tái)路由器是很危險(xiǎn)的(除非你想搞癱這臺(tái)路由器)。在一些企業(yè)網(wǎng)里往往僅指出網(wǎng)內(nèi)地址段的路由,而不加缺省路由,那么就把缺省路由指到抓包主機(jī)上吧(它不下地獄誰(shuí)下地獄?當(dāng)然這臺(tái)主機(jī)的性能最好是高一點(diǎn)的,否則很容易被病毒沖擊而亡)。這樣可以讓那些病毒主機(jī)發(fā)出的絕大部分掃描都自動(dòng)送上門來(lái)?;蛘甙丫W(wǎng)絡(luò)的出口映像到抓包主機(jī)上,所有對(duì)外訪問(wèn)的網(wǎng)絡(luò)包都會(huì)被分析到。
開始
抓包主機(jī)已經(jīng)設(shè)置好了,網(wǎng)絡(luò)里的數(shù)據(jù)包也已經(jīng)送過(guò)來(lái)了,那么我們看看網(wǎng)絡(luò)里傳輸?shù)牡降资切┦裁?。打開SpyNet 點(diǎn)擊Capture 你會(huì)看到好多的數(shù)據(jù)顯示出來(lái),這些就是被捕獲的數(shù)據(jù)包。
圖中的主體窗口里顯示了抓包的情況。列出了抓到數(shù)據(jù)包的序號(hào)、時(shí)間、源目的MAC地址、源目的IP地址、協(xié)議類型、源目的端口號(hào)等內(nèi)容。很容易看出IP地址為10.32.20.71的主機(jī)在極短的時(shí)間內(nèi)向大量的不同主機(jī)發(fā)出了訪問(wèn)請(qǐng)求,并且目的端口都是445。
找出染毒主機(jī)
從抓包的情況看,主機(jī)10.32.20.71值得懷疑。首先我們看一下目的IP地址,這些地址我們網(wǎng)絡(luò)里存在嗎?很可能網(wǎng)絡(luò)里根本就沒有這些網(wǎng)段。其次,正常情況下訪問(wèn)主機(jī)有可能在這么短的時(shí)間里發(fā)起這么多的訪問(wèn)請(qǐng)求嗎?在毫秒級(jí)的時(shí)間內(nèi)發(fā)出幾十甚至幾百個(gè)連接請(qǐng)求,正常嗎?顯然這臺(tái)10.32.20.71的主機(jī)肯定有問(wèn)題。再了解一下Microsoft-DS協(xié)議,該協(xié)議存在拒絕服務(wù)攻擊的漏洞,連接端口是445,從而進(jìn)一步證實(shí)了我們的判斷。這樣我們就很容易地找到了染毒主機(jī)的IP地址。剩下的工作就是給該主機(jī)操作系統(tǒng)打補(bǔ)丁殺病毒了。
既然抓到了病毒包,我們看一下這個(gè)數(shù)據(jù)包二進(jìn)制的解碼內(nèi)容:
這些數(shù)據(jù)包的長(zhǎng)度都是62個(gè)字節(jié)。數(shù)據(jù)包前12個(gè)字節(jié)包括了目的MAC和源MAC的地址信息,緊跟著的2字節(jié)指出了數(shù)據(jù)包的類型,0800代表的是IP包格式,0806代表ARP包格式。接著的20個(gè)字節(jié)是封裝的IP包頭,包括了源、目的IP地址、IP版本號(hào)等信息。剩下的28個(gè)字節(jié)封裝的是TCP包頭,包括了源、目的端口,TCP鏈接的狀態(tài)信息等。這就構(gòu)成了一個(gè)62字節(jié)的包。可以看出除了這些包頭數(shù)據(jù)之外,這個(gè)包沒有攜帶其他任何的有效數(shù)據(jù)負(fù)荷,所以這是一個(gè)TCP要求445端口同步的空包,也就是病毒主機(jī)在掃描445端口。一旦染毒主機(jī)同步上沒有采取防護(hù)措施的主機(jī)445端口,便會(huì)利用系統(tǒng)漏洞傳播感染。
抓包的原理
Sniffer 原理
網(wǎng)絡(luò)技術(shù)與設(shè)備簡(jiǎn)介
在講述Sniffer的概念之前,首先需要講述局域網(wǎng)設(shè)備的一些基本概念。
數(shù)據(jù)在網(wǎng)絡(luò)上是以很小的稱為幀(Frame)的單位傳輸?shù)?,幀由幾部分組成,不同的部分執(zhí)行不同的功能。幀通過(guò)特定的稱為網(wǎng)絡(luò)驅(qū)動(dòng)程序的軟件進(jìn)行成型,然后通過(guò)網(wǎng)卡發(fā)送到網(wǎng)線上,通過(guò)網(wǎng)線到達(dá)它們的目的機(jī)器,在目的機(jī)器的一端執(zhí)行相反的過(guò)程。接收端機(jī)器的以太網(wǎng)卡捕獲到這些幀,并告訴操作系統(tǒng)幀已到達(dá),然后對(duì)其進(jìn)行存儲(chǔ)。就是在這個(gè)傳輸和接收的過(guò)程中,嗅探器會(huì)帶來(lái)安全方面的問(wèn)題。
每一個(gè)在局域網(wǎng)(LAN)上的工作站都有其硬件地址,這些地址惟一地表示了網(wǎng)絡(luò)上的機(jī)器(這一點(diǎn)與Internet地址系統(tǒng)比較相似)。當(dāng)用戶發(fā)送一個(gè)數(shù)據(jù)包時(shí),如果為廣播包,則可達(dá)到局域網(wǎng)中的所有機(jī)器,如果為單播包,則只能到達(dá)處于同一碰撞域中的機(jī)器。
在一般情況下,網(wǎng)絡(luò)上所有的機(jī)器都可以“聽”到通過(guò)的流量,但對(duì)不屬于自己的數(shù)據(jù)包則不予響應(yīng)(換句話說(shuō),工作站A不會(huì)捕獲屬于工作站B的數(shù)據(jù),而是簡(jiǎn)單地忽略這些數(shù)據(jù))。如果某個(gè)工作站的網(wǎng)絡(luò)接口處于混雜模式,那么它就可以捕獲網(wǎng)絡(luò)上所有的數(shù)據(jù)包和幀。
網(wǎng)絡(luò)監(jiān)聽原理
Sniffer程序是一種利用以太網(wǎng)的特性把網(wǎng)絡(luò)適配卡(NIC,一般為以太網(wǎng)卡)置為雜亂(promiscuous)模式狀態(tài)的工具,一旦網(wǎng)卡設(shè)置為這種模式,它就能接收傳輸在網(wǎng)絡(luò)上的每一個(gè)信息包。
普通的情況下,網(wǎng)卡只接收和自己的地址有關(guān)的信息包,即傳輸?shù)奖镜刂鳈C(jī)的信息包。要使Sniffer能接收并處理這種方式的信息,系統(tǒng)需要支持BPF,Linux下需要支持SOCKET一PACKET。但一般情況下,網(wǎng)絡(luò)硬件和TCP/IP堆棧不支持接收或者發(fā)送與本地計(jì)算機(jī)無(wú)關(guān)的數(shù)據(jù)包,所以,為了繞過(guò)標(biāo)準(zhǔn)的TCP/IP堆棧,網(wǎng)卡就必須設(shè)置為我們剛開始講的混雜模式。一般情況下,要激活這種方式,內(nèi)核必須支持這種偽設(shè)備Bpfilter,而且需要root權(quán)限來(lái)運(yùn)行這種程序,所以sniffer需要root身份安裝,如果只是以本地用戶的身份進(jìn)入了系統(tǒng),那么不可能喚探到root的密碼,因?yàn)椴荒苓\(yùn)行Sniffer。
基于Sniffer這樣的模式,可以分析各種信息包并描述出網(wǎng)絡(luò)的結(jié)構(gòu)和使用的機(jī)器,由于它接收任何一個(gè)在同一網(wǎng)段上傳輸?shù)臄?shù)據(jù)包,所以也就存在著捕獲密碼、各種信息、秘密文檔等一些沒有加密的信息的可能性。這成為黑客們常用的擴(kuò)大戰(zhàn)果的方法,用來(lái)奪取其他主機(jī)的控制權(quán)
Sniffer的分類
Sniffer分為軟件和硬件兩種,軟件的Sniffer有 NetXray、Packetboy、Net monitor等,其優(yōu)點(diǎn)是物美價(jià)廉,易于學(xué)習(xí)使用,同時(shí)也易于交流;缺點(diǎn)是無(wú)法抓取網(wǎng)絡(luò)上所有的傳輸,某些情況下也就無(wú)法真正了解網(wǎng)絡(luò)的故障和運(yùn)行情況。硬件的Sniffer通常稱為協(xié)議分析儀,一般都是商業(yè)性的,價(jià)格也比較貴。
實(shí)際上本文中所講的Sniffer指的是軟件。它把包抓取下來(lái),然后打開并查看其中的內(nèi)容,可以得到密碼等。Sniffer只能抓取一個(gè)物理網(wǎng)段內(nèi)的包,就是說(shuō),你和監(jiān)聽的目標(biāo)中間不能有路由或其他屏蔽廣播包的設(shè)備,這一點(diǎn)很重要。所以,對(duì)一般撥號(hào)上網(wǎng)的用戶來(lái)說(shuō),是不可能利用Sniffer來(lái)竊聽到其他人的通信內(nèi)容的。
網(wǎng)絡(luò)監(jiān)聽的目的
當(dāng)一個(gè)黑客成功地攻陷了一臺(tái)主機(jī),并拿到了root權(quán)限,而且還想利用這臺(tái)主機(jī)去攻擊同一網(wǎng)段上的其他主機(jī)時(shí),他就會(huì)在這臺(tái)主機(jī)上安裝Sniffer軟件,對(duì)以太網(wǎng)設(shè)備上傳送的數(shù)據(jù)包進(jìn)行偵聽,從而發(fā)現(xiàn)感興趣的包。如果發(fā)現(xiàn)符合條件的包,就把它存到一個(gè)LOg文件中去。通常設(shè)置的這些條件是包含字“username”或“password”的包,這樣的包里面通常有黑客感興趣的密碼之類的東西。一旦黑客截獲得了某臺(tái)主機(jī)的密碼,他就會(huì)立刻進(jìn)入這臺(tái)主機(jī)。
如果Sniffer運(yùn)行在路由器上或有路由功能的主機(jī)上,就能對(duì)大量的數(shù)據(jù)進(jìn)行監(jiān)控,因?yàn)樗羞M(jìn)出網(wǎng)絡(luò)的數(shù)據(jù)包都要經(jīng)過(guò)路由器。
Sniffer屬于第M層次的攻擊。就是說(shuō),只有在攻擊者已經(jīng)進(jìn)入了目標(biāo)系統(tǒng)的情況下,才能使用Sniffer這種攻擊手段,以便得到更多的信息。
Sniffer除了能得到口令或用戶名外,還能得到更多的其他信息,比如一個(gè)重要的信息、在網(wǎng)上傳送的金融信息等等。Sniffer幾乎能得到任何在以太網(wǎng)上傳送的數(shù)據(jù)包。
Sniffer是一種比較復(fù)雜的攻擊手段,一般只有黑客老手才有能力使用它,而對(duì)于一個(gè)網(wǎng)絡(luò)新手來(lái)說(shuō),即使在一臺(tái)主機(jī)上成功地編譯并運(yùn)行了Sniffer,一般也不會(huì)得到什么有用的信息,因?yàn)橥ǔ>W(wǎng)絡(luò)上的信息流量是相當(dāng)大的,如果不加選擇地接收所有的包,然后從中找到所需要的信息非常困難;而且,如果長(zhǎng)時(shí)間進(jìn)行監(jiān)聽,還有可能把放置Sniffer的機(jī)器的硬盤撐爆。
看過(guò)“抓包的方法”的人還看了:
2.關(guān)于局域網(wǎng)抓包教程的相關(guān)知識(shí)
3.關(guān)于Linux下抓包工具tcpdump使用的介紹