前景介绍
接收到阿里云服务器CPU持续爆满告警,提示被挖矿病毒入侵
开始排查
1.使用top命令查看,服务器负载很高,top和ps无法查看到高占用进程,进程排查困难
2.使用unhide 搜索隐藏进程,最后发现是修改加载的so文件来实现隐藏进程,大致原理如下:
先说下ps、top等工具的工作原理 以ps工作原理为例说明这些进程信息查看工具的原理 我们知道/proc是一个虚拟文件系统,是VFS的一个实现形式,/proc中包含了内核信息,硬件信息,进程信息等 ps、top等工具就是通过分析/proc文件系统中进程相关目录的信息获取进程信息汇总。 HooK系统调用型的进程隐藏方式都是通过拦截或者迷惑ps等工具从/proc获取分析结果的过程 而不是针对/proc/文件系统生成本身。 修改方式有以下几种: I、修改内核调用,比如getdents 的源码 II、修改libc库中readdir 函数的源码 III、利用环境变量LD_PRELOAD 或者配置ld.so.preload文件 以使的恶意的动态库先于系统标准库加载 以达到架空系统标准库中相关函数的目的,最终实现对特定进程的隐藏
3.此次入侵方式即为入侵者修改ld.so.preload文件,实现对进程的隐藏,经过实践,不删除httpd的话cpu利用率也是居高不下,故此判断,此图中httpd也为伪装病毒,详细如下:
cat /etc/ld.so.preload
4.并且通过netat命令查到一个美国IP通过80端口长时间进行了连接netstat -anp|grep ESTAB
处理过程
1.查看病毒位置
whereis pnscan
whereis xmrigMiner
whereis xmrigDaemon
whereis httpd
2.查出路径后首先直接删除文件,再杀进程,查出位置后使用chattr删除权限
cd 文件路径
因为病毒已经锁定了chattr,所以需执行如下操作
yum -y install e2fsprogs
3.开始删除
cd /usr/local/lib chattr -ia pnscan.so chattr -ia xmrigMiner.so chattr -ia xmrigDaemon.so chattr -ia httpd.so rm -rf xmrigMiner: /usr/lib/xmrigMiner rm -rf xmrigDaemon: /usr/lib/xmrigDaemon rm -rf httpd: /usr/lib/httpd rm -rf xmrigMiner: /usr/local/lib/xmrigMiner rm -rf xmrigDaemon: /usr/local/lib/xmrigDaemon rm -rf httpd: /usr/local/lib/httpd cd /usr/share/scripts/ rm -rf *
删除后会有如下报错:
ERROR: ld.so: object '/usr/local/lib/pnscan.so' from /etc/ld.so.preload cannot be preloaded: ignored.
继续执行 chattr -i /etc/ld.so.preload rm /etc/ld.so.preload
执行完毕后,使用top查看进行PID并进行Kill-9杀掉进程,重启服务器
开机输入unhide proc,直到如下图所示即杀毒完成
再次查看CPU利用率"99id空闲率"