大家好,今天我将展示如何修改 powershell shellcode 运行器以下载 shellcode 并运行它,同时逃避 Defender。
我将使用我以前用过的这个 shellcode 运行器。
https://github.com/dievus/PowerShellRunner/blob/main/runner.ps1
我正在使用 Windows VM,目前已禁用防御器。我将复制代码并将其放入 powershell ISE 上的新文件中。
我将添加一个 $url 变量,其中包含我们将从中下载 .bin 文件的 url,然后修改 $buf 变量以便它下载原始数据,并且开头的 [Byte[]] 确保数据将被读取为字节。
现在我们需要确保为要运行的任何 shellcode 分配足够的空间。我将把 $cucumbers 变量移到 $buf 变量下方。
$cucumbers 变量包含对 Windows Api 中 VirtualAlloc 函数的调用,我将编辑第二个参数,将大小定义为 $buf 变量的大小。
保存文件现在让我们测试它!
我将使用原始类型文件在 msfvenom 中创建一个反向 shell,并将其保存为 rev.bin。
我将设置我的 python http 服务器,从那里下载 rev.bin。
现在我要设置 netcat 监听器,从那里我将获取我的反向 shell。
现在让我们测试我们的 powershell 脚本。
我们得到了 shell!
但这还不能逃避 Defender 的追捕。
我将使用 AmsiTrigger 查看哪些代码行可能被检测为恶意代码。
https://github.com/RythmStick/AMSITrigger
我打算将这部分代码放在一个单独的文件中,并使用 Invoke-Obfuscation 对其进行混淆。
https://github.com/danielbohannon/Invoke-Obfuscation
我们导入模块,然后运行 Invoke-Obfuscation
然后我们将脚本路径设置为要混淆的文件
现在让我们做 token/all/1 以便它应用所有混淆技术。
这样我们就得到了混淆的代码。
注意:由于它以随机的方式应用混淆,因此每次的输出都会不同,有时这可能会破坏代码,您需要再次对其进行混淆。
现在我们用混淆的代码替换 potatoes 函数的部分代码。
现在我们保存文件。让我们启用实时保护,将其移动到 Defender 中未排除的文件夹并运行 powershell 脚本。
而且,我们的反向 shell 完全逃避了 Defender,无需绕过 amsi!
现在我们可以使用它来运行任何保存为 .bin 文件的 shellcode,同时避开防御者。同样,如果几天后被发现,也不要感到惊讶,只需尝试进一步改进即可。
感谢您抽出
.
.
来阅读本文
点它,分享点赞在看都在这里