首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux应急之常见劫持类型

声明

本文参考链接:

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 命令加载的库,发现劫持消失。

二、隐藏的计划任务

隐藏定时任务:

(crontab -l ;printf "0 8 * * * /root/1.sh;\rno crontab for 'root' %100c\n")|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

卸载后恢复。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Oi_rRV1X5dqpta73B9RnK46A0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券