前言
本文为华为云云耀云服务器L实例测评文章,测评内容是 云耀云服务器L实例 反挖矿防护指南
系统配置:2核2G 3M CentOS7.9
之前的文章中『一文教你如何防御数据库恶意攻击』,我们讲到黑客如何通过攻击数据库来获取权限,以及我们需要如何处理防护云耀云服务器L实例
接下来我们将要讲述另外一种黑客攻击的手段 —— 挖矿,本文将从黑客如何入侵,布置挖矿程序入手,逐步讲解我们应该如何排查挖矿程序,根除挖矿程序
注意:一般来说,普通服务器仅支持安全告警检测,不支持安全告警处理。如果您需要安全告警处理,需要使用防病毒版、高级版或企业版来加强防护
挖矿木马
简述
挖矿木马会占用CPU进行超频运算,从而占用主机大量的CPU资源,严重影响其他应用的正常运行。
黑客为了得到更多的算力资源,一般都会对全网进行无差别扫描,同时利用SSH爆破和漏洞利用等手段攻击主机。
部分挖矿木马还具备蠕虫化的特点,在主机被成功入侵之后,挖矿木马还会向内网渗透,并在被入侵服务器上持久化驻留以获取最大收益。
同时挖矿程序具有联动作用,在清理过程中会存在处理不及时或清理不干净导致挖矿病毒反复发生、出现恶意脚本替换系统命令的现象,从而导致执行系统命令时触发恶意脚本执行(例如:xorddos)。因此,需要在挖矿程序的一个执行周期内,尽快将被入侵服务器上的木马程序和持续化后门清理干净,否则容易导致挖矿病毒频繁复发。
部门木马会对系统命令进行篡改(阻止你查看恶意进程),执行 rpm -Va |grep bin/ 可查看系统文件更改情况:missing表示命令找不到了,5代表MD5发送了改变,有可能对应的命令文件被替换或者被修改了 M则表示命令的权限发生了修改,找到异常命令后然后执行stat /usr/bin/kill 查看文件的具体变更时间。
处理方法
1. 及时隔离主机
部分带有蠕虫功能的挖矿木马在取得主机的控制权后,会继续对公网的其他主机,或者以当前主机作为跳板机对同一局域网内的其他主机进行横向渗透,所以在发现主机被植入挖矿木马后,在不影响业务正常运行的前提下,应该及时隔离受感染的主机,然后进行下一步分析和清除工作。
2. 阻断异常网络通信
挖矿木马不仅会连接矿池,还有可能会连接黑客的C2服务器,接收并执行C2指令、投递其他恶意木马,所以需要及时进行网络阻断。
(1)检查主机防火墙当前生效的iptables规则中是否存在业务范围之外的可疑地址和端口,它们可能是挖矿木马的矿池或C2地址
iptables -L -n
(2)从iptables规则中清除可疑地址和端口
vi /etc/sysconfig/iptables
(3)阻断挖矿木马的网络通信
iptables -A INPUT -s 可疑地址 -j DROP
iptables -A OUTPUT -d 可疑地址 -j DROP
3. 清除计划任务
大部分挖矿木马会通过在受感染主机中写入计划任务实现持久化,如果仅仅只是清除挖矿进程,无法将其根除,到了预设的时间点,系统会通过计划任务从黑客的C2服务器重新下载并执行挖矿木马。
查看系统当前用户的计划任务:
crontab -l
查看系统特定用户的计划任务:
crontab -u username -l
查看其他计划任务文件:
cat /etc/crontab
cat /var/spool/cron
cat /etc/anacrontab
cat /etc/cron.d/
cat /etc/cron.daily/
cat /etc/cron.hourly/
cat /etc/cron.weekly/
cat /etc/cron.monthly/
cat /var/spool/cron/
4. 清除启动项
除了计划任务,挖矿木马通过添加启动项同样能实现持久化。
可以使用如下命令查看开机启动项中是否有异常的启动服务。
CentOS7以下版本:
chkconfig –list
CentOS7及以上版本:
systemctl list-unit-files
如果发现有恶意启动项,可以通过如下命令进行关闭:
CentOS7以下版本:
chkconfig 服务名 off
CentOS7及以上版本:
systemctl disable <服务名>
另外,还需要仔细排查以下目录及文件,及时删除可疑的启动项:
/usr/lib/systemd/system
/usr/lib/systemd/system/multi-user.target.wants
/etc/rc.local
/etc/inittab
/etc/rc0.d/
/etc/rc1.d/
/etc/rc2.d/
/etc/rc3.d/
/etc/rc4.d/
/etc/rc5.d/
/etc/rc6.d/
/etc/rc.d/
排查的时候,可以按照文件修改时间来排序,重点排查近期被创建服务项。
5. 清除预加载so
通过配置/etc/ld.so.preload,可以自定义程序运行前优先加载的动态链接库,部分木马通过修改该文件,添加恶意so文件,从而实现挖矿进程的隐藏等恶意功能。
检查/etc/ld.so.preload(该文件默认为空),清除异常的动态链接库。可以执行> /etc/ld.so.preload
命令进行清除。
6. 清除SSH公钥
挖矿木马通常还会在~/.ssh/authoruzed_keys
文件中写入黑客的SSH公钥,这样子就算用户将挖矿木马清除得一干二净,黑客还是可以免密登陆该主机,这也是常见的保持服务器控制权的手段。
排查~/.ssh/authorized_keys
文件,如果发现可疑的SSH公钥,直接删除。
7. 清除挖矿木马
(1)清除挖矿进程
执行如下命令排查系统中占用大量CPU资源的进程
# 实时查看进程
top -c
# 查看全部进程
ps -ef
# 获取挖矿进程文件路径
ls -l /proc/$PID/exe
# 删除挖矿程序进程
kill -9 $PID
# 最后删除挖矿程序文件
(2)清除其它相关恶意进程
恶意进程与外部的C2服务器进行通信时,往往会开启端口进行监听。执行如下命令,查看服务器是否有未被授权的端口被监听。
netstat -antp
然后按照第一步的方法清除进程及程序即可
可以通过如下命令排查近期新增的文件,清除相关木马
find /etc -ctime -2 (这里指定目录为/etc,获取近2天内的新增文件)
lsof -c kinsing (这里要查看文件名为kinsing的相关进程信息)
其他有效命令
find /etc/ -name '*' | xargs grep 'kinsing' -n 2>/dev/null (在/etc/目录下搜索包含木马信息kinsing的文件,/etc/可替换为其他目录)
while true; do netstat -anplt | grep 10.112.85.71; sleep 1; done (根据矿池地址查找进程,矿池地址在主机安全-恶意请求中有告警)
实战演练
之前博主的服务器经常被异常登录,通过查询云服务器监控控制台,发现攻击者 IP 地址非常多,包括很多国家,美国,德国,英国(肉鸡网络),但是登录用户很固定,都是 postgres,故据此进行如下处理。
排查木马
正常来说,我们使用 top
命令查找占用 CPU 高的进程,木马程序占用 CPU 会很高,然后就可以开快速定位,但是博主使用这种方法却失效了,没有找到占用 CPU 高的进程。可能是因为植入的木马程序是定时挖矿,并不是一直占用 CPU,当然也可能是系统命令被木马篡改了,从而隐藏了木马进程的踪迹。只能使用下面搜索进程方法
使用如下命令查找与 postgres
相关的进程
ps -ef | grep post
清除木马
我们看到有些进程后面带了一大堆参数-t 515 -f 1 -s 12 -S 8 -p 0 -d 1 p ip
,如果比较敏感的话我们就可以猜出来这是木马了,很明显我在使用kill -9 <PID>
命令删除进程之后,隔了大概 20 秒,该进程又重新启动,确认是木马无疑。或者说我们对虚拟币种比较熟悉的情况下,也可以看出 blitz 是一种虚拟币。
确定木马进程之后流程就会顺畅很多,按照上面的步骤处理即可,但是注意,并不是所有木马程序入侵都需要全部处理步骤,酌情处理即可。
博主就是在处理木马的过程中,中间业务需要重启服务器,重启之后就发现木马程序消失,并且木马程序已经销毁,说明入侵者没有启用自启动,没有更深度的入侵
云耀云服务器L实例
基础监控
控制台:弹性云服务器 - 控制台 (huaweicloud.com)
这里要推荐华为云的防护监控服务,点击进入基础监控服务页面,我们可以查看不同周期的 CPU 使用率,磁盘带宽网络流出,直观清晰
详细监控
控制台:云监控服务 - 控制台 (huaweicloud.com)
如果您觉得基础监控的服务不能满足需求,可以进入详细监控的控制台页面,可以实时监控操作系统,基础监控,进程监控,全方位监控防护服务器。
如果防护级别还是不够,您可以购置防病毒版、高级版或企业版来加强防护
云防护文档
这里列出华为云及其他云服务厂商的挖矿防护文档,供大家参考
华为云:处置挖矿木马实践手册
腾讯云:挖矿木马自助清理手册
阿里云:挖矿程序处理最佳实践
本文由博客一文多发平台 OpenWrite 发布!