关于网络安全,其实可以主动抵制和防御
引言:我的一个好朋友前两天和我聊天的时候告诉我了一个故事:他在网上认识了一个人,告诉说自己是个网络黑客,而且说目前在国内没有进不去的主机。我的朋友被震住了,这样的水平太高了,但同时又心有疑虑。通过修改了自己FreeBSD的一些配置如banner以及用nc开了一些服务并备份删除了一些suid文件,然后启动一个sniffer并建立了一个本地一般系统帐号,并把自己的IP和这个帐号告诉了这个朋友,让他放心进来试试能不能本地夺取root。后来我的朋友对我大笑说你知道这个朋友做了什么,他的所有击键记录里什么也没做,当了几个在RedHat下缓冲溢出程序,还没有编译成,然后后来告诉我你的系统已经被放置了后门。我听了后也笑了,但同时想到了honeypot-蜜罐。
一个honeypot就是一个设计用来观测黑客如何探测并最终入侵系统的一个系统,它意味着包含一些并不公司机密的数据或应用程序同时对于黑客来说又具有很大的力的这样的一个系统,也就是放置在你网络上的一台计算机表面看来象一台普通的机器但同时通过一些特殊配置来引诱潜在的黑客并捕获他们的踪迹,就像捕鼠器一样。我们并不是使用它来抓获黑客,仅仅想知道他们在并不知道自己被观测的情况下如何工作,黑客呆在honeypot的时间越长,他们所使用的技术就的越多,而这些信息可以被用来评估他们的技术水平,了解他们使用的工具。通过学习他们使用的工具和思,我们可以更好的我们的系统和网络。
一个好的honeypot意味着黑客从来不知道自己被,当然,道高一尺,魔高一丈,没有任何一个honeypot可以捕获所有的黑客。我们所提到黑客意味着这样一些人:没有经过授权的情况下对系统进行存取,有可能是一个15岁的小孩,或者45岁的公司雇员,尽管这里提到很多关于我们所的黑客,但是我们并不知道他的实际年龄。
honeypot在各个操作系统上实现都不太一致,但最终的思是一样的,你要让你的入侵者不知道你正在观测他(她),最好他会在开IRCJ。想写案例,可又不能瞎掰,只好选用国外两篇文章先。下面先介绍--<>。然后我们会用NC自己作一个简单honeypot然后我们来看看wined和dtk。
在一个月的时间内(2000/9/20-2000/10/20)我们确认在我们的网络honeypot遭受过524个基于NetBIOS扫描。这些扫描是基于UDP137端口(NetBIOS命名服务)的探测,有时伴随着基于TCP139端口(NetBIOS会话服务)。所有这些表明存在大量的针对特殊服务的扫描活动,某些事情正在发生,我们决定发现出了什么事。我们的网络并没有在Internet做什么广告或者宣传,仅仅是放在那里。所有迹象表明这些我们接受到的扫描仅仅是随机扫描。但同样会到你的系统的安全,由于这些扫描主要针对Windows系统,有可能主要瞄准通过DSL或Cable连接的普通家庭用户。我们不讨论间谍或主页被黑,我们在这里仅讨论一般家庭用户作为被的对象。我们对这一切感到好奇:谁正在作这样的扫描?他们的意图是什么?为什么存在大量的这种扫描?协同探测的结果?是蠕虫吗?带着很多问题,我们决定去发现结果并放置了我们的Windowshoneypot,我们缺省安装了一台Windows98并且使c:盘共享,尽管一台Windows98honeypot听起来并没有多大的力,但是仍然可以通过建立这样的系统来获得我们所想知道的。在Internet上有大量的Windows98系统,而且这个数量还在快速增长。作为具有代表性的系统,该系统存在大量的安全漏洞。但是作为家庭用户并没有认识到连接到Internet的风险性,他们中的大多数还是专注地连接Internet。这是我们的第一个基于Microsoft的honeypot,该计划也非常简单并且希望学到什么。在2000/10/31日,系统安装好,共享打开,并且连接到Internet,我们开始等待,等待时间是如此漫长。
第一条蠕虫
至少24小时后我们接待了我们的第一位访客。IP为216.191.92.10的系统(host-010.hsf.on.ca)扫描了我们的网络搜寻Windows系统,他发现了我们的honeypot并且开始查询它。一开始他尝试获得系统名并确定共享是否打开。一旦他发现共享打开,开始在我们的系统上探测某种二进制文件。他的目标是确定在我们的honeypot上是否安装了某种蠕虫,如果没有,就会安装它。在这里,这种蠕虫并没有被安装,这个蠕虫被确定为Win32.BymerWorm。此蠕虫的目的在于利用占领的主机的CPU资源来帮助某人赢得distributed.net竞赛,distributed.net是一个提供利用分布式计算机空闲资源进行各种挑战(如crackRC5-64)项的组织。如果赢得挑战将获得一些金,在这里,我们的访客通过安装蠕虫把我们当成志愿军来参加这个项目。
某个人(bymer@inec.kiev.ua),制作了这个可复制的蠕虫,它可以在不被怀疑的有漏洞的Windows系统上安装distributed.net客户端。一旦被安装且被执行,蠕虫就可以利用你的系统CPU资源帮助安装的人赢得金。期间蠕虫也会探测别的可能被入侵的系统,它的目标是获取更多的CPU资源,处理速度会随着入侵系统的增多而呈指数增长。让我们来看一下通过网络捕获的数据包(在这里我们使用snort)。为了更方便的分析NetBIOS协议,你需要一些协议分析器如Ethereal。这个过程通过sniffer追踪如下,IP为172.16.1.105的是我们honeypot的地址。
在一开始的时候,蠕虫在我们的系统上检查dnetc.ini,这是distributed.net客户端的标准配置文件,该配置文件告诉主服务器谁的CPU资源引该被信任。在这里我们通过远程系统(NetBIOS名称GHUNT,帐号GHUNT,域名HSFOPROV)的记录发现他拷贝这个文件到我们honeypot中。
通过下面信息我们可以看到配置文件dentc.in的确切传输配置,注意bymer@inec.kiev.ua,他就是接受CPU资源的人,很可能也是该蠕虫的作者。
下一个要传的软件是distributed.net客户端-dnetc.exe。一个可执行文件,原始版本是没有病毒。我们为了确认这个文件是否被改动过,于是我们取了在honeypot中的改文件的MD5签名,之后我们从distributed.net上下载了该客户端并同样用MD5进行签名,结果表明一样d0fd1f93913af70178bff1a1953f5f7d),表明该客户端并没有做过改动,仅仅是为了获取你的CPU资源进行竞赛,但是所有这一切都没有经过我们的同意。
接下来传过来真正的病毒程序msi216.exe,这是一个可以进行复制的病毒随机探测寻找有漏洞的系统并考本自身,这很可能就是导致我们接受大量扫描的根源。
最后,蠕虫上传了新的win.ini文件,这么做的原因是可以在系统重新启动的时候被执行,因为很难在远程Win98系统上直接执行程序,所以蠕虫修改c:\windows\win.ini文件以使自己被自动加载。这个新的win.ini被上传到我们的系统。
到这里为止,蠕虫已经完成入侵并且我们的honeypot已经被感染。所有的一切就是我们重新启动系统蠕虫就会生效,一旦它运行,就会发生一些事:
蠕虫开始寻找有漏洞的系统并复制自己,这也是为什么导致UDP137和TCP139扫描。
蠕虫在注册表中添加如下键值。
你是否想着等着系统重启来执行程序不值得信赖,可是要知道目标是Windows桌面系统,你多长时间重启一次你的Windows?
第二条蠕虫
繁忙的一周,第二天我们的第二条蠕虫来了。这次是第一次的变种,获取你的CPU资源用来参加distributed.net竞赛,不同的是,这一次所有文件合为一个可执行文件wininit.exe,缺省安装已经有一个安装在c:\windows\wininit.exe,之所以叫这个名字是为了隐藏自己,即使有人发现这个二进制文件也会想到可能是一个系统文件而不是一个蠕虫。这在黑客社区常常见的策略。一旦执行,这条蠕虫会象第一条那样。下面我们可以看到我们的honeypot被第二条蠕虫感染,远程系统NetBIOS名是WINDOW,帐号WINDOW,域名LVCW。
一旦蠕虫被安装,远程系统就会修改win.ini以确保在系统重启以后能够运行,在这里我们注意到它已经被加入
重启之后,象上一次一样,第二条蠕虫程序以同样的进程会启动。给我们的感觉对方似乎并没有象有些的黑客那样,倒却象看热闹的。系统的拥有者并没有意识倒蠕虫已经运行在系统上,没有意识倒自己的系统正在被利用在探测别的主机,他们的系统正连接Internet,作自己的事。每一个通过拨号连接Internet的主机都面临同样的。这里正在发起一场战争关于自动蠕虫探测和那些主机,就像我们的honeypot。
自此以后
有过了一天,同样的蠕虫又探测我们的honeypot,首先,他们决定是否共享被打开,接着,它发现同样的蠕虫已经被安装,之后它离我们而去。这天的晚些时候,另外一个系统探测是否msi216.exe已经被安装。
在接下来的一天,11月4号,从IP为207.224.254.206(NetBIOS名SOCCERDOG,帐号SCOTT,域名RONS)开始对我们的honeypot进行探测判断是否dnetc.ini已经被安装,当看到已经安装过,他随后离去。在随后三天之内我们的honeypot一共接收到5次探测。在那天的晚些时候,我们的honeypot开始尝试通过http连接到bymer.boom.ru,这可能是蠕虫在尝试进行连接主服务器进行更新。
Bymer.boom.ru系统像是某一时间的这条蠕虫的主控制器。但是域名bymer.boom.ru现在被解析成一个RFC1918里IP地址192.168.0.1。这些现象好像显示这个域的管理员在停止这条蠕虫,我们所不确定是一条蠕虫的运行有时不需要重启。
使用Windows的一个缺点就是可用信息太少,没有什么日志。下面我们看到honeypot初始化连接bymer.boom.ru,很可能就是它的主服务器。
紧接着,dnetc.exe客户端连接到distributed.net服务器并且开始数据传输,这应该是distributed.net的客户端而不是蠕虫的复制进程。接着完成蠕虫的最终愿望,耗CPU资源并上传结果到distributed.net。
一旦上传完成,这条开始在Internet上搜寻有漏洞系统并开始复制自己。它随机挑选IP地址,之后开始扫对方的135和139端口。随后标记存在漏洞的系统并开始复制。如果一个honeypot的被设计成阻塞住各种被已经侵害的honeypot发出的有恶意的流量,那么这些扫描就永远到不了Internet。honeypot在这里就像是roachmotel,让坏蛋进去,但不让出。下面可以看到这条蠕虫尝试发现其他有漏洞的系统。
另外一件事就是我发现有趣的事情是在c:\windows\win.ini的这个配置文件被重新修改,很想是被winint.exe,这条蠕虫从启动配置中移走msi216.exe。同样dentc.ini也重新被修改,把邮件地址从bymer@inec.kiev.ua改为bymer@ukrpost.net,这些表明第二条蠕虫正在尝试从配置中去掉第一条的配置从而替代它。这种现象就像自然界的生态斗争,一条虫子同另外一台争夺地盘,或者是CPU资源。
我们在描述了我们四天的历程,我们的Windows98系统被几条蠕虫。这些蠕虫自动探测有漏洞系统一旦发现就开始自身复制,目前来看全是搜寻有NetBIOS漏洞的系统,当然并不表示所有基于NetBIOS的扫描都是这样。并不是所有的蠕虫都是基于distributed.net。想想如果这条蠕虫被修改成窥探你系统上的隐秘信息,它会很轻易的搜寻包含财务等机密信息…一旦发现,这些信息会发给匿名邮件帐号,IRCchannel,或者被入侵的Web服务器。
这篇文章来自<>系列,和上一部分一样,这里并不是如何从技术上实现一个Unix上的honeypot,而是主要是通过分析来了解黑客的使用的工具和他们的策略。分三个部分,第一,第二部分提供的信息很少发布,通过在14天里对他们所认为攻破的honeypot上的对话和行为的记录了解他们他们为什么和怎样系统。当黑客认为这台Solaris2.6已经被攻破之后,他们在系统里放置了IRC。我们所有IRC里的通话,我们十四天的观察结果都记录在这里,希望大家能够从中得到。
系统遭受入侵
我们的honeypot采用一个缺省安装Solaris2.6系统,在此之上我们没有做任何修改或安装补丁程序。我们设置这样的系统就是想引诱黑客进入我们的系统,通过他们在的活动,我们就可以研究他们的思维。
Rpc.ttdbserv漏洞是一个缓冲溢出,它允许远程用户在系统上以root身份执行命令。如下的命令被执行,并安装了一个后门程序。Ingreslock服务(端口1524)被加到一个叫做/tmp/bob的文件,然后以它作为配置文件运行inetd,执行完以后,它就在端口1524上帮定了一个rootshell,允许远程用户对系统进行存取。
一旦黑客安装了后门,他连接到端口1524,获得rootshell,并执行如象命令。在我们的系统中增加了两个帐号,这样的话他就可以Telnet进来。注意下面的错误和控制字符,原因是因为绑定在1524端口的shell并没有一个很好的。
黑客这个时候在我们的系统上拥有两个帐号re和r,他于是就可以以retelnet上来,并su成r,这个帐号的UID为0,我们将重温他的敲键记录。
我们的客人现在已经获得root权限,下一步就是安装工具并控制整个系统,首先,我们看到他建立一个隐藏目录用于隐藏他的工具。
在建立完这个目录之后,他开始从别的系统上下载所需的工具。
一旦这个工具被成功下载,接下来就是解包和安装。这里注意他的整个安装过程通过一个简单的脚本setup.sh,这个脚本调用另外一个脚本secure.sh。
这里这个工具包首先清除日志里和他的行为相关的信息。
在清理完日志文件后,他们开始为系统安全考虑,开始加固系统安全。因为他们可以轻易进入系统,别人也同样有可能,他们并不想自己的劳动被别人抢去。
下一步IRCproxy开始运行,但是随后他又杀掉了改进程,对此我们感到。
最后,我们的客人运行了IRCbot,这个东西确保他们对IRC通道的控制权,这个bot也记录了他们的会话记录。
一旦这个bot准备就绪,他们离开了系统,也就是这个bot捕获他们的所有对话。如果想要了解更多的关于IRC信息,可以参考DavidBrumley的<
当然,他们没有成功,我们的honeypot在设计之初就已经考虑了类似问题,所有尝试利用我们系统进行的都会被,他们发起的服务自动被。
接下来的部分,我们主要通过他们在IRC里的对话来分析黑客们的行为和心理,通过这些,我们可以更好地反击黑客的入侵。
下面罗列的是紧接着两个星期内他们对话,我们暂且叫这个IRC通道为K1dd13,其中两个人叫做D1ck和J4n3,其中很多比如说IP和其他信息我们在这里都做了改动。我们可以看到他们甚至对很多Unix的基础知识还不了解,但仍然能对很多系统造成危害。
第一天,6月4号
对话主要讨论建立一个漏洞资料库,通过共享资源来潜在的目标
第二天,6月5号
今天D1ck和J4n3共享漏洞资料,特别注意的是他们吹牛已经了多少网络,好像他们正在的是一所大学里的一台Linux系统,他们也讨论了在Linux和sparc上的新的工具。
第三天,6月6号
D1ck和J4n3吹牛他们曾经对多少系统进行过服务,紧接着D1ck教J4n3怎样mount一个分区,然后他们商量如何使用sniffit,最后D1ck似乎拼命的搜寻Irix漏洞和工具。
第四天,6月7号
D1ck和J4n3决定对印度的一个系统进行服务,最后他们对哪些他们的其他IRC用户进行服务。
第五天,6月8号
D1ck请J4n3为他占领三个系统,D1ck和他的密友Sp07尝试发掘出sniffer是怎样工作的,类似问题sniffer探测必须在同一个网络中?
第六天,6月9号
我们的朋友似乎很忙,似乎D1ck已经入侵了40个系统。
第七天,6月10号
平淡的一天,D1ck教给一个新伙计k1dd13怎样使用sadmind漏洞,我们不确定的是D1ck自己是否明白怎样使用
第八天,6月11号
D1ck和J4n3讨论他们所拥有的系统以及他们那想对其实施服务的人,D1ck发现死亡之ping。
第,6月12号
似乎D1ck撞了大运,他发现了一个ISP并且获得对于他们帐单存取权限和5000个帐号。
第十天,6月13号
第十一天,6月14号
他们开始Crack用户密码和存取个人帐号。
第十二天,6月15号
D1ck和J4n3试图在一个信用卡频道里发现信用卡号,如果成功他们那就可以买下一些域名。
第十三天,6月16号
D1ck和J4n3仍然在这个信用卡频道里。在聊天结束的时候,他们把焦点又放在自己的Web站点。
第十四天,6月17号
D1ck和J4n3谈论着信用卡并继续建筑自己的Web站点。
我们已经了解到这个黑客团体在14天里的行为,当然不是所有的黑客团体都像这样,实际上,我们观测到的只是很小的一部分,但是我们希望这些信息能给你很多提示,他们有很多并不是象我们想象那样具有很高的技术实力,甚至又很多并不明白他们正在使用的工具,但是一旦他们对一些系统很在意的话,他们能取得我们所想象不到的结果。这并不是,他们并不关心他们所造成的危害,他们只关心他们的目标。
这篇文章是Honeypot项目的研究结果,Honeypot项目是一个由一些安全专家想要了解黑客使用的工具和策略的而发起的项目。
看过了以上的案例介绍,你是否已经迫不及待想建立一个honeypot来你的网络或者系统呢?那么我们如何来实现一个honeypot呢?NetCat这个万能的军刀,黑客工具的鼻祖很容易就能帮你做到。Godblessme!感谢Weld和L0pht的们编写出如此出色便宜的honeypot:),而且可以在多个平台上使用,下载:
一般情况下,很多黑客都喜欢尝试针对对方系统服务进行慢速扫描以确认下一步可能的方向。NetCat的功能之一就是可以帮助我们在一些端口上帮定服务,这样就允许我们在我们的Linxu、NT、FreeBSD上建立一些如下的虚假服务:
Sendmail、DNS、Telnet、FTP甚至是WebServer等等,这样就可以审计一些端口扫描以及连接信息,当然这样配置存在一些问题,比如说半开连接如nmap-sSvictim就不会被记录,但是实际上很多黑客在确信端口的情况下为了确定服务的信息如版本,他们会选择完成三次握手,这样,他们的IP………。
下面所列出的代码是在Solaris工作站上的一个honeypot,首先需要为每一个的端口简历如下的内容,NetCat选项:
-l一般模式
192.168.0.1进不去-p你选择的端口
-vv双冗长模式
在这里的脚本中,使用一般模式而不是递归模式(-L)是因为想在每次对方尝试连接后在审计信息里添加注释。这里通过重定向审计信息,通过循环添加注释以便于审计。需要强调的一点是需要指定本机IP,这样端口只允许本机连接,否则任何别的系统都可以通过该端口存取系统。同时为了方便审计,加了一些行拷贝记录到另一个文件中并清理原始记录文件。
这里列出的是port25脚本
在每一个命令行末尾添加2是重定向出错信息道审计信息里。
类似,我们可以产生其他脚本,然后运行。
最后,我们可以作一个脚本放在/etc/rc2.d目录下,这样系统重起会自动运行我们的honeypot。
Nmap扫描结果:
4.已有工具介绍
winetd是一个非常简单的Windows上的honeypot实现,安装非常简单,界面也很友好,只是伪装过于简单,并不能真正黑客进入,如果按功能来说,不算一个严格意义上的honeypot。
我们看到缺省启动的时候,我们的系统的服务很少,下面使用Nmap对没有使用Winetd的结果:
我们可以看到系统仅三个端口。
启动Winetd之后它会在我们的系统上如下服务,如echo、Telnet、smtp等服务,Nmap的扫描结果:
其实我们的系统是一台W2k,当然Winetd的灵活之初还在于它可以自己定义要打开的服务,使用什么样的程序进行模拟。
而且它还具有日志和反击功能当我们在对运行Winetd的系统进行扫描或别的探测活动时,它都会发现到探测信息,如下图我们用Nmap使用偷偷扫描后所留下的日志信息。
我们或许也注意到如果一个经验丰富的黑客,这样的honeypot还不至于能他,首先使用fingerprint技术就可以探测系统是Linux还是W2k,如果发现是W2k,而Telnet又显示的信息,那么黑客很快就会离我们而去,甚至恼怒会我们的系统。Winetd是一个软件,它的思非常好,要成正的honeypot,还有待于继续深入开发。
DTK目前可以真正模拟的系统有十种左右,而且它可模拟很多服务,更确切的说,我们可以称它为一个状态机,功能非常强大,需要C和Perl编译器去编译运行,缺点就是在构建时非常麻烦,比如说在编译时会让你选择自己的操作系统,选择你所要模仿的操作系统。下载http://all.net/dtk