导语:想象一个刺客,他潜入目标家中,不撬锁、不翻柜、不发出任何声响,就这么安静地蹲在角落——直到有人从窗外扔进来一张特定的纸条,他才起身行动。SLEEPWALKER 就是这样一个”刺客型”后门程序。
一、它是怎么混进来的?
披着羊皮的DLL
SLEEPWALKER 是一个 64 位的 Windows DLL 文件,只有 59,904 字节(约 58KB),伪装成微软的系统文件 dpapi.dll,并且盗用了 ESET 杀毒软件的管理代理程序版本信息。
它通过 DLL 侧载的方式加载:把它放到 ESET 管理代理程序(ERAAgent.exe)同目录下,当 ESET 程序运行时,会优先加载同目录下的 dpapi.dll——于是 SLEEPWALKER 就借壳上身了。

DLL 侧载过程示意:攻击者将恶意 dpapi.dll 放到 ESET Agent 同目录下,程序运行时自动加载,恶意代码借正规进程之壳执行。
关键点:它只认进程名,不校验签名、不检查路径。只要进程名是 ERAAgent.exe,它就激活。
二、它是怎么”睡觉”的?
传统木马恨不得刚运行就拨号回家联系”主人”,但 SLEEPWALKER 完全相反:
它把网卡调成混杂模式,偷看所有经过的网卡流量,但自己什么都不发。它就像一个安安静静的监听器,躺在内存里一动不动。
直到——收到一个”暗号包”。
这个触发包有严格的校验逻辑(先后过 CRC-32 校验、AES-256-CCM 解密),只有完全匹配才会唤醒它。校验失败的包直接丢掉,没有任何响应。
这就导致:没有任何防火墙规则能封锁它,因为它在激活前根本不产生任何可疑流量。流量监控也看不见它——它只是被动地”看”,不主动”说”。
三、醒来之后它能做什么?
自创一套”方言”
SLEEPWALKER 不是收到明文指令,而是收到一段字节码程序——用后门自己设计的”方言”写的小程序。它内置了一个仅 23 条指令的字节码解释器,支持:
- 定时调度:让任务在指定时间执行
- 数据窃取:多种网络协议外传数据
- 分阶段投递:先下一个小程序,再下大程序,带 SHA-256 校验
- 直接内存执行:Shellcode 注入目标进程
通信能力
它支持多种隐蔽通道:
| 通道 | 用途 |
|---|---|
| TCP / UDP / ICMP | 原始套接字发送敏感数据 |
| SMB 命名管道 | 横向移动,渗透内网其他机器 |
| VMware VMCI | 宿主机与虚拟机之间的私有通道 |
| DNS 查询 | 把命令藏在 DNS 请求里触发 |
自降安全门槛
为了让自己能接收匿名连接,它会偷偷修改 Windows 本地安全策略——开启匿名 SMB 访问,并创建 Everyone 和 Anonymous Logon 都有完全控制权的命名管道。
四、加密和检测难点
双重加密壁垒
即便你拿到了 AES-256 解密密钥,也只能看到一堆乱码——因为解密出来的不是明文命令,而是字节码,还需要逆向后门的内部解释器才能理解。
检测建议
由于它在触发前几乎零行为,以下是检测重点:
- 进程层面:监控 ERAAgent.exe 是否异常加载了非官方的 dpapi.dll
- 文件层面:检查 System32 或 ESET 目录下是否存在 dpapisvc.dll(这是它会尝试加载的一个假文件)
- 网络层面:注意异常的大量 SMB 匿名访问和命名管道创建事件
- 策略层面:审计是否有人偷偷开启了匿名 SMB 访问
- 虚拟化环境:关注 VMware VMCI 通道的异常通信
五、IOC
| 类型 | 值 |
|---|---|
| SHA-256 | d347170752a28e2b8c4b8b9f3cab2e3a6541ba11682c94498d26eb9002779d60 |
| 文件大小 | 59,904 字节 |
| 伪装文件名 | dpapi.dll |
| 侧载进程 | ERAAgent.exe |
| 编译时间 | 2024-06-10 09:18:27 UTC |
参考链接:https://r136a1.dev/2026/08/24/sleepwalker-a-passive-backdoor-with-its-own-command-language/
分析工具截图:
















暂无评论内容