摘 要: 信息隱藏是網絡時代信息安全領域新興起的一個研究熱點。基于Netfilter/iptables模塊和MITM(Man-in-the-Middle)技術,在Linux環境下通過L7-filter和Ettercap技術實現了NAT服務器對流入內部網絡的不良文本信息的隱藏和替換。通過網絡實驗證明,達到了預期的設計目的。
關鍵詞: Netfilter/iptables; MITM; L7-filter; Ettercap; 信息隱藏與替換
隨著Internet的迅速發展,信息隱藏成為網絡時代信息安全領域興起的一個研究熱點,在版權保護、隱蔽通信等許多方面有著非常廣闊的應用前景[1]。信息隱藏被用來保護信息安全的同時,也可能被用來傳送一些不良信息給網絡用戶,如何過濾或者截獲并替換掉這些不良信息,就成為該領域研究的熱點。
針對NAT服務器對流入內網的不良文本信息的隱藏和替換問題(圖1為網絡拓撲圖),本文基于Netfilter/iptables模塊和MITM技術,在Linux環境下通過L7-filter和Ettercap技術實現了網絡文本信息的隱藏和替換。
1 Netfilter/iptables模塊
在Linux系統中,Netfilter是其內核的一個完整且功能強大的防火墻系統;iptables模塊則是Netfilter提供的一種用戶工具,是與Linux內核集成的IP信息包過濾系統[2]。通過這種工具可以實現NAT,進而隱藏IP地址信息。
iptables的基本語法規則如下:
iptables [-t table] command [match] [target];
iptables中共有三類表:Mangle、Nat和Filter。Mangle表對于滿足常規的防火墻應用作用不大。Nat表的作用在于對數據包的源或目的IP地址進行轉換[3]。Nat表又可主要分為三條鏈:(1)DNAT:改變包的目的地址,以使包能從路由到某臺主機上;(2)SNAT:改變包的源地址,可以隱藏用戶的本地網絡;(3)MASQUERADE:與SNAT作用基本一樣,對每個匹配的包,MASQUERADE都要查找可用的IP地址。Filter表用來過濾數據包,可以在任何時候匹配并過濾包,對包做DROP或ACCEPT。
iptables模塊處理流程[2]: 首先,當一個包進來時,內核根據路由表決定包的目標。如果目標主機就是本機,則直接進入INPUT鏈,再由本地正在等待該包的進程接收;否則,如果進來的包的目標不是本機,則看是否內核允許轉發包[4-5]。最后,Linux防火墻主機本身能夠產生包,這種包只經過OUTPUT鏈被送出防火墻。圖2給出了數據包經過iptables模塊的處理流程。
2 基于L7-filter的匹配與替換
L7-filter是一個Netfilter/iptables的增強型補丁插件,它的核心是通過一個工作在內核級的可對數據包進行分類的補丁程序與iptables進行聯動,與其他基于端口包分類工具的不同處在于,它是基于數據內容匹配和分析的[2]。利用正則表達式匹配Layer7應用協議(HTTP、FTP)的傳輸數據,能更準確地分析數據包。
L7-filter在默認情況下,將同一個連接中的10個數據包或者2 KB的數據包內容放在緩存中。并將緩存中的內容作為一段普通的文本,用模板文件中的正則去搜索,如果發現有正則匹配的內容,就會在Netfilter中將這幾個數據包DROP丟掉或者給數據包打上標記。
下面就是該命令對于數據包中的內容進行匹配及替換的命令:
#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:"
3 基于MITM和Ettercap的匹配與替換
中間人攻擊MITM(Man-in-the-Middle Attack)是一種“間接”的入侵攻擊,這種攻擊模式是通過各種技術手段將受入侵者控制的一臺計算機虛擬放置在網絡連接中的兩臺通信計算機之間,這臺計算機就稱為“中間人”。然后入侵者把這臺計算機模擬為一臺或兩臺原始計算機,使“中間人”能夠與原始計算機建立活動連接并允許其讀取或修改傳遞的信息,然而兩個原始計算機用戶卻認為他們是在互相通信。通常,這種“攔截數據——修改數據——發送數據”的過程就被稱為“會話劫持”。
Ettercap是基于MITM技術的一款有效的、靈活的中介工具。利用其特性可以實現數據包過濾和丟棄以及替換功能:可以建立一個查找特定字符串的過濾鏈,根據這個過濾鏈對TCP/UDP數據包進行過濾并用自己的數據替換這些數據包,或丟棄整個數據包。它可以支持并收集以下協議的口令信息:TELNET、FTP、POP、RLOGIN、SSH1、ICQ、SMB、MySQL、HTTP等。通過shell腳本的編寫可以實現基于Ettercap的文本內容匹配與替換。
ettercap.sh源代碼:
#!/bin/bash
EF=/usr/bin/etterfilter
EC=/usr/sbin/ettercap
FILTER=.stringreplace.ef
echo "Remember, Press q to qiut!"
echo "Which data in the packet do you want to change?"
read DATA1 //輸入想替換的文本
echo "what do you want to change $DATA1 to ?"
read DATA2 //替換成的文本
#(echo $DATA1|wc -m)-(echo $DATA2|wc -m)
#if [((echo $DATA1|wc-m)-(echo $DATA2|wc -m))!=0]
# then
# echo "The numbers of characters of $DATA1 must be
the same with $DATA2"
# exit
rm -rf ./change_data
mkdir ./change_data
DIR=change_data
cd $DIR
touch .stringreplace.filter
FILE=.stringreplace.filter
echo "if(ip.proto==TCP && tcp.src == 80){" > $FILE
echo "">>$FILE
echo "if (search(DATA.data, \"$DATA1\")){" >> $FILE
echo " replace(\"$DATA1\",\"$DATA2\");">> $FILE
echo "}">>$FILE
echo "}" >>$FILE
$EF $FILE -o $FILTER
$EF -t $FILTER
$EC -i eth0 -Tq -F $FILTER -M arp
echo "You have successfully quited changing $DATA1 to
$DATA2"
4 實驗結果及分析
通過在終端下運行shell[3]腳本即可實現基于文本的隱藏與替換。為了方便用戶操作, 基于JAVA Swing組件[4]編寫了如圖3所示的軟件。
用戶可以按要求填寫內容,然后單擊替換按鈕后程序即可運行。當內網用戶發出請求后,若響應內容中包含用戶要替換的內容,NAT服務器會將該文本替換成用戶設定的,然后結果信息返回給用戶,從而實現網絡文本的替換。
在Linux操作系統下,實驗結果如下:圖4所示為替換之前的文本內容,圖5所示為替換之后的文本內容,從而實現了網絡文本的隱藏與替換功能。
在html網頁中,<body>標簽中的文本內容基本上都可以匹配并替換成預先設定的,然而有的內容是通過腳本語言實現的,還有很多腳本文件是通過壓縮文件發送到客戶端的,這種的就匹配不到。
針對這種情況,可以利用iptables的過濾無效數據包的功能,當發現某網頁中包含想要替換的文本但卻替換不了時,可以將該數據包過濾掉。應用程序界面如圖6所示。
本文針對NAT服務器對流入內網的不良文本信息的隱藏和替換問題,基于Netfilter/iptables模塊和MITM技術,在Linux環境下通過L7-filter和Ettercap技術實現了網絡文本信息的隱藏和替換。同時,通過網絡實驗驗證了其有效性。
參考文獻
[1] CACHE J, WRIGHT J.黑客大曝光:無線網絡安全[M].李瑞民,譯.北京:機械工業出版社,2012.
[2] RASH M. Linux防火墻[M]. 陳健,譯. 北京:人民郵電出版社,2009.
[3] 豐士昌. Linux指令與Shell編程[M].北京:科學出版社,2012.
[4] 王鵬,何昀峰. Java Swing圖形界面開發與案例詳解[M].北京:清華大學出版社,2008.
[5] 白滔,劉大滏. Linux下怎樣利用Iptables實現網絡防火墻的監控功能[J]. 貴州氣象, 2006,30(4):33-35.
[6] 郝慧珍,傅汝林.基于IP偽裝的網絡安全技術研究[J].成都理工學院學報,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/.