网络安全-挖矿病毒入侵事件分析
网络安全-挖矿病毒入侵事件分析
第一次遇到,分享下我的定位过程和思路,请各位大佬指点!!! 抱拳
一、背景
云安全中心告警信息

二、查看相关资料
三、根据文档一步步定位
3.1、阻断恶意网络通信
在发现主机存在挖矿行为后,由于完整地处理整个挖矿事件的周期比较长,所以为了及时控制挖矿影响,需要首先阻断挖矿木马的网络通信行为。
执行以下命令,查看当前系统网络连接状态。
netstat -antp
将以下命令中c2地址替换为正常业务不会使用的可疑远程地址(Foreign Address),然后执行下述命令添加防火墙规则,阻断服务器与该可疑地址之间的所有网络连接。
iptables -A INPUT -s c2地址 -j DROP
iptables -A OUTPUT -d c2地址 -j DROP
3.2、清除计划任务
挖矿木马常通过计划任务实现定期下载(更新)并启动挖矿木马,如果仅清理挖矿进程、挖矿木马文件,并不能根治挖矿程序,且会出现挖矿反复的情况。
排查以下计划任务文件,删除计划任务中的挖矿木马下载和启动任务。
查看当前用户或指定用户(username)的计划任务。
crontab -l
crontab -u username -l
主机所有计划任务文件:
/etc/crontab
/var/spool/cron/
/etc/anacrontab
/etc/cron.d/
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/
我这台服务器是新的裸机,vi /etc/crontab 以后只有一条定时任务命令。 这让我觉得/etc/nnt.sh这个执行脚本非常可疑

四、查看/etc/nnt.sh扩展属性
stat /etc/nnt.sh
这里可以看到,/etc/nnt.sh这个文件 创建时间(Birth) 是 2025-05-14,修改时间(Modify)2025-04-05,修改时间 < 创建时间,很明显是被修改过的,是恶意脚本常用的伪装手段

五、查看nnt.sh执行日志
sudo grep "nnt.sh" /var/log/cron
可以看出 是集中在 整点 和 50min执行

六、查看脚本定时任务配置
grep -r "nnt.sh" /etc/cron* /var/spool/cron/
可以看到:
在/etc/cron.d/httpgd文件中设置了每50分钟以root身份执行一次
在/etc/crontab中设置了每天凌晨1点以root身份执行一次
在root用户的个人crontab(/var/spool/cron/root)中也设置了每50分钟执行一次
这个脚本被频繁调度执行,且输出被重定向到/dev/null(即丢弃所有输出)

七、删除nnt.sh相关的定时任务配置
7.1、删除 /etc/cron.d/httpgd 中的任务
7.1.1、执行以下命令
sudo sed -i '/nnt\.sh/d' /etc/cron.d/httpgd
7.1.2、显示无法删除

7.1.3、查看文件详情 可以看到创建时间和受攻击是同一天 并且是只能追加不能删除权限
stat /etc/cron.d/httpgd
lsattr httpgd

7.1.4、移除ai属性并删除
sudo chattr -ia /etc/cron.d/httpgd
vi /etc/cron.d/httpgd
7.2、删除 /etc/crontab 中的任务
7.2.1、移除ai属性并删除
sudo chattr -ia /etc/crontab
这里看到 受到攻击已经把我的crontab从原本的text文件改成二进制文件

7.2.2、重新创建一个新的crontab文件 内容如下
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
7.2.3、被攻击后被改成了二进制文件(data), 重新创建的是文本文件(text)

7.2.4、重新赋权
chomod 644 crontabe
7.3、删除 /var/spool/cron/root中的任务
7.3.1、移除ai属性并删除
sudo chattr -ia /var/spool/cron/root
vi /var/spool/cron/root
八、/etc/nnt.sh文件
8.1、执行删除命令
sudo rm -f /etc/nnt.sh
可以看到 无法删除

8.2、查看文件详情
lsattr /etc/nnt.sh
文件被设置的 仅追加不能修改或删除(a -> append)不可变(i -> immutable) 扩展格式(e -> extent format)

8.3、移除ia属性并删除
sudo chattr -ia nnt.sh
rm -rf nnt.sh
九、封禁IP和域名
9.1、要禁止系统访问恶意域名 natalstatus.org 和 IP 45.89.52.41
# 封禁IP(立即生效)
sudo iptables -A OUTPUT -d 45.89.52.41 -j DROP
sudo iptables -A INPUT -s 45.89.52.41 -j DROP
# 封禁域名(需解析域名,可能不如IP直接)
sudo iptables -A OUTPUT -p tcp -d natalstatus.org -j DROP
sudo iptables -A INPUT -p tcp -s natalstatus.org -j DROP
# 保存规则(CentOS/RHEL)
sudo service iptables save

9.2、防火墙封禁IP和域名
封禁IP
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="45.89.52.41" reject'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" destination address="45.89.52.41" reject'
sudo firewall-cmd --reload

9.3、修改 /etc/hosts 屏蔽域名
# 将域名指向本地回环(彻底屏蔽)
echo "127.0.0.1 natalstatus.org" | sudo tee -a /etc/hosts
echo "127.0.0.1 www.natalstatus.org" | sudo tee -a /etc/hosts
9.4、验证封锁是否生效
# 测试IP是否可访问
ping 45.89.52.41 # 应显示"Network unreachable"或超时
# 测试域名解析(应返回127.0.0.1)
dig natalstatus.org
curl -v http://natalstatus.org # 应无法连接
十、总结
种种迹象表明,这个/etc/nnt.sh文件大概率为恶意脚本,删除全部该脚本相关的定时任务,并删除了nnt.sh文件,封禁了相关的IP和域名。
本文来自博客园,作者:skystrivegao,转载请注明原文链接:https://www.cnblogs.com/skystrive/p/18879419
整理不易,如果对您有所帮助 请点赞收藏,谢谢~

浙公网安备 33010602011771号