作为一名安全工程师,日常工作中会经常遇到网站遭遇入侵,甚至被植入后门,如何去发现后门,进而对入侵进行调查取证都是一名优秀的安全工程师必备功课,本文结合实际案例介绍一下一款后门的植入技巧,以及我是如何发现它的,仅此给大家一个参考,希望给大家日后工作带来帮助。
今天在蜜罐环境中发现有一个奇怪的端口
一看就不合常理,没有进程名和进程ID
使用 lsof -i:31337 竟没发现任何信息
ps aux 也没查到可疑进程名
lsof 和ps 都是从/proc/进程id下获取显示数据, 难道是/proc/进程id被调包了?
于是去看一下/proc 目录
第5列应该是0 啊,这里怎么是4096 ,这个进程有问题
cd 2694 目录看看, 发现是个空目录,这时可以确定2694 这个进程有重大嫌疑
看一下这个2694 目录是不是被硬链接了 (有点怀疑入侵者使用了mount —bind 技巧)
果然是硬链接,和我的猜想一样, 八成是用了mount —bind 硬链接了
查查当前shell进程的mountinfo,看看是不是有猫腻
cat /pro/$/mountinfo
$$ 表示当前shell进程的进程ID
这行比较关键:/tmp/empty /proc/2694 rw,relatime shared:1 - ext4 /dev/sda1 rw,errors=remount-ro,data=ordere
再看一下/tmp/empty
大小和/pro/2694 一样
原来入侵者通过 mount —bind /tmp/empty /proc/2694
将后门进程(2694) 信息隐藏起来了
知道后门进程被隐藏之后,恢复也就比较简单了
umount /proc/2694
/pro/2694 目录下的内容又出现了
此时,再执行lsof -i:31337
发现可以发现31337 端口的信息了
来看看这个2694的进程到底是什么
原来是nc 后门
上面的例子中我们是直接获取/proc/$$/mountinfo 的内容,发现可疑挂载,当然直接使用mount命令也能发现可疑挂载,不过前者更加可靠
获取当前系统挂载信息有以下方法
1)cat /proc/$$/mountinfo 获取当前挂载信息
2)cat /proc/mounts (内核提供, 不易蒙骗)
3)直接执行mount 命令
其中1) 和2)比较靠谱
3)是获取/etc/mtab 的内容
cp /etc/mtab .
mount —bind /bin /proc/[pid]
mv . /etc/mtab
这样的话,直接执行mount,就发现不了可以挂载,而1)和2)却能够发现。
文本所介绍的这款后门植入技巧相对比较简单,因为它没有完全隐藏自身,比如通过netstat -an 还是可以发现其部分行踪(因为netstat 不需要/proc/pid下面的信息支撑),更高级的后门,是能够骗过netstat的,当然这是后话,后续我会给大家介绍更高级的后门隐匿技巧。
*本文作者:bgusko63190,转载请注明FreeBuf.COM