如何突破各種防火牆的防護

  防火牆藉由監測所有的封包並找出不符規則的內容,可以防範電腦蠕蟲或是木馬程式的快速蔓延。現在隨著人們的安全意識加強,防火牆一般都被公司企業採用來保障網路的安全,一般的攻擊者在有防火牆的情況下,一般是很難入侵的。下面談談有防火牆環境下的攻擊和檢測。

  方法步驟

  一 防火牆基本原理

  首先,我們需要了解一些基本的防火牆實現原理。防火牆目前主要分包過濾,和狀態檢測的包過濾,應用層代理防火牆。但是他們的基本實現都是類似的。

  │ │---路由器-----網絡卡│防火牆│網絡卡│----------內部網路│ │

  防火牆一般有兩個以上的網路卡,一個連到外部***router***,另一個是連到內部網路。當開啟主機網路轉發功能時,兩個網絡卡間的網路通訊能直接通過。當有防火牆時,他好比插在網絡卡之間,對所有的網路通訊進行控制。

  說到訪問控制,這是防火牆的核心了:***,防火牆主要通過一個訪問控制表來判斷的,他的形式一般是一連串的如下規則:

  1 accept from+ 源地址,埠 to+ 目的地址,埠+ 採取的動作

  2 deny ...........***deny就是拒絕。。***

  3 nat ............***nat是地址轉換。後面說***

  防火牆在網路層***包括以下的煉路層***接受到網路資料包後,就從上面的規則連表一條一條地匹配,如果符合就執行預先安排的動作了!如丟棄包。。。。

  但是,不同的防火牆,在判斷攻擊行為時,有實現上的差別。下面結合實現原理說說可能的攻擊。

  二 攻擊包過濾防火牆

  包過濾防火牆是最簡單的一種了,它在網路層截獲網路資料包,根據防火牆的規則表,來檢測攻擊行為。他根據資料包的源IP地址;目的IP地址;TCP/UDP源埠;TCP/UDP目的埠來過濾!!很容易受到如下攻擊:

  1 ip 欺騙攻擊:

  這種攻擊,主要是修改資料包的源,目的地址和埠,模仿一些合法的資料包來騙過防火牆的檢測。如:外部攻擊者,將他的資料報源地址改為內部網路地址,防火牆看到是合法地址就放行了:***。可是,如果防火牆能結合介面,地址來匹配,這種攻擊就不能成功了:***

  2 d.o.s拒絕服務攻擊

  簡單的包過濾防火牆不能跟蹤 tcp的狀態,很容易受到拒絕服務攻擊,一旦防火牆受到d.o.s攻擊,他可能會忙於處理,而忘記了他自己的過濾功能。:***你就可以饒過了,不過這樣攻擊還很少的。!

  3 分片攻擊

  這種攻擊的原理是:在IP的分片包中,所有的分片包用一個分片偏移欄位標誌分片包的順序,但是,只有第一個分片包含有TCP埠號的資訊。當IP分片包通過分組過濾防火牆時,防火牆只根據第一個分片包的Tcp資訊判斷是否允許通過,而其他後續的分片不作防火牆檢測,直接讓它們通過。

  這樣,攻擊者就可以通過先發送第一個合法的IP分片,騙過防火牆的檢測,接著封裝了惡意資料的後續分片包就可以直接穿透防火牆,直接到達內部網路主機,從而威脅網路和主機的安全。

  4 木馬攻擊

  對於包過濾防火牆最有效的攻擊就是木馬了,一但你在內部網路安裝了木馬,防火牆基本上是無能為力的。

  原因是:包過濾防火牆一般只過濾低埠***1-1024***,而高階口他不可能過濾的***因為,一些服務要用到高階口,因此防火牆不能關閉高階口的***,所以很多的木馬都在高階口開啟等待,如冰河,subseven等。。。

  但是木馬攻擊的前提是必須先上傳,執行木馬,對於簡單的包過濾防火牆來說,是容易做的。這裡不寫這個了。大概就是利用內部網路主機開放的服務漏洞。

  早期的防火牆都是這種簡單的包過濾型的,到現在已很少了,不過也有。現在的包過濾採用的是狀態檢測技術,下面談談狀態檢測的包過濾防火牆。

  三 攻擊狀態檢測的包過濾

  狀態檢測技術最早是checkpoint提出的,在國內的許多防火牆都聲稱實現了狀態檢測技術。

  可是:***很多是沒有實現的。到底什麼是狀態檢測?

  一句話,狀態檢測就是從tcp連線的建立到終止都跟蹤檢測的技術。

  原先的包過濾,是拿一個一個單獨的資料包來匹配規則的。可是我們知道,同一個tcp連線,他的資料包是前後關聯的,先是syn包,-》資料包=》fin包。資料包的前後序列號是相關的。

  如果割裂這些關係,單獨的過濾資料包,很容易被精心夠造的攻擊資料包欺騙!!!如nmap的攻擊掃描,就有利用syn包,fin包,reset包來探測防火牆後面的網路。!

  相反,一個完全的狀態檢測防火牆,他在發起連線就判斷,如果符合規則,就在記憶體登記了這個連線的狀態資訊***地址,port,選項。。***,後續的屬於同一個連線的資料包,就不需要在檢測了。直接通過。而一些精心夠造的攻擊資料包由於沒有在記憶體登記相應的狀態資訊,都被丟棄了。這樣這些攻擊資料包,就不能饒過防火牆了。

  說狀態檢測必須提到動態規則技術。在狀態檢測裡,採用動態規則技術,原先高階口的問題就可以解決了。實現原理是:平時,防火牆可以過濾內部網路的所有埠***1-65535***,外部攻擊者難於發現入侵的切入點,可是為了不影響正常的服務,防火牆一但檢測到服務必須開放高階口時,如***ftp協議,irc等***,防火牆在記憶體就可以動態地天加一條規則開啟相關的高階口。等服務完成後,這條規則就又被防火牆刪除。這樣,既保障了安全,又不影響正常服務,速度也快。!

  一般來說,完全實現了狀態檢測技術防火牆,智慧性都比較高,一些掃描攻擊還能自動的反應,因此,攻擊者要很小心才不會被發現。

  但是,也有不少的攻擊手段對付這種防火牆的。

  1 協議隧道攻擊

  協議隧道的攻擊思想類似與VPN的實現原理,攻擊者將一些惡意的攻擊資料包隱藏在一些協議分組的頭部,從而穿透防火牆系統對內部網路進行攻擊。

  例如,許多簡單地允許ICMP回射請求、ICMP回射應答和UDP分組通過的防火牆就容易受到ICMP和UDP協議隧道的攻擊。Loki和lokid***攻擊的客戶端和服務端***是實施這種攻擊的有效的工具。在實際攻擊中,攻擊者首先必須設法在內部網路的一個系統上安裝上lokid服務端,而後攻擊者就可以通過loki客戶端將希望遠端執行的攻擊命令***對應IP分組***嵌入在ICMP或UDP包頭部,再發送給內部網路服務端lokid,由它執行其中的命令,並以同樣的方式返回結果。由

  於許多防火牆允許ICMP和UDP分組自由出入,因此攻擊者的惡意資料就能附帶在正常的分組,繞過防火牆的認證,順利地到達攻擊目標主機下面的命令是用於啟動lokid伺服器程式:

  lokid-p–I–vl

  loki客戶程式則如下啟動:

  loki–d172.29.11.191***攻擊目標主機***-p–I–v1–t3

  這樣,lokid和loki就聯合提供了一個穿透防火牆系統訪問目標系統的一個後門。

  2 利用FTP-pasv繞過防火牆認證的攻擊

  FTP-pasv攻擊是針對防火牆實施入侵的重要手段之一。目前很多防火牆不能過濾這種攻擊手段。如CheckPoint的Firewall-1,在監視FTP伺服器傳送給客戶端的包的過程中,它在每個包中尋找"227"這個字串。如果發現這種包,將從中提取目標地址和埠,並對目標地址加以驗證,通過後,將允許建立到該地址的TCP連線。

  攻擊者通過這個特性,可以設法連線受防火牆保護的伺服器和服務。詳細的描述可見:

  3 反彈木馬攻擊

  反彈木馬是對付這種防火牆的最有效的方法。攻擊者在內部網路的反彈木馬定時地連線外部攻擊者控制的主機,由於連線是從內部發起的,防火牆***任何的防火牆***都認為是一個合法的連線,因此基本上防火牆的盲區就是這裡了。防火牆不能區分木馬的連線和合法的連線。

  但是這種攻擊的侷限是:必須首先安裝這個木馬!!!所有的木馬的第一步都是關鍵!!!

  四 攻擊代理

  代理是執行在應用層的防火牆,他實質是啟動兩個連線,一個是客戶到代理,另一個是代理到目的伺服器。

  實現上比較簡單,和前面的一樣也是根據規則過濾。由於執行在應用層速度比較慢/1

  攻擊代理的方法很多。

  這裡就以wingate為例,簡單說說了。***太累了***

  WinGate是目前應用非常廣泛的一種Windows95/NT代理防火牆軟體,內部使用者可以通過一臺安裝有WinGate的主機訪問外部網路,但是它也存在著幾個安全脆弱點。

  黑客經常利用這些安全漏洞獲得WinGate的非授權Web、Socks和Telnet的訪問,從而偽裝成WinGate主機的身份對下一個攻擊目標發動攻擊。因此,這種攻擊非常難於被跟蹤和記錄。

  導致WinGate安全漏洞的原因大多數是管理員沒有根據網路的實際情況對WinGate代理防火牆軟體進行合理的設定,只是簡單地從預設設定安裝完畢後就讓軟體執行,這就給攻擊者可乘之機。

  1 非授權Web訪問

  某些WinGate版本***如執行在NT系統下的2.1d版本***在誤配置情況下,允許外部主機完全匿名地訪問因特網。因此,外部攻擊者就可以利用WinGate主機來對Web伺服器發動各種Web攻擊*** 如CGI的漏洞攻擊等***,同時由於Web攻擊的所有報文都是從80號Tcp埠穿過的,因此,很難追蹤到攻擊者的來源。

  檢測

  檢測WinGate主機是否有這種安全漏洞的方法如下:

  1*** 以一個不會被過濾掉的連線***譬如說撥號連線***連線到因特網上。

  2*** 把瀏覽器的代理伺服器地址指向待測試的WinGate主機。

  如果瀏覽器能訪問到因特網,則WinGate主機存在著非授權Web訪問漏洞。

  2 非授權Socks訪問

  在WinGate的預設配置中,Socks代理***1080號Tcp埠***同樣是存在安全漏洞。與開啟的Web代理***80號Tcp埠***一樣,外部攻擊者可以利用Socks代理訪問因特網。

  防範

  要防止攻擊WinGate的這個安全脆弱點,管理員可以限制特定服務的捆綁。在多宿主***multi homed***系統上,執行以下步驟以限定如何提供代理服務。

  1選擇Socks或WWWProxyServer屬性。

  2選擇Bindings標籤。

  3按下ConnectionsWillBeAcceptedOnTheFollowingInterfaceOnly按鈕,並指定本WinGate伺服器的內部介面。

  非授權Telnet訪問

  它是WinGate最具威脅的安全漏洞。通過連線到一個誤配置的inGate伺服器的Telnet服務,攻擊者可以使用別人的主機隱藏自己的蹤跡,隨意地發動攻擊。

  檢測

  檢測WinGate主機是否有這種安全漏洞的方法如下:

  1.使用telnet嘗試連線到一臺WinGate伺服器。

  [root@happy/tmp]#telnet172.29.11.191

  Trying172.29.11.191….

  Connectedto172.29.11.191.

  Escapecharacteris‘^]'.

  Wingate>10.50.21.5

  2.如果接受到如上的響應文字,那就輸入待連線到的網站。

  3.如果看到了該新系統的登入提示符,那麼該伺服器是脆弱的。

  Connectedtohost10.50.21.5…Connected

  SunOS5.6

  Login:

  對策

  防止這種安全脆弱點的方法和防止非授權Socks訪問的方法類似。在WinGate中簡單地限制特定服務的捆綁就可以解決這個問題。一般來說,在多宿主***multihomed***系統管理員可以通過執行以下步驟來完成:

  1.選擇TelnetSever屬性。

  2.選擇Bindings標籤。

  3.按下ConnectionsWillBeAcceptedOnTheFollowingInterfaceOnly按鈕,並指定本WinGate伺服器的內部介面。

  補充閱讀:防火牆主要使用技巧

  一、所有的防火牆檔案規則必須更改。

  儘管這種方法聽起來很容易,但是由於防火牆沒有內建的變動管理流程,因此檔案更改對於許多企業來說都不是最佳的實踐方法。如果防火牆管理員因為突發情況或者一些其他形式的業務中斷做出更改,那麼他撞到槍口上的可能性就會比較大。但是如果這種更改抵消了之前的協議更改,會導致宕機嗎?這是一個相當高發的狀況。

  防火牆管理產品的中央控制檯能全面可視所有的防火牆規則基礎,因此團隊的所有成員都必須達成共識,觀察誰進行了何種更改。這樣就能及時發現並修理故障,讓整個協議管理更加簡單和高效。

  二、以最小的許可權安裝所有的訪問規則。

  另一個常見的安全問題是許可權過度的規則設定。防火牆規則是由三個域構成的:即源***IP地址***,目的地***網路/子網路***和服務***應用軟體或者其他目的地***。為了確保每個使用者都有足夠的埠來訪問他們所需的系統,常用方法是在一個或者更多域內指定打來那個的目標物件。當你出於業務持續性的需要允許大範圍的IP地址來訪問大型企業的網路,這些規則就會變得許可權過度釋放,因此就會增加不安全因素。服務域的規則是開放65535個TCP埠的ANY。防火牆管理員真的就意味著為黑客開放了65535個攻擊向量?

  三、根據法規協議和更改需求來校驗每項防火牆的更改。

  在防火牆操作中,日常工作都是以尋找問題,修正問題和安裝新系統為中心的。在安裝最新防火牆規則來解決問題,應用新產品和業務部門的過程中,我們經常會遺忘防火牆也是企業安全協議的物理執行者。每項規則都應該重新稽核來確保它能符合安全協議和任何法規協議的內容和精神,而不僅是一篇法律條文。

  四、當服務過期後從防火牆規則中刪除無用的規則。

  規則膨脹是防火牆經常會出現的安全問題,因為多數運作團隊都沒有刪除規則的流程。業務部門擅長讓你知道他們瞭解這些新規則,卻從來不會讓防火牆團隊知道他們不再使用某些服務了。瞭解退役的伺服器和網路以及應用軟體更新週期對於達成規則共識是個好的開始。執行無用規則的報表是另外一步。黑客喜歡從來不刪除規則的防火牆團隊。