• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 使用ARP分組檢測處于混雜模式的網絡節點

    發表于:2007-07-02來源:作者:點擊數: 標簽:
    摘要 在一個局域網中,安全問題應該引起注意。當純文本數據在網絡上傳輸時,任何網絡用戶都會很容易地竊取這些信息。在網絡上竊取數據就叫作嗅探(sniffing)。通過嗅探網絡,一個用戶能夠獲得絕密文檔的訪問權限,窺探到任何人的隱私。在Inte .net 上有很多自
    摘要


    在一個局域網中,安全問題應該引起注意。當純文本數據在網絡上傳輸時,任何網絡用戶都會很容易地竊取這些信息。在網絡上竊取數據就叫作嗅探(sniffing)。通過嗅探網絡,一個用戶能夠獲得絕密文檔的訪問權限,窺探到任何人的隱私。在Inte.net上有很多自由散發的嗅探器軟件可以實現上述目的。盡管進行網絡嗅探非常容易,然而卻沒有很好的方法來檢測這種惡意行為。本文將闡述PromiScan(一個能夠有效地檢測網絡嗅探器的軟件)使用的檢測機制。嗅探器為了能夠截獲網絡上所有的分組,必須把網絡接口卡(Network Interface Card,NIC)設置為混雜模式(promiscuous mode)。接著,網卡就能夠接受網絡上所有的分組,并將其送到系統內核。地址解析協議(Address Resolution Protocol,ARP)請求報文用來查詢硬件地址到IP地址的解析。我們將使用這類分組來校驗網卡是否被設置為混雜模式(promiscuous mode)。之所以會使用ARP請求分組是因為它適用于所有基于以太網的IPV4協議。在混雜模式(promiscuous mode)下,網卡不會阻塞目的地址不是自己的分組,而是照單全收,并將其傳送給系統內核。然后,系統內核會返回包含錯誤信息的報文?;谶@種機制,我們可以假造一些ARP請求報文發送到網絡上的各個節點,沒有處于混雜模式的網卡會阻塞這些報文,但是如果某些節點有回應,就表示這些節點的網卡處于混雜模式下。這些處于混雜模式的節點就可能運行嗅探器程序。這樣就可以成功地檢測到網絡運行的嗅探器程序。



    1.簡介


    在局域網中,嗅探行為已經成為網絡安全的一個巨大威脅。通過網絡嗅探,一些惡意用戶能夠很容易地竊取到絕密的文檔和任何人的隱私。要實現上述目的非常容易,惡意用戶只要從網絡上下載嗅探器并安全到自己的計算機就可以了。然而,卻沒有一個很好的方法來檢測網絡上的嗅探器程序。本文將討論使用地址解析協議(Address Resolution Protocol)報文來有效地檢測辦公網絡和校園網上的嗅探器程序。


    3.網絡嗅探的原理


    局域網通常使用以太網進行連接。在以太網線纜上使用IP(IPV4)協議傳輸的傳遞的信息是明文傳輸的,除非使用了加密程序進行了加密。當一個人把信息發送到網絡上,他會希望只有特定的用戶才能收到這些信息。但是,非常不幸,以太網的工作機制為非驗證用戶提供了竊取這些數據的機會。以太網在進行信息傳輸時,會把分組送到各個網絡節點,目的地址匹配的節點會接收這些分組,其它的網絡節點只做簡單的丟棄操作。而接收還是丟棄這些分組由以太網卡控制。在接收分組時,網卡會過濾出目的地址是自己的分組接收,而不是照單全收。在本文以后的部分我們將把網卡的這種過濾稱為硬件過濾(Hardware Filter)。但是這只是在正常情況下,嗅探器使用另一種工作方式,它把自己的網卡設置為接收所有的網絡分組,而不管分組的目的地址是否是自己。這種網卡模式叫作混雜模式(Promiscuous Mode)。


    3.檢測混雜模式的基本概念


    在網絡中,嗅探器接收所有的分組,而不發送任何非法分組。它不會妨礙網絡數據的流動,因此很難對其進行檢測。不過,處于混雜模式(promiscuous mode)網卡的狀態很顯然和處于普通模式下不同。在混雜模式下,應該被硬件過濾掉的分組文會進入到系統的內核。是否回應這種分組完全依賴與內核。

    下面我們舉一個現實世界中的例子,說明我們檢測處于混雜模式網絡節點的方法。設想一下,在一個會議室中正在舉行一個會議。某個人把耳朵放在會議室就可以進行竊聽(嗅探^_^)。當她(還是個女的,原文如此:P)進行竊聽(嗅探)時,會屏住呼吸,安靜地聆聽會議室內所有的發言。然而,如果此時會議室內有人忽然叫竊聽者的名字:“XX太太”,她就可能答應“唉”。這聽起來有點好笑,但是完全可以用于網絡嗅探行為的檢測。網絡進行網絡嗅探的節點會接收網絡的所有報文,因此其內核可能對某些本該被硬件過濾的分組作出錯誤回應。根據這個原理,我們可以通過檢查節點對ARP報文的響應來檢測網絡的嗅探行為。



    4.基礎


    1).硬件過濾器

    首先,我們從處于混雜模式(promiscuous mode)下和普通模式下有何不同開始。以太網的地址是6個字節,制造商為每塊網卡分配的地址在全世界是唯一的,因此理論上沒有相同地址的網卡。在以太網上的所有通訊都是基于這種硬件地址。不過,網卡可以被設置為不同的過濾模式以接收不同種類的分組。下面就是以太網卡的過濾模式:



    unicast

    網卡接收所有目的地址是自己的分組


    broadcast

    接收所有廣播分組,以太網廣播分組的目的地址是FFFFFFFFFFFF。這種廣播分組能夠到達網絡上的所有節點。


    multicast

    接收目的地址為指定多投點遞交(multicast)組地址的分組。網卡只接收其地址已經預先在多投點列表中注冊的分組。


    all multicast

    接收所有多投點遞交廣播分組。


    promiscuous

    根本不檢查目的地址,接收網絡上所有的分組。 



    圖-1描述了硬件過濾器處于在正常情況下和在混雜模式下的區別。通常,網卡的硬件過濾器被設置為接收目為單投點遞交(unicast)、廣播(broadcast)和多投點遞交(multicast)地址1的分組。過濾器只接收目的地址為自己的地址、廣播地址(FF FF FF FF FF FF)和多投點地址1(01 00 5E 00 00 01)的分組。



    2).ARP機制

    使用以太網連接的IP網絡需要依靠以太網進行傳輸。只使用IP地址,報文是無法發送的。因此,在以太網上需要一種機制來提供IP地址和硬件地址之間的轉換。這種機制就是地址解析協議(Address Resolution Protocol)。ARP屬于網絡層,和IP處于OSI模型的同一層。在IP網絡上地址解析是不斷進行的,所以ARP報文比較適合用來檢測處于混雜模式(promiscuous mode)的網絡節點。

    在下面的例子中,我們將講述使用ARP報文是怎樣解析IP地址的:


    例如:網絡上一臺IP地址為192.168.1.1的PC(X)以太網地址是00-00-00-00-00-01,這臺PC(X)需要向網絡上另外一臺IP地址為192.168.1.10的PC(Y)發送消息。在發送之前,X首先發出一個ARP請求包查詢192.168.1.10對應的以太網地址。查詢包的目的地址被設置為FF-FF-FF-FF-FF-FF(廣播),從而本地網絡上的所有節點都可以收到這個包。收到之后,每個節點會檢查這個ARP包查詢的IP地址和本機的IP地址是否匹配。如果不同,就忽略這個ARP包;如果匹配(Y)就向X發出應答。X收到應答之后就緩存Y的IP/硬件地址。然后,X就可以向Y發送實際的數據。




    5.檢測處于混雜模式的節點


    上面講到,報文的過濾狀態是處于混雜模式狀態和正常的網絡節點的區別。當網卡被設置為混雜模式,本該被過濾掉的報文就會進入系統的內核。通過這種機制,我們可以檢測到網絡上處于混雜模式的節點:我們構造一個ARP查詢包,其目的地址不是廣播地址,然后向網絡上的各個節點發送這個ARP查詢包,最后通過各個節點的回應來判斷是否處于混雜模式。

    下面我們討論一下整個ARP請求/響應的操作過程。首先,產生一個ARP查詢包來解析192.168.1.10的硬件地址。為了使網絡上的所有節點都能夠收到這個查詢包,把這個包的目的地址設置為廣播地址。理論上,只有IP地址為192.168.1.10的網卡才能對這個查詢包進行響應。

    進一步設想,如果我們把這個查詢包的目的地址(以太網地址)設置為另外的地址,而不是原來的廣播地址又將如何?例如:我們把查詢包的目的地址設置為00-00-00-00-00-01會發生什么?處于正常模式下網絡節點的以太網卡會認為這個查詢包是發往其它主機的,其硬件過濾器會拒絕接收這個包;然而,如果這個網絡節點(192.168.1.10)的以太網卡處于混雜模式(promiscuous mode)下,那么即使以太網地址不匹配,其硬件過濾器也不進行任何過濾,從而使這個查詢包能夠進入到系統的內核。因為這個節點的IP地址和查詢包的要查詢IP地址相同,其內核就會認為ARP查詢包到達,應該作出應答。但是,另我們吃驚的是,這個處于混雜模式節點的內核不會應答ARPR查詢包。這種出人意料的結果說明這個包被系統內核過濾掉了。在這里我們把這叫作軟件過濾器。 



    再進一步,我們可以通過區別硬件過濾器和軟件過濾器的不同特征來檢測處于混雜模式的網絡節點。硬件過濾器一般會阻塞所有無效的分組(這些分組顯然不會進入系統內核),因此能夠通過硬件過濾器一般也能夠通過軟件過濾器,這種情況我們不多做討論?,F在我們需要構造應該被被硬件過濾器阻塞,但是卻能夠通過軟件過濾器的報文。如果把這種報文送到各個網絡節點,那么處于普通模式下的網絡節點將不做應答;而處于混雜模式的節點會進行應答。



    6.軟件過濾器


    軟件過濾器依賴于操作系統的內核,因此有必要理解系統內核軟件過濾器是如何工作的。Linux是開放源瑪系統,因此我們能夠獲得其軟件過濾機制。但是對于Micro$oft Windows我們只有憑經驗猜測了:(。

    1).Linux

    在Linux的以太網驅動模塊中,分組是以硬件地址分類的。


    廣播包

    FF FF FF FF FF FF


    多投點分組

    所有的分組都有一個組標志位集合,不包括廣播分組。


    TO_US分組

    目的地址和本機網卡相同的分組。


    OTHERHOST分組

    所有目的地址和本機網卡不同的分組。



    現在,我們假設具有組標志位的所有分組都是廣播分組。IP網絡對應的以太網多投點分組的目的地址是01-00-5e-xx-xx-xx,而且,通過校驗組標志位本來就不能對多投點分組進行分類。這個假設并不錯誤,因為01-00-5e-xx-xx-xx是一個基于IP的多投點地址,但是網卡硬件地址還用于其它高層協議。

    下面,我們看一下ARP模塊的代碼。


    if (in_dev == NULL ||
    arp->ar_hln != dev->addr_len @# @#
    dev->flags & IFF_NOARP ||
    skb->pkt_type == PACKET_OTHERHOST ||
    skb->pkt_type == PACKET_LOOPBACK ||
    arp->ar_pln != 4)
    goto out;


    Linux內核的ARP模塊拒絕所有OTHERHOST類型的分組。接著,ARP模塊將處理廣播、多投點和TO_US類型的分組。表1綜合了硬件過濾器和軟件過濾器對各種ARP分組的過濾處理,1說明:hw(hardware)、sw(software)、res.(response)、gr(group)。 



    下面,后我們將對這六硬件地址的分組進行詳細描述:



    TO_US
    網卡在正常模式下,所有地址為TO_US的分組都能夠通過精簡過濾器和軟件過濾器。因此,不管網卡是否處于混雜模式(promiscuous mode)下,ARP模塊都會對其進行響應。


    OTHERHOST
    當網卡處于正常模式下,會拒絕所有地址為OTHERHOST的分組。即使網卡處于混雜模式(promiscuous mode),這種分組也無法通過軟件過濾器,因此這種ARP請求不會收到響應。


    BROARDCAST
    在正常模式下,BROARDCAST分組能夠也能夠通過硬件和軟件過濾器,因此不能用于網絡節點混雜模式的檢測。


    MULTICAST
    在正常模式下,如果分組的硬件地址沒有在多投點地址列表中注冊,網卡將拒絕接收;但是,如果網卡處于混雜模式,這種分組將暢通無阻地穿過硬件過濾器和軟件過濾器。因此,可以使用這種類型的分組來檢測處于混雜模式的網絡節點。


    group bit
    這種類型的分組既不屬于BRODCAST類型也不屬于MULTICAST類型,但是其硬件地址的組位(以太網地址的首字節低序第一位)置位即:01-00-00-00-00-00。在正常模式下,網卡會拒絕接收此類分組;但是在混雜模式下,這種類型的分組能夠通過硬件過濾器。而在Linux內核中,這種類型的分組被歸類為多投點分組進行處理,能夠穿過軟件過濾器。因此,這種類型的分組也能夠用于混雜模式檢測。


    2).Micro$oft Windows

    Windows系統不是開放源碼系統,因此不能從源代碼分析其軟件過濾行為。只好由實驗來測試。在實驗中,我們使用了以下的硬件地址:



    FF-FF-FF-FF-FF-FF 廣播地址

    所有的網絡節點都會接收這種分組。通常的ARP查詢包使用這個地址。


    FF-FF-FF-FF-FF-FE 偽廣播地址

    FF-FF-FF-FF-FF-FE是一種偽廣播地址,它的最后一位丟失。這個地址被用來檢查軟件過濾器是否檢查所有的地址位,是否應答。


    FF-FF-00-00-00-00-00 16位偽廣播地址

    FF-FF-00-00-00-00-00只有前16位和真正的廣播地址相同。如果過濾器函數只測試廣播地址的第一個字,這個地址就可以歸入廣播地址。


    FF-00-00-00-00-00 8位偽廣播地址

    這個地址只有前8位和廣播地址相同,如果過濾器函數只檢查廣播地址的首字節,它也可以歸入廣播地址類。


    01-00-00-00-00-00 多投點標記置位地址

    這個地址只有多投點標記位(以太網地址的首字節低序位)被置位,用來檢查過濾器函數是否也象Linux一樣把它作為多投點地址處理。


    01-00-5E-00-00-00 多投點地址0

    多投點地址0并不常用,因此我們使用這個地址作為沒有在網卡多投點地址列表中注冊的多投點地址。正常情況下,硬件過濾器應該拒絕接收這種分組。但是,如果軟件過濾器不能檢查所有的地址位,這類分組就可能被歸類到多投點地址。因此,如果網卡處于混雜模式(promiscuous mode),內核就會進行應答。


    01-00-5E-00-00-01 多投點地址1

    局域網上的所有網絡節點都應該接收多投點地址1類型的分組。換句話說,默認情況下硬件過濾器允許這類分組通過。但是可以由于網卡不支持多投點模式而不應答。因此,這類分組可以用于檢查主機是否支持多投點地址。


    即使結果:


    對于這7種類型地址的測試結果如表2所示。測試是針對Windows85/98/ME/2000和Linux。不出所料,網卡處于正常模式下,內核會對所有地址為廣播地址和多投點地址1的分組進行回應。

    然而,當網卡處于混雜模式下時,每種操作系統的測試結果不盡相同。Windows95/98/ME會響應31、16、8位偽廣播地址的分組。因此,我們可以認為Window9x系列操作系統的軟件過濾器只通過檢測一位來判斷分組地址是否是廣播地址。

    Windows2000對地址為31、16位偽廣播地址的分組進行響應。因此,我們可以認為WindowsY2K檢查地址的8位來判斷分組地址是否為廣播地址。

    Linux內核對所有七種地址的分組都會進行響應。 






    7.混雜模式檢測


    我們可以把這個測試結果用于局域網處于混雜模式節點的檢測。下面是具體檢測過程:


    1).我們需要檢測IP地址A的主機是否處于混雜模式。我們首先需要構造如下格式的ARP分組和以太網幀:


    ARP分組:


    目的以太網地址 00 00 00 00 00 00(說明1)
    發送方以太網地址 00 11 22 33 44 55(說明2)
    高層協議類型 08 00(IP)
    硬件類型 00 01(以太網)
    硬件地址長度 06(以太網地址長度)
    IP地址長度 04
    發送方的IP地址 本機IP地址
    目標的IP地址 被檢測主機的IP地址
    ARP操作碼 00 01(ARP請求01、ARP應答02)


    以太網幀:


    協議類型 08 06(ARP)
    發送方的硬件地址 本機以太網卡地址
    目標硬件地址 FF FF FF FF FF FE


    說明1:這時ARP要查詢的以太網地址,全部填0或者1都可以。

    說明2:用自己的以太網地址代替。



    2).分組構造完成后,我們可以把它發送到網絡上。


    3).現在我們需要等待目標主機的反應。如果目標主機處于正常狀態,這個分組就會被阻塞;但是如果處于混雜模式(promiscuous mode)下,我們就會收到應答。



    8.檢查所有網絡節點


    只要順序使用第七節敘述的檢測方法,我們就可能檢測出所有處于混雜模式下的網絡節點。但是,某些情況下,會使這種檢測方法失效。



    9.異常情況


    上面講到有一些情況不能使用這種方式進行混雜模式檢測。這些異常情況包括:

    1).舊網卡

    有些舊網卡不支持多投點列表,例如:3COM EtherlinkIII。分組不經過硬件過濾器的檢查就進入軟件過濾器,

    2).3COM網卡

    安裝在LInux主機的3COM 3c905網卡,默認情況下被設置為接收所有的多投點分組。因此,我們無法區別混雜模式和多投點模式。造成這種異常的原因是這種網卡的Linux驅動模塊不支持多投點列表,網卡就會接收所有多投點分組。注意:Linux安裝程序使用3c59x.o作為這種網卡的驅動模塊。如果把驅動模塊改為3c905x.o可以解決這個問題。

    3).Windows Y2K分組捕獲驅動模塊

    當WindowsY2K分組捕獲驅動模塊是動態加載的,也會產生異常情況。WinPcap2.1(2.01不同)和SMS是用于WindowsY2K的兩種動態加載分組捕獲驅動模塊。當它們安裝到WindowsY2K系統中,會有一些特別的反應。即使網卡不處于混雜模式下,也會對地址為16為偽廣播地址的分組進行響應(使用這兩種驅動模塊的嗅探器也將無法準確操作)。也就是說,即使嗅探器沒有運行也照樣可以檢測到??赡苁荕icro$oft為了方便混雜模式的檢測有意為之。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>