$ enum4linux -R 1000-50000 10.0.12.100 |tee enum4linux.txt
请注意,以下内容是对原文的重新构建,以确保文章的独特性和低相似度:
目标公司拥有一个庞大的内部网络,所有IP都在10.0.0.0/8范围内。而持卡人数据位于单独的192.168.0.0/16范围内,与公司其他部门隔离。对CDE的操作主要由呼叫中心的操作员在接听客户电话后,在外部的Web应用中将资金细节输入表格再提交。
让我们从内部环境开始,连接到公司的内部办公网络,然后使用ping和端口扫描从当前网络位置扫描整个CDE。扫描结果如下:
ping扫描与直接使用ping命令效果基本一样,只不过nmap可以一次扫描整个网段。而第二个命令结果中的hosts up其实和nmap的参数-Pn有关,nmap在此情况下不会ping操作,此时nmap会将扫描范围内的所有主机都报告为up,真实情况可能完全相反。
因此,除非你有能绕过防火墙的手段,或者可以猜到管理防火墙的密码,否则直接扫描似乎不太可能。现在,我们要做的就是通过取得域管理员权限来控制活动目录。
成为域管理员有很多方法可以做到这一点,比如之前发表的一篇文章。在这种情况下,我可以利用kerberoast来控制域。我需要在域中找一个未授权的攻击点,逐步深入。
攻击活动目录的第一步是控制尽可能多的用户帐户,只要它们能以某种方式和域控制器进行身份验证即可。在Windows世界中,所有帐户都应该能通过域控制器进行身份验证,即使它们没有权限执行任何操作也是如此。在Windows默认安全级别下,即使是权限最低的帐户在登录时也需要验证密码是否正确。
在客户的内网环境中,域控制器允许建立空会话(在未提供用户名与密码的情况下建立会话)。在这种情况下,我们又发现域控制器IP为10.0.12.100,“PETER”。这使得我们可以用enum4linux等工具枚举用户,得到域中每个用户的用户名。
现在我们有了一个用户列表,我们可以将它转变成一个可阅读的格式:
在实际情况下,这个内部网络异常庞大,活跃用户超过25000人。
现在我们将用户名整理成文本文件,然后使用CrackMapExec等工具来猜测密码。在这里,我们将统一测试是否有用户使用Password1作为他们的密码。不要小看这个密码,它可符合活动目录默认的密码复杂性要求,因为它包含四种字符类型中的三种(大写,小写和数字)。
Wow,有一个成功:
请注意,如果你想测试完所有帐户,需要指定参数–continue-on-success:
现在我们已经控制了一个帐户,可以查询活动目录,获得服务帐户列表。服务帐户是一种代表服务的帐户,就像Microsoft SQL Server这样的服务。这些服务运行时,需要在以某种帐户身份存在于系统。活动目录的Kerberos身份验证系统可给其提供访问权限,此时活动目录需要提供“服务票据”以方便用户对其进行身份验证。通过从域控制器请求Kerberos服务帐户列表,我们还能得到每个帐户的“服务票据”。此服务票据是使用服务帐户的密码所加密。因此,如果我们可以破解它,就有很大概率得到高权限帐户。Impacket工具集可以帮助我们批量请求:
正如我们所看到的,其中一个服务帐户是Domain Admins的成员,这就是我们的目标。
在运行hashcat进行密码破解后,我们得到了明文密码:
为了二次确认,我再次使用了CrackMapExec。
Wahoo,Pwn3d!现在我们已经是域控制器的管理员了。
得到支付卡数据
现在,我们的目标是CDE中接受呼叫中心指令的计算机,它们都位于同一个活动目录中,虽然我们无法直接连接到那些敏感的机器,但我们现在可以告诉域控制器让它们来连接我们。为此,需要深入了解组策略对象(GPO)。GPO允许将各种范围级别的设置应用于用户和计算机。客户GPO的许多功能都是用于统一管理组织中的IT设置。例如,统一设置密码策略或者统一设置为用户桌面显示哪些图标。有一个GPO可以运行微软中的“计划任务”。这正是我们所需要的…我创建一个需要目标机器运行的脚本,让它们连接回我们的机器。
以下是具体步骤:
1.生成payload。这里我们使用了Veil Evasion。我们的IP地址是10.0.12.1,因此我们设置回连到这个地址。
2.使用我们从kerberoasting获得的凭据,通过远程桌面协议(RDP)登录到域控制器。
3.在活动目录中找到CDE。根据我们对客户组织的了解,我们知道呼叫中心在2楼工作。通过浏览目录,我们定位到一个特殊的名字:
4.将我们用Veil制作的恶意脚本放入文件夹,然后在域控制器上进行共享。在共享和目录上设置权限,允许所有域用户读取。
5.在GPO中,我们创建策略。
6.在编辑这个新的GPO时,查找“计划任务”选项,并创建新的“即时计划任务”。
7.创建指向共享中恶意脚本的任务。同时在common下设置Run in logged-on user’s security context。
Done!
在我等了15分钟后,什么也没发生。我知道组策略的生效可能需要90分钟或者更久,但我觉得至少有一台机器现在已经应用了新策略(注意,如果在实验室中测试,你可以使用gpupdate/force)。然后我又等了五分钟,看到了如下情况:
运行命令截取屏幕截图,确切地返回了呼叫中心当时输入的内容…支付卡数据!
渗透目标已全部完成!
如果我们查看会话列表,我们可以看这个会话的IP来自192.168.0.0/16:
在实际测试中,整个二楼的机器基本都返回了shell,我最后得到了60-100个Meterpreter。
在实际的测试中,有一个专门截图的脚本(我们使用metasploit的autorunscript来实现),这样我们就可以深入其他方面。
还有其他获取截图的命令,例如在Meterpreter中使用use espia以及metasploit的post/windows/gather/screen_spy。
还有一些以编程的方式执行GPO的方法,例如PowerView中的New-GPOImmediateTask。
从防御的角度来说,可以实施很多安全措施,例如把CDE设置一个单独的活动目录,鼓励用户设置强密码并确保任何服务帐户都是疯狂的长密码(20多个字符,完全随机)。还可以检测是否有任何用户一次性去请求所有服务的票据,也可以使用蜜罐进行防御。