明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

Sniffer竊企業(yè)機密 ARP檢測抓內(nèi)鬼

[摘要]編者按:Sniffer是網(wǎng)絡故障的有效檢測工具, 但同時也是企業(yè)網(wǎng)絡的極大威脅, 必要的時候也要抓出Sniffer內(nèi)鬼。   網(wǎng)卡混雜模式:為Sniffer竊取信息開后門  尋找Sniffer竊取...

編者按:Sniffer是網(wǎng)絡故障的有效檢測工具, 但同時也是企業(yè)網(wǎng)絡的極大威脅, 必要的時候也要抓出Sniffer內(nèi)鬼。

  網(wǎng)卡混雜模式:為Sniffer竊取信息開后門  尋找Sniffer竊取者的致命弱點  ARP檢測包找出混雜模式節(jié)點軟件過濾破獲Sniffer竊取者  結(jié)論:不同系統(tǒng)采用不同的措施  在局域網(wǎng)中, Sniffer是一個很大的威脅。 惡意用戶可以籍此看到一些機密文件和及一些個人的隱私。 Sniffer對安全有如此的威脅, 但它可以方便的在因特網(wǎng)上下免費下栽并安裝在PC上。 但是, 目前為止, 還沒有很好的方法來檢測誰的PC安裝了Sniffer軟件。 這篇文檔將討論利用ARP包來檢測那些在公司和學校局域網(wǎng)內(nèi)Sniffing的惡意用戶。   網(wǎng)卡混雜模式:為Sniffer竊取信息開后門  局域網(wǎng)通常是以太網(wǎng)組成的。 在以太網(wǎng)上用的是IPV4協(xié)議, 數(shù)據(jù)是明文傳輸?shù)模?除非用了加密軟件。 當用戶發(fā)信息到網(wǎng)絡上時, 他只希望網(wǎng)絡另一端的用戶能接收到。 不幸的是, 以太網(wǎng)的機制給未被授權(quán)的用戶提供了竊聽信息的機會。   我們知道, 在以太網(wǎng)中, 信息會發(fā)送到網(wǎng)絡中所有的節(jié)點, 有些節(jié)點會接收這些信息, 同時有些節(jié)點會簡單的丟棄這些信息。 接收或丟棄信息由網(wǎng)卡來控制。 網(wǎng)卡不會接收所有發(fā)到局域網(wǎng)的數(shù)據(jù)包, 即使它連在以太網(wǎng)上;相反它會過濾掉一些特定的數(shù)據(jù)包。 在這篇文檔里, 我們將稱這種過濾為網(wǎng)卡的硬件過濾。 Sniffer會被網(wǎng)卡設置成特定的模式, 這樣網(wǎng)卡就可以接收所有到達的數(shù)據(jù)包了, 而不管它是不是這些包指定的目的地址。 這種網(wǎng)卡的模式稱為混雜模式。   Sniffer接收所有的數(shù)據(jù)包, 而不是發(fā)送一些非法包。 所以它不會干擾網(wǎng)絡的正常運行, 因此很難檢測到這種惡意行為。 雖然如此, 網(wǎng)卡的混雜模式顯然是不同于正常模式的。 一個本來應該被過濾的包在這種模式下會被允許到達系統(tǒng)內(nèi)核。 是不是做出響應取決于系統(tǒng)內(nèi)核。   尋找Sniffer竊取者的致命弱點  我們把檢測混雜模式的方法用一個現(xiàn)實世界的例子來模擬。 假設會議室里正在開會。 一個竊聽者用他的一只耳朵靠著會議室的墻壁。 當他正在竊聽的時候, 他會屏住呼吸, 靜靜的聽著會議室的所有對話。 但是如果有人在會議里喊他的名字, “MR. **?”竊聽者有時候會應聲“YES!”這種類比看起來有些荒謬, 但確實是應用在檢測網(wǎng)絡的SNIFFING上了。 因為SINFFER接收所有的數(shù)據(jù)包, 包括那些本來不是發(fā)給它的, 所以它可能會對那些本來應該被網(wǎng)卡過濾的包錯誤地做出響應。 所以, 我們對混雜模式的檢測建立在以下的基礎上:向網(wǎng)絡上所有的節(jié)點發(fā)送ARP請求包, 檢查是不是有ARP響應包。   為了解釋這個原理, 首先, 我們從網(wǎng)卡的混雜模式和普通模式的區(qū)別開始。 所有以太網(wǎng)卡都有6字節(jié)的硬件地址。 廠商分配這些地址, 而且每個地址都是唯一的。 從理論上說, 不存在兩塊硬件地址一樣的網(wǎng)卡。 以太網(wǎng)上信息的交流是建立在硬件地址的基礎上的。 但是網(wǎng)卡為了接收不同類型的數(shù)據(jù)包, 可以建立不同的過濾機制。 現(xiàn)對網(wǎng)卡的各種過濾機制說明如下:  單播(UNICAST)  接收所有目標地址和網(wǎng)卡的硬件地址一樣的包。   廣播(Broadcast)  接收所有的廣播包。 廣播包的目的地址是FFFFFFFFFFFF。 這種模式是為了能收到那些希望能到達網(wǎng)絡所有節(jié)點的包。   組播(Multicast)  接收所有預先注冊好的特定組的包。 只有那些預先注冊的組才會被網(wǎng)卡接收。   所有的組播(All Multicast)  接收所有的組播。 這種模式和上層的協(xié)議有關聯(lián), 這種模式會接收所有組播位設為1的包。   混雜(Promiscuous)  接收所有的數(shù)據(jù)包而不管它的目的地址是什么。 Sniffer竊企業(yè)機密 ARP檢測抓內(nèi)鬼Sniffer竊企業(yè)機密 ARP檢測抓內(nèi)鬼  上圖示意了在正常模式和混雜模式下硬件過濾的操作方式。 通常情況下, 網(wǎng)卡的硬件過濾會設置成單播, 廣播和組播1模式。 網(wǎng)卡只接收目的地址和它的硬件地址一樣, 廣播地址(FF:FF:FF:FF:FF:FF)和組播地址1(01:00:5E:00:00:01)。   ARP檢測包找出混雜模式節(jié)點  正如前面所陳述的, 網(wǎng)卡設置成普通模式和混雜模式對包的過濾是不同的。 當網(wǎng)卡被設成混雜模式后, 本來被過濾的包會允許到達系統(tǒng)內(nèi)核。 利用這種機制, 我們建立一種新的機制來檢測混雜模式節(jié)點:如果構(gòu)造一個目的地址不是廣播地址的ARP包, 把它發(fā)送到網(wǎng)絡的每個節(jié)點, 如果發(fā)現(xiàn)有些節(jié)點有響應, 那么這些節(jié)點工作在混雜模式。   我們簡單地看一下正常的ARP請求和響應的操作方式。 首先, 為解析192.168.1.10產(chǎn)生一個ARP請求包。 它的目的地址為廣播地址, 使網(wǎng)絡上所有的節(jié)點能夠收到。 理論上, 只Sniffer竊企業(yè)機密 ARP檢測抓內(nèi)鬼Sniffer竊企業(yè)機密 ARP檢測抓內(nèi)鬼有IP地址符合的節(jié)點才會響應。   但是, 如果把ARP包的目的地址設成非廣播地址呢?比如, 如果把目標地址設成00-00-00-00-00-01?當網(wǎng)卡處于正常模式, 這個包將被認為“TO OTHERHOST”包, 因此將被網(wǎng)卡的硬件過濾拒絕。 但是, 如果網(wǎng)卡處于混雜模式, 那么網(wǎng)卡不會執(zhí)行過濾操作。 所以包將被允許到達系統(tǒng)內(nèi)核。 系統(tǒng)內(nèi)核會認為ARP請求包到達了, 因為它包含了與PC相同的IP地址, 這樣, 它應該會對請求包作出響應。 但讓人奇怪的是, 內(nèi)核事實上沒有對包做出響應(如下圖)。 這令人意的結(jié)果說明系統(tǒng)內(nèi)核存在著其它的過濾機制, 因為事實上包被系統(tǒng)內(nèi)核過濾了。 我們把這種過濾稱之為軟件過濾。   進一步說, 對混雜模式的檢測可以從對比硬件過濾和軟件過濾的區(qū)別來達到。 硬件過濾通常會屏蔽一些非法的包。 如果一個包能夠通過硬件過濾, 它通常也能通過軟件過濾。 我們設想構(gòu)建被硬件過濾拒絕而同時能夠通過軟件過濾的包。 通過發(fā)送這樣的包, 正常模式的網(wǎng)卡不會作出響應, 而混雜模式的網(wǎng)卡會作出響應。   軟件過濾破獲Sniffer竊取者  軟件過濾建立在操作系統(tǒng)內(nèi)核的基礎上, 所以要了解軟件過濾必須明白操作系統(tǒng)內(nèi)核是如何工作的。 LINUX開放源代碼, 因此可以獲取它的軟件過濾機制。 但是微軟的WINDOWS源代碼是非公開的, 其軟件過濾機制只能從實驗上去猜測推理。   1)LINUX  在LINUX的以太網(wǎng)模塊, 根據(jù)地址的不同包可以分為以下幾類:  BROADCAST PACKETS:  FF:FF:FF:FF:FF:FF  MULTICAST PACKETS:  除了廣播包外, 組標識位置1的包。   TO_US PACKETS:  所有目的地址和網(wǎng)卡硬件地址一樣的包。   OTHERHOST PACKETS:  所有目的地址和網(wǎng)卡硬件地址不一樣的包。   在這里, 我們假設組標識位置1的包就是MULTICAST PACKETS。 以太網(wǎng)MULTICAST PACKET對應IP網(wǎng)絡的地址是01-00-5E-**-**-**, 所以MULTICAST PACKETS應該不能只用組標識位來區(qū)別。 但, 實際上這個假設是正確的, 因為01-00-5E-**-**-**是IP網(wǎng)絡基礎上的, 而網(wǎng)卡的硬件地址可以用在其它的上層協(xié)議。   其次, 我們看一下LINUX的ARP模塊。 ARP模塊會拒絕所有的OTHERHOST PACKETS。 同時, 它會對BROADCAST, MULTICAST, 和TO_US PACKETS作出響應。 下表示意了硬件過濾和軟件過濾的響應。 我們給出了六種不同類型地址的包發(fā)到網(wǎng)卡后, 硬件過濾和軟件過濾是如何操作的。   

  GR BIT NORMAL MODE PROMISCUOUS MODE
HW FILTER SW FILTER RES HW FILTER SW FILTER RES
TO_US OFF PASS PASS Y PASS PASS Y
OTHERHOST REJECT - N PASS REJECT N
BROADCAST ON PASS PASS Y PASS PASS Y
MULTICAST (IN THE LIST) PASS PASS Y PASS PASS Y
MULTICAST (NOT IN THE LIST) REJECT - N PASS PASS Y
GROUP REJECT - N PASS PASS Y

  TO_US PACKETS:  當網(wǎng)卡處正常模式, 所有TO_US PACKETS能通過硬件過濾, 也能通過軟件過濾, 所以ARP模塊將對這種包做出響應而不管網(wǎng)卡是否處于混雜模式。   OTHERHOST PACKETS:  當網(wǎng)卡處于正常模式, 將拒絕OTHERHOST PACKETS。 即使當網(wǎng)卡處于混雜模式, 軟件過濾也將拒絕這種類型的包。 所以對ARP REQUESTS將不會做出響應。   BROADCAST PACKET:  在正常模式, BROADCAST PACKETS將通過硬件過濾和軟件過濾。 所以無論網(wǎng)卡處于什么模式都會有響應包。   MULTICAST PACKETS:  在正常模式, 未在預先注冊過的組列表中的地址的包將被拒絕。 但是, 如果網(wǎng)卡處在混雜模式, 這種類型的包將會通過硬件過濾, 而且, 因為軟件過濾也不會拒絕這種類型的包, 所以將會產(chǎn)生一個響應。 在這種情況下, 網(wǎng)卡處于不同的模式會有不同的結(jié)果產(chǎn)生。   GROUP BIT PACKETS:  不是BROADCAST或MULTICAST包, 但其組標識位置1。 在正常模式下, 會拒絕這種包, 而在混雜模式下, 這種包將會通過。 而且因為這種包會被軟件過濾認為是組播包, 所以這種包能通過軟件過濾。 組標識位置1的包能夠用來檢測混雜模式。   2)WINDOWS  WINDOWS非源代碼開放的操作系統(tǒng), 我們不能通過查看它的源碼來分析它的軟件過濾。 相反, 我們只能通過實驗的方式來測試它的軟件過濾。 以下7種地址會被WINDOWS利用:  FF-FF-FF-FF-FF-FF BROADCAST ADDRESS:  所有接點將會收到這種類型的包, 并作出響應。 正常的ARP請求包用的就是這種地址。   FF-FF-FF-FF-FF-FE FAKE BROADCAST ADDRESS:  這是最后一位置0假冒的廣播地址。 用來檢測軟件過濾是否會檢查所有的地址位, 進而是否會對這種包作出響應。   FF-FF-00-00-00-00 FAKE BROADCAST 16 BITS:  這是只有前16位置1的假冒的廣播地址。 它可能會被認為是廣播地址, 而且在過濾機制只檢查前16位的情況下會得到響應。   FF-00-00-00-00-00 FAKE BROADCAST 16 BITS:  這是只有前8位置1的假冒的廣播地址。 它可能會被認為是廣播地址, 而且在過濾機制只檢查前8位的情況下會得到響應。   01-00-00-00-00-00 GROUP BIT ADDRESS:  組標識位置1的地址, 用來檢查是否會被認為是組播地址。   01-00-5E-00-00-00 MULTICAST ADDRESS 0  MULTICAST ADDRESS 0通常是未被使用的。 所以我們把這種類型的地址當作未在注冊過的組列表中的地址。 硬件過濾會拒絕這種種包。 但是, 軟件過濾會把這種包誤認為是組播包, 因為它不檢查所有的位。 所以, 當網(wǎng)卡處在混雜模式時, 系統(tǒng)內(nèi)核會對這種包做出響應。   01-00-5E-00-00-01 MULTICAST ADDRESS 1  MULTICAST ADDRESS 1代表了局域網(wǎng)某一子網(wǎng)的所有HOSTS。 換名話說, 硬件過濾在默認情況下將通過這種類型的包。 但是存在這樣的可能:如果網(wǎng)卡不支持組播模式, 那么它將不會對這種包作出響應。 所以這種包可以用來檢測主機是否支持組播地址。   結(jié)論:不同系統(tǒng)采用不同的措施  

  HW ADDR WINDOWS 9x/ME WINDOWS 2K/NT4 LINUX2.2/2.4
NORMAL PROMIS NORMAL PROMIS NORMAL PROMIS
FF:FF:FF:FF:FF:FF RES RES RES RES RES RES
FF:FF:FF:FF:FF:FE - RES - RES - RES
FF:FF:00:00:00:00 - RES - RES - RES
FF:00:00:00:00:00 - RES - - - RES
01:00:00:00:00:00 - - - - - RES
01:00:5E:00:00:00 - - - - - RES
01:00:5E:00:00:01 RES RES RES RES RES RES

    對7種地址的實驗結(jié)果列在下面的表上。   這些實驗結(jié)果分別是在WINDOWS 95, 98, ME, 2000和LINUX下得出的。 正如我們前面所述的, 網(wǎng)卡處于正常模式時, 所有的系統(tǒng)內(nèi)核都會對BROADCAST ADDRESS和MULTICAST ADDRESS 1做出響應。   但是, 當網(wǎng)卡處于混雜模式時, 根據(jù)操作系統(tǒng)的不同, 結(jié)果也會不同。 WINDOWS 95, 98和ME將會對FAKE BROADCAST 31, 16, 和8BITS做出響應。 所以, 我們可以認為WINDOWS 9x的軟件過濾至多只檢查前8位來判別是否是廣播地址。   在WINDOWS 2000下, 它會對FAKE BROADCAST 31和16BITS作出響應。 所以我們可以認為WINDOWS 2000的軟件過濾至多只檢查前16位來判別是否是廣播地址。   在LINUX下, 會對這七種地址的包都做出響應。 換句話說, 當網(wǎng)卡處于混雜模式時, LINUX會對這七種包做出響應。   以下的結(jié)果說明我們可以根據(jù)ARP包來判別是否有處于混雜模式的節(jié)點, 而不管操作系統(tǒng)是WINDOWS或LINUX。 從而, 可以通過這樣一種簡單的方法用來在局域網(wǎng)中的檢測。 以下是檢測過程:  1) 我們試圖對裝載IP協(xié)議的機器進行是否處在混雜模式的檢測。 我們構(gòu)建這樣一個ARP包:

Ethernet address of destination FF:FF:FF:FF:FF:FE
Ethernet address of sender <Own NIC’s Device address>
Protocol type (ARP=0806) 0806
Hardware address space (Ethernet=01) 0001
Protocol address space (IPv4=0800) 0800
Byte length of Hardware address 06
Byte length of protocol address 04
Opcode (ARP request=01,ARP reply=02) 0001
Hardware address of sender of this packet <Own NIC’s Device address>
Protocol address of sender of this packet <Own NIC’s IP address>
Hardware address of target of this packet 00:00:00:00:00:00
Protocol address of target of this packet <IP Address>(address want to be checked)

  2) 在我們構(gòu)建完這種包后, 我們把它發(fā)送到局域網(wǎng)上  3) 在正常情況下, 這個包將會被硬件過濾拒絕。 但是, 如果這臺機器處在混雜模式, 它將會對這個包做出響應。 如果我們接收到響應, 那么這臺機器處在混雜模式。   為了檢測混雜模式, 我們可利用在7提到的技術對局域網(wǎng)上所有的機器按序進行。 如果有些機器不能收到ARP包, 那么將不能利用這種方法。


上面是電腦上網(wǎng)安全的一些基礎常識,學習了安全知識,幾乎可以讓你免費電腦中毒的煩擾。