专栏名称: 伯乐在线
关注职业资讯;学习各类职业感悟、心得和经验分享,扩大职业视野;体会求职、工作和创业的历程 - 就在JobBole.com 伯乐在线
目录
相关文章推荐
51好读  ›  专栏  ›  伯乐在线

急死!CPU被挖矿了,却找不到哪个进程!

伯乐在线  · 公众号  · 程序员  · 2021-01-09 17:05

正文

请到「今天看啥」查看全文


mining pool! ,服务器正在挖矿实锤了!

但神奇的是,这个进程像是隐身了一般,找不到存在的任何痕迹。

进程如何隐藏

现在说回到本文的正题: Linux操作系统上,进程要隐藏起来,有哪些招数?

要回答这个问题,先来知道ps、top等命令枚举系统的进程列表的原理。

Linux的设计哲学是: 一切皆文件!

进程也不例外, Linux系统中有一个特殊的目录: /proc/ ,这个目录下的内容,不是硬盘上的文件系统,而是操作系统内核暴露出的内核中进程、线程相关的数据接口,也就是 procfs ,里面记录了系统上正在运行的进程和线程信息,来查看一下:

这些以数字命名的目录,就是一个进程的PID,里面记录了该进程的详细信息。

而ps、top等命令的工作原理,实质上就是遍历这个目录。

知道了原理,想实现隐藏就有以下几个思路:

命令替换

直接替换系统中的ps、top命令工具。可以从GitHub上下载它们的源码,加入对应的过滤逻辑,在遍历进程的时候,剔除挖矿进程,实现隐藏的目的。

模块注入

编写一个动态链接库so文件,在so中,HOOK遍历相关的函数( readdir/readdir64 ),遍历的时候,过滤挖矿进程。

通过修改 LD_PRELOAD 环境变量或/etc/ld.so.preload文件,配置动态链接库,实现将其注入到目标进程中。

内核级隐藏

模块注入的方式是在应用层执行函数HOOK,隐藏挖矿进程,更进一步,可以通过加载驱动程序的方式在内核空间HOOK相应的系统调用来实现隐藏。不过这对攻击者的技术要求也更高,遇到这样的病毒清理起来挑战也更大了。







请到「今天看啥」查看全文