廉价而愉快地绕过Windows Defender:混淆Mimikatz

图片

大家好 今天,我们将考虑在Windows 10上运行mimikatz的选项。Mimikatz是一种工具,可以实现Windows凭据编辑器的功能,并允许您提取以开放形式登录到系统的用户的身份验证数据。

在渗透测试期间,有一个东西可以转储用户密码,这很有用,但是现在即使Windows内置的标准Windows Defender也正在成为问题,并且可能会干扰我们的宏伟计划。

我注意到该方法也适用于其他防病毒产品(Virustotal BEFORE和AFTER也是这样认为的),这些产品通过签名对二进制文件进行静态分析。
因此,尽管此方法不太可能帮助您克服EDR解决方案,但它可以轻松绕过Windows Defender。

以前,您可以通过将文件中的单词从mimikatz更改为mimidogz,删除元数据和横幅中的几行来解决此问题。 现在,它变得更加困难,但仍然可能。

对于所有这些动作的想法,我对昵称为ippsec的人表示感谢。

在本文中,我们将使用:


将mimikatz复制到受害者的计算机上,我们将看到这样的警报。

图片


接下来,我们将进行一系列操作,以使Defender在这里不再看到威胁。

首先,我们将找到并替换单词mimikatz。 例如,将mimikatz替换为thunt(可以将其替换为任何东西),将MIMIKATZ替换为THUNT。 看起来像这样。

图片

接下来,我们将在Visual Studio中编辑文件mimikatz \ mimikatz \ mimikatz.rc(在我们的替换后现在是thunt.rc),用任何东西替换mimikatz和gentilkiwi,我们也不会忘记用任何其他图标替换mimikatz.ico。 单击“重建解决方案”(或重建解决方案)并获取我们的mimikatz更新版本。 我们将受害者复制到计算机,ii ...警报。 让我们找出Defender的作用。 最简单的方法是在首次运行防病毒程序之前复制大小不同的二进制文件。

首先,复制一半并将其复制到Windows 10计算机。

head –c 600000 mimikatz.exe > hunt.exe 

防御者是沉默的,已经不错。 通过实验,我们找到了第一个操作。 对我来说看起来像这样:

 head -c 900000 mimikatz.exe > hunt.exe –   head -c 950000 mimikatz.exe > hunt.exe –  head -c 920000 mimikatz.exe > hunt.exe –   head -c 930000 mimikatz.exe > hunt.exe –   head -c 940000 mimikatz.exe > hunt.exe –  head -c 935000 mimikatz.exe > hunt.exe –   head -c 937000 mimikatz.exe > hunt.exe –  head -c 936000 mimikatz.exe > hunt.exe –   head -c 936500 mimikatz.exe > hunt.exe –  head -c 936400 mimikatz.exe > hunt.exe –  head -c 936300 mimikatz.exe > hunt.exe –  head -c 936200 mimikatz.exe > hunt.exe –   

在十六进制编辑器中打开hunt.exe并查看Defender可能适用的功能。 紧紧抓住KiwiAndRegistryTools字符串。

图片

让我们随机播放一个大写字母-它已变成KiWIAnDReGiSTrYToOlS,保存并复制。 沉默,这意味着我们猜对了。 现在,我们将在代码中找到所有这些行,替换并重建我们的项目。 要进行检查,请执行head -c 936300 mimikatz.exe> hunt.exe。 Defender上一次工作,现在没有。 继续前进。

图片

以这种棘手的方式,在我们的hunt.exe中添加了越来越多的行,发现了触发词-wdigest.dll,isBase64InterceptOutput,isBase64InterceptInput,multirdp,logonPasswords和credman。 随便更换帽子,我确保Defender不再对它们发誓。
但防御者想起来并没有那么容易,它适用于导入的且区分大小写的功能。 这些是从netapi32.dll库调用的函数。

  • I_NetServerAuthenticate2
  • I_NetServerReqChallenge
  • I_NetServerTrustPasswordsGet

如果我们看一下netapi32.dll(C:\ windows \ system32 \ netapi32.dll),我们会看到每个函数都分配了一个数字。

图片

从表单更改函数调用
windows.netapi32.I_NetServerTrustPasswordsGet(参数)

windows.netapi32 [62](参数)
为此,我们需要替换mimikatz \ lib \ x64 \ netapi32.min.lib。 创建一个netapi32.def文件,并在其中写入以下行:

 LIBRARY netapi32.dll EXPORTS I_NetServerAuthenticate2 @ 59 I_NetServerReqChallenge @ 65 I_NetServerTrustPasswordsGet @ 62 

我们保存并执行命令(不要忘记备份原始的netapi32.min.lib以防万一)

 lib /DEF:netapi32.def /OUT:netapi32.min.lib 

再一次,我们将重建项目并复制获得的内容。 防御者保持沉默。 使用管理员权限运行生成的mimikatz。

图片

成功。 因此,启动了mimikatz,而Windows Defender无法正常工作,这正是我们的目标。 发出密码,外观和哈希。

陷阱

等待中:

 * Username : thunt * Domain : DESKTOP-JJRBJJA * Password : Xp3#2!^&qrizc 

现实情况:

 * Username : thunt * Domain : DESKTOP-JJRBJJA * Password : (null) 

生活状况与实验室条件有所不同。 您可能需要使用注册表来查看密码。 例如,启用或创建UseLogonCredential密钥(HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ WDigest)。 但这可能会有问题,因为 重新启动时,可以重新设置密钥。

如果您在最新版本的Windows 10上运行,而不是纯文本密码,则可能会遇到以下情况甚至更糟:

 * Password : _TBAL_{68EDDCF5-0AEB-4C28-A770-AF5302ECA3C9} 

一切都与TBAL有关,它是自动重启登录( ARSO )的后继产品。 现在,当请求TBAL时,lsasrv检查该帐户是本地帐户还是MS帐户,并在此基础上使用msv1_0或cloudAP保存恢复用户会话所需的一切。 然后,将自动登录机制设置为硬编码密码_TBAL_ {68EDDCF5-0AEB-4C28-A770-AF5302ECA3C9}。

但是,在实验室中,我们收到了用户的密码,在战斗情况下,至少我们可以获得哈希值。

Source: https://habr.com/ru/post/zh-CN454758/


All Articles