Windows服务器XMRig挖矿病毒清理实战:从进程取证到系统加固 1. 先说清楚XMRig挖矿病毒最常落在什么样的Windows服务器上一台Windows Server 2019白天业务一切正常晚上CPU却突然稳稳地停在90%以上。远程桌面连上去一看任务管理器排名第一的进程是svchost.exe占用过半CPUPID还一直在变化像是有进程不断被重新拉起。点开命令行才看到一长串参数里面藏着xmrig-miner的字样。到这一步基本可以确定这台服务器已经被XMRig挖矿病毒注入了。这篇文章写给所有维护Windows服务器的人不管你的机器是云服务器还是机房实体机也不管你是Windows Server 2012、2016还是2019。只要服务器出现CPU被拉满、风扇轰鸣、对外流量异常都可以按下面整套流程来处理。我会从问题定位、现场取证、进程清理、持久化清除、系统加固到后期监控把一整套实战方法完整走一遍保证你看完能直接照着操作。1.1 为什么中招的总是Windows服务器很多人以为挖矿病毒只盯着Linux服务器下手实际Windows服务器同样是重灾区。原因翻来覆去就那么几条远程桌面端口直接暴露公网、账号密码太弱、中间件漏洞没有及时补上、业务服务权限过大、对外开放端口多到数不清。典型入侵路径我也见了不少。有的是远程桌面3389被爆破攻击者拿弱口令直接登录进来有的是服务器上装了Git服务很多人照着一搜就能搜到的“Windows 2019安装Git服务器教程”部署好之后既没限制来源IP又没关闭开放注册被扫描器盯上后直接拿到了执行权限还有的是FineReport这类报表系统后台管理页面暴露在公网默认口令没改攻击者绕进去以后通过上传接口部署了脚本最后把XMRig下载到服务器上开跑再有的是FTP目录权限设置过大通过FTP上传一个可执行文件再触发计划任务执行。这些案例的共同点是入口五花八门但最终落点高度一致下载XMRig挖矿程序创建计划任务或服务保持持久化把CPU资源全部抽走开始挖矿。1.2 中招后的典型症状先对号入座发现得越早清理成本越低。这里列几个典型症状如果你在服务器上同时观察到两三条就基本可以往挖矿病毒方向排查了。第一CPU占用率长期接近100%但对应业务负载并没有上升。如果是多核服务器挖矿程序会尽量吃满所有核心你会看到总利用率一直很高。第二任务管理器里出现名字异常的进程有的直接叫xmrig、miner、mssecsvc有的伪装成svchost.exe、RuntimeBroker、dllhost路径却很诡异。第三网络连接出现异常服务器主动外联大量IP目的端口常见14444、3333、5555、8443、443等挖矿程序要连接矿池一定会有外联行为。第四系统日志里出现大量计划任务触发记录、服务状态反复变化、安全日志里登录失败记录激增。第五杀毒软件突然被关闭实时保护失效Windows Defender无法启动。第六系统时间被篡改过段时间又恢复导致日志时间对不上。1.3 动手清除前必须想明白的事看到中招症状后很多人的第一反应是赶紧删进程、删文件。我建议你先冷静三分钟想清楚三件事不然很容易越弄越乱。第一确认这台服务器有没有停机维护窗口。挖矿病毒的处理涉及重启、进安全模式、删服务如果机器上跑着核心业务一定要提前和业务方确认时间。很多运维朋友之所以翻车就是因为中途业务报警被迫在清理到一半时把服务器拉回生产环境结果病毒反复复活业务也跟着遭殃。第二准备好顺手的安全工具。我用得最多的是微软Sysinternals全家桶重点是Process Explorer和Autoruns配合系统自带的PowerShell、netstat就够应付绝大多数情况。如果怀疑有驱动级隐藏进程再备一个Process Hacker或PCHunter。杀毒方面可以准备卡巴斯基的KVRT应急工具或者微软官方安全扫描器在断网条件下离线扫一遍效果比常规杀软好很多。第三不要只想着“把病毒杀掉”要想着“把入侵路径堵住”。只清理挖矿程序却不补漏洞、不改密码、不封端口第二天大概率会被同一批人再次投毒。清理只是第一步加固才是最花时间、最能看出水平的一步。2. 清除方案的整体设计思路2.1 为什么不能“见一个杀一个”第一次处理挖矿病毒的朋友很容易犯一个错误看到CPU占用高的进程就右键结束然后去临时目录把文件删掉觉得大功告成。第二天一早再看CPU又满了心态直接崩掉。这其实不是操作不对而是思路不对。XMRig挖矿木马普遍有持久化机制进程本身只是“前线小兵”真正麻烦的是隐藏在计划任务、服务、WMI事件订阅、注册表启动项里的“幕后指挥官”。你把小兵杀了指挥官分分钟能再造一个小兵出来。更麻烦的是有些变种还带守护进程。A进程负责挖矿B进程负责盯着A你杀掉AB会立刻拉起A你转手去杀B可能A又开始守护B。遇到这种互相守护的进程链直接在正常模式下杀进程就像打地鼠一样永远打不干净。所以正确做法不是见一个杀一个而是先找到源头、禁用持久化机制再从进程树根上把它们一锅端。2.2 我的清除流程四步走我的处理流程固定分四个阶段顺序基本不乱动。第一阶段是定位与现场取证。先把所有可疑进程、文件、外联IP、计划任务、服务全部记录下来搞清楚病毒到底部署了哪些东西入侵点大概在哪。第二阶段是切断与隔离断网或者收紧安全组禁用恶意计划任务和服务结束整个恶意进程树让挖矿行为先停下来。第三阶段是清理持久化与遗留文件进安全模式或者直接删除所有恶意文件清理WMI事件订阅、启动项、映像劫持、驱动的自启动入口。第四阶段是系统加固与恢复监控改密码、打补丁、收端口、修时间同步然后把服务器纳入监控持续观察至少一到两周。为什么顺序这么重要因为第一阶段不做好清理的时候很容易漏掉藏在角落的启动项第二阶段不断网病毒可能在你清理的过程中继续从矿池拉取新载荷甚至横向扩散到同网段其他机器第四阶段不加固整个流程就等于白忙一场。整个过程很像拆弹顺序错了代价很高。3. 第一阶段定位与现场取证3.1 用任务管理器做初步判断接入服务器后的第一步先打开任务管理器按CPU占用排序。如果是挖矿中毒排名第一的进程CPU使用率基本稳定在50%以上甚至拉到99%。然后重点看两样东西映像路径和公司签名。右键进程选择“打开文件所在的位置”很多伪装成svchost.exe的挖矿进程路径会落在C:\Windows\Temp、C:\Users\Public、C:\ProgramData下的随机目录而不是正常的C:\Windows\System32。真正的svchost.exe是微软签名文件如果你看到的进程在临时目录里或者在系统目录下但签名异常基本可以断定是伪造的。这里有一个操作禁忌发现异常进程后不要立刻点“结束任务”。先点击“转到服务”看看它有没有关联服务再跑到“详细信息”标签页把PID记下来。任务管理器提供的信息太少很多挖矿进程还做了进程保护右键结束根本没有反应。它只能帮你确定方向真正细致的活还得靠命令行走。3.2 用命令行确认恶意进程、外联和启动项任务管理器只是开胃菜真正有价值的信息在命令行里。我习惯开一个管理员权限的PowerShell窗口按顺序执行几条命令。先看进程详情拿到每个进程的PID、父进程PID、命令行和可执行路径Get-CimInstance Win32_Process | Select-Object ProcessId, ParentProcessId, Name, ExecutablePath, CommandLine | Format-List输出会很长关键看两点命令行里有没有xmrig、miner、crypto、pool、stratum这类关键词有没有进程的父进程特别奇怪比如桌面explorer.exe下面挂着一个看起来像系统服务的进程。接着看网络连接把处于Established状态的TCP连接和对应PID列出来Get-NetTCPConnection -State Established | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, OwningProcess | Sort-Object RemotePort挖矿进程连的远程端口一定不会是常规Web端口它要连矿池常见矿池端口是14444、3333、5555、8443等。看到RemoteAddress是一堆陌生IP、且端口集中在挖矿端口段再用下面的命令反查进程Get-Process -Id 进程PID | Select-Object ProcessName, Path, Company如果命令行里带着xmrig-miner、libuv等字符串基本就实锤了。启动项也不能漏。直接查注册表里几个关键位置Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Run Get-ItemProperty HKCU:\Software\Microsoft\Windows\CurrentVersion\Run Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run如果Run键下面多了一个指向临时目录的随机exe或者指向一段PowerShell脚本记录下来后面要清。这一步最重要的经验是把所有可疑对象的PID、命令、路径、外联IP复制到一个txt里存到U盘或自己的电脑上。后面找入侵来源、封禁IP、写安全事件报告全都要靠这份现场记录。不要偷懒挖矿病毒排查到最后往往就是靠这份记录把问题讲清楚的。3.3 检查计划任务、服务和WMI持久化挖矿木马最大的特点是“短平快”持久化一般不会走太复杂的技术常见就三种计划任务、服务、WMI事件订阅。计划任务特别受挖矿木马欢迎因为它能按指定时间或者系统启动时自动运行还能伪装成微软更新。检查命令是schtasks /query /fo LIST /v这个输出会非常长建议直接过滤关键词schtasks /query /fo LIST /v | findstr /i xmrig miner crypto update更稳妥的做法是把计划任务全量导出到CSV文件然后用Excel筛选任务目录和命令行。重点关注名字伪装成“\Microsoft\Windows\Update”但实际命令行指向临时目录的任务这些大概率是恶意的。服务方面用sc命令sc query state all sc qc 可疑服务名重点看服务的二进制路径正常系统服务的路径都在C:\Windows\System32下面如果某个服务指向C:\Users\Public、C:\ProgramData或者Temp目录大概率有问题。WMI事件订阅是更隐蔽的持久化方式能做到进程无文件落地就直接拉起。基本检查方法是列出root\subscription命名空间下的事件过滤器、事件消费者和绑定关系Get-WmiObject -Namespace root\subscription -Class __EventFilter Get-WmiObject -Namespace root\subscription -Class __EventConsumer Get-WmiObject -Namespace root\subscription -Class __FilterToConsumerBinding正常服务器上这三条命令查出来基本是空的。如果看到一个过滤器和消费者而且Filter的查询语句里带有Win32_ProcessStartTrace或者定时器说明已经中了WMI持久化。删除方法是先删绑定再删消费者和过滤器顺序反了可能会残留垃圾。取证阶段先列出来第五阶段再处理。4. 第二阶段切断进程与隔离4.1 先断网还是先留现场到了这个阶段你手上已经有了完整的可疑清单。现在面临第一个选择要不要断网。我的经验是只要业务允许第一时间把网断掉最稳妥。断网至少有三个好处一是挖矿程序连不上矿池CPU占用会明显降下来你能更容易分辨哪些进程是真的在挖矿二是切断木马远程下发新指令的通道防止它在你清理的过程中重新下载新样本三是阻断横向扩散防止同内网其他机器被同一批攻击者控制。对于云服务器操作方式是到安全组里把出方向规则改成拒绝全部或者临时挂起而不是去机房拔网线。这样你还能通过云厂商的控制台做后续操作。如果业务完全不能断至少要做“逻辑隔离”把服务器从负载均衡摘掉在防火墙里把非业务端口的出站全部拒绝只保留到管理终端和必要业务域名的连接。这样既不打断业务又封死了挖矿木马的外联通道。断网之前记得先看一眼外联IP列表并记录下来因为断网以后netstat里那些地址会慢慢消失。后面如果要根据IOC做防火墙封禁没有这些地址就抓瞎了。4.2 结束恶意进程的完整姿势断网之后下一步是禁用持久化入口再结束进程。顺序千万不要反先杀进程的话计划任务和服务会立刻把进程重新拉起来你会陷入“杀了又起起了又杀”的循环折腾一个小时也清不完。建议操作顺序是这样的。第一步禁用计划任务。把所有确认恶意的计划任务禁用甚至直接删除。如果只是怀疑但不确定就用schtasks /change /tn 任务名 /disable把它停掉留到最后确认。第二步停止并禁用恶意服务。用sc stop 服务名停止再用sc config 服务名 start disabled禁用。如果服务被病毒保护停止可能失败这时候先把服务配置改为禁用等进程结束后再手动停一次。第三步结束恶意进程树。用taskkill /PID 主进程PID /T /F/T参数会连子进程一起结束/F是强制结束。如果记录里有多个互相关联的进程优先结束最上层的父进程一次性把整棵进程树打掉。找父进程的方法很重要。用下面的PowerShell命令传入子进程PID就能看到它的ParentProcessIdGet-CimInstance Win32_Process | Where-Object { $_.ProcessId -eq 12345 } | Select-Object ParentProcessId, Name, CommandLine顺着ParentProcessId向上查能看到挖矿进程是被谁拉起来的。我处理过的案例里大多数父进程都是计划任务宿主svchost.exe少数是一个独立的守护进程。父进程找对了清理就成功了一半。4.3 提取样本与确认文件落点在杀掉进程、清理现场之前顺手把样本提取出来。这一步不是跑偏而是为了后续做IOC分析和防止误杀。操作很简单从前面记录的进程列表里把每个恶意进程的可执行文件路径找出来复制到一个专门文件夹比如D:\malware_samples然后用压缩工具打好包设置密码后放到U盘或自己电脑上。文件名可以命名为日期加编号方便对应。Windows下用PowerShell计算样本哈希非常方便Get-FileHash D:\malware_samples\xxx.exe -Algorithm SHA256把哈希值、文件名、外联IP、计划任务名、服务名一起记入TXT文档。后面你可以用这些哈希在威胁情报平台查样本来源也能拿它全盘搜索同款文件防止漏网之鱼。提取样本时注意两点一是样本目录别放在C盘根目录或桌面没必要继续污染环境二是打包之后最好立刻从原目录把样本副本删掉避免杀软扫描时二次报毒。5. 第三阶段清理持久化与遗留文件5.1 解决“重启后复活”的几大藏身处这是整个清理流程里最容易翻车的部分。前两个阶段帮你把正在运行的东西按住了但只要有一个持久化点没清干净重启之后一切照旧。第一个藏身处是计划任务。检查方法前面已经写过确认无误后直接删除schtasks /delete /tn 任务完整路径\任务名 /f删不掉就检查任务是否正在运行先结束相关进程再删。第二个藏身处是服务。停止并禁用后删除sc stop 服务名 sc config 服务名 start disabled sc delete 服务名第三个藏身处是注册表自启动。Run键查完之后还要看RunOnce以及HKLM和HKCU下的对应路径包括HKLM\SOFTWARE\Wow6432Node分支。很多木马会把启动项写在RunOnce里执行一次后自动删除这样翻注册表时反而不容易看到。处理办法是把可疑键值先导出备份再删除键值不要立刻重启等全部清完再重启验证。第四个藏身处是启动文件夹。系统级启动文件夹位于C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp用户级的是C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\StartUp打开检查有可疑的vbs、bat、exe直接删除。很多木马不会把启动项放这里因为太容易被发现但不排除有。第五个藏身处是WMI事件订阅。前面取证阶段已经列出了订阅项现在要按顺序清除。先删除绑定$bindings Get-WmiObject -Namespace root\subscription -Class __FilterToConsumerBinding $bindings | Remove-WmiObject然后删除消费者Get-WmiObject -Namespace root\subscription -Class CommandLineEventConsumer | Where-Object { $_.CommandLineTemplate -like *xmrig* } | Remove-WmiObject最后删除过滤器Get-WmiObject -Namespace root\subscription -Class __EventFilter | Where-Object { $_.Query -like *Timers* -or $_.Query -like *ProcessStartTrace* } | Remove-WmiObject这里的名称和条件需要根据实际情况修改原则是只删跟恶意行为相关的对象。如果拿不准先把筛选器和消费者列表导出留底再逐步确认。第六个藏身处是组策略脚本。打开gpedit.msc进入“计算机配置 - Windows设置 - 脚本(启动/关机)”查看启动和关机脚本里有没有异常路径。挖矿木马一旦提到SYSTEM权限完全有能力往里面塞一个启动脚本。5.2 删除受保护文件的特殊手段持久化点清完之后真正的恶意文件落在磁盘上直接删除有时候会失败提示“文件正在被另一个进程使用”或“需要SYSTEM权限”。常见情况是挖矿进程虽然被杀掉了但它的驱动或其他守护进程还驻留在内存里占着文件句柄。遇到这种情况先用Process Explorer搜索文件路径看有没有进程加载它。如果有先结束对应进程再删。如果正常模式下说什么都删不掉直接进安全模式。安全模式下非系统必需的服务和驱动都不会加载挖矿木马的保护层大概率失效文件就能直接删掉。操作方法有两种。一种是图形界面运行msconfig在“引导”选项卡勾选“安全引导”选择“最小”重启后进入安全模式。清理完成后再进msconfig取消勾选重启恢复。另一种是命令行适合远程操作或启动项异常时备用bcdedit /set {current} safeboot minimal清理完成后执行bcdedit /deletevalue {current} safeboot然后重启。如果进安全模式之后文件还是删不掉说明样本可能有文件系统过滤驱动保护只能借助PE或者离线杀毒盘。云服务器上操作PE比较麻烦实测下来KVRT在安全模式下对这类样本的清除率很高可以优先试试。5.3 检查映像劫持、组策略脚本和DLL加载持久化点不止计划任务和服务几个隐蔽位置几乎每次清理都要过一遍。映像劫持Image File Execution Options是老牌持久化手法。挖矿木马可以在下面键里给某些系统工具加一个Debugger指向恶意程序比如当你打开任务管理器时实际运行的是病毒脚本。检查位置HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options逐个看子键下有没有可疑的Debugger值有就删除。正常情况下这个键下面不应该出现Debugger。AppInit_DLLs是全局DLL注入的常见入口。检查HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows里面有个AppInit_DLLs字符串值正常情况下为空。如果里面指向一个DLL且这个DLL不是你自己装的输入法、防火墙等知名软件大概率是木马注入。把值清空再删除对应DLL文件。Winlogon的Userinit和Shell键也是重点。检查HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinlogonUserinit值正常应该是C:\Windows\system32\userinit.exe,如果后面跟了其他程序要小心。Shell值正常情况下是explorer.exe如果变成其他路径或者后面跟了逗号再跟其他程序基本可以确定被改过。DLL加载方面还是要靠Process Explorer或PCHunter。重点看系统进程特别是svchost.exe加载的DLL路径如果某个DLL来自临时目录、公共目录或者带随机文件名立刻对该进程做右键扫描和删除处理。6. 第四阶段系统加固与恢复运行6.1 修复系统时间同步与NTP配置挖矿木马经常会把系统时间改到未来或过去原因有两个一是绕过某些按时间计算收费的软件授权二是打乱日志时间线让管理员排查时对不上记录。你会发现服务器日志里时间跳跃特别大这本身就是中毒的信号之一。清理结束后第一步是恢复系统时间同步。Windows自带的W32Time服务就能完成。以管理员身份执行下面的命令配置使用互联网时间服务器w32tm /config /manualpeerlist:ntp.aliyun.com ntp.tencent.com /syncfromflags:manual /reliable:yes /update w32tm /resync如果你维护的是老一点的Windows Server 2012命令也是一样的。网上经常有人搜“windows server2012 ntp服务器”和“windows时间服务器地址”本质就这一件事让服务器和公共NTP服务器保持同步。常用的时间服务器地址有ntp.aliyun.com、ntp.tencent.com、time.windows.com选国内可达的阿里云或腾讯云NTP就行。执行完用w32tm /query /status查看结果看到“源: ntp.aliyun.com”这样的输出就说明同步成功了。如果之前时间偏差太大可能需要先手动把时间调到接近当前值再执行一次resync否则可能因为偏差过大导致同步失败。6.2 收紧防火墙、RDP端口和服务暴露面经常有人搜“Windows服务器FTP防火墙设置”这个问题和挖矿病毒其实也有关联。Windows自带FTP服务如果不在防火墙里放行被动端口范围客户端就会卡在列目录那一步如果FTP账号权限又设置过大攻击者就能通过FTP上传可执行文件到Web目录或启动目录进而触发命令执行。所以处理挖矿病毒时一定要顺带审计一遍FTP和防火墙规则防止同一批攻击者通过老入口再进来。远程桌面端口也可以放在Windows防火墙层面限制来源地址。可以这样加规则netsh advfirewall firewall add rule nameRemoteDesktop_AdminOnly dirin actionallow protocolTCP localport3389 remoteip你的管理IP注意如果原来的防火墙规则里已经有一条允许所有人访问3389的规则这条新规则不会自动覆盖它。你需要先把原来的放行规则删除或禁用再添加限制来源的新规则。加上之后再配合云厂商的安全组做双保险。对于其他服务我的建议是“用得上的开着用不上的全关”。检查当前对外开放的端口很简单netstat -ano | findstr LISTENING看到不认识的端口在监听回去查对应PID的进程是什么。如果进程名陌生而且路径可疑继续深挖如果是正常业务进程但端口暴露给公网务必确认它的登录认证强度。举一个实战案例。某台Windows Server 2019上装了Git服务最初是为了方便团队拉代码部署完就扔在那里。这台机器还有一个FineReport报表系统对公网暴露攻击者从报表系统后台撕开口子拿到Shell之后在服务器上放下了XMRig挖矿程序。后来排查时发现Git服务虽然没有被直接利用但也属于“开放服务”名单由于权限没限制一旦被扫描到又是一个疑似入口。所以加固时不要只盯着挖矿病毒本身要把所有对外开放的服务全部过一遍管理后台不用的就关掉要用的就限制IP、改默认密码、更新到最新版。6.3 更新补丁、修改密码与业务账号审计账号密码是最后一道防线也是很多挖矿事件里被突破的地方。处理完技术层面的清理之后必须做三件事。第一修改所有本地用户密码包括Administrator、业务应用账户、数据库账户、远程桌面账户。密码强度至少要12位以上不要用公司名加年份这种可预测组合。检查当前有哪些用户可以登录net user net localgroup administrators把不认识的用户禁用或删除。第二更新系统补丁。Windows Server的主要漏洞修复都在每月更新里建议在维护窗口执行Windows Update。这里有个典型坑是Windows Server 2016的RDS环境有朋友反馈升级补丁后重启其他会话主机提示“60分钟后断连”最后把会话主机服务全部重启才恢复。所以打补丁一定要提前规划和验证不要在业务高峰时段直接点“更新并重启”。第三第三方服务同样要更新。Tomcat、WebLogic、Redis、MySQL、FineReport这些组件如果版本太老存在已知漏洞即使这次清了挖矿病毒攻击者照样能用同一个漏洞再打进来。我的习惯是列一个本机服务清单把需要更新的服务写到待办里一个一个处理不要漏。6.4 恢复后的持续监控与防复发清除和加固工作完成以后别急着把服务器抛到脑后。根据处理这类事件的经验XMRig挖矿病毒往往不是单点出现它可能带着好几个辅助模块你能肉眼发现的可能只是子集。所以恢复后一定要有监控至少要盯7到14天。最简单的监控方案是开启Windows事件日志的Security和System记录同时用资源监视器观察进程。如果公司有主机安全Agent或云安全中心直接启用没有的话可以写一个简单的计划任务定时记录CPU占用TOP5的进程powershell -Command Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 Name,Id,Path,CPU | Out-File C:\monitor\cpuusage.log -Append把这条命令做成计划任务每10分钟执行一次第二天打开日志看看有没有再次出现CPU异常升高的进程。网络层面建议在防火墙或安全组里对出方向做限制至少要把常见矿池端口比如14444、3333、5555、8443等封掉。因为正常业务不会主动连接这些端口一旦业务因此异常说明有东西在偷偷向外连接正好暴露问题。还有一个小细节是检查默认共享和计划任务权限。清完病毒后把Everyone用户对共享目录的写权限回收掉计划任务只保留你确认过的任务。很多木马就喜欢把文件写到共享目录再用计划任务执行。7. 实战中的典型翻车案例与排查方法7.1 清完重启又冒出来问题出在哪我最早处理挖矿病毒的时候也犯过“清了等于没清”的错。当时看到计划任务和进程都处理完了文件也删了重启服务器以为万事大吉结果半小时后CPU又拉满。回头一查原来在SysWOW64目录下还藏着一份同款样本启动它的路径存在注册表的RunOnce里之前完全没注意到。这里带出一个重要经验清理完成后、重启之前一定要做一次全盘关键词扫描搜文件名里的xmrig、miner、kworker、随机串等关键词把遗漏文件一并删掉。如果重启后还是复活就要从进程的父进程入手继续向上追溯。用Process Monitor监控进程创建和注册表写入能看到系统启动后到底是谁先创建了挖矿进程。还有一种复活原因是WMI持久化没清干净。WMI事件订阅在正常系统里几乎是空白的如果不清理它即使计划任务、服务都清完了木马还是能通过事件订阅在特定时间重新启动。7.2 病毒伪装成系统进程怎么揪出来伪装成svchost.exe是最常见的套路因为真正的svchost.exe是多实例运行管理员很难一眼分辨哪个正常、哪个异常。我一般从三个信息点去判断。一是路径。真正的svchost.exe一定在C:\Windows\System32或C:\Windows\SysWOW64下面。用Process Explorer右键看Image路径如果出现在Temp、Public、ProgramData下就是伪造的。二是签名。Process Explorer里正常的svchost.exe有Microsoft Corporation签名伪造进程大多没有签名或签名无效。三是命令行。svchost.exe正常启动时通常带-k参数比如-k netsvcs挖矿伪装进程的命令行则是一长串参数里面会露出xmrig、miner这样的字符串。如果木马伪装成Explorer或其他系统进程判断思路一样关键是看路径、签名、命令行是否匹配官方行为。如果进程数量和CPU占用对不上但任务管理器又找不到可疑进程大概率有进程隐藏这时用PCHunter或Process Hacker能看到更底层的信息。7.3 杀毒软件被病毒关闭了怎么办不少朋友清理挖矿病毒时发现Windows Defender根本不能用打开就闪退或提示“此应用已被组策略关闭”。这大概率不是系统故障而是病毒通过修改组策略或注册表禁用了Defender。常见的位置是HKLM\SOFTWARE\Policies\Microsoft\Windows Defender里面可能有DisableAntiSpyware、DisableRealtimeMonitoring等值被设为1。把这些键值删除或改为0然后重启Defender服务通常就能恢复。如果组策略也被改过用gpedit.msc检查“计算机配置 - 管理模板 - Windows组件 - Microsoft Defender防病毒”把相关策略设为“未配置”。如果Defender恢复后依然提示异常就用独立杀毒工具进安全模式或断网环境做全盘扫描。我比较常用KVRT它免安装、扫描速度快、对挖矿样本检出率不错。扫描前记得先断网防止样本在上传过程中继续发作。7.4 常见问题速查表为了方便以后遇到问题能快速对号入座我把处理过程里的常见问题整理成一张速查表放进收藏夹下次直接用。现象可能原因处理建议CPU占用高但任务管理器找不到进程进程被隐藏或伪装成系统进程使用Process Explorer/PCHunter查看检查WMI事件订阅清理完重启又复活计划任务、服务、WMI、RunOnce有残留全盘关键词扫描查父进程和持久化点文件删除提示“正在使用”驱动进程占用或保护杀进程安全模式删除必要时离线PE扫描Windows Defender被禁用组策略或注册表被恶意修改恢复Policies\Windows Defender键值检查组策略系统时间无法同步W32Time服务被禁用或污染启动服务重新配置NTP手动校准再resyncFTP外部连接列目录卡住防火墙未放行被动端口范围放行被动端口范围检查FTP账号权限外联大量挖矿端口挖矿程序未清干净或再次中招立即断网检查进程和服务封禁相关IP端口这张表不解决所有问题但能帮你在手忙脚乱时迅速定位方向不至于从头开始猜。8. 最后一点个人体会挖矿病毒的清理表面上看是一个技术问题实际上更考验一个人对系统整体的理解。我见过太多人把全部希望寄托在杀毒软件上结果杀毒软件清完一遍病毒换个马甲又来了。真正稳定的处理思路从来都是“发现 - 取证 - 清理 - 加固 - 监控”一条龙缺一步都不行。我自己在实战中养成了一套固定习惯不管这台服务器是被挖矿病毒还是其他恶意程序入侵清理完成后都会把所有账号密码批量改掉、把对外开放端口完整整理一遍、把系统补丁更新到最新然后用监控工具盯上两周。这个过程确实有些枯燥但正是这些枯燥的收尾动作决定了这次清理到底管不管用。还有一个小技巧想分享给大家在清理过程中始终保持一个详细的时间线记录什么时间发现了什么、修改了什么、重启了几次都写下来。后面如果出了问题需要复盘这份记录会比任何经验都管用。第一次处理挖矿病毒时千万别被CPU占用率吓到按步骤来先把现场记录做全再把持久化点全部清干净最后敢于重启再验证一次。很多时候问题不是一次能清完的但每多排查一轮离彻底干净就更近一步。