挖矿的类型
- 主动挖矿:用户在个人电脑或服务器使用挖矿程序进行CPU,GPU计算,获取虚拟货币。
- 被动挖矿:挖矿病毒通过系统漏洞,恶意程序,弱口令等方式入侵服务器,设备感染挖矿病毒后会开始挖掘虚拟货币。
- 前端挖矿:JS挖矿,挖矿病毒嵌入到网页的javascript中,用户访问网页时浏览器执行挖矿命令,现在比较少。不稳定,用户关闭浏览器挖矿程序可能就停止运行了。
常见挖矿事件的行为
- 访问恶意域名
- CPU GPU占用率高
- 端口扫描行为
挖矿的排查思路
总体思路就是:隔离被感染主机 进程确认和系统排查 清除挖矿木马 加固与防范
一:初步判断:是否遭受挖矿攻击,攻击时间,传播范围,网络环境等。
二:异常进程与文件:隔离被感染的主机后,就要确定挖矿的恶意进程及其关联的恶意样本,以便后续进行清楚工作。
三:系统排查:挖矿木马会创建恶意的进程连接矿池,利用计算机CPU,GPU资源来挖矿。同时会利用系统的功能来实现持久化,例如创建用户,计划任务,启动项,注册表等。
四:日志排查:登录日志,服务器日志,安全设备日志,做一下根因分析,避免加固后再次出现同类问题。
具体的排查操作
- 异常进程与文件
- 使用top 命令查看占用CPU最高的进程
2.ps命令也可以定位高CPU占用的进程。
ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head -n 5 cpu占用前5的信息
- 网络连接排查 netstart
netstart -anltp 查看到可疑ip可以到威胁情报上去确认是否为矿池域名或恶意地址
- 查看可疑的进程文件
经过上面排查,基本获取到进程的pid,可以依据pid去查找相关恶意文件
lsof -p pid
ls -al /proc/[pid]/exe 定位程序的实际路径
- 结束进程清除文件
kill -9 pid
- rm 删除可疑的程序文件
rm -rf 文件路径
- 有些时候无法通过上述排查定位pid,可能是将/proc/pid进行了隐藏,可以通过以下方式隐藏
mkdir .hidden
mount -o bind .hidden /proc/pid
这种情况可以使用 cat /proc/$$/mountinfo
恶意程序为了持久化驻留,还会创建计划任务 ,启动项,用户账号等
计划任务排查
1.使用计划任务命令查询 crontab -u root -l 查看root用户计划任务
2.查看/etc下计划任务文件
ls /etc/cron* 查看/etc目录下所有计划任务文件
常见的定时任务文件
/var/spool/cron/* #centos的
/var/spool/cron/crontabs/* #ubantu的
/etc/anacrontab* 异步定时
/etc/cron.hourly/*
/etc/cron.daily/*
/etc/cron.weekly/*
/etc/cron.monthly/*
- 启动项排查
chkconfig 查看开机启动项目
cat /etc/init.d/rc.loacal 查看init.d文件夹下的rc.local文件内容
cat /etc/rc.local 查看rc.local文件内容
ls -alt /etc/init.d 查看init.d文件夹下所有文件的详细信息
不同的linux发行版查看开机启动项的文件不大相同,Debian系linux一般查看/etc/init.d目录最近有无修改和异常的开机启动项;Redhat系一般查看/etc/rc.d/init.d或者/etc/syetemd/syetem等目录。
- 可疑账号排查
查找可登录账号: cat /etc/passwd | grep -E "/bin/bash$" | awk -F: '{print $1}'
查找超级用户: awk -F: '$3==0 {print $1}' /etc/passwd
查找公钥文件
cat /root/.ssh/*.pub
cat /root/.ssh/authorized_keys
- 日志排查
登录成功 more /var/log/secure* | grep "Accepted password"
登录失败 more /var/log/secure* | grep "Failed password"
空口令登录 more /var/log/secure* | grep "Accepted none"
新增用户 more /var/log/secure* | grep "new user"
历史命令 history cat /root/.bash_history
系统日志排查无果的话,可以排查其他服务的日志,如web 中间件等
- Linux的库文件劫持
排查时命令如果无法正常显示效果,可能是文件被劫持或做了替换,这种情况可以使用busybox来查看