# 绝对想不到,Chrome浏览器变成了最稳定后门
### 技术背景
###
### PEEP是一套面向Chromium内核浏览器的后渗透工具包,其伪装成书签类扩展Smart Bookmarks。当黑客或红队拿下目标系统权限之后,部署上这套组件,可在目标机器上建立持久稳定的系统级后门。一旦安装成功,扩展会每30秒用明文的HTTP协议向命令控制服务器轮询新任务,同时自动上传浏览历史、当前标签页、会话Cookie等数据。除此之外,还能在毫无察觉的情况下对网页注入脚本、截屏、读剪贴板, 当任务需要用到操作系统功能时,扩展还会唤起配套程序nm\_host.exe,通过Chromium的Native Messaging机制在主机上执行Shell命令、浏览文件、枚举进程和服务。浏览器沙箱本来是用来隔离网页和系统的,这条通道一旦被利用,沙箱等于被从内部凿开一个口子。
### PEEP的技术底子来自开源红队框架RedExt,后者也曾出现在GlassWorm相关攻击里。相比原版,PEEP补上了专用安装脚本、Native Messaging宿主、心跳上报、扩展自更新通道和更宽的指令集,已经是一套可独立部署的成品,而不是简单的脚本拼接。
[](https://bost.lesrec.cn/uploads/images/gallery/2026-10/VdHBX3EnHlDpEkPI-image-1.jpg)
### 核心技术原理
###
PEEP首先会使用一个脚本:install\_silent.ps1用来打开开发者模式,让未上架商店的扩展也能加载进来,并通过注册表HKCU Extensions项和External Extensions JSON清单完成登记。到这一步,Smart Bookmarks的文件已经挂进浏览器配置里,但如果此时重启浏览器,用户仍可能看到未验证扩展的警告,扩展也可能处于待确认状态。
紧接着PEEP会执行第二个脚本:patch\_secure\_prefs.ps1,它改的是用户配置目录下的Secure Preferences文件。Chromium每次启动都会用文件里存的HMAC值校验扩展配置有没有被动过手脚,校验不过就会弹窗或把扩展禁掉。这个脚本伪造HMAC值,让浏览器误以为当前扩展状态是自己合法写入的。跑完这步再重启浏览器,Smart Bookmarks就会静默启用,界面上不会出现任何安装确认框。Linux上同类操作由patch\_secure\_prefs\_linux.py完成,逻辑相同。
浏览器重新起来之后,扩展才开始真正工作。 background脚本读本地配置文件里的远端地址,向C2登记本机,然后进入每30秒轮询一次的循环。登记完不用等人下指令,Cookie、浏览历史、当前标签和URL、公网IP就会分批往外传;任务结果和心跳走不同接口回传,服务器还能远程推新版本,扩展拉取CRX更新包即可换壳。content.js同时挂到用户打开的每个页面上,截图、读剪贴板、往网页里注入脚本,这些都还在浏览器权限范围内,暂时碰不到操作系统。
如果用户后来把扩展删了,走另一条恢复路径。 force\_enable.ps1专门干这件事,不必再动Secure Preferences。它会从Preferences的external\_uninstalls列表里抹掉卸载记录,确认CRX包还在%LOCALAPPDATA%PEEPcrx,再走一遍注册表和External Extensions登记,最后重启浏览器把扩展拉回来。三个脚本因此分工明确:install\_silent.ps1开安装通道,patch\_secure\_prefs.ps1让首次落地静默生效,force\_enable.ps1对付被人删掉之后的再注册。
除了脚本,PEEP还留了别的退路。企业环境里若启用了ExtensionInstallForcelist策略,攻击者可以把恶意扩展ID和正规企业插件写进同一条策略,员工很难从名字上区分;ScriptCache回退则让扩展在部分清理场景下仍有机会复原。
浏览器权限用尽之后,才轮到系统侧组件。 扩展清单里注册了com.peep.lab,对应本机上的nm\_host.exe。Chrome和Edge给合法扩展留过一条和本地程序通信的官方管道,密码管理器、安全类插件正常会用这条途径调用系统能力。PEEP把Shell命令、文件读写、进程和服务枚举交给这个exe执行,运行权限和普通登录用户相同,但调用入口藏在已签名的浏览器进程里,终端防护如果只观察磁盘上新出现的陌生exe,这条路径很容易忽略掉。
远端一侧,C2除了日常收发任务,还在5001端口提供/login管理面板,/health接口甚至不登录也能看在线情况。通信走明文HTTP,没有TLS,同一局域网内抓包理论上能看到扩展上报的内容。
[](https://bost.lesrec.cn/uploads/images/gallery/2026-10/WHTonuf4n82z8Xwq-image-2.jpg)
攻击流程还原
### PEEP的完整链条可以按阶段还原:
| | | |
| | 未打补丁的办公电脑、开发测试机、能装软件的普通用户 | |
| 静默PowerShell、伪造Secure Preferences、企业策略强装 | | |
| | | |
| | | |
| nm\_host.exe经Native Messaging | | |
第一阶段没有PEEP参与。攻击者用任意已有手段拿下主机,这一步在国内企业环境里并不稀奇:员工点开伪装成发票的压缩包、开发机从不可信源拉了带后门的构建脚本、或者VPN入口长期共用弱密码,都可能留下一个能跑PowerShell的后门。
第二阶段才是PEEP登场。install\_silent.ps1打开侧载通道后,CRX被装进本地目录,patch\_secure\_prefs.ps1篡改Secure Preferences让扩展看起来像是浏览器自己信任的配置。用户打开扩展管理页,可能看到一个名字还像正经工具的书签扩展,状态却是已启用。若企业IT用ExtensionInstallForcelist统一下发插件,攻击者也可以把恶意ID写进同一策略键值,和合法企业扩展混在一起。
第三阶段,扩展注册完就开始30秒一次的心跳和命令轮询。即便用户当时没打开敏感网站,background脚本仍会上传环境元数据。一旦用户登录淘宝卖家中心、企业微信网页版、GitHub或各类管理后台,Cookie和活跃URL就会进入C2的507条记录池。明文HTTP传输意味着中间网络设备若做日志留存,事后可能留下取证线索,但对用户本身没有即时保护。
第四阶段,content.js在所有匹配页面上运行。攻击者可以远程下截图指令、读取剪贴板里刚复制的密码或API Key、向银行或OA页面注入额外脚本。这类操作不需要Native Messaging,全程在浏览器权限内完成,界面看起来可能一切正常。
第五阶段,当攻击者需要横向移动或落地工具时,C2下发需要系统权限的任务,扩展唤起nm\_host.exe。Native Messaging是Chrome官方给合法扩展与本地程序通信的通道,杀软通常不会拦截浏览器发起的这条管道。exe在用户上下文里执行命令,可以列目录、找SSH密钥、探测内网服务,相当于把浏览器变成了轻量远控客户端。
[](https://bost.lesrec.cn/uploads/images/gallery/2026-10/YftmO98yaMjPNJq1-image-3.jpg)
排查及修复方案
**排查步骤(Windows):**
1. 打开Chrome或Edge扩展管理页,搜索ID `ejkndncpkdcjcikfhiamcdehdoegilbj`,或名称Smart Bookmarks,发现即卸载并删除相关数据。
2. 检查目录 `%LOCALAPPDATA%PEEPcrx` 是否存在,整个文件夹删除。
3. 在文件系统搜索 `nm_host.exe`,删除文件并检查Native Messaging注册表项 `com.peep.lab`(通常在HKCU Software相关Chrome/Edge Native Messaging Hosts路径下)。
4. 查看 `%LOCALAPPDATA%GoogleChromeUser Data` 或 `%LOCALAPPDATA%MicrosoftEdgeUser Data` 下Secure Preferences和Preferences是否近期被异常修改,可与干净机器对比或重装浏览器用户配置。
5. 在注册表 `HKCUSoftwareGoogleChromeExtensions` 或Edge对应路径下,确认无上述恶意ID残留。
**排查步骤(Linux):** 检查Chrome配置目录下是否存在patch\_secure\_prefs\_linux.py执行痕迹,扩展目录与Native Messaging manifest中是否注册com.peep.lab。
**恢复动作:**对所有在该浏览器登录过的网站执行退出并重新登录,优先改绑二次验证;直接删除Cookie和站点数据比单点改密码更彻底。企业环境应推送扩展白名单策略,禁止未收录ID安装;PowerShell执行策略和脚本块日志应开启,便于发现install\_silent.ps1一类落地行为。终端检测规则可增加对Native Messaging宿主异常注册和%LOCALAPPDATA%PEEPcrx路径的监控。
### 以下脚本可作本地检查:
```
import json
``````
import os
``````
import platform
``````
from pathlib import Path
``````
``````
SUSPICIOUS_ID = "ejkndncpkdcjcikfhiamcdehdoegilbj"
``````
SUSPICIOUS_NAME = "smart bookmarks"
``````
PEEP_CRX = Path(os.environ.get("LOCALAPPDATA", "")) / "PEEPcrx"
``````
``````
def chrome_prefs_roots():
``````
base = Path(os.environ.get("LOCALAPPDATA", ""))
``````
if platform.system() == "Windows":
``````
yield base / "Google/Chrome/User Data"
``````
yield base / "Microsoft/Edge/User Data"
``````
else:
``````
yield Path.home() / ".config/google-chrome"
``````
yield Path.home() / ".config/microsoft-edge"
``````
``````
def iter_extensions(prefs_file: Path):
``````
try:
``````
data = json.loads(prefs_file.read_text(encoding="utf-8"))
``````
except (OSError, json.JSONDecodeError):
``````
return
``````
settings = data.get("extensions", {}).get("settings", {})
``````
for ext_id, meta in settings.items():
``````
name = (meta.get("manifest", {}) or {}).get("name", "")
``````
yield ext_id, name, str(prefs_file.parent)
``````
``````
def main():
``````
hits = []
``````
for root in chrome_prefs_roots():
``````
for profile in root.glob("*/Preferences"):
``````
for ext_id, name, loc in iter_extensions(profile):
``````
if ext_id == SUSPICIOUS_ID or SUSPICIOUS_NAME in name.lower():
``````
hits.append((ext_id, name, loc))
``````
if PEEP_CRX.exists():
``````
print(f"[!] 发现PEEP本地目录: {PEEP_CRX}")
``````
if hits:
``````
print("[!] 可疑扩展:")
``````
for row in hits:
``````
print(" ", row)
``````
else:
``````
print("[OK] 未在Preferences中发现Smart Bookmarks / 已知恶意ID")
``````
``````
if __name__ == "__main__":
``````
main()
```
### 将上述脚本保存为 `check_peep_ext.py`,在终端执行 `python check_peep_ext.py` 即可快速扫描本机配置文件。若输出告警,再按前文步骤手工清理Native Messaging注册和PEEPcrx目录。
###
[](https://bost.lesrec.cn/uploads/images/gallery/2026-10/zOUIzvZVSxqmRuMG-image-4.jpg)
###
### IOC
###
### C2 IP : 206.237.30.232
### 域名: xfjcc.fun
### 端口: 5001
###
###
### (全文完)