萬盛學電腦網

 萬盛學電腦網 >> 病毒防治 >> 專家解讀APR病毒(一)

專家解讀APR病毒(一)

  賽迪網原創文章,版權所有,如欲轉載,請與賽迪網聯系

  一、ARP病毒

  ARP地址欺騙類病毒(以下簡稱ARP病毒)是一類特殊的病毒,該病毒一般屬於木馬(Trojan)病毒,不具備主動傳播的特性,不會自我復制。但是由於其發作的時候會向全網發送偽造的ARP數據包,干擾全網的運行,因此它的危害比一些蠕蟲還要嚴重得多。

  二、ARP病毒發作時的現象

  網絡掉線,但網絡連接正常,內網的部分PC機不能上網,或者所有電腦不能上網,無法打開網頁或打開網頁慢,局域網時斷時續並且網速較慢等。

  三、ARP病毒原理

  3.1 網絡模型簡介

  眾所周知,按照OSI (Open Systems Interconnection Reference Model 開放系統互聯參考模型) 的觀點,可將網絡系統劃分為7層結構,每一個層次上運行著不同的協議和服務,並且上下層之間互相配合,完成網絡數據交換的功能,如圖1:

圖1 OSI網絡體系模型

  然而,OSI的模型僅僅是一個參考模型,並不是實際網絡中應用的模型。實際上應用最廣泛的商用網絡模型即TCP/IP體系模型,將網絡劃分為四層,每一個層次上也運行著不同的協議和服務,如圖2。

圖2 TCP/IP四層體系模型及其配套協議

  上圖中,藍色字體表示該層的名稱,綠色字表示運行在該層上的協議。由圖2可見,我們即將要討論的ARP協議,就是工作在網際層上的協議。

  3.2 ARP協議簡介

  我們大家都知道,在局域網中,一台主機要和另一台主機進行通信,必須要知道目標主機的IP地址,但是最終負責在局域網中傳送數據的網卡等物理設備是不識別IP地址的,只能識別其硬件地址即MAC地址。MAC地址是48位的,通常表示為12個16進制數,每2個16進制數之間用“-”或者冒號隔開,如:00-0B-2F-13-1A-11就是一個MAC地址。每一塊網卡都有其全球唯一的MAC地址,網卡之間發送數據,只能根據對方網卡的MAC地址進行發送,這時就需要一個將高層數據包中的IP地址轉換成低層MAC地址的協議,而這個重要的任務將由ARP協議完成。

  ARP全稱為Address Resolution Protocol,地址解析協議。所謂“地址解析”就是主機在發送數據包前將目標主機IP地址轉換成目標主機MAC地址的過程。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。 這時就涉及到一個問題,一個局域網中的電腦少則幾台,多則上百台,這麼多的電腦之間,如何能准確的記住對方卡的MAC地址,以便數據的發送呢?這就涉及到了另外一個概念,ARP緩存表。在局域網的任何一台主機中,都有一個ARP緩存表,該表中保存這網絡中各個電腦的IP地址和MAC地址的對照關系。當這台主機向同局域網中另外的主機發送數據的時候,會根據ARP緩存表裡的對應關系進行發送。

  下面,我們用一個模擬的局域網環境,來說明ARP欺騙的過程。

  3.3 ARP欺騙過程

  假設一個只有三台電腦組成的局域網,該局域網由交換機(Switch)連接。其中一個電腦名叫A,代表攻擊方;一台電腦叫S,代表源主機,即發送數據的電腦;令一台電腦名叫D,代表目的主機,即接收數據的電腦。這三台電腦的IP地址分別為192.168.0.2,192.168.0.3,192.168.0.4。MAC地址分別為MAC_A,MAC_S,MAC_D。其網絡拓撲環境如圖3。

圖3 網絡拓撲

  現在,S電腦要給D電腦發送數據了,在S電腦內部,上層的TCP和UDP的數據包已經傳送到了最底層的網絡接口層,數據包即將要發送出去,但這時還不知道目的主機D電腦的MAC地址MAC_D。這時候,S電腦要先查詢自身的ARP緩存表,查看裡面是否有192.168.0.4這台電腦的MAC地址,如果有,那很好辦,就將 封裝在數據包的外面。直接發送出去即可。如果沒有,這時S電腦要向全網絡發送一個ARP廣播包,大聲詢問:“我的IP是192.168.0.3,硬件地址是MAC_S,我想知道IP地址為192.168.0.4的主機的硬件地址是多少?” 這時,全網絡的電腦都收到該ARP廣播包了,包括A電腦和D電腦。A電腦一看其要查詢的IP地址不是自己的,就將該數據包丟棄不予理會。而D電腦一看IP地址是自己的,則回答S電腦:“我的IP地址是192.168.0.4,我的硬件地址是MAC_D”需要注意的是,這條信息是單獨回答的,即D電腦單獨向S電腦發送的,並非剛才的廣播。現在S電腦已經知道目的電腦D的MAC地址了,它可以將要發送的數據包上貼上目的地址MAC_D,發送出去了。同時它還會動態更新自身的ARP緩存表,將192.168.0.4-MAC_D這一條記錄添加進去,這樣,等S電腦下次再給D電腦發送數據的時候,就不用大聲詢問發送ARP廣播包了。這就是正常情況下的數據包發送過程。

  這樣的機制看上去很完美,似乎整個局域網也天下太平,相安無事。但是,上述數據發送機制有一個致命的缺陷,即它是建立在對局域網中電腦全部信任的基礎上的,也就是說它的假設前提是:無論局域網中那台電腦,其發送的ARP數據包都是正確的。那麼這樣就很危險了!因為局域網中並非所有的電腦都安分守己,往往有非法者的存在。比如在上述數據發送中,當S電腦向全網詢問“我想知道IP地址為192.168.0.4的主機的硬件地址是多少?”後,D電腦也回應了自己的正確MAC地址。但是當此時,一向沉默寡言的A電腦也回話了:“我的IP地址是192.168.0.4,我的硬件地址是MAC_A” ,注意,此時它竟然冒充自己是D電腦的IP地址,而MAC地址竟然寫成自己的!由於A電腦不停地發送這樣的應答數據包,本來S電腦的ARP緩存表中已經保存了正確的記錄:192.168.0.4-MAC_D,但是由於A電腦的不停應答,這時S電腦並不知道A電腦發送的數據包是偽造的,導致S電腦又重新動態更新自身的ARP緩存表,這回記錄成:192.168.0.4-MAC_A,很顯然,這是一個錯誤的記錄(這步也叫ARP緩存表中毒),這樣就導致以後凡是S電腦要發送給D電腦,也就是IP地址為192.168.0.4這台主機的數據,都將會發送給MAC地址為MAC_A的主機,這樣,在光天化日之下,A電腦竟然劫持了由S電腦發送給D電腦的數據!這就是ARP欺騙的過程。

  如果A這台電腦再做的“過分”一些,它不冒充D電腦,而是冒充網關,那後果會怎麼樣呢?我們大家都知道,如果一個局域網中的電腦要連接外網,也就是登陸互聯網的時候,都要經過局域網中的網關轉發一下,所有收發的數據都要先經過網關,再由網關發向互聯網。在局域網中,網關的IP地址一般為192.168.0.1。如果A這台電腦向全網不停的發送ARP欺騙廣播,大聲說:“我的IP地址是192.168.0.1,我的硬件地址是MAC_A”這時局域網中的其它電腦並沒有察覺到什麼,因為局域網通信的前提條件是信任任何電腦發送的ARP廣播包。這樣局域網中的其它電腦都會更新自身的ARP緩存表,記錄下192.168.0.1-MAC_A這樣的記錄,這樣,當它們發送給網關,也就是IP地址為192.168.0.1這台電腦的數據,結果都會發送到MAC_A這台電腦中!這樣,A電腦就將會監聽整個局域網發送給互聯網的數據包!

  實際上,這種病毒早就出現過,這就是ARP地址欺騙類病毒。一些傳奇木馬(Trojan/PSW.LMir)具有這樣的特性,該木馬一般通過傳奇外掛、網頁木馬等方式使局域網中的某台電腦中毒,這樣中毒電腦便可嗅探到整個局域網發送的所有數據包,該木馬破解了《傳奇》游戲的數據包加密算法,通過截獲局域網中的數據包,分析數據包中的用戶隱私信息,盜取用戶的游戲帳號和密碼。在解析這些封包之後,再將它們發送到真正的網關。這樣的病毒有一個令網吧游戲玩家聞之色變的名字:“傳奇網吧殺手” !

  【稍後將為您介紹ARP病毒新的表現形式……】

copyright © 萬盛學電腦網 all rights reserved