网络安全 频道

Linux下后门查找初步

1. 帐号后门

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

bin、daemon、adm、lp、sync、shutdown、halt、mail、news、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木马后门

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

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

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

作进一步查证时,第一步是用strings命令查找程序中有无异常字符串。第二步,如有必
要,需要将现有二进制代码与确认干净的二进制代码进行比较。

对于这类后门,重点检查这样一些程序

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目录中启动脚本调用的二进制可执行程序

ANNOUNCE MOUNTFSYS PRESERVE RMTMPFILES ab2mgr
afbinit audit autofs autoinstall 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 sysetup sysid.net sysid.sys
syslog ufs_quota utmpd volmgt xntpd

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

1) login后门

如果"strings /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/***

如果有,说明已经有木马了。如果strings ls | grep "/dev/pty"有输出,或者直接
strings 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/***

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

4) ifconfig后门

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

if ( ptr->flags & IFF_PROMISC ) printf( "PROMISC " );

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

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肯定被修改过了。
如果strings netstat | grep "/dev/pty"有输出,或者直接strings 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肯定被修改过。如果
strings ps | grep "/dev/pty"有输出,或者直接strings 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肯定被修改过。如果
strings top | grep "/dev/pty"有输出,或者直接strings 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肯定被修改过。如果
strings tcpd | grep "/dev/pty"有输出,或者直接strings 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被植入木马。如果
strings syslogd | grep "/dev/pty"有输出,或者直接strings 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肯定被修改过。如果
strings killall | grep "/dev/pty"有输出,或者直接strings killall发现可疑路径和
文件名,说明已经被植入木马

11) pop3d后门

pop3d-trojan.tar.gz

12) sshd后门

sshd后门把ssh发行包里的login.c作了修改,加入内置的帐号/口令。执行
"strings 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肯定被修改过。如果
strings find | grep "/dev/pty"有输出,或者直接strings find发现可疑路径和文件名,
说明已经被植入木马

15) chfn后门

16) chsh后门

4. 守护进程后门

binary木马后门是把系统上原有的二进制可执行程序换成特洛伊(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 socket,通过发ICMP包来进行网络通讯。

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