制作一个可以绕过 Defender 的 Powershell Shellcode 下载器(无需绕过 Amsi)

科技   2024-12-07 13:09   广东  

大家好,今天我将展示如何修改 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


尽管它显示了大部分代码,但其中的第一行可能是触发它的代码,它指向 GetAssemblies() 函数。
在 potatoes 函数中调用 GetAssemblies()

我打算将这部分代码放在一个单独的文件中,并使用 Invoke-Obfuscation 对其进行混淆。

https://github.com/danielbohannon/Invoke-Obfuscation

我们导入模块,然后运行 Invoke-Obfuscation

然后我们将脚本路径设置为要混淆的文件

现在让我们做 token/all/1 以便它应用所有混淆技术。

这样我们就得到了混淆的代码。

注意:由于它以随机的方式应用混淆,因此每次的输出都会不同,有时这可能会破坏代码,您需要再次对其进行混淆。

现在我们用混淆的代码替换 potatoes 函数的部分代码。

现在我们保存文件。让我们启用实时保护,将其移动到 Defender 中未排除的文件夹并运行 powershell 脚本。

而且,我们的反向 shell 完全逃避了 Defender,无需绕过 amsi!


现在我们可以使用它来运行任何保存为 .bin 文件的 shellcode,同时避开防御者。同样,如果几天后被发现,也不要感到惊讶,只需尝试进一步改进即可。












感谢您抽出

.

.

来阅读本文

点它,分享点赞在看都在这里

Ots安全
持续发展共享方向:威胁情报、漏洞情报、恶意分析、渗透技术(工具)等,不会回复任何私信,感谢关注。
 最新文章