反入侵之发现后门利用mount-bind将进程和端口信息隐匿
作为一名安全工程师,日常工作中会经常遇到网站遭遇入侵,甚至被植入后门,如何去发现后门,进而对入侵进行调查取证都是一名优秀的安全工程师必备功课,本文结合实际案例介绍一下一款后门的植入技巧,以及我是如何发现它的,仅此给大家一个参考,希望给大家日后工作带来帮助。
0×01. 正文今天在蜜罐环境中发现有一个奇怪的端口
一看就不合常理,没有进程名和进程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 后门
0×02. 补充上面的例子中我们是直接获取/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)却能够发现。
0×03. 总结**文本所介绍的这款后门植入技巧相对比较简单,因为它没有完全隐藏自身,比如通过netstat -an 还是可以发现其部分行踪(因为netstat 不需要/proc/pid下面的信息支撑),更高级的后门,是能够骗过netstat的,当然这是后话,后续我会给大家介绍更高级的后门隐匿技巧。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/55022.html
shell相关文章
- Windows 根据端口查询进程,通过进程号杀进程
- linux命令行杀死进程_shell脚本获取进程号并杀死进程
- 利用tasklist和taskkill实现判断进程数按名称杀掉进程
- tasklist 结束进程_CMD命令利用tasklist与taskkill关闭程序「建议收藏」
- Android进程与线程
- Python学习笔记(十)·进程和线程
- 浏览器层面优化前端性能(1):Chrom组件与进程/线程模型分析
- python多进程编程-进程池的使用(二)
- [linux] C语言Linux系统编程进程基本概念详解编程语言
- 学习Linux与C语言,利用子进程提升编程能力(linuxc子进程)
- 管理Linux进程:利用命令行(linux进程命令行)
- 调度Linux Qt环境下的进程调度优化(linuxqt进程)
- Linux查看Nginx进程:一步一步进行(linux查看nginx进程)
- 量Linux进程:利用信号量进行同步(linux进程信号)
- 利用Linux watch命令实现进程监控(linuxwatch命令)
- 指令Linux下查看进程:使用ps指令(linux中ps)
- Linux上利用strace实现进程调试(linuxstrace)
- 深入浅出:Oracle中查看进程数的方法(oracle查看进程数)
- Linux的发展史:探索分支的进程(linux的分支)
- Linux下获取进程PID的方法(linux获取进程pid)
- 利用Linux管道实现多进程通信(linux管道通信)
- 使用Linux chrt 提高进程优先级(linuxchrt)
- 探索Linux下查找进程的方法(查找进程linux)
- Linux中保护进程的奇妙之旅(linux保护进程)
- 历史的一切Linux: 扼杀历史的进程(linux已杀死)
- Linux进程查询方法详解(linux怎么查询进程)
- 利用Redis队列实现多进程高效处理(redis队列多进程处理)
- 利用Redis队列实现多进程互斥锁(redis队列 互斥锁)
- Redis实现进程间信息交换(redis 进程通信)
- Redis利用进程锁实现安全性设置(Redis设置进程锁文件)