绝对想不到,Chrome浏览器变成了最稳定后门
技术背景
PEEP是一套面向Chromium内核浏览器的后渗透工具包,其伪装成书签类扩展Smart Bookmarks。当黑客或红队拿下目标系统权限之后,部署上这套组件,可在目标机器上建立持久稳定的系统级后门。一旦安装成功,扩展会每30秒用明文的HTTP协议向命令控制服务器轮询新任务,同时自动上传浏览历史、当前标签页、会话Cookie等数据。除此之外,还能在毫无察觉的情况下对网页注入脚本、截屏、读剪贴板, 当任务需要用到操作系统功能时,扩展还会唤起配套程序nm_host.exe,通过Chromium的Native Messaging机制在主机上执行Shell命令、浏览文件、枚举进程和服务。浏览器沙箱本来是用来隔离网页和系统的,这条通道一旦被利用,沙箱等于被从内部凿开一个口子。
PEEP的技术底子来自开源红队框架RedExt,后者也曾出现在GlassWorm相关攻击里。相比原版,PEEP补上了专用安装脚本、Native Messaging宿主、心跳上报、扩展自更新通道和更宽的指令集,已经是一套可独立部署的成品,而不是简单的脚本拼接。
核心技术原理
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,同一局域网内抓包理论上能看到扩展上报的内容。
攻击流程还原
PEEP的完整链条可以按阶段还原:
第一阶段没有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密钥、探测内网服务,相当于把浏览器变成了轻量远控客户端。
排查及修复方案
排查步骤(Windows):
排查步骤(Linux): 检查Chrome配置目录下是否存在patch_secure_prefs_linux.py执行痕迹,扩展目录与Native Messaging manifest中是否注册com.peep.lab。
恢复动作:对所有在该浏览器登录过的网站执行退出并重新登录,优先改绑二次验证;直接删除Cookie和站点数据比单点改密码更彻底。企业环境应推送扩展白名单策略,禁止未收录ID安装;PowerShell执行策略和脚本块日志应开启,便于发现install_silent.ps1一类落地行为。终端检测规则可增加对Native Messaging宿主异常注册和%LOCALAPPDATA%PEEPcrx路径的监控。