UNIX/Linux系统上最著名的非法修改检测软件是TripWire。在这里,我们就以它的Solaris上用的企业版来做比较。
有用户报告说,在他们的一些机器上,TripWire报了一些错,其中一些是查看系统里的SetUID/SetGID程序超时了. 检查了它的命令,发现是这样的:
find / ( -fstype ctfs -o -fstype mntfs -o -fstype objfs -o -fstype proc -o ! -local ) -prune -o -type f ( -perm -04000 -o -perm -02000 ) -print 2>/dev/null
程序超时只需将时间限制延长可能就可以(其实也是有问题的)解决的,但若黑客在/usr/bin目录下建一些名字是有多行的SetUID程序,那就可能对上面这个命令的输出产生干扰。
我们还没有确认TripWire是否能区分由STOP信号造成的程序超时与程序确实需要更长的时间来处理有些系统较多的文件。若无法区分,那延长时间限制就只会让黑客攻击更容易。
在WZSysGuard中,寻找SetUID/SetGID程序的命令是这样的:
root@sx86:/bin# wzsgfindsuid 1234|sort
Warning!
Found some multi-line file names.
Multi-line name must not be used for files.
Please check /var/adm/mlfn.1346
/opt/csw/bin/amd64/gpg
/opt/csw/bin/pentium_pro/gpg
/usr/SUNWale/bin/mailx
/usr/X11/bin/Xorg
/usr/X11/bin/Xvnc
/usr/X11/bin/amd64/Xorg
/usr/bin/amd64/newtask
/usr/bin/amd64/uptime
/usr/bin/amd64/w
/usr/bin/at
/usr/bin/atq
/usr/bin/atrm
/usr/bin/cdrw
/usr/bin/chkey
/usr/bin/crontab
/usr/bin/ct
/usr/bin/cu
/usr/bin/eject
/usr/bin/fcrypt
/usr/bin/fdformat
/usr/bin/i86/newtask
/usr/bin/i86/uptime
/usr/bin/i86/w
/usr/bin/lpset
/usr/bin/mail
/usr/bin/mailq
/usr/bin/mailx
/usr/bin/newgrp
。。。
你可以看到,当检查到系统有名字为多行的SetUID/SetGID程序时,它会将那些程序名存入一个专门的文件,这里是/var/adm/mlfn.1346
root@sx86:/bin# cat /var/adm/mlfn.1346
/usr/bin/su
/vxfs/DIR/A
B
C
root@sx86:/bin# od -c /var/adm/mlfn.1346
0000000 / u s r / b i n / s u n