29

P4wnP1 USB与赛门铁克反病毒绕过

 4 years ago
source link: https://www.freebuf.com/articles/system/202060.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

最近,我使用P4wnP1 image把我手头的Raspberry Pi Zero W转换成了一个bad USB。我的最终目标是运行远程命令shell,同时绕过已启用完全保护的最新版Symantec SEP。我通过创建自己的有效负载payload,可以轻松的运行远程shell,但由于Symantec提供的高级功能SONAR和IPS检测技术使其难以执行。想要解决这个问题并不难,你只需对payload进行加密传送即可,因为这样赛门铁克将无法对其进行分析。

在本文的内容正式开始之前,我建议大家先去阅览以下是这些有关反病毒绕过的文章:

http://niiconsulting.com/checkmate/2018/06/bypassing-detection-for-a-reverse-meterpreter-shell/

https://gbhackers.com/malicious-payload-evasion-techniques/

https://www.shellterproject.com/

实验环境及设备要求:

Raspberry Pi Zero W 和 SD Card

Pi Zero W USB A addon( https://www.amazon.com/MakerFocus-Raspberry-Required-Provide-Connector/dp/B077W69CD1 and  http://www.raspberrypiwiki.com/index.php/Raspberry_Pi_Zero_W_USB-A_Addon_Board

用于攻击的笔记本电脑,本文中的攻击机IP为192.168.1.106。

启用Symantec SEP完全保护的Windows 10机器

设置

P4wnP1

在这里我不会再对P4wnP1 USB的设置进行说明,因为已有几篇文章对此进行了详细的介绍。你可以参阅官方的git https://github.com/mame82/P4wnP1_aloa 和 WIKI https://p4wnp1.readthedocs.io/en/latest/

设置的一些注意事项,我更改了以下的重要设置项:

热点名称

USB HID攻击脚本

最终设备的一些图片。

73a6z2J.jpg!webBza63qQ.jpg!web3yy6BjQ.jpg!web

受害者机器

我的测试机器运行Windows 10.0.16299.125 和 Symantec Endpoint Protection 14.2的试用版。

eeIf6fZ.jpg!web

nERZJby.jpg!web

我还需确保UAC在默认设置下已启用。

ZNF7zq6.jpg!web

攻击机

我将自己定制的Ubuntu机器用于渗透测试。测试的一个警告是,我在同一个网络上才能连接。你可以通过443等端口隐藏你的连接和出站,这在公司网络上通常是允许的,几乎没有过滤。

攻击我们的目标

Payload

混淆技术在躲避payload检测方面发挥着巨大作用。我喜欢使用c# 或 c来创建自己的payload。这里有一篇关于这方面的精彩文章,你可以进行参阅 https://medium.com/@Bank_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15 。对于这个特定的实例,我使用了一个简单的c# payload,源码由上述作者在 github 托管和创建。

这里我要提醒你对攻击机的IP和端口做一些小的改动,我使用443端口进行测试。

我在受害者机器上运行了一个测试实例,我很惊讶赛门铁克竟然没有检测到。

Payload Delivery

传送payload并不容易。赛门铁克的SONAR非常严密的监控着powershell和命令提示符,似乎能检测到我所有的行为。

我尝试使用certutil从我本地网络服务器上托管的网站上来提供payload。另一种方法是将payload解码为base64,并使用certutil进行解码。但这都失败了。

最终我使用了一种非常简单的技术,就是通过正在运行的SyncAppvPublishingServer来执行代码。你可以在 这里 找到有关该技术及类似技术的详细说明。这也让我完全躲过了赛门铁克对powershell的监控。

传送payload我使用了一个简单的命令,通过已躲避检测的powershell下载payload,并且自定义的payload也可以躲避检测。下载后文件将从用户的配置文件中运行。让我们注意力转向以下代码。

获取 shell

为了完成攻击,我设置了bad USB来执行命令。下面是我的设置中的一些图片。我通过WiFi连接到了我的Android手机,访问了我的bad USB。赛门铁克没有检测到,因为这不是USB设备,而是被当作键盘。

BvA3En7.jpg!webfeu2eqr.jpg!web

vquaqaB.jpg!web6B3uIfv.jpg!web

HID脚本被设置为等待用户重复性按下Numlock键,何时以及如何执行你完全可以根据你个人的喜好进行修改。注意!USB HID设备将在屏幕上显示,你必须确保用户不会发现或怀疑才行。

我设置的HID脚本如下:

执行后,我获得了一个远程shell。

MZfErey.jpg!web

更新— 其他AV解决方案

根据反馈,我试着测试其他一些解决方案。

到目前为止,Windows Defender在攻击检测方面的能力还是非常强的,如下所示。

Windows Defender

A7v2iuu.jpg!webuqQBji3.jpg!web

赛门铁克

UJVFvmu.jpg!web

yuEvIfy.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK