详细解决服务器的挖矿病毒和端口扫描器
Posted 一个八月想偷懒的开发坑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详细解决服务器的挖矿病毒和端口扫描器相关的知识,希望对你有一定的参考价值。
前言
5月8号上班,阿里云服务器状态异常,终端连接服务器发现很卡而且很慢,clickhouse 无法连接(服务器带宽占满导致无法连接),通过 top 查看服务器性能指标发现最近几分钟的 CPU 占到 50% 左右,并且一直持续,但没看到耗 CPU 的进程,通过 jnettop 监控进程网络流量,没发现特别占带宽的进程,通过阿里云控制台的服务器监控发现,从 8 号半夜开始异常情况开始,CPU 持续稳定于 50% 左右,带宽持续稳定跑满(2 Mbps = 256 kb/s),确定服务器被攻击;
排查问题
通过命令替换:直接替换系统中的 ps、top 命令工具,可以从 GitHub 上下载它们的源码,加入对应的过滤逻辑,在遍历进程的时候,剔除挖矿进程,实现隐藏的目的;
通过模块注入:编写一个动态链接库 so 文件,在 so 中,HOOK 遍历相关的函数(readdir/readdir64),遍历的时候,过滤挖矿进程;通过修改 LD_PRELOAD 环境变量或 /etc/ld.so.preload 文件,配置动态链接库,实现将其注入到目标进程中;
内核级隐藏:模块注入的方式是在应用层执行函数 HOOK,隐藏挖矿进程,更进一步,可以通过加载驱动程序的方式在内核空间 HOOK 相应的系统调用来实现隐藏,遇到这样的病毒清理起来挑战也更大了;
在查找到挖矿病毒和端口扫描器脚本进程后,观察这些进程,发现进程的 PID 会经常改变,kill 后会重新启动,所以怀疑可能是在系统添加定时任务;
解决过程
lsattr 查看 authorized_keys 文件属性:lsattr authorized_keys;
chattr 移除追加属性:chattr -a authorized_keys;
编辑 authorized_keys 里删除登录凭证:vim authorized_keys,后 dd 删除某行;
-
chattr 增加锁定文件属性:chattr +i authorized_keys;
chattr 命令详解:
-
htop 查看进程 PID; 查看父进程:cat /proc/PID/status,PPid 就是父进程;
-
病毒直接作为一个系统服务进程,PID=1 是系统的第一个进程,即 systemd(系统守护进程),查看系统所有正在运行的且类型为 service 服务 systemctl list-units --type=service --all --state=active,果不其然发现 crypto.service,因为父进程是 systemd,所以 kill 后会重新启动(因为 systemd 依赖了定时任务服务),而且还找到了 dkscan.service 和 scan.service,扫描端口服务的也注册成系统服务; 关闭病毒服务:systemctl stop crypto.service,端口扫描的关闭也同理;
禁用病毒服务:systemctl status crypto.service 查看系统服务的状态,并在 systemd 默认目录(/etc/systemd/system)里找到进程文件位置,cat crypto.service 查看文件内容,发现依赖多用户 Target(一组 Unit 的集合)和默认的 Target,那么可以禁用该系统服务 systemctl disable crypto.service ,会自动取消开机重启(Removed symlink /etc/systemd/system/multi-user.target.wants/crypto.service.);
移除病毒服务:删除病毒进程文件,删除 /etc/systemd/system 下的 crypto.service、dkscan.service、scan.service 文件,再查询进程状态 systemctl status crypto.service,报 Unit crypto.service could not be found,卸载系统病毒服务成功!
推测下被入侵原因
(完)
以上是关于详细解决服务器的挖矿病毒和端口扫描器的主要内容,如果未能解决你的问题,请参考以下文章
亚信安全发布2021年挖矿病毒专题报告,聚焦挖矿病毒进化与治理