解决GSD挖矿病毒引起的高CPU占用和进程复发问题

最干净的解决方法是通过重装系统,确保系统中没有任何恶意文件或后门。尤其是在无法完全确认病毒清除干净的情况下,重新安装是确保安全的最佳做法。

1、第一次出现问题解决后写脚本

第一次机器出现GSD挖矿进程排查思路和清理脚本,观察一星期后没有出现问题,没有重装系统,测试环境在使用,添加计划任务,每天凌晨执行脚本。过渡了段时间

1.1、清理病毒脚本参考

#!/bin/bash

# 定义需要扫描的可疑文件和进程名称
SUSPICIOUS_FILES=(
    "/bin/gsd"
    "/bin/crondr"
    "/bin/bprofr"
    "/etc/cron.d/pwnrig"
    "/etc/cron.daily/pwnrig"
    "/etc/cron.hourly/pwnrig"
    "/etc/cron.monthly/pwnrig"
    "/etc/cron.weekly/pwnrig"
)

SUSPICIOUS_SERVICES=(
    "pwnrige"
)

# 检查并删除可疑文件
for file in "${SUSPICIOUS_FILES[@]}"; do
    if [ -e "$file" ]; then
        echo "发现可疑文件: $file,正在删除..."
        sudo chattr -ia "$file" && sudo rm -f "$file"
    fi
done

# 检查并禁用可疑 systemd 服务
for service in "${SUSPICIOUS_SERVICES[@]}"; do
    if systemctl list-units --type=service | grep -q "$service"; then
        echo "发现可疑服务: $service,正在禁用并删除..."
        sudo systemctl stop "$service"
        sudo systemctl disable "$service"
        sudo rm -f "/etc/systemd/system/${service}.service"
        sudo systemctl daemon-reload
    fi
done

# 检查并清理计划任务中的可疑项
CRON_DIRS=(
    "/etc/cron.d"
    "/etc/cron.daily"
    "/etc/cron.hourly"
    "/etc/cron.monthly"
    "/etc/cron.weekly"
)

for dir in "${CRON_DIRS[@]}"; do
    if sudo grep -q "gsd" "$dir"/* 2>/dev/null; then
        echo "发现计划任务中的可疑条目,在 $dir 中清理..."
        sudo sed -i '/gsd/d' "$dir"/*
    fi
done

# 检查环境变量中的可疑项
PROFILE_FILES=(
    "/etc/profile"
    "/etc/bashrc"
    "$HOME/.bash_profile"
    "$HOME/.bashrc"
)

for profile in "${PROFILE_FILES[@]}"; do
    if grep -q "gsd" "$profile"; then
        echo "发现环境变量中的可疑条目,在 $profile 中清理..."
        sudo chattr -ia "$profile"
        sudo sed -i '/gsd/d' "$profile"
    fi
done

echo "恶意文件和进程检查完成。"

1.2、环境变量注意事项

第一次解决问题时,未能明确找到病毒被触发的具体位置。登录时系统反应特别缓慢,删除病毒进程后,虽然系统暂时恢复正常,但再次通过 SSH 登录时,病毒又被触发。经过排查,发现问题的根源在于环境变量配置文件(如 .profile)被篡改,导致每次登录成功后病毒进程会自动启动。进一步排查用户的环境配置文件时,发现这些文件中含有恶意脚本或命令,这些脚本会在每次用户登录时被触发,导致病毒进程重新启动。重点排查了登录脚本配置文件,特别是 /etc/profile、~/.bashrc、~/.bash_profile 等文件,这些文件存储了系统和用户的环境变量配置。

2、第二次出现gsd排查步骤

两个月后的今天,发现系统CPU负载异常升高,经排查发现 gsd 进程异常运行。尝试使用之前编写的脚本终止该进程,但未能成功。怀疑 gsd 进程未彻底清理,或者存在其他入侵手段,导致进程复发。以下是手动排查的步骤。

2.1、查看病毒使用系统文件和资源

 用于查看与 gsd 相关的所有打开的文件和网络连接

lsof |grep gsd

查看父进程

ps -fp 969169

UID PID PPID C STIME TTY TIME CMD

root 969169 1 99 11:06 ? 01:58:11 gsd

通过查到本地监听端口,使用iptables禁用

ss -tnp | grep 21282

sudo iptables -A INPUT -p tcp --dport 21282 -j REJECT

sudo iptables -A OUTPUT -p tcp --sport 21282 -j REJECT

还是没有解决

2.2、查看gsd相关的文件删除

find / -name "*gsd*" -exec rm -f {} \;

2.3、检查计划任务

crontab -l

cat /etc/crontab

ls /etc/cron.d/

#清理全部计划,我这边没有发现新的计划任务

crontab -r

2.3、尝试收到kill进程

kill -9 969169

杀死后不到一分钟又启动一个进程

2.4、杀死进程后启动新进程(怀疑有系统服务)

查找源程序

ls -l /proc/973108/exe

2.5、查看指定进程的服务状态信息

systemctl status 973108

2.6、删除系统文件和禁止服务

# 查看服务状态,确认进程是否由 pwnrigl.service 启动
systemctl status 975493

# 取消屏蔽服务,允许对该服务进行管理
sudo systemctl unmask pwnrigl.service

# 移除文件的不可变属性,使其可以删除
chattr -ia /usr/lib/systemd/system/pwnrigl.service

# 停止 pwnrigl.service 服务,防止该进程继续运行
sudo systemctl stop pwnrigl.service

# 禁用 pwnrigl.service 服务,防止其在系统重启后自动启动
sudo systemctl disable pwnrigl.service

# 删除服务文件,彻底清除与 pwnrigl.service 相关的文件
sudo rm /usr/lib/systemd/system/pwnrigl.service

# 重新加载 systemd 配置,确保系统中不再存在该服务的引用
sudo systemctl daemon-reload

# 再次查看进程是否仍然运行,确认恶意进程是否被完全清除
lsof -p 975493

2.7、检查系统服务,查看没有出现

ls /etc/init.d/

systemctl list-units --type=service --all

3、总结

本次问题通过查找 gsd 进程使用的文件和系统服务,成功定位并停止了病毒的相关进程,从而解决了高 CPU 占用和进程复发的问题。然而,这次解决方案并未完全清除病毒,只是通过停止当前进程和禁用相关服务使其暂时无法再次启动。

主要步骤:

• 通过排查 gsd 进程相关的文件和服务,定位到恶意服务并对其进行停用。

• 清除了服务文件并停止了进程,确保暂时没有复发。

注意事项:

1. 未完全清除病毒:虽然目前没有发现 gsd 进程复发,但并未彻底删除病毒的所有痕迹。病毒可能通过其他手段或系统漏洞重新激活,因此不能保证完全解决问题。

2. 环境隔离:如果以后需要使用相似的环境,建议考虑重新安装并隔离系统与其他网络或服务器,避免恶意软件的传播或入侵。

3. 加强安全防护:确保系统的安全性,定期更新操作系统和应用程序,开启防火墙、实施权限控制、使用入侵检测等措施,以防止类似攻击再次发生。

病毒排查的过程不仅帮助解决了具体问题,还通过反复实践加深了对系统的理解,并巩固了基本操作技能。

开工大吉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值