一 防火墻基本原理
首先,我們需要了解一些基本的防火墻實(shí)現(xiàn)原理。防火墻目前主要分包過濾,和狀態(tài)檢測的包過濾,應(yīng)用層代理防火墻。但是他們的基本實(shí)現(xiàn)都是類似的。
│ │---路由器-----網(wǎng)卡│防火墻│網(wǎng)卡│----------內(nèi)部網(wǎng)絡(luò)│ │
防火墻一般有兩個以上的網(wǎng)絡(luò)卡,一個連到外部(router),另一個是連到內(nèi)部網(wǎng)絡(luò)。當(dāng)打開主機(jī)網(wǎng)絡(luò)轉(zhuǎn)發(fā)功能時,兩個網(wǎng)卡間的網(wǎng)絡(luò)通訊能直接通過。當(dāng)有防火墻時,他好比插在網(wǎng)卡之間,對所有的網(wǎng)絡(luò)通訊進(jìn)行控制。
說到訪問控制,這是防火墻的核心了:),防火墻主要通過一個訪問控制表來判斷的,他的形式一般是一連串的如下規(guī)則:
1 accept from+ 源地址,端口 to+ 目的地址,端口+ 采取的
動作 2 deny ...........(deny就是拒絕。。)
3 nat ............(nat是地址轉(zhuǎn)換。后面說)
防火墻在網(wǎng)絡(luò)層(包括以下的煉路層)接受到網(wǎng)絡(luò)數(shù)據(jù)包后,就從上面的規(guī)則連表一條一條地匹配,如果符合就執(zhí)行預(yù)先安排的動作了!如丟棄包。。。。
但是,不同的防火墻,在判斷攻擊行為時,有實(shí)現(xiàn)上的差別。下面結(jié)合實(shí)現(xiàn)原理說說可能的攻擊。
二 攻擊包過濾防火墻
包過濾防火墻是最
簡單的一種了,它在網(wǎng)絡(luò)層截獲網(wǎng)絡(luò)數(shù)據(jù)包,根據(jù)防火墻的規(guī)則表,來檢測攻擊行為。他根據(jù)數(shù)據(jù)包的源IP地址;目的IP地址;TCP/UDP源端口;TCP/UDP目的端口來過濾!很容易受到如下攻擊:
1 ip 欺騙攻擊:
這種攻擊,主要是修改數(shù)據(jù)包的源,目的地址和端口,模仿一些合法的數(shù)據(jù)包來騙過防火墻的檢測。如:外部攻擊者,將他的數(shù)據(jù)報(bào)源地址改為內(nèi)部網(wǎng)絡(luò)地址,防火墻看到是合法地址就放行了:)?墒,如果防火墻能結(jié)合接口,地址來匹配,這種攻擊就不能成功了:(
2 d.o.s拒絕服務(wù)攻擊
簡單的包過濾防火墻不能跟蹤 tcp的狀態(tài),很容易受到拒絕服務(wù)攻擊,一旦防火墻受到d.o.s攻擊,他可能會忙于處理,而忘記了他自己的過濾功能。:)你就可以饒過了,不過這樣攻擊還很少的。!
3 分片攻擊
這種攻擊的原理是:在IP的分片包中,所有的分片包用一個分片偏移字段標(biāo)志分片包的順序,但是,只有第一個分片包含有TCP端口號的信息。當(dāng)IP分片包通過分組過濾防火墻時,防火墻只根據(jù)第一個分片包的Tcp信息判斷是否允許通過,而其他后續(xù)的分片不作防火墻檢測,直接讓它們通過。
這樣,攻擊者就可以通過先發(fā)送第一個合法的IP分片,騙過防火墻的檢測,接著
封裝了惡意數(shù)據(jù)的后續(xù)分片包就可以直接穿透防火墻,直接到達(dá)內(nèi)部網(wǎng)絡(luò)主機(jī),從而威脅網(wǎng)絡(luò)和主機(jī)的安全。
4 木馬攻擊
對于包過濾防火墻最有效的攻擊就是木馬了,一但你在內(nèi)部網(wǎng)絡(luò)安裝了木馬,防火墻基本上是無能為力的。
原因是:包過濾防火墻一般只過濾低端口(1-1024),而高端口他不可能過濾的(因?yàn),一些服?wù)要用到高端口,因此防火墻不能關(guān)閉高端口的),所以很多的木馬都在高端口打開等待,如冰河,subseven等。。。
但是木馬攻擊的前提是必須先上傳,運(yùn)行木馬,對于簡單的包過濾防火墻來說,是容易做的。這里不寫這個了。大概就是利用內(nèi)部網(wǎng)絡(luò)主機(jī)開放的服務(wù)漏洞。
早期的防火墻都是這種簡單的包過濾型的,到現(xiàn)在已很少了,不過也有,F(xiàn)在的包過濾采用的是狀態(tài)檢測技術(shù),下面談?wù)劆顟B(tài)檢測的包過濾防火墻。
三 攻擊狀態(tài)檢測的包過濾
狀態(tài)檢測技術(shù)最早是checkpoint提出的,在國內(nèi)的許多防火墻都聲稱實(shí)現(xiàn)了狀態(tài)檢測技術(shù)。
可是:)很多是沒有實(shí)現(xiàn)的。到底什么是狀態(tài)檢測?
一句話,狀態(tài)檢測就是從tcp連接的建立到終止都跟蹤檢測的技術(shù)。
原先的包過濾,是拿一個一個單獨(dú)的數(shù)據(jù)包來匹配規(guī)則的。可是我們知道,同一個tcp連接,他的數(shù)據(jù)包是前后關(guān)聯(lián)的,先是syn包,-》數(shù)據(jù)包=》fin包。數(shù)據(jù)包的前后序列號是相關(guān)的。
如果割裂這些關(guān)系,單獨(dú)的過濾數(shù)據(jù)包,很容易被精心夠造的攻擊數(shù)據(jù)包欺騙!。∪鏽map的攻擊掃描,就有利用syn包,fin包,reset包來探測防火墻后面的網(wǎng)絡(luò)。!
相反,一個完全的狀態(tài)檢測防火墻,他在發(fā)起連接就判斷,如果符合規(guī)則,就在內(nèi)存登記了這個連接的狀態(tài)信息(地址,port,選項(xiàng)。。),后續(xù)的屬于同一個連接的數(shù)據(jù)包,就不需要在檢測了。直接通過。而一些精心夠造的攻擊數(shù)據(jù)包由于沒有在內(nèi)存登記相應(yīng)的狀態(tài)信息,都被丟棄了。這樣這些攻擊數(shù)據(jù)包,就不能饒過防火墻了。
說狀態(tài)檢測必須提到動態(tài)規(guī)則技術(shù)。在狀態(tài)檢測里,采用動態(tài)規(guī)則技術(shù),原先高端口的問題就可以解決了。實(shí)現(xiàn)原理是:平時,防火墻可以過濾內(nèi)部網(wǎng)絡(luò)的所有端口(1-65535),外部攻擊者難于發(fā)現(xiàn)入侵的切入點(diǎn),可是為了不影響正常的服務(wù),防火墻一但檢測到服務(wù)必須開放高端口時,如(ftp協(xié)議,irc等),防火墻在內(nèi)存就可以動態(tài)地天加一條規(guī)則打開相關(guān)的高端口。等服務(wù)完成后,這條規(guī)則就又被防火墻刪除。這樣,既保障了安全,又不影響正常服務(wù),速度也快。!
一般來說,完全實(shí)現(xiàn)了狀態(tài)檢測技術(shù)防火墻,智能性都比較高,一些掃描攻擊還能自動的反應(yīng),因此,攻擊者要很小心才不會被發(fā)現(xiàn)。
但是,也有不少的攻擊手段對付這種防火墻的。
1 協(xié)議隧道攻擊
協(xié)議隧道的攻擊思想類似與VPN的實(shí)現(xiàn)原理,攻擊者將一些惡意的攻擊數(shù)據(jù)包隱藏在一些協(xié)議分組的頭部,從而穿透防火墻系統(tǒng)對內(nèi)部網(wǎng)絡(luò)進(jìn)行攻擊。
例如,許多簡單地允許ICMP回射請求、ICMP回射應(yīng)答和UDP分組通過的防火墻就容易受到ICMP和UDP協(xié)議隧道的攻擊。Loki和lokid(攻擊的客戶端和服務(wù)端)是實(shí)施這種攻擊的有效的工具。在實(shí)際攻擊中,攻擊者首先必須設(shè)法在內(nèi)部網(wǎng)絡(luò)的一個系統(tǒng)上安裝上lokid服務(wù)端,而后攻擊者就可以通過loki客戶端將希望遠(yuǎn)程執(zhí)行的攻擊命令(對應(yīng)IP分組)嵌入在ICMP或UDP包頭部,再發(fā)送給內(nèi)部網(wǎng)絡(luò)服務(wù)端lokid,由它執(zhí)行其中的命令,并以同樣的方式返回結(jié)果。由
于許多防火墻允許ICMP和UDP分組自由出入,因此攻擊者的惡意數(shù)據(jù)就能附帶在正常的分組,繞過防火墻的認(rèn)證,順利地到達(dá)攻擊目標(biāo)主機(jī)下面的命令是用于啟動lokid服務(wù)器程序:
lokid-p–I–vl
loki客戶程序則如下啟動:
loki–d172.29.11.191(攻擊目標(biāo)主機(jī))-p–I–v1–t3
這樣,lokid和loki就聯(lián)合提供了一個穿透防火墻系統(tǒng)訪問目標(biāo)系統(tǒng)的一個后門。
2 利用FTP-pasv繞過防火墻認(rèn)證的攻擊
FTP-pasv攻擊是針對防火墻實(shí)施入侵的重要手段之一。目前很多防火墻不能過濾這種攻擊手段。如CheckPoint的Firewall-1,在監(jiān)視FTP服務(wù)器發(fā)送給客戶端的包的過程中,它在每個包中尋找"227"這個字符串。如果發(fā)現(xiàn)這種包,將從中提取目標(biāo)地址和端口,并對目標(biāo)地址加以驗(yàn)證,通過后,將允許建立到該地址的TCP連接。
攻擊者通過這個特性,可以設(shè)法連接受防火墻保護(hù)的服務(wù)器和服務(wù)。詳細(xì)的描述可見:
http://www.checkpoint.com/techsupport/alerts/pasvftp.html。
3 反彈木馬攻擊
反彈木馬是對付這種防火墻的最有效的方法。攻擊者在內(nèi)部網(wǎng)絡(luò)的反彈木馬定時地連接外部攻擊者控制的主機(jī),由于連接是從內(nèi)部發(fā)起的,防火墻(任何的防火墻)都認(rèn)為是一個合法的連接,因此基本上防火墻的盲區(qū)就是這里了。防火墻不能區(qū)分木馬的連接和合法的連接。
但是這種攻擊的局限是:必須首先安裝這個木馬。。∷械哪抉R的第一步都是關(guān)鍵!
四 攻擊代理
代理是運(yùn)行在應(yīng)用層的防火墻,他實(shí)質(zhì)是啟動兩個連接,一個是客戶到代理,另一個是代理到目的服務(wù)器。
實(shí)現(xiàn)上比較簡單,和前面的一樣也是根據(jù)規(guī)則過濾。由于運(yùn)行在應(yīng)用層速度比較慢/1
攻擊代理的方法很多。
這里就以wingate為例,簡單說說了。(太累了)
WinGate是目前應(yīng)用非常廣泛的一種Windows95/NT代理
防火墻軟件,內(nèi)部用戶可以通過一臺安裝有WinGate的主機(jī)訪問外部網(wǎng)絡(luò),但是它也存在著幾個安全脆弱點(diǎn)。
黑客經(jīng)常利用這些安全漏洞獲得WinGate的非授權(quán)Web、Socks和Telnet的訪問,從而偽裝成WinGate主機(jī)的身份對下一個攻擊目標(biāo)發(fā)動攻擊。因此,這種攻擊非常難于被跟蹤和記錄。
導(dǎo)致WinGate安全漏洞的原因大多數(shù)是管理員沒有根據(jù)網(wǎng)絡(luò)的實(shí)際情況對WinGate代理防火墻軟件進(jìn)行合理的設(shè)置,只是簡單地從缺省設(shè)置安裝完畢后就讓軟件運(yùn)行,這就給攻擊者可乘之機(jī)。
1 非授權(quán)Web訪問
某些WinGate版本(如運(yùn)行在NT系統(tǒng)下的2.1d版本)在誤配置情況下,允許外部主機(jī)完全匿名地訪問因特網(wǎng)。因此,外部攻擊者就可以利用WinGate主機(jī)來對Web服務(wù)器發(fā)動各種Web攻擊( 如CGI的漏洞攻擊等),同時由于Web攻擊的所有報(bào)文都是從80號Tcp端口穿過的,因此,很難追蹤到攻擊者的來源。
檢測
檢測WinGate主機(jī)是否有這種安全漏洞的方法如下:
1) 以一個不會被過濾掉的連接(譬如說撥號連接)連接到因特網(wǎng)上。
2) 把
瀏覽器的代理服務(wù)器地址指向待測試的WinGate主機(jī)。
如果瀏覽器能訪問到因特網(wǎng),則WinGate主機(jī)存在著非授權(quán)Web訪問漏洞。
2 非授權(quán)Socks訪問
在WinGate的缺省配置中,Socks代理(1080號Tcp端口)同樣是存在安全漏洞。與打開的Web代理(80號Tcp端口)一樣,外部攻擊者可以利用Socks代理訪問因特網(wǎng)。
防范
要防止攻擊WinGate的這個安全脆弱點(diǎn),管理員可以限制特定服務(wù)的捆綁。在多宿主(multi homed)系統(tǒng)上,執(zhí)行以下步驟以限定如何提供代理服務(wù)。
1選擇Socks或WWWProxyServer屬性。
2選擇Bindings標(biāo)簽。
3按下Connect
ionsWillBeAcceptedOnTheFollowingInterfaceOnly按鈕,并指定本W(wǎng)inGate服務(wù)器的內(nèi)部接口。
非授權(quán)Telnet訪問
它是WinGate最具威脅的安全漏洞。通過連接到一個誤配置的inGate服務(wù)器的Telnet服務(wù),攻擊者可以使用別人的主機(jī)隱藏自己的蹤跡,隨意地發(fā)動攻擊。
檢測
檢測WinGate主機(jī)是否有這種安全漏洞的方法如下:
1.使用telnet嘗試連接到一臺WinGate服務(wù)器。
[root@happy/tmp]#telnet172.29.11.191
Trying172.29.11.191….
Connectedto172.29.11.191.
Escapech
aracteris‘^]’.
Wingate>10.50.21.5
2.如果接受到如上的響應(yīng)文本,那就輸入待連接到的網(wǎng)站。
3.如果看到了該新系統(tǒng)的登錄提示符,那么該服務(wù)器是脆弱的。
Connectedtohost10.50.21.5…Connected
SunOS5.6
Login:
對策
防止這種安全脆弱點(diǎn)的方法和防止非授權(quán)Socks訪問的方法類似。在WinGate中簡單地限制特定服務(wù)的捆綁就可以解決這個問題。一般來說,在多宿主(multihomed)系統(tǒng)管理員可以通過執(zhí)行以下步驟來完成:
1.選擇TelnetSever屬性。
2.選擇Bindings標(biāo)簽。
3.按下ConnectionsWillBeAcceptedOnTheFollowingInterfaceOnly按鈕,并指定本W(wǎng)inGate服務(wù)器的內(nèi)部接口。
五 后話
有防火墻的攻擊不單是上面的一點(diǎn),我有什么寫的不對的,大家指正。
一直以來,黑客都在研究攻擊防火墻的技術(shù)和手段,攻擊的手法和技術(shù)越來越智能化和多樣化。但是就黑客攻擊防火墻的過程上看,大概可以分為三類攻擊。
第一類攻擊防火墻的方法是探測在目標(biāo)網(wǎng)絡(luò)上安裝的是何種防火墻系統(tǒng)并且找出此防火墻系統(tǒng)允許哪些服務(wù)。我們叫它為對防火墻的探測攻擊。
第二類攻擊防火墻的方法是采取地址欺騙、TCP序號攻擊等手法繞過防火墻的認(rèn)證機(jī)制,從而 對防火墻和內(nèi)部網(wǎng)絡(luò)破壞。
第三類攻擊防火墻的方法是尋找、利用防火墻系統(tǒng)實(shí)現(xiàn)和設(shè)計(jì)上的安全漏洞,從而有針對性地發(fā)動攻擊。這種攻擊難度比較大,可是破壞性很大。