ARP防火牆

應用於android系統的殺毒軟體

ARP防火牆通過在系統內核層攔截虛假ARP數據包以及主動通告網關本機正確的MAC地址,可以保障數據流向正確,不經過第三者。從而保證通訊數據安全、保證網路暢通、保證通訊數據不受第三者控制。包括攔截ARP攻擊、攔截IP衝突、Dos攻擊抑制、ARP數據分析等功能。

ARP攻擊


網路經常掉線、發生IP衝突、擔心通訊數據受到監控(如MSNQQ、EMAIL)、網路速度受到網管軟體限制(如聚生網管、P2P終結者)、甚至深受各種ARP攻擊軟體之苦(如網路執法官、網路剪刀手、區域網終結者)等這些問題是我們上網時經常遇到的,而這些問題的產生,根源都是ARP欺騙(ARP攻擊)。在沒有ARP欺騙之前,數據流向是這樣的:網關<->本機。ARP欺騙之後,數據流向是這樣的:網關<->攻擊者(“網管”)<->本機,本機與網關之間的所有通訊數據都將流經攻擊者(“網管”),所以“任人宰割”就在所難免了。

九大功能


攔截攻擊
(1) 在系統內核層攔截外部虛假ARP數據包,保障系統不受ARP欺騙、ARP攻擊影響,保持網路暢通及通訊安全;
(2) 在系統內核層攔截本機對外的ARP攻擊數據包,以減少感染惡意程序后對外攻擊給用戶帶來的麻煩;
攔截IP衝突
在系統內核層攔截IP衝突數據包,保障系統不受IP衝突攻擊的影響;
Dos攻擊抑制
在系統內核層攔截本機對外的TCP SYN/UDP/ICMP/ARP DoS攻擊數據包,定位惡意發動DoS攻擊的程序,從而保證網路的暢通;
安全模式
除了網關外,不響應其它機器發送的ARP Request,達到隱身效果,減少受到ARP攻擊的幾率;
P數據分析
分析本機接收到的所有ARP數據包,掌握網路動態,找出潛在的攻擊者或中毒的機器;
監測緩存
自動監測本機ARP緩存表,如發現網關MAC地址被惡意程序篡改,將報警並自動修復,以保持網路暢通及通訊安全;
主動防禦
主動與網關保持通訊,通告網關正確的MAC地址,以保持網路暢通及通訊安全;
ARP防火牆
ARP防火牆
追蹤攻擊者
發現攻擊行為後,自動快速鎖定攻擊者IP地址;
病毒專殺
發現本機有對外攻擊行為時,自動定位本機感染的惡意程序、病毒程序;

工作原理


ARP是Address Resolution Protocol地址轉換協議)的簡稱,是TCP/IP協議中最底層的協議之一。它的作用是完成IP地址到MAC(物理地址)的轉換。在區域網中兩台計算機之間的通訊,或者區域網中的計算機將IP數據包轉發給網關的時候,網卡都需要知道目標計算機的物理地址,以填充物理幀中的目的地址。
假設同一乙太網中的計算機A(192.168.0.1)需要向計算機B(192.168.0.2)發送數據報,而此時A尚不知道B的物理地址。為了獲得B的物理地址,A在區域網上發送ARP廣播,查詢192.168.0.2這個物理地址,同時在ARP包中填入自己的物理地址Ma,相當於發出這樣的詢問“誰拿了192.168.0.2這個地址?請回Ma這個物理地址。”計算機B在收到了這個查詢以後,以Ma為目的地址發回一個ARP包,裡面包含了自己的物理地址。這樣通訊的雙方都了解了對方的物理地址,通訊過程正式建立。
ARP防火牆
ARP防火牆
通常ARP協議都在支持廣播的網路上使用,比方乙太網,這種數據包不能跨物理網段使用,即不能跨越一個路由器(除路由器本身還用作ARP代理以外)。在實際的ARP協議軟體的實現中還有一些應該注意的事項:每台計算機上都有一個ARP緩衝,它保存了一定數量的從IP地址到MAC地址的映射,同時當一個ARP廣播到來時,雖然這個ARP廣播可能與它無關,但ARP協議軟體也會把其中的物理地址與IP地址的映射記錄下來,這樣做的好處是能夠減少ARP報在區域網上發送的次數。同時,ARP緩衝中IP地址與物理地址之間的映射並不是一但生成就永久有效,每一個ARP映射表項都有自己的時延,如果過了一定的時間還沒有新的ARP到來,那麼這個ARP映射就從緩衝中被刪除了。那麼下一次計算機向這個IP地址發送數據包的時候必須來一次新的查詢。
ARP防火牆
ARP防火牆
本地網路IP 查找的原理。事實上Windows 本身就用ARP來確定自己的IP地址是否與網路上的另一台計算機發生了衝突。當一個ARP包到來時,Windows 如果檢查到其中的IP地址與本機上的相同,而物理地址不同,這時Windows 就會向用戶報告這個IP地址已經被別人佔用。非常有意思的是,Windows 對待IP地址是以先來後到的順序分配,如果已經有人先佔了,那麼本機的網路介面就會被禁用。這也是非常惱人的“特色”因為一旦開機後有了第一次衝突,以後的任何網路操作就都無效了。Windows XP 有了一定的進步,它在發現衝突以後並不禁用介面,而是允許用戶進行修復。其實用sniffer可以看到所謂的“修復”也不過是發了幾個ARP包出去,把IP“搶”回來。在以前的文章中我描述了一個用ICMP 回送請求(類似PING)進行IP查找的程序。這個程序用併發的幾十個線程同時PING網路上的多台計算機,如果回送請求被正確的應答了,那麼可以認為這個IP地址已經被佔用,如果沒有,我們就宣稱它是空閑的。然而它有優點也有缺點,其優點是能夠PING很遠的計算機,即使不在同一個物理網段上,缺點是當目標計算機上安裝了防火牆並禁止了ICMP包,或者採用了防ICMP flood 攻擊的規則以後都有可能讓ICMP回送請求得不到應答。
ARP防火牆
ARP防火牆
ARP的優點與缺點正好與ICMP相反。它無法跨物理網段進行IP查找,但是由於沒有防火牆禁止ARP包的通過(想想看,如果禁止了ARP包,也就等於不讓人家知道你的物理地址,那麼實際上也就是將自己的計算機同網路斷開了),所以ARP包的IP查找結果一定是非常精準的。在實現了一個原始的ARP IP查找版本以後,我發現其結果並不準確,有些已經沒有人使用的IP地址被錯誤的報成有人佔用了,難道我的判斷是錯誤的?當然不,這種錯誤的原因是在Windows 的ARP緩衝中。實際上,在發送一個ARP報文的時候,Windows會首先檢查本機的ARP緩衝,如果發現了已經有對應的ARP表項,而且還沒有過期的話,Windows 並不會發送這個報文,而是直接返回給調用者這個ARP表項的內容。這樣一來,假設有計算機中途掉網,而它的ARP表項還沒有過期,那麼這個程序仍然能夠得到它的IP到MAC的映射,自然也就會錯誤的宣稱這個IP地址還在使用中了。在運行這個程序前,我使用arp –d(事實上,在看了本文以後,你就可以實現一個這樣的arp程序了)這個命令來刪除緩衝中所有的ARP表項,然後得到的結果就非常準確了。IP Helper API 提供了管理ARP緩衝的過程,所以我修改了這個程序,把arp –d的功能集成到了自己的程序中來。如果看看《使用TCP/IP協議實際網際互連(第二卷)》你就會明白ARP協議軟體中的諸多問題。
IP Helper API GetIpNetTable 函數能夠提取出本機上的所有ARP表項。使用它的方法與上一篇文章中使用的函數相當的類似,你也必須兩次使用它,第一次獲得緩衝的大小,而第二次獲得實際的ARP表。這個映射表是以數組的方式指出的。其結構如下:
typedef struct _MIB_IPNETTABLE {
DWORD dwNumEntries; //數組的大小
MIB_IPNETROW table[ANY_SIZE]; //數組本身
} MIB_IPNETTABLE, *PMIB_IPNETTABLE;
而MIB_IPNETROW 的定義:
typedef struct _MIB_IPNETROW {
DWORD dwIndex; // 網路介面的索引號
DWORD dwPhysAddrLen; // 物理地址長度
BYTE bPhysAddr[MAXLEN_PHYSADDR]; // 物理地址
DWORD dwAddr; // IP地址
ARP防火牆
ARP防火牆
DWORD dwType; // ARP表項類型} MIB_IPNETROW, *PMIB_IPNETROW;
其中dwType 即ARP表項類型是比較重要的東西,因為某些ARP表項一但設定就不再改變,比方本機地址的ARP表項和默認網關的地址表項等等,這些ARP表項並不會“過期”,除非網路故障或者設置改變了以後,會重新生成一次ARP查詢。這種表項被稱為“靜態”的。此時dwType的值為4。在程序中,我們不必刪除這類表項(雖然刪了它們也不會造成什麼後果)。
然而在實際的程序中,我使用了FlushIPNetTable這個函數來刪除特定網卡上的ARP緩衝。
然後是刪除一個表項的DeleteIpNetEntry,修改表項的SetIpNetEntry 和添加表項的CreateIpNetEntry 。還有兩個管理代理ARP表項的函數,關於代理ARP,可以看看《使用TCP/IP 協議實現網際互連(第一卷)》關於ARP代理的部分,由於與我們的程序無關,就不做介紹了。
最後需要詳述的函數是SendARP。它的原型如下:
DWORD SendARP(
IPAddr DestIP, // 目的IP 地址
IPAddr SrcIP, // 源IP地址,可選參數,把它填成0不會有問題
PULONG pMacAddr, // 返回的物理地址
PULONG PhyAddrLen // 物理地址的長度

主流防火牆


瑞星防火牆

瑞星防火牆
瑞星防火牆
國內老牌的安全軟體廠商。

風雲防火牆

風雲防火牆
風雲防火牆
國內防火牆新興力量,風雲防火牆。風雲防火牆將秉持自己的簡約而不簡單的核心開發思想,認真綜合、考慮用戶的建議,開發、整合適於當前網路時代防火牆趨勢與理念的功能,為用戶提供防護優秀、功能實用、操作簡單、佔用資源低的風雲防火牆。

奇虎360防火牆

360ARP防火牆通過在系統內核層攔截ARP攻擊數據包,確保網關正確的MAC地址不被篡改,完美的解決區域網內ARP攻擊問題。
伺服器安全狗-ARP防火牆
ARP防火牆
ARP防火牆
伺服器安全狗是國內首款支持Windows全系列操作系統(Windows2003/Windows2008 32位 64位)的基於內核級的伺服器安全防護軟體,軟體採用NDIS中間層驅動模式,從驅動層直接屏蔽攻擊,可以將針對伺服器的攻擊帶來的損失降低到最小,最大程度地保護用戶伺服器的安全。

彩影防火牆

彩影防火牆
彩影防火牆
ARP防火牆採用內核層攔截技術和主動防禦技術,幾大功能模塊(攔截ARP攻擊/攔截IP衝突/DoS攻擊抑制/安全模式/ARP數據分析/監測ARP緩存/主動防禦/追蹤攻擊源/查殺ARP病毒/系統時間保護/IE首頁保護/ARP緩存保護/自身進程保護/智能防禦)互相配合,可徹底解決ARP相關問題,扼殺DoS攻擊源。

超級巡警

超級巡警防火牆
超級巡警防火牆
專門查殺並可輔助查殺各種木馬、流氓軟體、利用rootkit技術的各種後門和其它惡意代碼(間諜軟體、蠕蟲病毒)等等。提供了多種專業工具,提供系統/IE修復、隱私保護和安全優化功能,提供了全面的系統監測功能,使你對系統的變化了如指掌,配合手動分析可近100%的查殺未知惡意代碼!

金山防火牆

金山ARP防火牆能夠雙向攔截ARP欺騙攻擊包,監測鎖定攻擊源,時刻保護區域網用戶PC的正常上網數據流向,是一款是適於個人用戶的反ARP欺騙保護工具!網關動態探測+識別——識破偽造的網關地址,動態獲取、並分析判斷後為受保護PC綁定正確的網關地址,從而時刻保障保護本機上網數據的正確流向。同時也支持用戶手動設置綁定網關地址。主動向真網關表明合法身份
雙向攔截ARP攻擊——外部攻擊、本機受感染攻擊均不影響使用
攔截來自外部接受或是由本機發出的ARP攻擊數據包並提醒用戶,保障本機及其它PC的網路通暢。保護本機不受IP衝突攻擊的影響,擊源追蹤鎖定,抓住罪魁禍首。
攔截到ARP攻擊包后立即追蹤攻擊源,找出安全威脅源頭。
ARP防火牆
ARP防火牆
主動實時升級主動漏洞修復。讓受保護PC在區域網隱身,惡性攻擊無從下手獨有“安全桌面”:採用底層驅動技術特殊保護下的獨立空間,有效隔絕盜號木馬的各種攻擊,尤其適合進行全屏遊戲的時候使用,並且和正常桌面之間的切換方便無門檻。當程序在密保的保護下運行時,如有其他程序對其產生注入等可疑行為的時候,利用金山毒霸強大的網際網路可信認證技術,且更有利於攔截危險程序可疑行為攔截+網際網路可信認證
利用金山毒霸強大的網際網路可信認證技術,利用強大的後台數據支持來判斷安全與否,從而最大程度的減少對用戶的騷擾,且更有利於攔截危險程序。對被保護進程使用了進程隱藏功能之後,如同穿上了傳說中的隱身衣,這些進程將無法被Ring3層的其他程序所發現。從而加大了木馬查找並攻擊這些程序的難度。(注意:這個功能可能會導致某些使用了行為攔截技術的軟體誤報為Rootkit)。

軟體評測


ARP防火牆
ARP防火牆
在經過一段時間的測評之後,經驗是:如果操作系統是:windowsxp、windows2000、windows2003的話,最佳的選擇是風雲防火牆。作為國內新興的防火牆,風雲操作簡單易用,即便是新手使用也不會感到吃力。除了可以為PC提供不錯的ARP防護外,還可以提供TCP/IP終止、SSL終止、URL過濾、請求分析、會話跟蹤等全面防護。如果操作系統是VISTA的話,最佳的選擇莫過於金山ARP防火牆了。金山ARP防火牆的安裝文件僅649K,資源佔用區區752K,而ARP防護能力卻著實不弱,值得考慮。另外,彩影ARP防火牆個人版的ARP防護能力也不遜於金山ARP防火牆,只是安裝文件比金山的要大,內存佔用多一點。