一、ARP病毒
ARP地址欺騙類病毒(以下簡稱ARP病毒)是一類特殊的病毒,該病毒一般屬于木馬(Trojan)病毒,不具備主動傳播的特性,不會自我復制。但是由于其發作的時候會向全網發送偽造的ARP數據包,干擾全網的運行,因此它的危害比一些蠕蟲還要嚴重得多。
二、ARP病毒發作時的現象
網絡掉線,但網絡連接正常,內網的部分PC機不能上網,或者所有電腦不能上網,無法打開網頁或打開網頁慢,局域網時斷時續并且網速較慢等。
三、ARP病毒原理
3.1 網絡模型簡介
眾所周知,按照OSI (Open Systems Interconnection Reference Model 開放系統互聯參考模型) 的觀點,可將網絡系統劃分為7層結構,每一個層次上運行著不同的協議和服務,并且上下層之間互相配合,完成網絡數據交換的功能,如圖1:
上圖中,藍色字體表示該層的名稱,綠色字表示運行在該層上的協議。由圖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地址分別為
現在,S電腦要給D電腦發送數據了,在S電腦內部,上層的TCP和UDP的數據包已經傳送到了最底層的網絡接口層,數據包即將要發送出去,但這時還不知道目的主機D電腦的MAC地址MAC_D。這時候,S電腦要先查詢自身的ARP緩存表,查看里面是否有192.168.0.4這臺電腦的MAC地址,如果有,那很好辦,就將MAC_D封裝在數據包的外面。直接發送出去即可。如果沒有,這時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_S”需要注意的是,這條信息是單獨回答的,即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病毒新的表現形式
由于現在的網絡游戲數據包在發送過程中,均已采用了強悍的加密算法,因此這類ARP病毒在解密數據包的時候遇到了很大的難度。現在又新出現了一種ARP病毒,與以前的一樣的是,該類ARP病毒也是向全網發送偽造的ARP欺騙廣播,自身偽裝成網關。但區別是,它著重的不是對網絡游戲數據包的解密,而是對于HTTP請求訪問的修改。
HTTP是應用層的協議,主要是用于WEB網頁訪問。還是以上面的局域網環境舉例,如果局域網中一臺電腦S要請求某個網站頁面,如想請求www.sina.com.cn這個網頁,這臺電腦會先向網關發送HTTP請求,說:“我想登陸www.sina.com.cn網頁,請你將這個網頁下載下來,并發送給我。”這樣,網關就會將www.sina.com.cn頁面下載下來,并發送給S電腦。這時,如果A這臺電腦通過向全網發送偽造的ARP欺騙廣播,自身偽裝成網關,成為一臺ARP中毒電腦的話,這樣當S電腦請求WEB網頁時,A電腦先是“好心好意”地將這個頁面下載下來,然后發送給S電腦,但是它在返回給S電腦時,會向其中插入惡意網址連接!該惡意網址連接會利用MS06-014和MS07-017等多種系統漏洞,向S電腦種植木馬病毒!同樣,如果D電腦也是請求WEB頁面訪問,A電腦同樣也會給D電腦返回帶毒的網頁,這樣,如果一個局域網中存在這樣的ARP病毒電腦的話,頃刻間,整個網段的電腦將會全部中毒!淪為黑客手中的僵尸電腦!
案例:
某企業用戶反映,其內部局域網用戶無論訪問那個網站,在經過對該局域網分析之后,發現該局域網中有ARP病毒電腦導致其它電腦訪問網頁時,返回的網頁帶毒,并且該帶毒網頁通過MS06-014和MS07-017漏洞給電腦植入一個木馬下載器,而該木馬下載器又會下載10多個惡性網游木馬,可以盜取包括魔獸世界,傳奇世界,征途,夢幻西游,邊鋒游戲在內的多款網絡游戲的帳號和密碼,對網絡游戲玩家的游戲裝備造成了極大的損失。被ARP病毒電腦篡改的網頁如圖4:
圖4 被ARP病毒插入的惡意網址連接
從圖4中可以看出,局域網中存在這樣的ARP病毒電腦之后,其它客戶機無論訪問什么網頁,當返回該網頁時,都會被插入一條惡意網址連接,如果用戶沒有打過相應的系統補丁,就會感染木馬病毒。