楊 杰,盧選民,張輝棟,李成福
(西北工業(yè)大學(xué) 電子信息學(xué)院,陜西 西安710129)
隨著Internet的迅速發(fā)展,信息隱藏成為網(wǎng)絡(luò)時(shí)代信息安全領(lǐng)域興起的一個(gè)研究熱點(diǎn),在版權(quán)保護(hù)、隱蔽通信等許多方面有著非常廣闊的應(yīng)用前景[1]。信息隱藏被用來(lái)保護(hù)信息安全的同時(shí),也可能被用來(lái)傳送一些不良信息給網(wǎng)絡(luò)用戶(hù),如何過(guò)濾或者截獲并替換掉這些不良信息,就成為該領(lǐng)域研究的熱點(diǎn)。
針對(duì)NAT服務(wù)器對(duì)流入內(nèi)網(wǎng)的不良文本信息的隱藏和替換問(wèn)題(圖1為網(wǎng)絡(luò)拓?fù)鋱D),本文基于 Netfilter/iptables模塊和MITM技術(shù),在Linux環(huán)境下通過(guò)L7-filter和Ettercap技術(shù)實(shí)現(xiàn)了網(wǎng)絡(luò)文本信息的隱藏和替換。
圖1 網(wǎng)絡(luò)拓?fù)鋱D
在Linux系統(tǒng)中,Netfilter是其內(nèi)核的一個(gè)完整且功能強(qiáng)大的防火墻系統(tǒng);iptables模塊則是Netfilter提供的一種用戶(hù)工具,是與Linux內(nèi)核集成的IP信息包過(guò)濾系統(tǒng)[2]。通過(guò)這種工具可以實(shí)現(xiàn)NAT,進(jìn)而隱藏IP地址信息。
iptables的基本語(yǔ)法規(guī)則如下:
iptables[-t table]command[match][target];
iptables 中 共 有 三 類(lèi) 表:Mangle、Nat和 Filter。 Mangle表對(duì)于滿(mǎn)足常規(guī)的防火墻應(yīng)用作用不大。Nat表的作用在于對(duì)數(shù)據(jù)包的源或目的IP地址進(jìn)行轉(zhuǎn)換[3]。Nat表又可主要分為三條鏈:(1)DNAT:改變包的目的地址,以使包能從路由到某臺(tái)主機(jī)上;(2)SNAT:改變包的源地址,可以隱藏用戶(hù)的本地網(wǎng)絡(luò);(3)MASQUERADE:與SNAT作用基本一樣,對(duì)每個(gè)匹配的包,MASQUERADE都要查找可用的IP地址。Filter表用來(lái)過(guò)濾數(shù)據(jù)包,可以在任何時(shí)候匹配并過(guò)濾包,對(duì)包做DROP或ACCEPT。
iptables模塊處理流程[2]:首先,當(dāng)一個(gè)包進(jìn)來(lái)時(shí),內(nèi)核根據(jù)路由表決定包的目標(biāo)。如果目標(biāo)主機(jī)就是本機(jī),則直接進(jìn)入INPUT鏈,再由本地正在等待該包的進(jìn)程接收;否則,如果進(jìn)來(lái)的包的目標(biāo)不是本機(jī),則看是否內(nèi)核允許轉(zhuǎn)發(fā)包[4-5]。最后,Linux防火墻主機(jī)本身能夠產(chǎn)生包,這種包只經(jīng)過(guò)OUTPUT鏈被送出防火墻。圖2給出了數(shù)據(jù)包經(jīng)過(guò)iptables模塊的處理流程。
圖2 數(shù)據(jù)包經(jīng)過(guò)iptables模塊的處理流程
L7-filter是一個(gè)Netfilter/iptables的增強(qiáng)型補(bǔ)丁插件,它的核心是通過(guò)一個(gè)工作在內(nèi)核級(jí)的可對(duì)數(shù)據(jù)包進(jìn)行分類(lèi)的補(bǔ)丁程序與iptables進(jìn)行聯(lián)動(dòng),與其他基于端口包分類(lèi)工具的不同處在于,它是基于數(shù)據(jù)內(nèi)容匹配和分析的[2]。利用正則表達(dá)式匹配Layer7應(yīng)用協(xié)議(HTTP、FTP)的傳輸數(shù)據(jù),能更準(zhǔn)確地分析數(shù)據(jù)包。
L7-filter在默認(rèn)情況下,將同一個(gè)連接中的10個(gè)數(shù)據(jù)包或者2 KB的數(shù)據(jù)包內(nèi)容放在緩存中。并將緩存中的內(nèi)容作為一段普通的文本,用模板文件中的正則去搜索,如果發(fā)現(xiàn)有正則匹配的內(nèi)容,就會(huì)在Netfilter中將這幾個(gè)數(shù)據(jù)包DROP丟掉或者給數(shù)據(jù)包打上標(biāo)記。
下面就是該命令對(duì)于數(shù)據(jù)包中的內(nèi)容進(jìn)行匹配及替換的命令:
#iptables-A FORWARD-m mark--mark 1-m filterstring--string"xxx.xxx.xxx.xxx"--replace-string"xxx.xxx.xxx.xxx"?-j LOG--log-prefix"ip filter:"
中間人攻擊 MITM(Man-in-the-Middle Attack)是一種“間接”的入侵攻擊,這種攻擊模式是通過(guò)各種技術(shù)手段將受入侵者控制的一臺(tái)計(jì)算機(jī)虛擬放置在網(wǎng)絡(luò)連接中的兩臺(tái)通信計(jì)算機(jī)之間,這臺(tái)計(jì)算機(jī)就稱(chēng)為 “中間人”。然后入侵者把這臺(tái)計(jì)算機(jī)模擬為一臺(tái)或兩臺(tái)原始計(jì)算機(jī),使“中間人”能夠與原始計(jì)算機(jī)建立活動(dòng)連接并允許其讀取或修改傳遞的信息,然而兩個(gè)原始計(jì)算機(jī)用戶(hù)卻認(rèn)為他們是在互相通信。通常,這種“攔截?cái)?shù)據(jù)——修改數(shù)據(jù)——發(fā)送數(shù)據(jù)”的過(guò)程就被稱(chēng)為“會(huì)話(huà)劫持”。
Ettercap是基于MITM技術(shù)的一款有效的、靈活的中介工具。利用其特性可以實(shí)現(xiàn)數(shù)據(jù)包過(guò)濾和丟棄以及替換功能:可以建立一個(gè)查找特定字符串的過(guò)濾鏈,根據(jù)這個(gè)過(guò)濾鏈對(duì)TCP/UDP數(shù)據(jù)包進(jìn)行過(guò)濾并用自己的數(shù)據(jù)替換這些數(shù)據(jù)包,或丟棄整個(gè)數(shù)據(jù)包。它可以支持并收 集 以 下 協(xié) 議 的 口 令 信 息 :TELNET、FTP、POP、RLOGIN、SSH1、ICQ、SMB、MySQL、HTTP 等。通過(guò) shell腳本的編寫(xiě)可以實(shí)現(xiàn)基于Ettercap的文本內(nèi)容匹配與替換。
通過(guò)在終端下運(yùn)行shell[3]腳本即可實(shí)現(xiàn)基于文本的隱藏與替換。為了方便用戶(hù)操作,基于JAVA Swing組件[4]編寫(xiě)了如圖3所示的軟件。
用戶(hù)可以按要求填寫(xiě)內(nèi)容,然后單擊替換按鈕后程序即可運(yùn)行。當(dāng)內(nèi)網(wǎng)用戶(hù)發(fā)出請(qǐng)求后,若響應(yīng)內(nèi)容中包含用戶(hù)要替換的內(nèi)容,NAT服務(wù)器會(huì)將該文本替換成用戶(hù)設(shè)定的,然后結(jié)果信息返回給用戶(hù),從而實(shí)現(xiàn)網(wǎng)絡(luò)文本的替換。
在Linux操作系統(tǒng)下,實(shí)驗(yàn)結(jié)果如下:圖4所示為替換之前的文本內(nèi)容,圖5所示為替換之后的文本內(nèi)容,從而實(shí)現(xiàn)了網(wǎng)絡(luò)文本的隱藏與替換功能。
在html網(wǎng)頁(yè)中,〈body〉標(biāo)簽中的文本內(nèi)容基本上都可以匹配并替換成預(yù)先設(shè)定的,然而有的內(nèi)容是通過(guò)腳本語(yǔ)言實(shí)現(xiàn)的,還有很多腳本文件是通過(guò)壓縮文件發(fā)送到客戶(hù)端的,這種的就匹配不到。
針對(duì)這種情況,可以利用iptables的過(guò)濾無(wú)效數(shù)據(jù)包的功能,當(dāng)發(fā)現(xiàn)某網(wǎng)頁(yè)中包含想要替換的文本但卻替換不了時(shí),可以將該數(shù)據(jù)包過(guò)濾掉。應(yīng)用程序界面如圖6所示。
本文針對(duì)NAT服務(wù)器對(duì)流入內(nèi)網(wǎng)的不良文本信息的隱藏和替換問(wèn)題,基于Netfilter/iptables模塊和MITM技術(shù),在Linux環(huán)境下通過(guò) L7-filter和Ettercap技術(shù)實(shí)現(xiàn)了網(wǎng)絡(luò)文本信息的隱藏和替換。同時(shí),通過(guò)網(wǎng)絡(luò)實(shí)驗(yàn)驗(yàn)證了其有效性。
[1]CACHE J,WRIGHT J.黑客大曝光:無(wú)線網(wǎng)絡(luò)安全[M].李瑞民,譯.北京:機(jī)械工業(yè)出版社,2012.
[2]RASH M.Linux防火墻[M].陳健,譯.北京:人民郵電出版社,2009.
[3]豐士昌.Linux指令與 Shell編程[M].北京:科學(xué)出版社,2012.
[4]王鵬,何昀峰.Java Swing圖形界面開(kāi)發(fā)與案例詳解[M].北京:清華大學(xué)出版社,2008.
[5]白滔,劉大滏.Linux下怎樣利用 Iptables實(shí)現(xiàn)網(wǎng)絡(luò)防火墻的監(jiān)控功能[J].貴州氣象,2006,30(4):33-35.
[6]郝慧珍,傅汝林.基于 IP偽裝的網(wǎng)絡(luò)安全技術(shù)研究[J].成都理工學(xué)院學(xué)報(bào),2002,29(3):315-319.
[7]Zhang Lixia.A retrospective view of network address translation[J].IEEE Network,2008,22(5):8-12.
[8]HEAGARTY T.Using iptables and the netfilter framework[OL].(2007-03-xx)[2012-12-13]inDEPTH,www.ipmagazine.org/en:LINUX+DVD 3/2007.
[9]ANDREASSON O.Iptable tutorial[OL].http://www.frozentux.net/documents/iptables-tutorial/.