首页 » PHP教程 » php混杂gettokenall技巧_修改Empire绕过Windows Defender转载

php混杂gettokenall技巧_修改Empire绕过Windows Defender转载

访客 2024-12-08 0

扫一扫用手机浏览

文章目录 [+]

如果你的事情是渗透测试或在红队中,那么防病毒绕过技能将是你必备的一项技能。
但不得不说这也是一个令人沮丧的领域 – 虽说“基于署名的”防病毒软件在阻挡威胁方面并没有太大的浸染,但有时却会给我们带来极大的麻烦。

我们知道想要躲避防病毒软件最好的办法便是“编写自己的工具”。
例如编写一个自己的大略反向shell,或是如果你有足够的资金预算和韶光,那么也可以考试测验从头开拓一个完善的C2架构。
然而,大多数人还是依赖于安全社区中其他人开拓的开源(和商业)工具。

php混杂gettokenall技巧_修改Empire绕过Windows Defender转载

说到这,我不得不提Empire。
Empire是一款后渗透利用代理工具,个中包含了各种的攻击性工具。
这是一款非常强大的工具,如果在实行的过程中没有被防病毒程序标记,那么它完备可以作为攻击性操作的一部分利用。
有一段韶光,Empire对付躲避像Windows Defender这样的程序非常有用。
但现在已经弗成了,如果你创建一个通用的http listener agent payload并在内存中实行,乃至还没有触及磁盘,你可能就会看到如下所示内容。

php混杂gettokenall技巧_修改Empire绕过Windows Defender转载
(图片来自网络侵删)

可以看到,Windows Defender检测并阻挡了我们的行为。

但别忘了Empire是一款免费且开源的工具,我们可以通过修正一些关键区域来考试测验绕过客户端防病毒软件。

在我们的测试开始之前,我们先来关闭Windows Defender中的“Cloud-delivered Protection”,尤其是“自动样本提交(Automatic sample submission)”。
我们不肯望我们的任何测试接入互联网,并进入Windows Defender的分布式署名当中。
其余,请保持“实时保护(Real-time protection)”,以便我们测试实行的情形。

记住!
无论你做什么,都不要将病毒上传到VIRUS TOTAL!
否则你的统统努力都将空费!
正如下面你将学到的,纵然初始payload通过防病毒检讨,Windows Defender也可以检测到Empire。

现在我们的测尝尝验环境已准备就绪,是时候开始利用Empire了。

在前几次绕过Windows Defender的考试测验中,我设置了Empire launcher payload内的misc选项,但终极都以失落败告终。

接着,我考试测验通过稠浊的办法来进行绕过。
我考试测验利用powershell稠浊工具来运行有效载荷。
通过Unicorn运行它…?失落败。
通过Veil Framework运行它…?失落败。
通过Empire自己的原生Invoke-Obfuscation运行它…?还是失落败。

但我把稳到一点,通过利用稠浊工具我能够将payload写入磁盘,基本上是绕过了防病毒署名,但在实行时会被检测并阻挡。

阐发 Empire

Empire天生的初始payload即所谓的“stager”,确切地说该当是stage0 payload。
stager是一些代码,用于远程下载和实行另一个stager或实际payload。
在我们的示例中,我们将利用multi/launcher powershell stager来获取http listener。

测试stage0 payload实际上非常大略。
天生payload,将其写入文件,然后传输到Windows机器。
如果它在命中磁盘时触发防病毒警告,则表示你还有许多其它事情须要做。
如果它成功传送并正常实行,则表示你获取到了一个可用的stager。

一个非常主要的解释!
在我的测试期间我碰着了一个问题,便是在反复进行payload测试后,Windows Defender很可能会将所有的powershell文件标记为病毒,乃至是空文件!
如果发生这种情形,请重启VM或打算机。
我的意见是,Windows Defender可能知道我正在传输文件的主机是恶意的,因此无论文件是什么,PowerShell都会被禁止实行。

你可能会感到震荡,天生绕过Windows Defender的multi/launcher stager,只需利用Empire中显示的选项即可实现。
但我不会见告你我所利用的确切选项,由于我知道有人会立即利用它们,并忽略我的警告将它们上传到Virus Total。
但我会向你们展示我建议修正的选项。

建议修正的 Empire http listener 选项

选项描述默认默认配置文件Empire将在不同韶光调用的三个URL以及User-Agent字符串。
/admin/get.php,/news.php,/login/process.php|Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko做事器版本Web做事器版本标识符Microsoft-IIS/7.5主机你的主机(或IP)和端口号。
端口应与指定的主机端口相同 用户代理Empire为仿照真实的Web浏览器流量而发送的用户代理。
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36StagerURI向Stager供应的URI。
必须包括/download才能事情,而不须要进行额外的修正。
证书路径设置Empire时默认的自署名证书位于./Empire/Data。
根据环境的繁芜程度,自署名证书可能不起浸染。
Windows Defender不介意自署名证书。
默认Jitter向Empire做事器发送信标呼叫时的随机延迟。
0.0Launcher用于实行stager的命令。
powershell -noP -sta -w 1 -enc

建议修正的 Empire multi/launcher 选项

选项描述默认Listener此项为必设项 UserAgent用户代理字符串 SafeChecks考试测验检测launcher是否在沙箱中运行。
True稠浊稠浊自动天生的launcher代码。
False稠浊命令利用的稠浊命令。
Token\All\1,Launcher\STDIN++\12467

这里给大家一个提示。
将SafeChecks设置为false。
SafeChecks试图确定stager是否在防病毒沙箱中运行。
此外,这也会减少大量天生的代码,但由于我们被防病毒软件检测到了,因此显然无法正常事情。

有了这样一个被我们“武器化”的payload,是不是意味着我们就一定能够运行Empire?如下所示payload将实行,并且你会看到一个初始连接Sending stage 1!
接着便涌现了问题。

在测试期间,我决定关闭防病毒保护,在Windows主机上启动Empire,然后重启防病毒软件。
令我愉快的是,我的Empire beacon并没有去世!
只要我们能让Empire启动就行。
但为什么无法启动呢?

深入挖掘Empire代码库会天生stage1代码。
这段代码建立了加密安全环境以躲避检测,但它本身并没有以任何办法进行编码。
经由一些测试和缺点之后,编辑了文件和某些部分,我确定该当问题该当出在invokeEmpire函数名。
正如Black Hills Information Security文章中所建议的那样,将函数名变动为invoke randomstringhere是阻挡检测的必要手段。
只管我们要做的只是修正invokeEmpire函数名,但如果你能进一步的变动stage1代码,那无疑将是巨大的加分项。

Edit: ./Empire/data/agent/stagers/http.ps1:

Invoke-Empire -Servers @(($s -split \公众/\"大众)[0..2] -join \公众/\公众) -StagingKey $SK -SessionKey $key -SessionID $ID -WorkingHours \"大众WORKING_HOURS_REPLACE\公众 -KillDate \"大众REPLACE_KILLDATE\"大众 -ProxySettings $Script:Proxy;

Edit: ./Empire/data/agent/agent.ps1

function Invoke-Empire {

让我们再次考试测验运行我们的Empire stager。

可以看到我们成功绕过了Windows Defender!

由于是在完备修补的Win10主机上运行测试,因此提权的方法并不多。
以是,让我们考试测验一下powershell/privesc/ask模块,它会弹出一个对话框,讯问用户是否要以管理员身份运行powershell。
漏洞利用成功弹出了对话框,这是一个好兆头!
我点击是!
然而什么也没发生。

我承认这让我感到有些困惑。
如果我的stagers在初始利用时事情,那么为什么不能提权呢?经由一些调试之后,我能够捕获利用privesc/ask模块发送的stager。
虽然它包含了我在multi/launcher配置中设置的一些修正,但有一个明显的差异。
它还包含了我们之前设置为False的SafeChecks代码!

我不愿定这里包含的SafeChecks,是否是由于Empire中存在的bug导致的。
但是,SafeChecks代码当前存在问题,彷佛已被该Empire bug所证明。
只需将选项设置始终保持为 False,就可以办理我们的问题。

Edit: ./Empire/lib/listeners/http.py:

def generate_launcher(self, encode=True, obfuscate=False, obfuscationCommand=\公众\"大众, userAgent='default', proxy='default', proxyCreds='default', stagerRetries='0', language=None, safeChecks='', listenerName=None): \"大众\"大众\"大众 Generate a basic launcher for the specified listener. \公众\公众\"大众 # Add this line to override SafeChecks safeChecks='False'

运行`python -m compileall`并重启Empire。
然后启动powershell/privesc/ask。

参考来源:mike-gualtieri,FB小编secist编译,转载自FreeBuf.COM

标签:

相关文章

egretwingphp技巧_游戏开拓和软件开拓差异

游戏开拓实质上是一种软件开拓。游戏开拓和软件开拓都须要程序员利用代码逻辑来实现掌握。只是由于游戏开拓对素材(紧张是图片素材 和用户...

PHP教程 2024-12-09 阅读0 评论0