☰
挖矿木马是什么?从原理到排查清理与加固实战
2026/10/11 21:29:42 网站建设 项目流程

接到这个标题时,我第一反应是:竟然还有人觉得“挖矿木马”是个生僻词。说实话,在过去几年的安全应急和服务器巡检里,我遇到频率最高的不是勒索病毒,也不是什么APT攻击,而是挖矿木马。就那个让你服务器CPU莫名拉满、风扇狂转、电费暴涨的“小偷”。很多人觉得它离自己很远,但现实中,它可能就藏在某个你几乎不看的临时目录里,悄悄给你“打工”。这篇文章就以我处理过的真实场景为基础,把“什么是挖矿木马”这件事彻底讲透,从它的目的、传播、运行机制,到怎么排查、怎么清理、怎么防住后续复发,一篇给你讲明白。

1. 挖矿木马到底是什么?先从一个真实场景说起

1.1 它和普通木马、勒索病毒的本质区别

挖矿木马,简单来说,就是一类会在受害者不知情的情况下,占用受害者计算机的CPU、GPU等计算资源,去运行加密货币挖矿程序,最终把挖到的虚拟货币归入攻击者钱包的恶意程序。

你可以把挖矿木马想象成一个“不交租金的租客”:他半夜偷偷搬进你闲置的房子(服务器/PC),用你的电器(CPU/GPU)搞生产,赚的钱全进自己口袋,还不交水电费,直到你某天看到电费单(机房成本/电费)才醒悟。

它和普通木马、勒索病毒最大的区别在于攻击目的:

恶意程序类型核心行为攻击者收益受害者感知
挖矿木马占用算力挖虚拟币持续获得虚拟货币,无需与受害者互动机器卡顿、发热、电费上涨
普通木马窃取数据、远程控制、键盘记录获取数据或作为跳板账号被盗、隐私泄露
勒索病毒加密文件并索要赎金一次性勒索收益文件打不开、业务中断

从对比就能看出来,挖矿木马追求的是“持续、稳定、隐蔽”地薅你算力。攻击者不需要跟受害者谈判,不需要维护什么后续通道,只要你机器不断电,它就一直产币。这种“躺赚”模式,让它在所有恶意软件里成了性价比极高的选择。

1.2 为什么现在的攻击者越来越偏爱挖矿

前几年勒索病毒大行其道的时候,很多人以为黑客的“主流生意”就是勒索。但从我接触的应急案例来看,挖矿木马的实际数量远高于勒索病毒。原因其实不难理解:

第一,勒索病毒的操作链条长。攻击者要完成加密、联系受害者、谈判、收赎金、解密这一整套流程,风险高,还经常遇到受害者不付钱的情况。

第二,挖矿木马的操作链条短。只要能植入成功,后续几乎全是自动化的。它不需要跟受害者有任何交互,不会留下谈判痕迹,甚至攻击者可以长期不登录被控机器。

第三,收益曲线平滑。勒索是一锤子买卖,挖矿却是“细水长流”。一台普通服务器的算力虽然产币不多,但入侵1000台服务器呢?那就相当于有一支“免费矿机军队”,每台机器都在为攻击者贡献算力。

另外还有一个关键点:挖矿木马经常和漏洞利用、弱口令爆破绑定在一起。攻击者往往不需要精心构造0day,只要一批机器还在用弱密码、还在跑未打补丁的中间件,就能批量植入。对于这类机器,植入挖矿木马几乎是“零成本”的选品。

2. 从投放到机器上:核心运行机制拆解

2.1 常见传播路径:漏洞、弱口令、供应链

挖矿木马不会自己凭空出现。我在应急过程中见过的高频传播方式,大概能分成四类:

  • 利用互联网暴露的漏洞:比如一些中间件反序列化漏洞、命令执行漏洞。攻击者批量扫描全网开放的服务,一旦发现存在漏洞的机器,直接远程执行命令植入。
  • 弱口令和暴力破解:最常见的就是SSH、RDP弱口令,以及Redis、MySQL等数据库未授权访问。攻击者用自动化脚本不停尝试口令,登录成功后直接把挖矿木马下进去。
  • 软件供应链投毒:通过捆绑在破解软件、激活工具、绿色软件里的恶意组件传播,装机即中招。
  • 钓鱼邮件和下载站:伪装成正常文档或安装包,诱导用户下载执行。

为什么攻击者那么喜欢用漏洞和弱口令?因为这两者的自动化程度极高。攻击者不需要精准打击某个目标,只要批量扫描,总会有人中招。很多企业觉得“我们不是大公司,不会被盯上”,但恰恰相反,攻击者用的是“撒网式捕捞”,你的机器越没人维护,反而越容易被列入攻击清单。

2.2 投递阶段的“加载器”

很多挖矿木马并不是一开始就下载完整的挖矿主程序,而是分两步走:先植入一个体积很小的“加载器”,再由加载器去远程拉取真正的挖矿程序。

这一设计是刻意的。加载器可能只有几KB,混淆程度高,杀毒软件不容易命中特征。它会先去请求一个远端地址,这个地址可能是动态的,也可能藏在图片、文本或加密流里。一旦加载器执行成功,它就会下载主程序、配置文件、守护脚本,然后搭建起一整套驻留体系。

这种“小个子先探路,大部队后跟上”的方式,是挖矿木马免杀设计里非常重要的一环。如果整个流程一次到位,下载的二进制文件体积大、特征多,就很容易被杀软识别了。

2.3 主程序如何“开始干活”

挖矿主程序通常是知名的开源矿工程序(比如门罗币挖矿程序)。它本身是合法软件,被攻击者拿去做恶意用途。运行起来之后,它会做几件事:

第一,环境检测。它会检查当前是否运行在虚拟机、沙箱、蜜罐或调试环境里,如果发现不对劲,可能直接退出或休眠,以此规避分析人员的自动化系统。 第二,资源占用控制。它读取CPU核心数,设置要占用的线程数,有些变种还会设定“只有在CPU占用低于某一阈值时才全速运行”,防止机器卡到让人立刻注意到。 第三,连接矿池。单机挖到区块的概率非常低,所以几乎所有挖矿木马都会连接矿池。矿池地址通常硬编码在配置文件中,常见的有3333、4444、5555等端口。它把算力贡献到矿池,矿池再按份额给攻击者钱包打币。 第四,添加守护逻辑。这是清理时最让人头疼的一环:守护脚本会定时检查主程序是否还活着,如果被杀了就立刻拉起。还有一部分变种会修改系统任务计划或注册表,重启后自动重新启动。

2.4 挖矿木马常见的驻留点

为了让挖矿程序在重启后继续运行,攻击者会在机器上布置多个“钉子”。我见过最多的驻留方式有以下几种:

  • Linux下的计划任务(crontab),定时执行下载、更新、守护脚本。
  • Windows下的计划任务和注册表启动项(Run项)。
  • systemd服务文件,将自己注册成系统服务,伪装成正常服务名。
  • 修改SSH的authorized_keys,留下后门,方便随时重新进入。
  • 各种数据库的持久化机制,比如往Redis里写入定时任务,一执行就又拉起挖矿程序。

很多人清挖矿木马只杀进程、删文件,但忽略了这些驻留点,结果就是重启后“病毒复活”,来回折腾好几次。真正有效的清理,必须把所有有效驻留点一网打尽。

3. 手把手排查:怎么发现一台机器已经被“挖了”

3.1 从症状入手:被挖矿的机器长什么样

排查挖矿木马,第一步不是去翻日志或装软件,而是先看“现象”。根据我的经验,疑似被“挖了”的机器通常有几个典型表现:

  • CPU使用率在没有业务流量的时候长期维持在较高水平,甚至100%。如果你用SSH登上去执行top,发现某个陌生进程占了几百的CPU,那基本八九不离十了。
  • 风扇声音突然变大,笔记本或者物理服务器的散热系统一直在高负载运转。
  • 服务器上行流量异常增加,尤其是在夜里业务低峰期。挖矿程序要不断跟矿池通信,这一点很难完全隐藏。
  • 机器变得异常卡顿,打开个文件都慢半拍,但业务日志显示访问量不高。
  • 出现大量内网横向扫描行为,因为有些挖矿木马会尝试从当前机器继续扫描内网,扩大控制范围。

说实话,单靠“机器卡”来判断不一定准确,还得结合进程、网络、日志多维确认,但症状是引导方向的第一步,非常关键。

3.2 用系统自带工具完成首次定位

遇到可能存在挖矿木马的机器,我建议先别急着装各种重型扫描器,先用系统自带工具快速定位一轮,效率最高。

在Linux上:

  • top或htop:按CPU排序查看,找出占用最高的进程名和PID。
  • ps -ef 或 ps aux:查看可疑进程的完整路径、启动用户、启动参数。
  • netstat -anop 或 ss -anp:查看进程与外部IP的连接,重点关注非标准端口。
  • systemctl list-units --type=service:检查是否有陌生的自启动服务。
  • crontab -l 以及 /etc/crontab、/etc/cron.* 目录:检查已存在的计划任务。
  • lsof -i -P:定位进程对应的网络连接。

在Windows上:

  • 打开任务管理器,按CPU使用率排序,重点看陌生进程名。
  • 使用“资源监视器”可以查看进程网络活动和磁盘活动。
  • netstat -ano结合任务管理器PID,定位进程对应的外部连接。
  • 检查注册表启动项和“启动”文件夹。

很多人习惯一开始就装杀毒软件全盘扫描,但扫描时间长,还可能漏掉内存马或无文件类挖矿。先用系统工具定位,成本低、速度快,方向感强。

3.3 三步判断:它真的挖矿木马吗?

我会把“可疑进程是否真的属于挖矿木马”的判断,浓缩成三步:

第一步,看名字和路径。正常的系统进程路径基本都在系统目录,比如Linux下的/usr/bin、/bin,Windows下的C:\Windows\System32。挖矿木马常见于/tmp、/var/tmp、/dev/shm(Linux)以及用户AppData目录、临时目录(Windows)。如果进程路径在奇怪的地方,名字还故意模仿系统进程,就非常可疑。

第二步,看网络连接。挖矿木马几乎必然连接矿池。矿池连接常见端口有3333、4444、5555、7777、8888等,目的端口通常不是80/443这种常规端口。如果进程持续连接这些端口,动机就很明显了。

第三步,看父进程和行为链。通过ps的PID/PPID关系,找到这个进程是被谁拉起来的。如果父进程是bash和curl,或者父子进程是“下载脚本→拉起挖矿程序”的关系,那基本就实锤了。

注意:顶层的top命令显示的高CPU进程,不一定就是木马本身,有可能是守护脚本大量fork的子进程。沿着进程树往上看,才能找到真正的“根”。

4. 清杀与加固的完整实操流程

4.1 清理前最重要的事:断网与取证

在动手清理之前,务必要做两件事:断网和取证。顺序不能颠倒。

断网不是把服务器直接拔网线——在业务生产环境里不可能这么粗暴。比较稳妥的做法是:先在本地防火墙或安全组层面封禁可疑进程的目的IP和端口,让它无法跟矿池通信,同时不影响其他业务。如果是在内网隔离环境,可以直接禁用受影响网卡。这一步的核心目的是切断挖矿程序的“资金来源”,它连接不上矿池,就算还在跑,赚的币也没地方兑现。

取证则包含:把top、ps、netstat输出存下来,把可疑进程的二进制文件复制一份出来打包压缩,把crontab列表完整记录。因为有些木马在被彻底清除前可能会自我删除,留着证据才能在后续复盘或上报时有据可查。

提醒:取证文件不要直接放在被感染的机器的临时目录里,最好拷到U盘或者远程传送到其他安全设备上,避免被木马的守护脚本发现后毁掉。

4.2 清除步骤:进程、文件、计划任务、服务一起清

接下来就是正式清理。以Linux环境为例,我会按照这样的顺序操作:

  1. 先杀掉所有可疑进程。不要只杀主进程,要把整棵进程树都提出来杀掉。命令可以参考:pkill -f 可疑进程名,或者用kill -9杀死所有子进程后再杀父进程。
  2. 删除对应的可执行文件。如果进程还在运行,文件可能被锁定,杀完进程再删文件。重点检查/tmp、/var/tmp、/dev/shm、/usr/lib等目录。
  3. 排查并删除可疑的计划任务。crontab -l查看当前用户任务,/var/spool/cron/目录里面的内容也要看,还有/etc/cron.d、/etc/cron.hourly等系统计划任务。
  4. 排查并删除自启动服务。systemctl list-unit-files | grep enabled之外,还要手工查看/lib/systemd/system目录下最近新增的.service文件。
  5. 检查并清理SSH后门。查看~/.ssh/authorized_keys文件,删除所有不认识的公钥。
  6. 最后再杀一轮尾巴,确认没有新的可疑进程出现。

这条流程看起来不长,但每一步都有坑。比如crontab里如果写了“从某个URL下载脚本并执行”的内容,你光删计划任务是不够的,攻击者的下载源还在,下次还能再种进来。所以,清完计划任务之后,一定要确认下载源地址能否从外网访问,能封就封,不能封就在防火墙层面拦截。

4.3 加固措施:让同一类木马进不来第二次

清除只是治标,治本还要做加固。根据不同类型入侵入口,需要做的事情也不一样:

入侵入口加固方向
SSH弱口令禁用root远程登录、使用密钥认证、配置Fail2ban防爆破
Web应用漏洞更新框架和组件的安全补丁、做好参数过滤、给后台加访问控制
Redis等数据库未授权设置强密码、禁用公网监听、配置bind 127.0.0.1
中间件漏洞关闭不必要的管理接口、升级组件版本
供应链传播规范软件下载渠道、禁止随意安装未知来源软件

这里的核心思路是“最小化暴露面”:不需要对外暴露的服务,坚决不暴露;非必要不开放高权限端口;所有账号口令改成强口令并启用双因素认证。很多挖矿木马能进来,不是因为攻击者技术多高端,而是因为机器本身就“门户大开”。

4.4 完整清理后要做一次“复查回访”

清除和加固完成不代表工作结束了。我的习惯是:在清理之后的24小时、72小时各复查一次,重点关注:

  • CPU使用率是否回归正常水平;
  • 是否还有陌生计划任务被再次写入;
  • 是否有人通过未知方式登录系统(查看登录日志);
  • 流量监控中是否还有到可疑IP的连接。

挖矿木马的狡猾之处在于,它有成熟的自愈机制和远程控制通道。如果只清掉一层壳,过两天它还能“回来”。复查回访相当于给这次清理做一个闭环验证,确保根真的被挖掉了。

5. 高级规避手法与攻防对抗

5.1 CPU伪装与动态休眠

现在很多变种已经不是“傻傻地拉满CPU”了。它们会在运行前读取机器的平均负载,如果发现机器已经很忙,就进入低功耗状态,等到业务低峰期再全速开挖。还有的会限制自己的CPU占用上限在50%以下,让系统看起来只是有点慢,而不是明显异常。

我见过的一个变种,甚至会把CPU占用控制在单核附近波动,这样你用top按CPU排序时,它大概率不会排在顶部,不仔细看很容易漏掉。换句话说,“高CPU=挖矿木马”这个常识现在越来越不适用了。

5.2 进程伪装和文件隐藏

有些挖矿木马会把进程名改成看起来非常正常的名字,比如“update”“sync”“systemd-private”或者模仿安全软件的文件名。它们在进程列表里混在一堆系统进程之间,粗看根本分不清。

更高一级的还带有rootkit能力,直接对系统调用做劫持,让ps、top、lsof看不到它的进程、文件和网络连接。这种情况下,光靠系统自带工具已经不够了,得上针对性检测工具,比如对比系统调用的异常情况,或者从外部网络层面观察流量。

5.3 无文件与内存驻留

早期木马喜欢把文件写进磁盘,攻击者现在更倾向于无文件方式运行。木马本体不落地,直接由WebShell或脚本进程在内存中执行,或者将恶意代码注入到已运行的合法进程内,一旦系统重启,这些痕迹就会消失,让取证变得非常困难。

针对这类变种,排查思路也要变化:不能只盯着文件系统,而要看哪个合法进程的网络连接异常,哪个进程的CPU占用与它的正常功能不匹配,甚至用内存扫描工具直接检测内存中的恶意特征。

5.4 对抗清理的“应急销毁”

还有一类变种很“刚烈”:一旦发现自己被查杀、被删除、或者检测到调试工具,它会主动销毁自己,包括删除可执行文件、清空日志、删除计划任务,让后续分析无从下手。这也是为什么我前面强调必须先取证再清理,动作一定要轻,不要一上来就大杀四方。

从攻防对抗的角度看,挖矿木马的“进化”其实是双向的:攻击者在不停研究怎么更隐蔽,防守者也得不停升级检测思路。单靠杀毒软件已经不现实,行为检测、流量检测、基线对比这三层一个都不能少。

6. 常见问题排查与独门心得

6.1 挖矿木马排查问题速查表

现象可能原因排查方向
空闲时CPU到100%,繁忙时正常挖矿程序只在低负载时全速运行进程、守护脚本、mining配置
杀了进程,过几分钟又出现有守护进程或计划任务在拉活crontab、systemd服务、watchdog进程
删除文件后自动恢复文件被进程占用或被循环下载先杀进程再删文件,封禁下载源
内网多台机器同时异常某台机器被作为跳板横向感染检查横向扫描行为、统一排查入口
换密码后仍被重新入侵攻击者已植入后门公钥或WebShell检查authorized_keys、WebShell、持久化服务
服务器流量异常,但进程无明显CPU占用可能为无文件挖矿或恶意DNS隧道分析流量日志、DNS解析记录

6.2 应急过程中的四个容易踩的坑

第一坑是“杀进程但不封网络”。你杀了挖矿进程,但它下载脚本之前可能已经把资源URL留在了内存或任务计划里。不先把矿池IP和下载源封掉,极容易二次感染。

第二坑是“只清理当前用户”。很多变种会同时给root和普通用户都装上计划任务或公钥,你只清了root下的东西,第二天普通用户又被利用了。清理时要全盘排查,所有用户目录都不能漏。

第三坑是“不关注内网扩散”。挖矿木马往往自带横向爆破功能,被感染机器会尝试登录内网其他机器。你清完了这一台,但其他机器可能已经被感染过了,只是还没爆发CPU问题。处理完成后,对内网全网做一次口令强度和开放端口自查很有必要。

第四坑是“忽略日志审计”。攻击者通过漏洞进来时,会在访问日志、命令历史里留下痕迹。这些日志是判断攻击路径最重要的依据。很多人在清理时把日志删了,后面想复盘根本无从下手。

6.3 一条比较实用的“临时救火”流程

如果你是在生产环境发现问题、来不及走完所有步骤,我会建议至少按这条流程先应急:

  1. 先把可疑进程的网络连接断掉,方式可以是在安全组里禁止目的IP方向流量,或者用iptables封禁外部地址。
  2. 快照当前进程、网络连接和计划任务状态,保留证据。
  3. 提取关键恶意文件并压缩带走,方便后续分析。
  4. 终止所有可疑进程及其子进程。
  5. 删除所有关联文件、计划任务、服务,修改被利用的账号口令。
  6. 修复入侵入口(打补丁、改配置、封端口)。
  7. 通知团队关注其他机器,进行内网排查。

这套流程不完美,但能让你在一个小时左右先把“产币通道”断掉,避免损失继续扩大。等业务低峰期再做深度清理和加固,时间和风险都可控。

6.4 我在实际应急中的三个心得

第一,不要迷信“杀毒软件查不到就没事”。挖矿木马更新速度快,免杀改造频繁,很多变种在传播初期根本不会被杀毒引擎识别。更靠谱的手段是行为层面的监控——CPU基线、网络连接基线、用户行为基线,一旦偏离基线就触发告警。

第二,挖矿木马清理往往不是技术战,而是耐力战。我遇到过一台服务器连续两周反复复发,每次都是清了这头那头又起。反复确认之后才发现,攻击者把下载源藏在了对象存储的公开桶里,还设置了好几个备用域名。要把这种“病毒”清干净,必须把整条持久化链都拆掉,而不是只对付末梢进程。

第三,被挖矿攻击过的机器,即便清干净了,也建议慎重评估是否长期使用。因为攻击者可能已经在机器上部署了多层后门,有些后门做得极其隐蔽,短时间内很难彻底排查干净。如果业务允许,重装系统往往是最省心、最彻底的选择。当然,重装前要把数据和配置备份好。

写在最后

回到开头那个问题:什么是挖矿木马?它不过是一个想借用你的算力替别人赚钱的“小偷”罢了。但它背后反映的问题是真实的:互联网上永远有人在批量扫描,永远有机器暴露在弱口令和未授权服务下,永远有人在自己的设备上开着后门。认清它的套路、掌握排查方法、加固自己的系统,这是每一个接触运维和安全的人都应该补上的一课。如果你读完这篇文章能停下来check一下自己设备的CPU负载和登录日志,这篇文章的价值就远不止解释一个名词那么简单了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询