文档库 最新最全的文档下载
当前位置:文档库 › 基于网络文本信息隐藏技术的研究

基于网络文本信息隐藏技术的研究

基于网络文本信息隐藏技术的研究

摘 要: 信息隐藏是网络时代信息安全领域新兴起的一个研究热点。基于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]编写了的软件。

用户可以按要求填写内容,然后单击替换按钮后程序即可运行。当内网用户发出请求后,若响应内容中包含用户要替换的内容,NAT服务器会将该文本替换成用户设定的,然后结果信息返回给用户,从而实现网络文本的替换。 在Linux操作系统下,实验结果如下:图4所示为替换之前的文本内容,图5所示为替换之后的文本内容,从而实现了网络文本的隐藏与替换功能。

在html网页中,<body>标签中的文本内容基本上都可以匹配并替换成预先设定的,然而有的内容是通过脚本语言实现的,还有很多脚本文件是通过压缩文件发送到客户端的,这种的就匹配不到。 针对这种情况,可以利用iptables的过滤无效数据包的功能,当发现某网页中包含想要替换的文本但却替换不了时,可以将该数据包过滤掉。应用程序界面。

本文针对NAT服务器对流入内网的不良文本信息的隐藏和替换问题,基于Netfilter/iptables模块和MITM技术,在Linux环境下通过L7-filter和Ettercap技术实现了网络文本信息的隐藏和替换。同时,通过网络实验验证了其有效性。

相关文档
相关文档 最新文档