声明
本公众号发表的文章仅用于学习和交流,请勿用于非法途径,如果文章中涉及到侵权,请及时联系公众号进行删除。
本文参考链接:
https://www.freebuf.com/column/162604.html
https://www.cnblogs.com/goodhacker/p/14488239.html
一、库文件劫持
库文件劫持又称:预加载型恶意动态链接库后门
1、环境变量加载库文件
测试使用的 rootkit 下载地址https://github.com/mempodippy/cub3[1]
LD_PRELOAD 环境变量是会及时生效的,使用 LD_PRELOAD 加载恶意动态链接库方法如下:
加载环境变量前:
1)如何利用?
1.LD_PRELOAD的值设置为要预加载的动态链接库
LD_PRELOAD=/lib/cub3.so
2.导出环境变量使该环境变量生效
export LD_PRELOAD
2)如何判断是不是恶意?
根据环境变量添加的动态库文件,查看时间是不是正常,一般最近添加的可能有问题:
再计算 MD5 去情报查找,计算出 MD5 后去情报平台搜索看是否存在恶意该 MD5 的情报:
恢复:
unset LD_PRELOAD 解除设置的 LD_PRELOAD 环境变量
2、/etc/ld.so.preload 加载库文件
原理:将恶意动态链接库通过/etc/ld.so.preload 配置文件进行加载。
加载库文件前,显示库文件不存在:
strace -f -e trace=file /bin/cat
写入库文件后:
echo "/lib/cub3.so" > /etc/ld.so.preload
发现 cat 命令加载的库文件/etc/ld.so.preload 已经不为空,并且出现了劫持加载的文件文件路径:/lib/cub3.so
strace -f -e trace=file /bin/cat
清除完又恢复正常
案例:
常见现象:机器中挖矿病毒,top 命令没有发现异常占用多的进程,netstat -antlp 也没有可疑外联。
使用如下命令,查看 netstat 命令的库文件情况,发现有多个可疑库链接存在:/etc/ld.so.preload、/tmp/libinject.so
strace -f -e trace=file /bin/netstat
近一步查看 open 里面的路径:/etc/ld.so.preload 的内容,发现文件不存在?但是上面存在存在异常,怀疑 cat 命令也被劫持了。
再继续使用命令看一下 cat 命令预加载情况,发现也存在劫持情况。
strace -f -e trace=file /bin/cat
这个时候就需要用 busybox 的命令去看这个文件了,使用 busybox 查看,发现被劫持的文件正是预加载的库文件里面的/tmp/libinject.so
busybox cat /etc/ld.so.preload
查看下该文件的创建时间:
busybox stat /tmp/libinject.so
查看下文件的 md5:6e734be6192fc688421641fee6b06c01,多个威胁情报平台搜索发现该 MD5 值对应的文件是恶意的。
busybox md5sum /tmp/libinject.so
最后使用 bsubox 清理库文件劫持。
busybox rm -rf /etc/ld.so.preload /tmp/libinject.so
查看 cat 命令加载的库,发现劫持消失。
注:busybox 工具下载,关注公众号回复:“busybox”获取下载链接。
二、隐藏的计划任务
隐藏定时任务:
(crontab -l ;printf "0 8 * * * /root/1.sh;rno crontab for 'root' %100cn")|crontab -
crontab -l 提示没有 root 用户的计划任务
corntab -e 编辑查看定时任务,发现计划任务添加成功
cat 查看计划任务,发现没有异常
直接编辑 root 文件,发现存在计划任务。
删除指定行即可。
三、mount 劫持
众所不知,Linux 的进程在/proc 目录下,是有 netstat 和 ps 命令的时候都读取/proc 目录读取进程信息来返回结果
实现方法:
1.netstat -antlp 可以看到云盾的进程,ps -ef 可以看到 PID:
2.df 查看当前挂载状态:
3.将云盾的 PID 挂载到/dev/vda1 下:
mount /dev/vda1 /proc/1148
4.1148PID 已不见:
综上,复现了挖矿病毒看网络连接无法看到 PID 的情况。
解决方法:
1.可以尝试使用 mount 看下挂载的文件。
2.找到跟 proc 有关的挂载。
mount | grep proc
3.卸载。
umount /dev/vda1 /proc/1148
卸载后恢复。
本公众号持续更新精彩内容,欢迎关注!
往期精彩内容:
原文始发于微信公众号(安服仔的救赎):Linux应急之常见劫持类型
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论