查找asp隐藏后门:后门查找初步

来自:www.linuxforum.net

1. 帐号后门

检查/etc/passwd、/etc/shadow文件中如下帐号是否已经拥有合法登录shell、登录口令

bin、daemon、adm、lp、sync、shutdown、halt、mail、s、uucp、games、
gopher、ftp、nobody、xfs、named、gdm、sys、nuucp、listen

/etc/passwd文件格式如下

username : password : uid : gid : comment : home_directory : shell

建议对/etc/passwd、/etc/shadow文件做备份保留在其他主机或可移动介质上定期对
检查是否增加了异常帐号

2. $HOME/.rhosts后门

趁系统干净时候记录、备份/etc/hosts.equiv和$HOME/.rhosts文件定期扫描检查
是否增加了这类文件以及原有文件内容是否改变

3. binary木马后门

2进制木马后门是将系统 2进制可执行文件替换成特洛伊(trojan)木马文件来达到放置后
效果可能是获取了源代码修改后重新编译或者借助其他技术直接向 2进制
文件中植入代码

对这类后门检测步是检查时间戳和校验和假设已经对文件用类似TripWire这类工
具作了时间戳和校验和记录如果没有使用过TripWire用"ls -l"和"stat"命令检查时
间戳是否有明显不协调文件如果存在极可能被替换成特洛伊木马植入后门了
细作进步查证

对于网络应用运行后用netstat和lsof命令查看是否存在不正常行为尤其是查
看有无异常端口被打开有无异常文件被打开

作进步查证时步是用s命令查找中有无异常第 2步如有必
需要将现有 2进制代码和确认干净 2进制代码进行比较

对于这类后门重点检查这样

in.ftpd、in.telnetd、in.rshd、in.rlogind、in.rexecd、in.talkd、in.tnamed、
in.uucpd、in.tftpd、in.fingerd、sadmind、rquotad、rpc.rusersd、rpc.sprayd、
rpc.rwalld、rpc.rstatd、rpc.rexd、rpc.ttdbserverd、rpc.cmsd、kcms_server、ufsd、
fs.auto、cachefsd、kerbd、in.lpd、gssd、dtspcd、in.comsat

/etc/init.d目录中启动脚本 2进制可执行

ANNOUNCE MOUNTFSYS PRESERVE RMTMPFILES ab2mgr
afbinit audit autofs auto buildmnttab
cachefs.daemon cachefs.root cacheos cacheos.finish cron
devlinks drvconfig dtlogin inetinit inetsvc
init.dmi init.snmpdx initpcmcia keymap lp
mkdtab nfs.client nfs.server nscd pcmcia
power rootusr rpc savecore sendmail
spc standardmounts syup sysid.net sysid.sys
syslog ufs_quota utmpd volmgt xntpd

除了上面所列还要注意下面这些后门

1) login后门

如果"s /usr/bin/login | grep crypt"有输出很可能是木马

2) ls、dir、vdir后门

ls、dir、vdir后门用意在于隐藏文件和目录如果执行这些命令时可以加"-/"选项(原
有代码中不支持这个选项)则介绍说明已经被植入木马了

检查/dev目录查找是否有诸如"/dev/ptyr"的类文件用"ls -l"看结果是否为

-rw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptyr

而不是

crw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptyr



brw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/***

如果有介绍说明已经有木马了如果s ls | grep "/dev/pty"有输出或者直接
s ls发现可疑路径和文件名介绍说明已经有木马对dir、vdir也

3) du后门

du后门同样是用来隐藏文件和目录如果命令行中执行这个命令可以加"-/"选项(原有
代码中没有这个选项)那么介绍说明已经被植入木马了检查/dev目录查找是否有诸如
"/dev/ptyr"的类文件用"ls -l"看结果是否为

-rw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptyr

而不是

crw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptyr



brw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/***

如果有介绍说明已经有木马了如果s du | grep "/dev/pty"有输出或者直接
s du发现可疑路径和文件名介绍说明已经有木马

4) config后门

config后门就是把下面行代码注释掉

( ptr->flags & IFF_PROMISC ) prf( "PROMISC " );

以去掉网卡混杂模式显示如果"s /sbin/config | grep PROMISC"没有输出
config肯定已被修改过了

5) netstat后门

检查/dev目录检查是否存在"/dev/ptyq"文件用"ls -l"看结果是否为

-rw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptyq

而不是

crw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptyq



brw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/***

如果有而执行netstat时用lsof发现它被打开介绍说明netstat被植入木马如果命令行
中netstat接受"-/"选项(原有代码中没有这个选项)那么netstat肯定被修改过了
如果s netstat | grep "/dev/pty"有输出或者直接s netstat发现可疑
路径或文件名介绍说明已经被修改过

netstat木马个实现不支持"-p"选项而系统自身netstat实现支持"-p"选项
因此如果发现netstat不支持"-p"选项肯定netstat被修改过另外Linux系统"-p"
选项表示打印出进程号(pid)和名(program name)信息而Solaris系统上"-p"表示打
印出ARP Cache信息如果发现和这点不符netstat就被修改过

6) ps后门

检查/dev目录查找是否有诸如"/dev/ptyp"的类文件用"ls -l"看结果是否为

-rw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptyp

而不是

crw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptyp



brw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/***

如果有而执行ps时用lsof发现它被打开介绍说明ps被植入木马如果命令行中ps接受"-/"
选项(原有代码中没有这个选项)那么ps肯定被修改过如果
s ps | grep "/dev/pty"有输出或者直接s ps发现可疑路径和文件名
明已经被植入木马

7) top后门

检查/dev目录查找是否有诸如"/dev/ptyp"的类文件用"ls -l"看结果是否为

-rw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptyp

而不是

crw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptyp



brw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/***

如果有而执行top时用lsof发现它被打开介绍说明ps被植入木马如果命令行中top接
受"-/"选项(原有代码中没有这个选项)那么top肯定被修改过如果
s top | grep "/dev/pty"有输出或者直接s top发现可疑路径和文件名
介绍说明已经被植入木马

8) tcpd后门

tcpd中有段代码这段代码对远程主机名进行查询和检查拒绝可疑连接木马
是使这段代码失效

检查/dev目录查找是否有诸如"/dev/ptyq"的类文件用"ls -l"看结果是否为

-rw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptyq

而不是

crw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptyq



brw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/***

如果有而启动tcpd时用lsof发现它被打开介绍说明tcpd被植入木马如果tcpd接受"-/"
选项(原有代码中没有这个选项)那么tcpd肯定被修改过如果
s tcpd | grep "/dev/pty"有输出或者直接s tcpd发现可疑路径和文件名
介绍说明已经被植入木马

9) syslogd后门

检查/dev目录查找是否有诸如"/dev/ptys"的类文件用"ls -l"看结果是否为

-rw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptys

而不是

crw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptys



brw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/***

如果有而启动syslogd时用lsof发现它被打开介绍说明syslogd被植入木马如果
s syslogd | grep "/dev/pty"有输出或者直接s syslogd发现可疑路径和
文件名介绍说明已经被植入木马

10) killall后门

检查/dev目录查找是否有诸如"/dev/ptyp"的类文件用"ls -l"看结果是否为

-rw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptyp

而不是

crw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptyp



brw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/***

如果有而执行killall时用lsof发现它被打开介绍说明killall被植入木马如果killall
接受"-/"选项(原有代码中没有这个选项)那么killall肯定被修改过如果
s killall | grep "/dev/pty"有输出或者直接s killall发现可疑路径和
文件名介绍说明已经被植入木马

11) pop3d后门

pop3d-trojan.tar.gz

12) sshd后门

sshd后门把ssh发行包里login.c作了修改加入内置帐号/口令执行
"s sshd"发现诸如"hax0r3d"这样介绍说明sshd已被植入木马

13) cgi后门

在cgi-bin/目录下检查这类cgi尤其是perl写脚本

14) find后门

检查/dev目录查找是否有诸如"/dev/ptyr"的类文件用"ls -l"看结果是否为

-rw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptyr

而不是

crw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/ptyr



brw-rw-rw- 1 root tty 2, 164 May 6 1998 /dev/***

如果有而执行find时用lsof发现它被打开介绍说明find被植入木马如果find接受"-/"
选项(原有代码中没有这个选项)那么find肯定被修改过如果
s find | grep "/dev/pty"有输出或者直接s find发现可疑路径和文件名
介绍说明已经被植入木马

15) chfn后门

16) chsh后门

4. 守护进程后门

binary木马后门是把系统上原有 2进制可执行换成特洛伊(trojan)木马
类后门是在系统上隐藏些可执行这些可执行原来系统上并不存在按照网络
协议来分类它们有如下类别

1) UDP后门

启动个守护进程侦听某个UDP端口收到特定UDP报文后启动个shell例如
udp-backdoor-v2.0.tgz就是这类后门安装包可用"netstat -na -P udp"查看这类后


2) TCP后门

诸如bdoor.c的类执行"netstat -na -P tcp" 查看这类后门是否在活动

3) Raw Socket后门

这类后门打开个raw 通过发ICMP包来进行网络通讯

如果已对文件系统用TripWire的类工具作了备份和记录检测这类后门步当然是
用这类工具检查是否增加了新文件特别是可执行文件如果有需仔细检查它极可能
是后门

方面在系统上安置守护进程后门后攻击者要做事就是如何启动它如果没有启
后门毫无用处Unix系统上守护进程通过rc脚本来启动对网络守护进程还可以
通过inetd 超级服务器来启动相应地检测这类后门也依据这些并结合这类后门大都
要进行网络通讯特征





1) 检查rc脚本

对Solaris系统在/etc目录下有这样些rc脚本

rcS、rc0、rc1、rc2、rc3、rc5、rc6

对Linuxrc脚本在/etc/rc.d目录下它们是rc、rc.local、rc.sysinit

对Solaris系统rc[S-6]脚本名最后个数字或字母表示运行级别/etc目录下另有
rc0.d、rc1.d、rc2.d、rc3.d、rcS.d 5个目录目录名中'.'前面数字或字母同样是表
示运行级别rc[S-6] 脚本作用是按运行级别对相应rc[S-6]目录下文件名以'S'
打头脚本文件赋给参数start启动相应守护进程以'K'打头脚本文件赋给参
数stop关闭相应守护进程其中例外是rc5和rc6脚本启动或关闭是rc0.d中
守护进程此外rcS、rc0、rc1、rc5、rc6脚本还进行文件系统安装或拆卸工作
别是 rcS它是系统启动时必须执行它对文件系统进行检查和安装进行各项系统配


对Linux系统/etc/rc.d目录下有rc0、rc1、rc2、rc3、rc4、rc5、rc6这 7个目录
/etc/rc.d/rc脚本依据运行级别象Solaris上样通过rc[0-6]目录中脚本启动或关闭
守护进程同时对每个运行级别rc.local脚本都将执行rc.sysinit脚本系统启动时
必须执行它检查和安装文件系统进行各项系统配置

检查上面几个脚本文件如果发现文件被修改加有别东西执行别必须仔细
检查这些很可能是启动某个后门

上面所列rc?.d目录中脚本文件对Solaris都是到/etc/init.d目录中某个脚本文
符号连接或者硬链接对Linux都是到/etc/rc.d/init.d目录中某个脚本文件
号连接或者硬链接这些rc?.d目录中脚本文件名为SNN***或KNN***NN为数字
大小表明脚本执行次序***为表示服务名对脚本文件名 *** 部分
Solaris上大致为下面这些

ANNOUNCE MOUNTFSYS PRESERVE RMTMPFILES ab2mgr
afbinit audit autofs auto buildmnttab
cachefs.daemon cachefs.root cacheos cacheos.finish cron
devlinks drvconfig dtlogin inetinit inetsvc
init.dmi init.snmpdx initpcmcia keymap lp
mkdtab nfs.client nfs.server nscd pcmcia
power rootusr rpc savecore sendmail
spc standardmounts syup sysid.net sysid.sys
syslog ufs_quota utmpd volmgt xntpd

在Linux上大致为下面这些

anacron apmd arpwatch atd crond functions
gpm halt httpd httpd.orig identd inet
ipchains ipsec irda kdcrotate keytable killall
kudzu linuxconf lpd named netfs network
nfs nfslock pcmcia portmap random rstatd
rusersd rwalld rwhod sendmail single snmpd
syslog xfs ypbind yppasswdd ypserv

仔细检查这些rc?.d 目录如果发现某个脚本文件不是到/etc/rc.d/init.d或/etc/init.d
目录中某个脚本文件符号连接、硬链接或者出现和上面文件名规则不相符脚本文件
或者增加了某个脚本文件它很可能是用来启动后门进程必须仔细检查这些脚本启动


确信rc?.d目录中脚本文件都是到/etc/rc.d/init.d或/etc/init.d目录中某个脚本文件
符号连接、硬链接后再cd到/etc/rc.d/init.d或/etc/init.d目录下检查init.d
目录下脚本文件如果某个脚本启动服务进程和名称不符或者脚本文件内容被修
加有别什么东西启动了别进程必须仔细检查极可能是被用来启动后门进程

除此的外和 2进制木马后门相交叉对init.d目录下脚本文件启动本身
都要仔细检查运行起来看看有没有什么不正常现象防止它有可能被换成木马对于
init.d目录中脚本文件启动它们 2进制文件大都在/usr/bin、
/usr/local/bin、/sbin、/usr/sbin目录下

2) 检查/etc/inetd.conf配置文件

注意/etc/inetd.conf中语法

#<service_name> <_type> <proto> <flags> <user> <server_pathname> <args>
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

<server_pathname>和<args>这两个字段关系就象execve个形参和第 2
形参检查/etc/inetd.conf特别是最后两个字段是否除通常服务外启动了别服务
如果有仔细检查这项服务很可能是在启动后门

同样和binary木马后门相交叉对inet.conf所列每项服务都要对相应进行检
很有可能它们被换成木马

3) 使用netstat和lsof命令

如果后门作为守护进程启动通常它侦听某个端口通过该端口和外网连接攻击者
借此获取对系统访问

对Linux系统用"netstat -nap"命令列出网络状态信息特别注意 <Local Address> 和
<PID/Program name> 这两栏如果所列 <Local Address> 中 ":" 后给出端口处于侦听
状态而系统又没有在这个端口启动服务从 <PID/Program name> 这栏追踪对应
它肯定是后门如果 <Local Address> 中某端口和另端建立了连接系统没有在该
端口上配置服务从 <PID/Program name> 栏中检查建立该连接如果不是通
常系统配置允许使用客户仔细检查该它属于不正常行为很可能是后门


对Solaris系统先用"netstat -na"列出网络状态信息取出 <Local Address> 栏中
local_host_addr:port再执行"lsof -i tcp@local_host_addr:port"命令或者对UDP
协议执行"lsof -i udp@local_host_addr:port"命令这样就得到了netstat命令没有列
<PID/Program name> 随后按上面Linux系统方式来做注意这里
local_host_addr 是本机IP地址或主机名也可以简化为 tcp:port 或 udp:port
可以加上 -T[q、s、w 任意组合] 选项列出队列长度、状态、窗口大小信息

对于raw 用"lsof -n | grep raw"命令进行检查

5. cron后门

除了以守护进程方式启动后门还可以利用cron机制启动后门下面就是植入这类后门
个脚本

-------------------------------------------------------------------------------
#! /sbin/sh
# Which port should the shell start _disibledevent=># where (and under what name) to hide the demon
HIDE="/dev/ptyp"
# Time when the demon should start (0-23 h, military time)
START="2"
# Same like above but when should it stop
STOP="3"

[ "`whoami`" != "root" ]; then
echo "you had to be root to do this!"
exit 1
fi

echo "# PORT " $PORT > backdoor.c
cat >> backdoor.c << 'EOF'
... ...
EOF
gcc -O3 -o $HIDE backdoor.c

[ -f $HIDE ]; then
echo "Compiling done"
rm -f backdoor.c

echo "Unable to compile"
rm -f backdoor.c
exit 1
fi
echo "STARTTIME = "$START"; ENDTIME = "$STOP"h"
echo "*" $START "* * *" $HIDE > crontabfile
echo "*" $STOP "* * * killall -9 "$HIDE >> crontabfile
crontab crontabfile
rm -f crontabfile
-------------------------------------------------------------------------------

(这个脚本有问题如果这样做了会破坏原来/var/spool/cron/crontabs/root)

对Linux系统crontab文件位于/var/spool/cron目录中对Solaris系统位于
/var/spool/cron/crontabs目录中这些crontab文件般以用户名作文件名cron守护
进程每隔分钟就检查依据它们更新内存中crontab表编辑crontab文件后
后门就在固定时间启动和停止

检测后门时相应地检查/var/spool/cron/crontabs或/var/spool/cron目录中crontab
文件查看是否有可疑被执行了如果有仔细检查它是否是后门和binary木
马后门相交叉还要仔细检查原有cron任务对应防止它们被换成木马

如果cron后门有网络通讯和守护进程后门可以结合netstat和lsof命令来检测

6. 动态链接库后门

几乎所有Unix系统使用动态库动态库重用相同代码而减少空间占用入侵者可以修改
动态库里比如说crypt、open或read在修改后里植入后门
动shell或建立网络连接

动态库后门特点是非常隐蔽旦植入很难被发现尤其是可以用来避免后门作为守护
进程常驻后台这就大大减小了被发现可能性例如这样在系统经常
如open里植入后门后门启动个进程作为连接客户端它主动发起连接连向攻
击者指定主机上守护进程如果连接失败或攻击者没有坐在机器前输入什么数据相应
后门进程立即退出如果连接成功而攻击者又坐在机器前攻击者迅速做完要做事后断
开连接后门进程立即退出如果攻击者在夜深人静工作在这个短暂时间里很难被
发现

对于动态库后门很难检测出来般说来对大多数动态库都有个对应静态库
它们功能是相同只有动态连接和静态连接区别因此种检测思路方法是如果通过
某种思路方法比如说比较MD5校验和确信静态库没有被污染那么对于经常被
用objdump观察动态库和静态库比较这些在动态库和静态库中代码有没有什
么区别如果某个有区别介绍说明这个动态库已被植入后门

当然如果静态库已经被污染就需要干净系统动态库文件份拷贝了用objdump来
对经常被进行比较检查是否某个被植入后门

种思路方法是这些经常被编译后运行它运行时
查看有没有什么异常特别是用netstat和lsof查看有无哪个端口或文件不正常地被打开
如果有这些异常介绍说明相应被植入后门做这件事时要特别小心最好事先作好系统
备份以防某些有害后门对系统造成伤害比如说删除某个文件

如果检测binary木马后门和守护进程后门时发现异常但又未发现某个可执行文件被换成
木马也没有发现暗藏后门此时就要注意动态库了很可能是在动态库做了手脚

经常列表

| 所在库文件 | 简单介绍说明
-----------------+-----------------------+-----------------------
open | libc.so | . . .
-----------------+-----------------------+-----------------------
close | libc.so | . . .
-----------------+-----------------------+-----------------------
crypt | libcrypt.so | . . .
-----------------+-----------------------+-----------------------

(注意完成这个表)

为了检测这类后门下面给出个shell脚本从干净系统上取得个动态库拷贝用这
脚本进行比较查看代码有没有什么区别以确定是否被置入后门

-------------------------------------------------------------------------------
此处代码略
-------------------------------------------------------------------------------

7. SLKM后门

THCslkm-1.0.tar.gz

-------------------------------------------------------------------------------
此处代码略
-------------------------------------------------------------------------------

8. snfer后门

snfer用来监听主机或网络以获取敏感数据比如帐号/口令对于网络监听可以查
看网络接口是否处于混杂(promisc)模式后确定

对Linux系统在命令行执行config命令如果发现PROMISC这个介绍说明网络接
口处于混杂(promisc)模式排除合法用户运行网络协议分析意味着有snfer在
运行如果这样立即执行命令"lsof -n | grep sock"对第 5列TYPE字段为sock
些输出行仔细检查确定出哪在snfer删除的

对于Solaris系统用下面思路方法来查出是否有某个进程在进行网络监听它是正常运用
还是后门

# config -a # 列出活动网络接口
lo0: flags=849<UP,LOOPBACK,RUNNING,MULTIcast> mtu 8232
inet 127.0.0.1 netmask ff000000
hme0: flags=863<UP,BROADcast,NOTRAILERS,RUNNING,MULTIcast> mtu 1500
inet 192.168.10.2 netmask ffff0000 broadcast 192.168.255.255
ether 8:0:20:b0:64:6d
# ls -l /dev/hme* # 查出网络接口设备
lrwxrwxrwx 1 root other 29 Oct 9 1998 /dev/hme->../devices/pseudo/clone@0:hme
# ls -l /devices/pseudo/clone@0:hme # 细看
crw------- 1 root sys 11, 7 Oct 9 1998 /devices/pseudo/clone@0:hme
# lsof | grep "hme" # 用 lsof 查看是否处于混杂模式
snoop 7988 root 3u VCHR 7,2 0t0 423220 /devices/pseudo/clone@0:hme->bufmod->hme
# lsof | grep "clone@0:hme" # 同上
snoop 7988 root 3u VCHR 7,2 0t0 423220 /devices/pseudo/clone@0:hme->bufmod->hme
#

"lsof | grep ***" 有输出介绍说明有监听在运行"***"是步仔细查证
确定是否是后门


Tags:  stsm后门钥匙 stsm后门在哪 stsm后门 查找asp隐藏后门

延伸阅读

最新评论

发表评论