现在的位置: 首页 > 网络安全 > 正文

运维安全之蜜罐技术剖析

2015年10月16日 网络安全 ⁄ 共 3521字 ⁄ 字号 暂无评论

蜜罐好比是情报收集系统。蜜罐好像是故意让人攻击的目标,引诱黑客前来攻击。所以攻击者入侵后,你就可以知道他是如何得逞的,随时了解针对服务器发动的最新的攻击和漏洞。还可以通过窃听黑客之间的联系,收集黑客所用的种种工具,并且掌握他们的社交网络。

蜜罐的定义

首先我们要弄清楚一台蜜罐和一台没有任何防范措施的计算机的区别,虽然这两者都有可能被入侵破坏,但是本质却完全不同,蜜罐是网络管理员经过周密布置而设下的“黑匣子”,看似漏洞百出却尽在掌握之中,它收集的入侵数据十分有价值;而后者,根本就是送给入侵者的礼物,即使被入侵也不一定查得到痕迹……因此,蜜罐的定义是:“蜜罐是一个安全资源,它的价值在于被探测、攻击和损害。”
设计蜜罐的初衷就是让黑客入侵,借此收集证据,同时隐藏真实的服务器地址,因此我们要求一台合格的蜜罐拥有这些功能:发现攻击、产生警告、强大的记录能力、欺骗、协助调查。另外一个功能由管理员去完成,那就是在必要时候根据蜜罐收集的证据来起诉入侵者。

涉及的法律问题

蜜罐是用来给黑客入侵的,它必须提供一定的漏洞,但是我们也知道,很多漏洞都属于“高危”级别,稍有不慎就会导致系统被渗透,一旦蜜罐被破坏,入侵者要做的事情是管理员无法预料的,例如,一个入侵者成功进入了一台蜜罐,并且用它做“跳板”(指入侵者远程控制一台或多台被入侵的计算机对别的计算机进行入侵行为)去攻击别人,那么这个损失由谁来负责?设置一台蜜罐必须面对三个问题:设陷技术、隐私、责任。
设陷技术关系到设置这台蜜罐的管理员的技术,一台设置不周全或者隐蔽性不够的蜜罐会被入侵者轻易识破或者破坏,由此导致的后果将十分严重。
由于蜜罐属于记录设备,所以它有可能会牵涉到隐私权问题,如果一个企业的管理员恶意设计一台蜜罐用于收集公司员工的活动数据,或者偷偷拦截记录公司网络通讯信息,这样的蜜罐就已经涉及法律问题了。
对于管理员而言,最倒霉的事情就是蜜罐被入侵者成功破坏了。有人也许会认为,既然蜜罐是故意设计来“牺牲”的,那么它被破坏当然合情合理,用不着小题大做吧。对,蜜罐的确是用来“受虐”的,但是它同时也是一台连接网络的计算机,如果你做的一台蜜罐被入侵者攻破并“借”来对某大学服务器进行攻击,因此引发的损失恐怕只能由你来承担了。还有一些责任是谁也说不清的,例如,你做的一台蜜罐不幸引来了Slammer、Sasser、Blaster等大名鼎鼎的“爬虫类”病毒而成了传播源之一,那么这个责任谁来负担?

蜜罐的类型

世界上不会有非常全面的事物,蜜罐也一样。根据管理员的需要,蜜罐的系统和漏洞设置要求也不尽相同,蜜罐是有针对性的,而不是盲目设置来无聊的,因此,就产生了多种多样的蜜罐……
3.1.实系统蜜罐
实系统蜜罐是最真实的蜜罐,它运行着真实的系统,并且带着真实可入侵的漏洞,属于最危险的漏洞,但是它记录下的入侵信息往往是最真实的。这种蜜罐安装的系统一般都是最初的,没有任何SP补丁,或者打了低版本SP补丁,根据管理员需要,也可能补上了一些漏洞,只要值得研究的漏洞还存在即可。然后把蜜罐连接上网络,根据目前的网络扫描频繁度来看,这样的蜜罐很快就能吸引到目标并接受攻击,系统运行着的记录程序会记下入侵者的一举一动,但同时它也是最危险的,因为入侵者每一个入侵都会引起系统真实的反应,例如被溢出渗透、夺取权限等。
3.2.伪系统蜜罐
什么叫伪系统呢?不要误解成“假的系统”,它也是建立在真实系统基础上的,但是它最大的特点就是“平台与漏洞非对称性”。
大家应该都知道,世界上操作系统不是只有Windows一家而已,在这个领域,还有LinuxUnix、OS2、BeOS等,它们的核心不同,因此会产生的漏洞缺陷也就不尽相同,简单的说,就是很少有能同时攻击几种系统的漏洞代码,也许你用LSASS溢出漏洞能拿到Windows的权限,但是用同样的手法去溢出Linux只能徒劳。根据这种特性,就产生了“伪系统蜜罐”,它利用一些工具程序强大的模仿能力,伪造出不属于自己平台的“漏洞”,入侵这样的“漏洞”,只能是在一个程序框架里打转,即使成功“渗透”,也仍然是程序制造的梦境——系统本来就没有让这种漏洞成立的条件,谈何“渗透”?实现一个“伪系统”并不困难,Windows平台下的一些虚拟机程序、Linux自身的脚本功能加上第三方工具就能轻松实现,甚至在Linux/Unix下还能实时由管理员产生一些根本不存在的“漏洞”,让入侵者自以为得逞的在里面瞎忙。实现跟踪记录也很容易,只要在后台开着相应的记录程序即可。
这种蜜罐的好处在于,它可以最大程度防止被入侵者破坏,也能模拟不存在的漏洞,甚至可以让一些Windows蠕虫攻击Linux——只要你模拟出符合条件的Windows特征!但是它也存在坏处,因为一个聪明的入侵者只要经过几个回合就会识破伪装,另者,编写脚本不是很简便的事情,除非那个管理员很有耐心或者十分悠闲。

接下来就是运维之实战,我在下面用的是红帽系列的Linux系统

我们知道,黑客一旦获得root口令,就会以root身份登录,这一登录过程就是黑客入侵的必经之路。其二,黑客也可能先以普通用户身份登录,然后用su命令转换成root身份,这又是一条必经之路。

我们讨论如何在以下情况下设置陷阱:

(1)当黑客以root身份登录时;

(2)当黑客用su命令转换成root身份时;

(3)当黑客以root身份成功登录后一段时间内;

第一种情况的陷阱设置

一般情况下,只要用户输入的用户名和口令正确,就能顺利进入系统。如果我们在进入系统时设置了陷阱,并使黑客对此防不胜防,就会大大提高入侵的难度系数。例如,当黑客已获取正确的root口令,并以root身份登录时,我们在此设置一个迷魂阵,提示它,你输入的口令错误,并让它重输用户名和口令。而其实,这些提示都是虚假的,只要在某处输入一个密码就可通过。黑客因此就掉入这个陷阱,不断地输入root用户名和口令,却不断地得到口令错误的提示,从而使它怀疑所获口令的正确性,放弃入侵的企图。

给超级用户也就是root用户设置陷阱,并不会给系统带来太多的麻烦,因为,拥有root口令的人数不会太多,为了系统的安全,稍微增加一点复杂性也是值得的。这种陷阱的设置时很方便的,我们只要在root用户的.profile中加一段程序就可以了。我们完全可以在这段程序中触发其他入侵检测与预警控制程序。陷阱程序如下:

# root .profile   Clear   Echo “You had input an error password , please input again !”   Echo   Echo –n “Login:”   Read p   If ( “$p” = “123456”) then   Clear   Else   Exit

第二种情况的陷阱设置

在很多情况下,黑客会通过su命令转换成root身份,因此,必须在此设置陷阱。当黑客使用su命令,并输入正确的root口令时,也应该报错,以此来迷惑它,使它误认为口令错误,从而放弃入侵企图。这种陷阱的设置也很简单,你可以在系统的/etc/profile文件中设置一个alias,把su命令重新定义成转到普通用户的情况就可以了,例如alias su=”su user1”。这样,当使用su时,系统判断的是user1的口令,而不是root的口令,当然不能匹配。即使输入su root也是错误的,也就是说,从此屏蔽了转向root用户的可能性。

第三种情况的陷阱设置

如果前两种设置都失效了,黑客已经成功登录,就必须启用登录成功的陷阱。一旦root用户登录,就可以启动一个计时器,正常的root登录就能停止计时,而非法入侵者因不知道何处有计时器,就无法停止计时,等到一个规定的时间到,就意味着有黑客入侵,需要触发必要的控制程序,如关机处理等,以免造成损害,等待系统管理员进行善后处理。陷阱程序如下:

# .testfile   times=0  while [ $times –le 30 ] do   sleep 1   times=$[times + 1]   done   halt /* 30秒时间到,触发入侵检测与预警控制 */

将该程序放入root .bashrc中后台执行:

# root . bashrc   ….   Sh .testfile&

该程序不能用Ctrl-C终止,系统管理员可用jobs命令检查到,然后用kill %n将它停止。

从上述三种陷阱的设置,我们可以看到一个一般的规律:改变正常的运行状态,设置虚假信息,使入侵者落入陷阱,从而触发入侵检测与预警控制程序。

给我留言

您必须 [ 登录 ] 才能发表留言!

×