Sniffer竊企業機密 ARP檢測抓內鬼
發表時間:2023-07-11 來源:明輝站整理相關軟件相關文章人氣:
[摘要]編者按:Sniffer是網絡故障的有效檢測工具, 但同時也是企業網絡的極大威脅, 必要的時候也要抓出Sniffer內鬼。 網卡混雜模式:為Sniffer竊取信息開后門 尋找Sniffer竊取...
編者按:Sniffer是網絡故障的有效檢測工具, 但同時也是企業網絡的極大威脅, 必要的時候也要抓出Sniffer內鬼。
網卡混雜模式:為Sniffer竊取信息開后門 尋找Sniffer竊取者的致命弱點 ARP檢測包找出混雜模式節點軟件過濾破獲Sniffer竊取者 結論:不同系統采用不同的措施 在局域網中, Sniffer是一個很大的威脅。 惡意用戶可以籍此看到一些機密文件和及一些個人的隱私。 Sniffer對安全有如此的威脅, 但它可以方便的在因特網上下免費下栽并安裝在PC上。 但是, 目前為止, 還沒有很好的方法來檢測誰的PC安裝了Sniffer軟件。 這篇文檔將討論利用ARP包來檢測那些在公司和學校局域網內Sniffing的惡意用戶。 網卡混雜模式:為Sniffer竊取信息開后門 局域網通常是以太網組成的。 在以太網上用的是IPV4協議, 數據是明文傳輸的, 除非用了加密軟件。 當用戶發信息到網絡上時, 他只希望網絡另一端的用戶能接收到。 不幸的是, 以太網的機制給未被授權的用戶提供了竊聽信息的機會。 我們知道, 在以太網中, 信息會發送到網絡中所有的節點, 有些節點會接收這些信息, 同時有些節點會簡單的丟棄這些信息。 接收或丟棄信息由網卡來控制。 網卡不會接收所有發到局域網的數據包, 即使它連在以太網上;相反它會過濾掉一些特定的數據包。 在這篇文檔里, 我們將稱這種過濾為網卡的硬件過濾。 Sniffer會被網卡設置成特定的模式, 這樣網卡就可以接收所有到達的數據包了, 而不管它是不是這些包指定的目的地址。 這種網卡的模式稱為混雜模式。 Sniffer接收所有的數據包, 而不是發送一些非法包。 所以它不會干擾網絡的正常運行, 因此很難檢測到這種惡意行為。 雖然如此, 網卡的混雜模式顯然是不同于正常模式的。 一個本來應該被過濾的包在這種模式下會被允許到達系統內核。 是不是做出響應取決于系統內核。 尋找Sniffer竊取者的致命弱點 我們把檢測混雜模式的方法用一個現實世界的例子來模擬。 假設會議室里正在開會。 一個竊聽者用他的一只耳朵靠著會議室的墻壁。 當他正在竊聽的時候, 他會屏住呼吸, 靜靜的聽著會議室的所有對話。 但是如果有人在會議里喊他的名字, “MR. **?”竊聽者有時候會應聲“YES!”這種類比看起來有些荒謬, 但確實是應用在檢測網絡的SNIFFING上了。 因為SINFFER接收所有的數據包, 包括那些本來不是發給它的, 所以它可能會對那些本來應該被網卡過濾的包錯誤地做出響應。 所以, 我們對混雜模式的檢測建立在以下的基礎上:向網絡上所有的節點發送ARP請求包, 檢查是不是有ARP響應包。 為了解釋這個原理, 首先, 我們從網卡的混雜模式和普通模式的區別開始。 所有以太網卡都有6字節的硬件地址。 廠商分配這些地址, 而且每個地址都是唯一的。 從理論上說, 不存在兩塊硬件地址一樣的網卡。 以太網上信息的交流是建立在硬件地址的基礎上的。 但是網卡為了接收不同類型的數據包, 可以建立不同的過濾機制。 現對網卡的各種過濾機制說明如下: 單播(UNICAST) 接收所有目標地址和網卡的硬件地址一樣的包。 廣播(Broadcast) 接收所有的廣播包。 廣播包的目的地址是FFFFFFFFFFFF。 這種模式是為了能收到那些希望能到達網絡所有節點的包。 組播(Multicast) 接收所有預先注冊好的特定組的包。 只有那些預先注冊的組才會被網卡接收。 所有的組播(All Multicast) 接收所有的組播。 這種模式和上層的協議有關聯, 這種模式會接收所有組播位設為1的包。 混雜(Promiscuous) 接收所有的數據包而不管它的目的地址是什么。
上圖示意了在正常模式和混雜模式下硬件過濾的操作方式。 通常情況下, 網卡的硬件過濾會設置成單播, 廣播和組播1模式。 網卡只接收目的地址和它的硬件地址一樣, 廣播地址(FF:FF:FF:FF:FF:FF)和組播地址1(01:00:5E:00:00:01)。 ARP檢測包找出混雜模式節點 正如前面所陳述的, 網卡設置成普通模式和混雜模式對包的過濾是不同的。 當網卡被設成混雜模式后, 本來被過濾的包會允許到達系統內核。 利用這種機制, 我們建立一種新的機制來檢測混雜模式節點:如果構造一個目的地址不是廣播地址的ARP包, 把它發送到網絡的每個節點, 如果發現有些節點有響應, 那么這些節點工作在混雜模式。 我們簡單地看一下正常的ARP請求和響應的操作方式。 首先, 為解析192.168.1.10產生一個ARP請求包。 它的目的地址為廣播地址, 使網絡上所有的節點能夠收到。 理論上, 只
有IP地址符合的節點才會響應。 但是, 如果把ARP包的目的地址設成非廣播地址呢?比如, 如果把目標地址設成00-00-00-00-00-01?當網卡處于正常模式, 這個包將被認為“TO OTHERHOST”包, 因此將被網卡的硬件過濾拒絕。 但是, 如果網卡處于混雜模式, 那么網卡不會執行過濾操作。 所以包將被允許到達系統內核。 系統內核會認為ARP請求包到達了, 因為它包含了與PC相同的IP地址, 這樣, 它應該會對請求包作出響應。 但讓人奇怪的是, 內核事實上沒有對包做出響應(如下圖)。 這令人意的結果說明系統內核存在著其它的過濾機制, 因為事實上包被系統內核過濾了。 我們把這種過濾稱之為軟件過濾。 進一步說, 對混雜模式的檢測可以從對比硬件過濾和軟件過濾的區別來達到。 硬件過濾通常會屏蔽一些非法的包。 如果一個包能夠通過硬件過濾, 它通常也能通過軟件過濾。 我們設想構建被硬件過濾拒絕而同時能夠通過軟件過濾的包。 通過發送這樣的包, 正常模式的網卡不會作出響應, 而混雜模式的網卡會作出響應。 軟件過濾破獲Sniffer竊取者 軟件過濾建立在操作系統內核的基礎上, 所以要了解軟件過濾必須明白操作系統內核是如何工作的。 LINUX開放源代碼, 因此可以獲取它的軟件過濾機制。 但是微軟的WINDOWS源代碼是非公開的, 其軟件過濾機制只能從實驗上去猜測推理。 1)LINUX 在LINUX的以太網模塊, 根據地址的不同包可以分為以下幾類: BROADCAST PACKETS: FF:FF:FF:FF:FF:FF MULTICAST PACKETS: 除了廣播包外, 組標識位置1的包。 TO_US PACKETS: 所有目的地址和網卡硬件地址一樣的包。 OTHERHOST PACKETS: 所有目的地址和網卡硬件地址不一樣的包。 在這里, 我們假設組標識位置1的包就是MULTICAST PACKETS。 以太網MULTICAST PACKET對應IP網絡的地址是01-00-5E-**-**-**, 所以MULTICAST PACKETS應該不能只用組標識位來區別。 但, 實際上這個假設是正確的, 因為01-00-5E-**-**-**是IP網絡基礎上的, 而網卡的硬件地址可以用在其它的上層協議。 其次, 我們看一下LINUX的ARP模塊。 ARP模塊會拒絕所有的OTHERHOST PACKETS。 同時, 它會對BROADCAST, MULTICAST, 和TO_US PACKETS作出響應。 下表示意了硬件過濾和軟件過濾的響應。 我們給出了六種不同類型地址的包發到網卡后, 硬件過濾和軟件過濾是如何操作的。
|
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: 當網卡處正常模式, 所有TO_US PACKETS能通過硬件過濾, 也能通過軟件過濾, 所以ARP模塊將對這種包做出響應而不管網卡是否處于混雜模式。 OTHERHOST PACKETS: 當網卡處于正常模式, 將拒絕OTHERHOST PACKETS。 即使當網卡處于混雜模式, 軟件過濾也將拒絕這種類型的包。 所以對ARP REQUESTS將不會做出響應。 BROADCAST PACKET: 在正常模式, BROADCAST PACKETS將通過硬件過濾和軟件過濾。 所以無論網卡處于什么模式都會有響應包。 MULTICAST PACKETS: 在正常模式, 未在預先注冊過的組列表中的地址的包將被拒絕。 但是, 如果網卡處在混雜模式, 這種類型的包將會通過硬件過濾, 而且, 因為軟件過濾也不會拒絕這種類型的包, 所以將會產生一個響應。 在這種情況下, 網卡處于不同的模式會有不同的結果產生。 GROUP BIT PACKETS: 不是BROADCAST或MULTICAST包, 但其組標識位置1。 在正常模式下, 會拒絕這種包, 而在混雜模式下, 這種包將會通過。 而且因為這種包會被軟件過濾認為是組播包, 所以這種包能通過軟件過濾。 組標識位置1的包能夠用來檢測混雜模式。 2)WINDOWS WINDOWS非源代碼開放的操作系統, 我們不能通過查看它的源碼來分析它的軟件過濾。 相反, 我們只能通過實驗的方式來測試它的軟件過濾。 以下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通常是未被使用的。 所以我們把這種類型的地址當作未在注冊過的組列表中的地址。 硬件過濾會拒絕這種種包。 但是, 軟件過濾會把這種包誤認為是組播包, 因為它不檢查所有的位。 所以, 當網卡處在混雜模式時, 系統內核會對這種包做出響應。 01-00-5E-00-00-01 MULTICAST ADDRESS 1 MULTICAST ADDRESS 1代表了局域網某一子網的所有HOSTS。 換名話說, 硬件過濾在默認情況下將通過這種類型的包。 但是存在這樣的可能:如果網卡不支持組播模式, 那么它將不會對這種包作出響應。 所以這種包可以用來檢測主機是否支持組播地址。 結論:不同系統采用不同的措施
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種地址的實驗結果列在下面的表上。 這些實驗結果分別是在WINDOWS 95, 98, ME, 2000和LINUX下得出的。 正如我們前面所述的, 網卡處于正常模式時, 所有的系統內核都會對BROADCAST ADDRESS和MULTICAST ADDRESS 1做出響應。 但是, 當網卡處于混雜模式時, 根據操作系統的不同, 結果也會不同。 WINDOWS 95, 98和ME將會對FAKE BROADCAST 31, 16, 和8BITS做出響應。 所以, 我們可以認為WINDOWS 9x的軟件過濾至多只檢查前8位來判別是否是廣播地址。 在WINDOWS 2000下, 它會對FAKE BROADCAST 31和16BITS作出響應。 所以我們可以認為WINDOWS 2000的軟件過濾至多只檢查前16位來判別是否是廣播地址。 在LINUX下, 會對這七種地址的包都做出響應。 換句話說, 當網卡處于混雜模式時, LINUX會對這七種包做出響應。 以下的結果說明我們可以根據ARP包來判別是否有處于混雜模式的節點, 而不管操作系統是WINDOWS或LINUX。 從而, 可以通過這樣一種簡單的方法用來在局域網中的檢測。 以下是檢測過程: 1) 我們試圖對裝載IP協議的機器進行是否處在混雜模式的檢測。 我們構建這樣一個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) 在我們構建完這種包后, 我們把它發送到局域網上 3) 在正常情況下, 這個包將會被硬件過濾拒絕。 但是, 如果這臺機器處在混雜模式, 它將會對這個包做出響應。 如果我們接收到響應, 那么這臺機器處在混雜模式。 為了檢測混雜模式, 我們可利用在7提到的技術對局域網上所有的機器按序進行。 如果有些機器不能收到ARP包, 那么將不能利用這種方法。
上面是電腦上網安全的一些基礎常識,學習了安全知識,幾乎可以讓你免費電腦中毒的煩擾。