再談防火牆及防火牆的滲透

                                 再談防火牆及防火牆的滲透(zz)

                                                                mrcool (mrcoolfuyu_at_tom.com)
(一)  防火牆介紹

    防火牆是一種功能,它使得內部網絡和外部網絡或Internet互相隔離,以此來保護內部網絡或主機。簡單的防火牆可以由Router,3 Layer Switch的ACL(access control list)來充當,也可以用一臺主機,甚至是一個子網來實現。複雜的可以購買專門的硬件防火牆或軟件防火牆來實現。
    
    防火牆的功能有:
    1、過濾掉不安全服務和非法用戶
    2、控制對特殊站點的訪問
    3、提供監視Internet安全和預警的方便端點
    
    防火牆並不是萬能的,也有很多防火牆無能爲力的地方:
    1、防火牆防不住繞過防火牆的攻擊。比如,防火牆不限制從內部網絡到外部網絡的連接,那麼,一些內部用戶可能形成一個直接通往Internet的連接,從而繞過防火牆,造成一個潛在的backdoor.惡意的外部用戶直接連接到內部用戶的機器上,以這個內部用戶的機器爲跳板,發起繞過防火牆的不受限制的攻擊。
    2、防火牆不是防毒牆,不能攔截帶病毒的數據在網絡之間傳播。
    3、防火牆對數據驅動式攻擊也無能爲力。

    因此,我們不能過分依賴防火牆。網絡的安全是一個整體,並不是有某一樣特別出色的配置。網絡安全遵循的是“木桶原則”。

    一般防火牆具備以下特點:

    1、廣泛的服務支持:通過將動態的、應用層的過濾能力和認證相結合,可實現WWW瀏覽器、HTTP服務器、 FTP等;

    2、對私有數據的加密支持:保證通過Internet進行虛擬私人網絡和商務活動不受損壞;

    3、客戶端認證只允許指定的用戶訪問內部網絡或選擇服務:企業本地網與分支機構、商業夥伴和移動用戶間安全通信的附加部分;

    4、反欺騙:欺騙是從外部獲取網絡訪問權的常用手段,它使數據包好似來自網絡內部。防火牆能監視這樣的數據包並能扔掉它們;

    5、C/S模式和跨平臺支持:能使運行在一平臺的管理模塊控制運行在另一平臺的監視模塊。

    讓我們來看看傳統的防火牆工作原理及優缺點:
    
    1.(傳統的)包過濾防火牆的工作原理

  包過濾是在IP層實現的,因此,它可以只用路由器完成。包過濾根據包的源IP地址、目的IP地址、源端口、目的端口及包傳遞方向等報頭信息來判斷是否允許包通過。過濾用戶定義的內容,如IP地址。其工作原理是系統在網絡層檢查數據包,與應用層無關,包過濾器的應用非常廣泛,因爲CPU用來處理包過濾的時間可以忽略不計。而且這種防護措施對用戶透明,合法用戶在進出網絡時,根本感覺不到它的存在,使用起來很方便。這樣系統就具有很好的傳輸性能,易擴展。但是這種防火牆不太安全,因爲系統對應用層信息無感知——也就是說,它們不理解通信的內容,不能在用戶級別上進行過濾,即不能識別不同的用戶和防止IP地址的盜用。如果攻擊者把自己主機的IP地址設成一個合法主機的IP地址,就可以很輕易地通過包過濾器,這樣更容易被黑客攻破。 基於這種工作機制,包過濾防火牆有以下缺陷:

  通信信息:包過濾防火牆只能訪問部分數據包的頭信息;

  通信和應用狀態信息:包過濾防火牆是無狀態的,所以它不可能保存來自於通信和應用的狀態信息;

  信息處理:包過濾防火牆處理信息的能力是有限的。

    比如針對微軟IIS漏洞的Unicode攻擊,因爲這種攻擊是走的防火牆所允許的80端口,而包過濾的防火牆無法對數據包內容進行覈查,因此此時防火牆等同於虛設,未打相應patch的提供web服務的系統,即使在防火牆的屏障之後,也會被攻擊者輕鬆拿下超級用戶的權限。
    
    包過濾防火牆的缺點和不足,可以在應用層解決。下面我們來看看應用層網關

  2.應用網關
    
    1、應用代理服務器(Application Gateway Proxy)

    在網絡應用層提供授權檢查及代理服務。當外部某臺主機試圖訪問受保護網絡時,必須先在防火牆上經過身份認證。通過身份認證後,防火牆運行一個專門爲該網絡設計的程序,把外部主機與內部主機連接。在這個過程中,防火牆可以限制用戶訪問的主機、訪問時間及訪問的方式。同樣,受保護網絡內部用戶訪問外部網時也需先登錄到防火牆上,通過驗證後,纔可訪問。

    應用網關代理的優點是既可以隱藏內部IP地址,也可以給單個用戶授權,即使攻擊者盜用了一個合法的IP地址,也通不過嚴格的身份認證。因此應用網關比報文過濾具有更高的安全性。但是這種認證使得應用網關不透明,用戶每次連接都要受到認證,這給用戶帶來許多不便。這種代理技術需要爲每個應用寫專門的程序。

    2、迴路級代理服務器

    即通常意義的代理服務器,它適用於多個協議,但不能解釋應用協議,需要通過其他方式來獲得信息,所以,迴路級代理服務器通常要求修改過的用戶程序。

    套接字服務器(Sockets Server)就是迴路級代理服務器。套接字(Sockets)是一種網絡應用層的國際標準。當受保護網絡客戶機需要與外部網交互信息時,在防火牆上的套服務器檢查客戶的User ID、IP源地址和IP目的地址,經過確認後,套服務器才與外部的服務器建立連接。對用戶來說,受保護網與外部網的信息交換是透明的,感覺不到防火牆的存在,那是因爲網絡用戶不需要登錄到防火牆上。但是客戶端的應用軟件必須支持 “Socketsified API”,受保護網絡用戶訪問公共網所使用的IP地址也都是防火牆的IP地址。

    3、代管服務器

    代管服務器技術是把不安全的服務如FTP、Telnet等放到防火牆上,使它同時充當服務器,對外部的請求作出回答。與應用層代理實現相比,代管服務器技術不必爲每種服務專門寫程序。而且,受保護網內部用戶想對外部網訪問時,也需先登錄到防火牆上,再向外提出請求,這樣從外部網向內就只能看到防火牆,從而隱藏了內部地址,提高了安全性。

    4、IP通道(IP Tunnels)

    如果一個大公司的兩個子公司相隔較遠,通過Internet通信。這種情況下,可以採用IP Tunnels來防止Internet上的黑客截取信息,從而在Internet上形成一個虛擬的企業網。

    5、網絡地址轉換器(NAT Network Address Translate)

    當受保護網連到Internet上時,受保護網用戶若要訪問Internet,必須使用一個合法的IP地址。但由於合法Internet IP地址有限,而且受保護網絡往往有自己的一套IP地址規劃(非正式IP地址)。網絡地址轉換器就是在防火牆上裝一個合法IP地址集。當內部某一用戶要訪問Internet時,防火牆動態地從地址集中選一個未分配的地址分配給該用戶,該用戶即可使用這個合法地址進行通信。同時,對於內部的某些服務器如Web服務器,網絡地址轉換器允許爲其分配一個固定的合法地址。外部網絡的用戶就可通過防火牆來訪問內部的服務器。這種技術既緩解了少量的IP地址和大量的主機之間的矛盾,又對外隱藏了內部主機的IP地址,提高了安全性。

    6、隔離域名服務器(Split Domain Name Server )

    這種技術是通過防火牆將受保護網絡的域名服務器與外部網的域名服務器隔離,使外部網的域名服務器只能看到防火牆的IP地址,無法瞭解受保護網絡的具體情況,這樣可以保證受保護網絡的IP地址不被外部網絡知悉。

    7、郵件技術(Mail Forwarding)

    當防火牆採用上面所提到的幾種技術使得外部網絡只知道防火牆的IP地址和域名時,從外部網絡發來的郵件,就只能送到防火牆上。這時防火牆對郵件進行檢查,只有當發送郵件的源主機是被允許通過的,防火牆纔對郵件的目的地址進行轉換,送到內部的郵件服務器,由其進行轉發。

  應用網關是檢查所有應用層的信息包,並將檢查的內容信息放入決策過程,這樣安全性有所提高。然而,它們是通過打破客戶機/服務器模式實現的,每一個客戶機/服務器通信需要兩個連接:一個是從客戶端到防火牆,另一個是從防火牆到服務器。另外,每一個代理需要一個不同的應用進程,或一個後臺運行的服務程序,這樣如果有一個新的應用就必須添加對此應用的服務程序,否則不能使用該種服務,可伸縮性差。 基於這種工作機制,應用網關防火牆有以下缺陷:

  連接限制:每一個服務需要自己的代理,所以可提供的服務數和伸縮性受到限制;

  技術限制:應用網關不能爲UDP、RPC及普通協議族的其他服務提供代理;

  性能:實現應用網關防火牆犧牲了一些系統性能。

    
防火牆的體系結構及組合形式

    1、屏蔽路由器(Screening Router)

    這是防火牆最基本的構件。它可以由廠家專門生產的路由器實現,也可以用主機來實現。屏蔽路由器作爲內外連接的唯一通道,要求所有的報文都必須在此通過檢查。路由器上可以裝基於IP層的報文過濾軟件,實現報文過濾功能。許多路由器本身帶有報文過濾配置選項,但一般比較簡單。

單純由屏蔽路由器構成的防火牆的危險帶包括路由器本身及路由器允許訪問的主機。它的缺點是一旦被攻陷後很難發現,而且不能識別不同的用戶。

    2、雙宿主機網關(Dual Homed Gateway)

    任何擁有多個接口卡的系統都被稱爲多宿的,雙宿主機網關是用一臺裝有兩塊網卡的主機做防火牆。兩塊網卡各自與受保護網和外部網相連。主機上運行着防火牆軟件,可以轉發應用程序,提供服務等。

    雙宿主機網關優於屏蔽路由器的地方是:堡壘主機的系統軟件可用於維護系統日誌、硬件拷貝日誌或遠程日誌。這對於日後的檢查很有用。但這不能幫助網絡管理者確認內網中哪些主機可能已被黑客入侵。

    雙宿主機網關的一個致命弱點是:一旦入侵者侵入堡壘主機並使其只具有路由功能,則任何網上用戶均可以隨便訪問內網。

    3、被屏蔽主機網關(Screened Host Gateway)

    屏蔽主機網關易於實現也很安全,因此應用廣泛。例如,一個分組過濾路由器連接外部網絡,同時一個堡壘主機安裝在內部網絡上,通常在路由器上設立過濾規則,並使這個堡壘主機成爲從外部網絡唯一可直接到達的主機,這確保了內部網絡不受未被授權的外部用戶的攻擊。

    如果受保護網是一個虛擬擴展的本地網,即沒有子網和路由器,那麼內網的變化不影響堡壘主機和屏蔽路由器的配置。危險帶限制在堡壘主機和屏蔽路由器。網關的基本控制策略由安裝在上面的軟件決定。如果攻擊者設法登錄到它上面,內網中的其餘主機就會受到很大威脅。這與雙穴主機網關受攻擊時的情形差不多。

    4、被屏蔽子網 (Screened Subnet)

    這種方法是在內部網絡和外部網絡之間建立一個被隔離的子網,用兩臺分組過濾路由器將這一子網分別與內部網絡和外部網絡分開。在很多實現中,兩個分組過濾路由器放在子網的兩端,在子網內構成一個“非軍事區”DMZ。有的屏蔽子網中還設有一堡壘主機作爲唯一可訪問點,支持終端交互或作爲應用網關代理。這種配置的危險帶僅包括堡壘主機、子網主機及所有連接內網、外網和屏蔽子網的路由器。

    如果攻擊者試圖完全破壞防火牆,他必須重新配置連接三個網的路由器,既不切斷連接又不要把自己鎖在外面,同時又不使自己被發現,這樣也還是可能的。但若禁止網絡訪問路由器或只允許內網中的某些主機訪問它,則攻擊會變得很困難。在這種情況下,攻擊者得先侵入堡壘主機,然後進入內網主機,再返回來破壞屏蔽路由器,整個過程中不能引發警報。

    建造防火牆時,一般很少採用單一的技術,通常是多種解決不同問題的技術的組合。這種組合主要取決於網管中心向用戶提供什麼樣的服務,以及網管中心能接受什麼等級風險。採用哪種技術主要取決於經費,投資的大小或技術人員的技術、時間等因素。一般有以下幾種形式:
1、使用多堡壘主機;
2、合併內部路由器與外部路由器;
3、合併堡壘主機與外部路由器;
4、合併堡壘主機與內部路由器;
5、使用多臺內部路由器;
6、使用多臺外部路由器;
7、使用多個周邊網絡;
8、使用雙重宿主主機與屏蔽子網。

    隨着人們對網絡安全意識的提高,防火牆的應用越來越廣泛。有錢的用高級硬件防火牆,沒錢的用免費的軟件防火牆。那麼,硬件防火牆和軟件防火牆相比,有哪些優點呢?
    硬件防火牆採用專用的硬件設備,然後集成生產廠商的專用防火牆軟件。從功能上看,硬件防火牆內建安全軟件,使用專屬或強化的操作系統,管理方便,更換容易,軟硬件搭配較固定。硬件防火牆效率高,解決了防火牆效率、性能之間的矛盾,可以達到線性。
軟件防火牆一般基於某個操作系統平臺開發,直接在計算機上進行軟件的安裝和配置。由於客戶平臺的多樣性,軟件防火牆需支持多操作系統,如Unix、Linux、SCO-Unix、Windows等,代碼龐大、安裝成本高、售後支持成本高、效率低。

1、性能優勢。防火牆的性能對防火牆來說是至關重要的。它決定了每秒鐘通過防火牆的數據流量。單位是Bps,從幾十M到幾百M不等,還有千兆防火牆甚至達到幾G的防火牆。而軟件防火牆則不可能達到如此高的速率。

2、CPU佔用率的優勢。硬件防火牆的CPU佔用率當然是0了,而軟件防火牆就不同了,如果處於節約成本的考慮將防火牆軟件安裝在提供服務的主機上,當數據流量較大時,CPU佔用率將是主機的殺手,將拖跨主機。

3、售後支持。硬件防火牆廠家會對防火牆產品有跟蹤的服務支持,而軟件防火牆的用戶能得到這種機會的相對較少,而且廠家也不會在軟件防火牆上下太大的功夫和研發經費。



------------------------------------------------------------

(二)防火牆滲透

    以上我們簡單的介紹了防火牆的原理,分類,優缺點等。下面,我們將對防火牆的滲透技術做一下簡單的介紹。

    精心配置過的防火牆固然將讓絕大多數crackers擋在外圍,掌握網絡控制的主動權,但是,防火牆並不是萬能的,我們也在上一節的內容中簡單的講了防火牆的缺點。沒有任何一樣網絡產品可以說是絕對安全的。綠盟的san的一篇的文章介紹了滲透防火牆的shellcode,有興趣的朋友可以參考一下:http://www.winnerinfo.net/infoview.asp?Kind=145&ID=529 ,我在這裏想再提起“通道技術”。

    說到通道技術,我想再提一下“端口複用”,很多朋友以爲通道技術就是端口複用技術。那麼,錯了,端口複用是指一個端口上建立了多個連接,而不是在一個端口上面開放了多個服務而互不干擾。假如你想在已經開放了WWW服務的主機上,在80端口再添加一項服務,只有2種可能:1.添加服務失敗 2.WWW服務出錯。那麼什麼是通道呢?這裏所謂的通道,是指一種繞過防火牆端口屏蔽的通訊方式。防火牆兩端的數據包封裝在防火牆所允許通過的數據包類型或是端口上,然後穿過防火牆與處在防火牆後面的主機通訊,當封裝的數據包到達目的地時,再將數據包還原,並將還原後的數據包交送到相應的服務上,是在一個端口上面開放了多個服務而互不干擾的。
    
    爲了通信,不論是什麼防火牆,都不可能把所有的服務,所有的端口都封閉。(如果有那樣的防火牆,還不如拔網線來的直接,呵呵)大多數的防火牆或多或少都要開放一個端口或服務(比如HTTP),只要開放了端口和服務,就給了我們滲透的可能。HTTP是一種比較簡單而常用的互交式協議,你給服務器發送一個請求,服務器就返回給你一個迴應。幾乎所有的主機都被允許發送HTTP請求。網絡上HTTP協議使用的是如此廣泛,這也決定了我們可以通過使用通道技術而輕鬆的通過防火牆或其他類似設備而將我們需要的數據發送至目標。一個很典型的例子就是http-tunnel.

    在http-tunnel的官方網站http://www.http-tunnel.com上有這麼一句話:“http-tunnel在HTTP請求中建立了一個雙向的虛擬數據連接。HTTP請求可以經過代理而被髮送,這就可以被那些處在限制了端口的防火牆背後的用戶使用。如果通過HTTP代理的WWW瀏覽是被允許的,那麼http-tunnel也就可以成立,也就是說,可以在防火牆外telnet或者PPP到防火牆的內部。”這樣看來,攻擊者可以使用這種技術來實現遠程控制。我們來看看http-tunnel的設計思路:

    A主機在防火牆的外面,沒有做任何限制。B主機在防火牆內部,受到防火牆保護,防火牆配置的訪問控制原則是隻允許80端口的數據進出,但主機開放了telnet服務。現在假設需要從A系統Telnet到B系統上去,怎麼辦?使用正常的telnet肯定是不可能了,因爲telnet使用的23端口被防火牆屏蔽,防火牆收到這個telnet的包後,發現不符合只允許80端口的數據通過的過濾原則,就丟棄了。但我們知道可用的有80端口,那麼這個時候使用Httptunnel通道,就是一個好的辦法,思路如下:

    在A機器上運行tunnel的客戶端,讓它偵聽本機的一個不被使用的任意指定端口(最好是1024以上65535以下),如,8888。同時將來自8888端口上的數據指引到B機的80端口上,因爲是80端口,防火牆是允許通過的。然後在B機上起一個服務端,(在只有80端口對外開放的情況下,只能先得到一個WEBSHELL,想辦法提升自己的權限,並運行服務端)同樣掛接在80端口上,同時指引80端口的來自客戶端的轉發到本機的telnet服務端口23,這樣就OK了。現在在A機上telnet本機端口8888,根據剛纔的設置數據包會被轉發到目標端口爲80的B機,因爲防火牆允許通過80端口的數據,因此數據包暢通的穿過防火牆,到達B機。此時B機在80端口偵聽的進程收到來自A的數據包,會將數據包還原,再交還給telnet進程。當數據包需要由B到A返回時,將由80端口再回送,同樣可以順利的通過防火牆。

    上述功能似乎用端口映射也能做的到,把A主機上的23端口重定向到80端口,再把B主機上的80端口重定向到23端口就行了。但如果B主機已經開啓了WWW服務了呢?要使用上述功能,使用端口映射必須犧牲B主機的80端口,這是得不償失的。試想在一次滲透防火牆的對某臺主機的攻擊中,把別人本來已經開啓的WWW服務DOWN了,你還能在這臺主機上呆多久?但是,使用http-tunnel就可以完美實現,即使B主機已經開放80,提供WWW,我們也照樣可以發送telnet到其80端口上,享受到“正版”的telnet服務。

    對於通道技術,我們的解決方案是採用應用層的數據包檢測技術,因爲在正常的HTTP請求中,GET、POST等行爲是必不可少的,如果來自一個連接的HTTP請求中,總是沒有GET、POST,那麼這個連接肯定有問題。從而終止此連接。現在已經有公司的IDS產品能夠查出隱藏在80中的tunnel,但是這些IDS產品的費用恐怕也不是中小型企業能承受的了的。

    對於防火牆的滲透,還有一些方法,比如找防火牆本身的設計缺陷等等,但那些難度太大。恐怕不是我們應該考慮的了。


--------------------------------------------------------

總結:

我們又把防火牆和防火牆的滲透深入淺出的複習了一遍。現在我們應該更清楚的知道,防火牆不是萬能的,即使是經過精心配置的防火牆也抵擋不住隱藏在看似正常數據下的通道程序。那麼,對於一個網絡來說,我們應該怎麼做才能夠保證它的最大安全呢?

1.根據需要合適的配置防火牆,儘量少開端口。

2.採用過濾嚴格的WEB程序。

3.採用加密的HTTP協議(HTTPS)。

4.如果條件允許,購買一臺功能較強大的NIDS。

5.管理好你的內網用戶,防止攻擊者和內網用戶直接連接繞過防火牆。

6.經常升級你的firewall產品。




參考資料:

http://www.http-tunnel.com
http://security.zz.ha.cn

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章