绕过Windows Defender实现PowerShell Empire C2通信
注意: Windows Defender于2019年2月25日添加了检测规则,将此方法标记为“AmsiTamper.A”。本文所述技术可能已过时,但仍可作为学习参考,并可能集成到现代工具和技术中。
Windows Defender能有效拦截多种攻击,包括使用公开工具(如PowerShell Empire)建立命令与控制(C2)会话的尝试。本文旨在探索在启用Windows Defender的Windows 10计算机上建立此类C2会话的方法。
利用SharpSploit绕过防御
SharpSploit是由Ryan Cobb开发的项目,它整合了多位安全研究人员的重要工作,使用C#代码而非PowerShell.exe创建C2会话,有助于规避常见的恶意PowerShell活动检测。关键功能是PowerShellExecute方法,它结合了Matt Graeber的AMSI绕过和Lee Christensen的PowerShell日志绕过技术,其中AMSI绕过是绕过Windows Defender载荷的关键。
使用SharpGen生成可执行文件
SharpGen同样由Ryan Cobb开发,用于将SharpSploit功能打包成可执行文件。构建前需安装.NET Core SDK。由于Windows Defender会拦截SharpGen仓库中的文件,建议在Windows Defender设置中添加例外文件夹,并在该文件夹中操作。
克隆SharpGen代码:
|
|
默认情况下,SharpGen会捆绑PowerKatz,但会被Windows Defender拦截。为避免此问题,编辑SharpGen/Resources/resources.yml
文件,将所有PowerKatz相关条目的enabled
字段设置为false
。
构建SharpGen DLL:
|
|
构建完成后,在bin/Release/netcoreapp2.1
目录中生成SharpGen.dll。
示例:生成简单可执行文件
构建一个输出“hi”的可执行文件示例:
|
|
可执行文件生成在Output文件夹中。使用-d net40
选项目标.NET 4.0,可根据目标系统调整为-d net35
。建议从cmd.exe运行以查看输出。
生成Empire启动器
要建立Empire C2连接,生成一个运行PowerShell单行命令的可执行文件。使用Empire的multi/launcher stager生成base64字符串,替换以下命令中的<BASE64_LAUNCHER>
:
|
|
将Launcher.exe移至目标系统即可绕过Windows Defender。
企业环境中的额外建议
在企业环境中,可能还需规避其他防御措施:
- 使用HTTPS通信:通过端口443使用有效(非自签名)证书。Empire设置指南详见相关链接。
- 修改默认值:启动Empire监听器时更改DefaultJitter和DefaultProfile等默认值。
- 使用分类域名:选择已分类(如政府、医疗或金融)的旧域名,可能避免流量解密和检查。使用Detect-SSLmitm脚本检测哪些网站被SSL解密。可通过购买已分类域名或申请分类(耗时)实现。
- 绕过应用白名单:如果应用白名单阻止执行随机可执行文件,尝试多种绕过方法,例如@fullmetalcache提供的技术。
结论
通过结合SharpSploit和SharpGen,使用AMSI绕过技术,可以有效绕过Windows Defender建立PowerShell Empire C2会话。在企业环境中,还需考虑网络防御和额外规避策略以确保成功。
注意: 本文内容基于2019年技术,可能需更新以适应现代安全环境。