引言:被低估的脚本攻击面

在企业纵深防御安全体系中,终端威胁正在发生范式转变。传统恶意软件检测依靠特征码、启发式分析,重点针对PE可执行文件。但攻击者越来越多地采用 Living off the Land(LotL)就地取材战术,直接调用操作系统自带合法工具完成恶意动作,不投放独立恶意二进制文件。Windows批处理.bat/.cmd、VBScript.vbs成为高频攻击载体。

批处理与VBScript成为LotL攻击优选,源于其技术特性:属于系统原生组件,无需额外安装;可直接调用系统API、WMI、COM对象,实现文件操作、注册表修改、网络通信、进程管理;本身为纯文本,没有PE文件头,传统特征杀毒检测效果有限。攻击者通过钓鱼邮件诱使用户双击脚本,或者Office宏嵌入恶意VBS代码,即可实现持久化驻留、窃取敏感数据、内网横向移动。

与此同时挖矿程序、勒索软件、APT后门等恶意进程持续带来威胁,恶意进程运行行为和正常业务程序存在可识别差异。如何在脚本执行入口建立拦截屏障,如何对运行态恶意进程做实时检测处置,是终端安全两大核心技术命题。

本文从内核‑用户态协同视角,讲解脚本管控与风险进程治理实现方案,结合互成软件终端安全治理框架介绍企业落地工程价值。

一、脚本执行管控:从引擎层到进程链的多维拦截

1.1 Windows脚本执行的技术架构

Windows脚本存在多条执行路径,对应不同解释器引擎:

  • 批处理Batch:由cmd.exe解析执行,读取.bat/.cmd文本命令,调用内置命令或外部程序。
  • VBScript:依托WSH Windows脚本宿主,分为cscript.exe命令行、wscript.exe图形界面,加载vbscript.dll,编译字节码执行,借助COM对象访问文件、注册表、网络。
  • PowerShell(本文不作展开):.ps1脚本,通过powershell.exe/pwsh.exe执行,也是LotL重要攻击载体。

1.2 脚本执行的多层拦截机制

互成软件脚本管控构建内核层进程监控 + 用户态API过滤 + 命令行语义解析三层防御体系:

  1. 内核层进程创建监控:通过PsSetCreateProcessNotifyRoutineEx注册回调,捕获cmd.execscript.exewscript.exe等宿主进程创建。驱动读取映像路径、父进程ID、PEB中的命令行参数,识别命令行内.bat/.cmd/.vbs脚本文件参数。
  2. ShellExecute API Hook:用户双击脚本文件会调用ShellExecute/ShellExecuteEx。Agent Hook该接口,执行前提取文件路径与操作类型,匹配安全策略。
  3. WSH引擎层拦截:Hookvbscript.dll内部IActiveScript::ParseScriptText接口。可以捕获HTA、内存内嵌脚本,攻击者不落地脚本文件也能够被检测。
  4. 命令行语义解析:针对cmd /ccmd /k场景,深度解析命令行,识别powershell -enccertutil -urlcacheregsvr32等典型LotL攻击命令,执行前判定风险等级。

1.3 例外程序配置:调用链溯源与白名单

全盘禁止脚本会干扰运维自动化、业务插件、宏流程等合法场景。系统依靠调用链溯源实现精准放行:

  • 父进程识别:回调获取脚本宿主的父进程PID,如果父进程属于预先配置例外程序,则允许脚本运行。
  • 调用链递归校验:针对多层代理启动脚本的攻击手法,递归回溯整条进程链,整条链路全部可信才放行脚本。
  • 例外多维校验:不只依靠进程名,同时校验文件路径、SHA‑256哈希、数字签名、版本,防止同名恶意程序绕过。例如仅放行企业目录下企业证书签名的运维工具。
  • 动态一次性令牌:IT运维排障等临时场景,管理平台下发绑定终端、脚本的限时令牌,实现限次限时放行。

1.4 静默阻断与审计模式

两种策略执行模式可按终端、用户、脚本类型、时间窗口差异化配置:

  1. 静默阻断模式:内核回调直接返回STATUS_ACCESS_DENIED,脚本进程完全不运行。无弹窗、不写本地日志,高密级终端使用,避免攻击者感知安全防护存在。
  2. 审计模式:允许脚本执行,完整记录进程链、命令行、脚本路径、账号时间,日志上报平台。用于基线调研、策略调优阶段。

二、风险进程检测与响应:运行时威胁的实时收敛

2.1 终端风险进程的技术特征

除脚本威胁外,漏洞植入、供应链投毒、脚本下载释放的恶意二进制同样需要处置。风险进程检测不依赖静态特征码,基于运行时行为分析,检测维度:

  • 进程行为画像:建立进程行为基线,包含文件访问、网络连接、注册表操作、子进程创建。行为明显偏离基线标记异常。
  • 内存特征扫描:内核态映射或者ReadProcessMemory读取进程内存,查找C2域名、钱包地址、Shellcode、反射DLL注入痕迹。
  • 文件熵值分析:监控进程新建修改文件,计算香农熵,加壳加密恶意文件熵值接近8,标记可疑。
  • 网络异常检测:识别恶意IP域名通信、异常端口出站、DNS隧道行为。

2.2 风险检测的终端实现

内核与用户态Agent协同完成检测响应:

  1. 内核层监控PsSetCreateProcessNotifyRoutineExPsSetLoadImageNotifyRoutine监控进程创建、模块加载,维护进程状态表保存基础信息。
  2. 用户态行为分析引擎:SYSTEM权限Agent订阅Windows ETW事件,采集文件、网络、注册表行为。结合威胁情报IOC库、机器学习模型计算风险评分。
  3. 实时响应动作(风险分超阈值触发)
    • 客户端告警弹窗,展示威胁信息;
    • 调用NtTerminateProcess终止风险进程及子进程树,保护关键系统进程防止蓝屏;
    • 终端网络隔离,阻断外联,阻止数据窃取、下载后续载荷;
    • 可选内存转储加密保存,用于事后取证。

2.3 技术日志的结构化记录

所有检测处置事件输出标准化取证日志,关键字段:

  • 进程标识:PID、进程名、映像路径、命令行、父子进程信息
  • 时间线:进程创建、风险检出、响应执行时间
  • 风险指标:命中规则ID、风险评分、匹配IOC
  • 响应结果:告警/终止/隔离/内存转储以及执行状态
  • 系统上下文:终端机器GUID、登录用户SID、系统启动时间
  • 取证信息:转储路径、大小、哈希

日志加密上报管理平台,支持多维度检索关联分析,时间线完整还原攻击链路:脚本执行‑恶意进程启动‑数据外泄尝试。

三、互成软件的终端安全治理框架

3.1 统一策略编排

脚本管控、风险进程治理共用同一套策略引擎,采用条件‑动作‑例外三段式规则,支持终端标识、账号身份、网络环境、时间窗口组合条件。

策略之间深度联动:脚本管控拦截脚本时,把脚本路径、命令行交给风险检测引擎二次分析;命中LotL恶意命令序列,直接抬高终端风险分,自动进入增强监控模式。

3.2 兼容性与稳定性保障

内核驱动工程保障:

  • 多版本适配:兼容Windows7/8/10/11,适配不同版本内核回调接口差异。
  • 驱动签名:WHQL/EV签名,Secure Boot安全启动环境正常加载。
  • 故障降级:驱动内部异常自动切换观察模式,仅记录日志不阻断,规避蓝屏宕机。

四、合规性与工程实践

4.1 合规性映射

合规标准 相关条款 技术映射
等保2.0 恶意代码防范、入侵防范 脚本拦截,风险进程检测与处置
ISO 27001 A.12.2恶意软件防护 拦截未授权脚本执行
数据安全法 数据处理活动安全 阻止恶意进程窃取业务数据
网络安全等级保护 安全审计 脚本、风险事件完整审计日志

4.2 性能与用户体验的平衡

  • 本地策略缓存:脚本规则、威胁特征库本地哈希表、Trie树缓存,进程创建额外延迟控制在1ms以内。
  • 灰度策略推送:新策略先下发测试分组,评估误拦截,验证后全量发布。

结语

PsSetCreateProcessNotifyRoutineEx进程回调,ShellExecute API HOOK,WSH COM接口监控,到进程运行时行为画像。脚本管控与风险进程治理横跨内核对象管理、Shell架构、脚本引擎、威胁情报体系。其价值在于传统特征杀毒对LotL就地取材攻击防御不足时,构建从执行入口到运行时行为完整防御闭环。

互成软件针对LotL攻击构建完整防护:内核层管控脚本宿主进程,依靠调用链与例外规则放行合法脚本;运行时行为分析识别异常风险进程,本地实时告警处置。两套能力相互协同,形成脚本拦截‑例外放行‑风险检测‑进程处置‑审计闭环安全框架。

企业对抗LotL攻击、落实等保、建设运行时威胁响应,这套体系不是限制用户操作,而是可信计算基础设施。选型部署结合业务脚本现状、终端性能基线、合规要求做差异化策略,平衡安全和可用性。脚本管控的终极目标不是杜绝全部脚本运行,而是每一行脚本都运行在可信调用链、可控权限、完整可审计的上下文当中。