当前位置: 首页 > news >正文

Windows安全机制--脚本执行防御

Windows 脚本执行防御是其安全体系的核心环节之一,主要针对 恶意脚本(如 PowerShell、VBScript、Batch、JavaScript 等) 的非授权执行 —— 这类脚本是黑客传播恶意软件(勒索病毒、后门)、窃取数据的重要载体。其防御体系围绕 “限制脚本运行权限、监控脚本行为、阻断恶意脚本执行” 三大目标构建,涵盖多个层级的组件和配置。

一、核心防御:从 执行控制 到 行为监控

Windows 提供了多个原生组件,从 “源头限制脚本运行” 到 “实时监控脚本行为” 形成闭环。

1. PowerShell 执行策略

PowerShell 是 Windows 中功能最强的脚本引擎,也是恶意攻击的高频目标。执行策略 是 PowerShell 内置的基础防御机制,用于限制脚本文件(.ps1)的执行权限,而非限制命令行交互(如直接在控制台输入命令)。

(1)执行策略的 5 个等级(从严格到宽松)
策略等级作用说明适用场景
Restricted禁止执行任何脚本文件(默认策略),仅允许交互命令。个人用户、低权限普通账户
AllSigned仅允许执行 “已数字签名” 的脚本(无论本地 / 远程),且签名者需被信任。企业环境(确保脚本来源合法)
RemoteSigned本地脚本(硬盘)可无签名执行;远程脚本(网络共享、下载)必须已签名。兼顾灵活性与安全的个人 / 小型企业
Unrestricted允许执行所有脚本(无签名要求),但运行远程脚本前会提示风险。测试环境(不建议生产使用)
Bypass完全关闭执行策略,无任何限制(不提示、不验证)。仅临时测试(极高风险,禁用)
(2)如何查看 / 修改执行策略?
  • 查看当前策略:打开 PowerShell(管理员 / 普通权限均可),输入命令:Get-ExecutionPolicy(若显示 Undefined,表示当前用户未配置,继承上级策略,通常为 Restricted

  • 修改策略(需管理员权限):Set-ExecutionPolicy [策略等级] -Force例:设置为 RemoteSigned(兼顾安全与灵活):Set-ExecutionPolicy RemoteSigned -Force

(3)注意
  • 执行策略 并非绝对安全:存在绕过方法(如通过 Invoke-Expression 执行 Base64 编码的恶意脚本),还是需结合其他防御机制。
  • 仅对 .ps1 文件生效:对 PowerShell 命令行交互(如 powershell -Command "恶意命令")无限制。

2. Windows Defender 脚本防护

Windows Defender(Windows 安全中心的核心组件)提供了专门的 脚本行为监控 功能,通过 “特征码检测” 和 “行为分析” 识别恶意脚本,即使脚本绕过执行策略也能阻断。

(1)关键防护
  • 实时保护(Real-Time Protection):默认开启,监控脚本文件的创建、修改、执行过程,一旦匹配恶意特征(如勒索病毒脚本的文件加密行为),立即阻止并隔离。
  • 云交付保护(Cloud-Delivered Protection):将可疑脚本的哈希、行为数据上传至微软云,实时获取最新威胁情报(毫秒级响应),识别未入库的 “零日恶意脚本”。
  • 脚本分析(Script Analysis):深度解析脚本代码逻辑,识别恶意行为(如修改注册表、远程下载文件、枚举系统账户),而非仅依赖特征码。
(2)如何确认 / 开启防护?
  1. 打开 Windows 安全中心(快捷键 Win + I → 隐私和安全性 → Windows 安全中心);
  2. 进入 病毒和威胁防护 → 点击 管理设置
  3. 确保以下选项开启:
    • 实时保护
    • 云交付保护
    • 自动提交样本(如果有的话)。

3. 应用控制(AppLocker/WDAC):精细化白名单

对于企业环境或高安全需求场景,“执行策略” 和 “实时监控” 仍有漏洞(如恶意脚本伪装成合法程序)。应用控制 通过 “白名单机制” 限制 “哪些程序 / 脚本能运行”,从根本上阻断未授权脚本。这就涉及到我们上一篇所讲述的模块执行防御了,这里再简单提及一下。

Windows 提供两种应用控制工具:AppLocker(灵活)和 WDAC(Windows Defender Application Control)(严格)。

对比维度AppLockerWDAC(Windows Defender Application Control)
适用系统Windows 10/11 专业版 / 企业版 / 教育版Windows 10 1709+ 企业版 / 教育版,Windows 11
核心机制基于 “用户 / 组” 的白名单,支持脚本、EXE、DLL 等基于 “系统级” 的白名单,优先级高于 AppLocker
脚本控制能力可单独限制 PowerShell、VBScript、Batch 脚本支持限制所有脚本引擎,可结合代码签名
配置复杂度低(图形化界面,组策略管理)高(需通过 XML 策略文件配置,适合企业)
典型场景部门级精细化控制(如仅允许 IT 组运行脚本)高安全环境(如金融、政府,阻断所有未授权脚本)
(1)AppLocker 配置示例(限制脚本执行)
  1. 打开 组策略编辑器gpedit.msc,需专业版以上系统);
  2. 导航至:计算机配置 → Windows 设置 → 安全设置 → 应用控制策略 → AppLocker → 脚本规则
  3. 右键 “脚本规则” → 创建新规则,按向导设置:
    • 选择 “允许” 或 “拒绝”(建议 “允许” 白名单,拒绝所有未在白名单的脚本);
    • 选择适用的用户 / 组(如 “Domain Users”);
    • 选择脚本类型(PowerShell、VBScript、Batch 等);
    • 添加白名单脚本(如仅允许 C:\IT-Scripts\ 目录下的脚本运行)。

二、辅助防御措施:尽量避免 “脚本执行漏洞”

除核心组件外,以下配置可进一步降低脚本被滥用的风险,适合于个人用户。

1. 禁用不必要的脚本引擎

Windows 默认启用 VBScript(.vbs)、JScript(.js)等老旧脚本引擎,这些引擎安全性较低,且多数普通用户无需使用。禁用后可减少攻击面。

(1)通过组策略禁用(企业 / 专业版)
  1. 打开 gpedit.msc,导航至:计算机配置 → 管理模板 → Windows 组件 → Windows Script Host → 脚本执行
  2. 双击 “启用 Windows Script Host 脚本执行”,选择 “已禁用”,即可禁用 VBScript/JScript。
(2)通过注册表禁用(家庭版)
  1. 打开注册表编辑器(regedit.exe);
  2. 定位到以下路径,将 Enabled 键值改为 0(禁用):
    • VBScript:HKEY_CURRENT_USER\Software\Microsoft\Windows Script Host\Settings\Enabled
    • JScript:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings\Enabled(若 Settings 项不存在,右键新建 “项” 并命名为 Settings,再新建 DWORD (32位) 值 命名为 Enabled)。
注意事项:

禁用前需确认无依赖脚本(如部分老软件的启动脚本可能依赖 VBScript),否则会导致软件报错。

2. 用户账户控制(UAC):限制脚本权限

UAC(用户账户控制)虽不直接针对脚本,但能阻止脚本 “以管理员权限执行”—— 多数恶意脚本(如修改系统配置、窃取管理员数据)需要高权限才能生效。

配置如下:
  • 保持 UAC 级别为 “默认” 或 “仅当应用尝试更改我的计算机时通知我”Win + I → 账户 → 家庭和其他用户 → 账户设置 → UAC 设置);
  • 避免长期使用管理员账户登录(日常用普通账户,需高权限时再授权),从而限制脚本的操作范围。

3. 阻断 “脚本文件伪装” 与 “文件关联滥用”

黑客常通过以下手段绕过防御:

  • 将恶意脚本伪装成文档(如 invoice.pdf.ps1,利用用户忽略后缀名的习惯);
  • 修改文件关联(如将 .txt 关联到 wscript.exe,打开文本文件时自动执行脚本)。
防御配置:
  1. 显示文件扩展名:打开文件资源管理器 → 查看 → 勾选 “文件扩展名”,避免被伪装文件名欺骗;
  2. 锁定文件关联:通过组策略(gpedit.msc)导航至 用户配置 → 管理模板 → Windows 组件 → 文件资源管理器 → 阻止用户更改文件关联,设置为 “已启用”(企业环境);个人用户可通过注册表锁定关键关联(如 .txt 关联 notepad.exe),但需谨慎操作。

三、实践:构建多层防御体系

单一防御组件无法完全抵御攻击,需结合以下策略形成闭环:

  1. 遵循 “最小权限原则”

    • 日常使用普通账户,禁用 “管理员账户自动登录”;
    • 限制脚本的运行目录(如仅允许 C:\Approved-Scripts\ 下的脚本执行,通过 AppLocker 配置)。
  2. 及时更新系统与威胁库

    • 开启 Windows 更新(Win + I → Windows 更新),修复脚本引擎(如 PowerShell)的漏洞;
    • 确保 Windows Defender 病毒库实时更新(默认自动更新),应对最新恶意脚本特征。
  3. 监控脚本执行日志

    • 开启 PowerShell 日志:通过组策略(gpedit.msc)启用 “PowerShell 脚本块日志记录” 和 “模块日志记录”,记录所有脚本执行行为;
    • 查看安全日志:通过 “事件查看器”(eventvwr.msc) → Windows 日志 → 安全,筛选事件 ID(如 4688:进程创建,可追踪脚本启动的进程)。
  4. 谨慎处理 “外部脚本”

    • 不打开邮件附件中的脚本文件(即使来自 “熟人”,需先验证合法性);
    • 从网络下载的脚本,先通过 Windows Defender 扫描(右键 → 扫描),再执行。

这里我们从原生组件上进行防御,接下来介绍工具来进行防御,主要有两种工具。有一种工具相信看过我上一篇文章的,有了解,那就是微过滤器。

在 Windows 脚本与文件防御体系中,微过滤器(Minifilter) 和 AMSI(Antimalware Scan Interface,反恶意软件扫描接口) 是两种技术层级、防御焦点完全不同的核心方案 —— 前者是内核级文件操作拦截,后者是用户态脚本执行接口,二者分别从 “文件生命周期” 和 “脚本执行流程” 两个关键环节构建防御,常被 EDR(端点检测与响应)、杀毒软件等工具组合使用。

一、微过滤器(Minifilter):内核级文件操作防御

微过滤器(Minifilter)是 Windows 内核模式下的文件系统过滤驱动框架,本质是通过拦截文件系统的核心操作(如创建、读取、写入、执行、删除),在 “文件被访问 / 修改 / 执行前” 实现底层阻断。其核心目标是保护文件本身不被恶意脚本 / 程序篡改或滥用(而非直接监控脚本代码逻辑)。

1. 核心定位:文件系统的 内核守护

Windows 文件系统的操作(如打开一个 .ps1 脚本、写入加密数据到文档)最终会通过 “IRP(I/O 请求包)” 传递到内核态的文件系统驱动。Minifilter 作为轻量化内核驱动,可注册到文件系统的 “过滤栈” 中,优先拦截所有 IRP 请求—— 这意味着它的防御粒度比用户态工具(如 Defender 实时保护)更底层,几乎无法被用户态恶意程序绕过。

2. 技术原理:拦截→分析→决策

Minifilter 的防御逻辑围绕 “文件操作行为” 展开,而非脚本代码内容,具体流程如下:

  1. 注册拦截事件:Minifilter 驱动加载后,会向系统注册需要监控的文件操作类型,常见目标包括:

    • 文件创建 / 写入:拦截恶意脚本创建新文件(如勒索病毒生成加密后的 .locked 文件)、或向合法文件写入恶意代码(如脚本注入);
    • 文件读取 / 执行:拦截对可疑脚本文件(如无签名的 .vbs.bat)的读取或执行请求;
    • 文件删除 / 重命名:拦截恶意脚本删除系统备份文件(如勒索病毒的常见操作)。
  2. 行为与特征分析:当拦截到文件操作时,Minifilter 会提取关键信息并分析:

    • 静态特征:文件哈希(是否匹配已知恶意脚本特征库)、文件路径(是否在敏感目录如 C:\Windows\System32)、文件签名(是否为未签名 / 伪造签名的脚本);
    • 动态行为:操作发起者(哪个进程触发了文件操作,如 powershell.exe 突然大量写入文件)、操作频率(如短时间内对数百个文档执行写入,疑似勒索病毒加密)、数据特征(如写入的内容是否为加密后的乱码)。
  3. 执行防御决策:根据分析结果,Minifilter 会执行以下动作之一:

    • 允许:操作合法(如信任进程 notepad.exe 读取文本文件),将 IRP 传递给下一层驱动,继续执行操作;
    • 阻断:操作可疑(如 unknown.exe 试图修改 C:\Users\ 下的所有文档),直接丢弃 IRP 请求,返回 “访问被拒绝” 错误,同时记录日志;
    • quarantine(隔离):若判定为恶意文件,可将文件移动到内核态隔离区(避免用户态进程篡改),并通知用户态安全软件进一步处理。

3. 防御能力与典型场景

Minifilter 更擅长防御 “通过文件操作实施的恶意行为”,尤其适合以下场景:

  • 勒索病毒文件加密防御:勒索病毒的核心行为是 “读取原始文件→加密数据→写入加密文件→删除原始文件”,Minifilter 可通过监控 “短时间内大量文件的写入 + 删除” 行为,在加密操作完成前阻断,保护原始文件;
  • 恶意脚本文件保护:拦截无签名 / 可疑路径的脚本文件(如 C:\Temp\malicious.ps1)的执行请求,即使脚本绕过了 PowerShell 执行策略,也无法通过内核级文件读取 / 执行拦截;
  • 文件完整性保护:对系统关键脚本(如组策略部署的 login.bat)设置 “只读保护”,拦截任何进程对其的修改请求,防止恶意脚本篡改合法脚本。

4. 优势与局限

维度优势局限
技术层级内核态拦截,优先级高于所有用户态工具,几乎无法被用户态恶意程序绕过开发难度高(需掌握 Windows 内核驱动开发,且需微软 EV 代码签名才能加载);
监控范围覆盖所有文件操作(跨进程、跨用户,包括系统进程),无监控盲区不直接分析脚本代码逻辑(如无法识别 “看似合法但代码恶意的脚本”);
兼容性支持所有 Windows 版本(从 Windows XP 到 Windows 11),但需适配不同内核版本内核驱动若存在漏洞,可能导致系统蓝屏(BSOD),对稳定性要求极高;
资源占用内核态轻量化设计,对系统性能影响小(仅拦截关键操作,不处理复杂代码分析)无法防御 “纯内存脚本执行”(如脚本代码不写入文件,直接通过内存注入执行);

二、AMSI:用户态脚本执行流程防御

AMSI 是微软推出的用户态反恶意软件扫描接口(Windows 10 1511+ 内置),本质是为脚本引擎(如 PowerShell、VBScript、WSH)和用户态程序提供 “脚本执行前扫描” 的标准接口,让安全软件(如 Windows Defender)能直接接入脚本执行流程,拦截恶意脚本代码。

1. 核心定位:脚本执行的 “用户态安检员”

传统脚本防御(如 PowerShell 执行策略)仅限制脚本文件执行,无法防御 “动态脚本”(如 Base64 编码的脚本、内存中的脚本块)。AMSI 的核心思路是:让脚本引擎在执行任何代码前,先 “咨询” 安全软件—— 安全软件判定为恶意则终止执行,判定为合法则继续。

AMSI 本身不具备扫描能力,而是一个 “桥梁”:它定义了标准化的扫描接口,脚本引擎(如 PowerShell)和安全软件(如 Defender)分别作为 “调用方” 和 “扫描方” 接入接口,实现协同防御。

2. 技术原理:接入→扫描→反馈

AMSI 的防御逻辑围绕 “脚本代码执行流程” 展开,具体流程如下:

  1. 接口接入与初始化

    • 安全软件(如 Windows Defender)通过 AMSIRegisterSession 注册一个 AMSI 会话,向系统声明 “具备脚本扫描能力”;
    • 脚本引擎(如 PowerShell 5.1+)在启动时,会自动加载 AMSI 接口(通过 amsi.dll),并创建一个扫描会话(AMSIInitialize),用于后续脚本扫描。
  2. 脚本执行前扫描:当脚本引擎准备执行代码时(无论代码来自文件、命令行还是内存),会触发以下扫描步骤:

    • 代码捕获:脚本引擎将待执行的代码(如 PowerShell ScriptBlock、VBScript 代码字符串)转换为 AMSI 可识别的格式(通常是 Unicode 字符串或二进制流);
    • 接口调用:通过 AMSI ScanString(扫描字符串代码)或 AMSI ScanBuffer(扫描二进制代码)接口,将代码传递给已注册的安全软件;
    • 安全软件判定:安全软件对代码进行分析(特征码匹配、行为逻辑分析、沙箱模拟执行等),返回 “安全”(AMSI_RESULT_CLEAN)或 “恶意”(AMSI_RESULT_DETECTED)结果。
  3. 执行决策与日志记录

    • 若返回 “恶意”:脚本引擎立即终止代码执行,抛出错误(如 PowerShell 会显示 “无法执行脚本,因为已被 AMSI 阻止”),同时通过 AMSIUnregisterSession 关闭会话;
    • 若返回 “安全”:脚本引擎继续执行代码,并记录扫描日志(可通过事件查看器查看 AMSI 扫描记录)。

3. 支持的脚本引擎与防御能力

AMSI 覆盖了 Windows 主流脚本引擎,能防御 “所有通过标准脚本引擎执行的恶意代码”,包括:

  • PowerShell:支持 PowerShell 5.1、PowerShell 7+,可扫描 ScriptBlock、Invoke-Expression 执行的代码、Base64 解码后的脚本(如 powershell -EncodedCommand <Base64代码>);
  • VBScript/JScript:通过 WSH(Windows Script Host)执行的 .vbs.js 文件,或通过 wscript.exe/cscript.exe 执行的命令行代码;
  • Office 宏:Office 2016+ 支持 AMSI 扫描,可拦截恶意宏代码(如通过宏下载勒索病毒的 VBA 代码);
  • 其他用户态程序:如 WSL(Windows Subsystem for Linux)、第三方脚本解释器(需开发者主动接入 AMSI 接口)。

4. 优势与局限

维度优势局限
技术层级用户态接口,开发门槛低(无需内核知识),安全软件可快速接入依赖脚本引擎主动调用接口,若脚本引擎被篡改(如 Hook amsi.dll),可能绕过扫描;
监控范围直接分析脚本代码逻辑,能识别 “文件无恶意但代码恶意” 的场景(如合法路径下的恶意脚本)无法拦截 “不通过标准脚本引擎执行的代码”(如自定义恶意脚本解释器、内核态脚本执行);
兼容性内置于 Windows 10+,无需额外安装,支持所有主流脚本引擎不支持 Windows 7/8 等旧版本,且部分旧脚本引擎(如早期 VBScript)需更新才能接入;
资源占用仅在脚本执行时触发扫描,无持续资源消耗,对系统性能影响小扫描依赖安全软件的分析能力,若安全软件特征库落后,可能漏判 “零日恶意脚本”;

http://www.dtcms.com/a/398895.html

相关文章:

  • Chat2DB:零门槛数据库操作的无界解决方案
  • 即墨网站推广网络经营范围包括哪些
  • dify 源码分析 agent
  • 静态网站开发工具有哪些做网站用的文本编辑器
  • 搜索百科(4):OpenSearch — 开源搜索的新选择
  • 异常以及异常处理
  • 2025年国际知名品牌OMS订单管理系统选型指南:从产品架构,生态资源到成功项目交付案例解析|商派
  • 从传统CNN到ResNet:深度学习中的深层网络革命
  • RAG知识增强系统2 - 检索器retriever
  • 52Hz——FreeRTOS学习笔记——任务的创建
  • 百度权重排名高的网站如何用ps做网站效果图
  • 动态设计网站p2p理财网站开发要求
  • 【AI】【Java后端】RAG 实战示例:SpringBoot + 向量检索 + LLM 问答系统
  • Google Pixel 10 vs iPhone 17
  • 2种方式从springbean中获取bean实例
  • iPhone 无线充电发展历史
  • 做康复医院网站推广普通话手抄报
  • Win版 Visual Studio Code配置C++环境
  • 住房与住房建设部网站中美最新军事新闻最新消息
  • uniapp 项目打包时提示未添加videoplayer模块
  • 深入理解Roo Code中的Temperature参数
  • 四、PyTorch训练分类器教程:小张的CIFAR-10实战之旅
  • Unity-序列帧动画
  • 【每日一问】容性负载和感性负载有什么区别?
  • 做汽车保养的网站上企业信息的网站
  • 4-3〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸文件包含漏洞-A
  • 郑州网站建设国奥大厦南昌营销网站建设
  • 微服务项目->在线oj系统(Java-Spring)----7.0
  • Ant Design Vue Vue3 table 表头筛选重置不清空Bug
  • 【踩坑记录】PyTorch 被误装 CPU 版本导致 CUDA 丢失的解决办法(Windows + Anaconda)