
本文是根据 Group-IB 专家几年前进行的一次非常成功的渗透测试编写的:发生了一个可以改编为宝莱坞电影的故事。 现在,读者的反应可能是:“哦,另一篇公关文章,又在描述这些,它们有多好,别忘了买一个渗透测试。” 嗯,一方面,确实如此。 然而,这篇文章的出现还有很多其他原因。 我想展示渗透测试人员到底在做什么,这项工作有多么有趣和重要,项目中可能会出现什么有趣的情况,最重要的是,用真实的例子展示现场材料。
为了恢复世界谦虚的平衡,一段时间后我们将写一篇进展不顺利的渗透测试。 我们将展示公司中设计良好的流程如何能够防范各种攻击,甚至是准备充分的攻击,仅仅因为这些流程存在并且实际有效。
对于本文中的客户来说,一切都总体上非常好,根据我们的感觉,至少比俄罗斯联邦 95% 的市场要好,但有一些小细微差别,形成了一长串事件,首先导致了一份很长的工作报告,然后是这篇文章。
那么,让我们储备爆米花,欢迎来到侦探故事吧。 单词 - 帕维尔·苏普鲁纽克现任IB集团“审计与咨询”部技术经理。
第 1 部分. 波奇金医生
2018年有一个客户——一家高科技IT公司,它本身为许多客户提供服务。 想要得到以下问题的答案:是否可以在没有任何初始知识和访问权限的情况下通过 Internet 获得 Active Directory 域管理员权限? 我对任何社会工程学都不感兴趣(),他们无意故意干扰工作,但他们可能会意外 - 例如,重新加载工作异常的服务器。 另一个目标是识别尽可能多的针对外周的其他攻击媒介。 该公司定期进行此类测试,现在新测试的截止日期已经到来。 这些条件几乎是典型的、充分的、可以理解的。 让我们开始吧。
有一个客户的名称 - 让它成为“公司”,以及主要网站 。 当然,客户的称呼有所不同,但在本文中,一切都将是客观的。
我进行网络侦察 - 找出客户注册的地址和域,绘制网络图,以及如何将服务分发到这些地址。 我得到的结果是:超过 4000 个实时 IP 地址。 我查看了这些网络中的域:幸运的是,绝大多数都是针对客户的客户的网络,我们对它们并不正式感兴趣。 客户也这么认为。
仍然有一个具有 256 个地址的网络,此时已经了解了按 IP 地址划分的域和子域的分布,有有关扫描端口的信息,这意味着您可以查看感兴趣的服务。 与此同时,各种扫描仪都会在可用的 IP 地址上并分别在网站上启动。
有很多服务。 通常,这对于渗透者来说是一种喜悦,也是对快速胜利的期待,因为服务越多,攻击范围就越大,找到神器也就越容易。 快速浏览一下这些网站,大多数都是全球大公司的知名产品的网页界面,从表面上看,它们不受欢迎。 他们要求输入用户名和密码,摇出用于输入第二个因素的字段,要求 TLS 客户端证书,或将其发送到 Microsoft ADFS。 有些根本无法通过互联网访问。 对于某些人来说,您显然需要拥有一个支付三份薪水的特殊付费客户,或者知道要输入的确切 URL。 让我们跳过另一个逐渐沮丧的一周,尝试“突破”已知漏洞的软件版本,搜索网络路径中的隐藏内容和来自 LinkedIn 等第三方服务的泄露帐户,并尝试使用它们猜测密码。就像挖掘自写网站的漏洞一样——顺便说一句,根据统计,这是当今最有希望的外部攻击媒介。 我会立即记下随后开火的电影枪。
因此,我们找到了两个从数百个服务中脱颖而出的网站。 这些网站有一个共同点:如果您不按域进行细致的网络侦察,而是正面寻找开放端口或使用已知 IP 范围定位漏洞扫描器,那么这些网站将逃脱扫描,并且根本不会被扫描。无需知道 DNS 名称即可可见。 也许它们至少在早些时候被错过了,而且我们的自动工具没有发现它们有任何问题,即使它们被直接发送到资源。
顺便说一句,关于以前推出的扫描仪的一般发现。 让我提醒您:对于某些人来说,“渗透测试”相当于“自动扫描”。 但这个项目的扫描仪什么也没说。 嗯,最大程度是中等漏洞(严重程度为 3 中的 5):某些服务上存在错误的 TLS 证书或过时的加密算法,以及大多数网站上的点击劫持。 但这不会帮助您实现目标。 也许扫描仪在这里会更有用,但让我提醒您:客户自己可以购买此类程序并用它们进行测试,并且从令人沮丧的结果来看,他已经检查过。
让我们回到“异常”站点。 第一个类似于非标准地址的本地 Wiki,但在本文中将其设为 wiki.company[.]ru。 她还立即要求输入登录名和密码,但通过浏览器中的 NTLM 进行。 对于用户来说,这看起来就像一个要求输入用户名和密码的禁欲窗口。 这是不好的做法。
一个小笔记。 由于多种原因,外围网站中的 NTLM 很糟糕。 第一个原因是 Active Directory 域名被泄露。 在我们的示例中,它也被证明是company.ru,就像“外部”DNS 名称一样。 了解这一点后,您可以仔细准备一些恶意内容,使其仅在组织的域计算机上执行,而不是在某些沙箱中执行。 其次,身份验证通过 NTLM 直接通过域控制器(令人惊讶,对吧?),具有“内部”网络策略的所有功能,包括阻止帐户超过密码输入尝试的次数。 如果攻击者发现登录信息,他会尝试输入密码。 如果您配置为阻止帐户输入不正确的密码,它将起作用并且帐户将被阻止。 第三,不可能在这种认证中添加第二个因素。 如果有读者还知道怎么做,请告诉我,这真的很有趣。 第四,容易受到哈希传递攻击。 ADFS 的发明,除其他外,就是为了防止这一切。
Microsoft 产品有一个不好的特性:即使您没有专门发布这样的 NTLM,至少 OWA 和 Lync 中也会默认安装它。
顺便说一下,本文作者曾经用同样的方法,不小心在短短一小时内封锁了一家大型银行约1000个员工的账户,当时脸色有些苍白。 银行的IT服务也很苍白,但一切都圆满结束,我们甚至被称赞是第一个发现这个问题并迅速果断解决的。
第二个网站的地址“显然是某种姓氏.company.ru”。 通过谷歌找到的,第10页是这样的。 该设计来自 XNUMX 年代初中期,一位受人尊敬的人正在主页上查看它,如下所示:

这里我拍了一张《狗的心》的剧照,但相信我,它有点相似,甚至颜色设计也是相似的色调。 让网站被称为 preobrazhensky.company.ru.
这是泌尿科医生的个人网站。 我想知道泌尿科医生的网站在一家高科技公司的子域上做什么。 快速深入 Google 后发现,这位医生是我们客户法人实体之一的联合创始人,甚至贡献了约 1000 卢布的授权资本。 该网站可能是很多年前创建的,并且使用客户的服务器资源作为托管。 该网站早已失去了相关性,但由于某种原因,它长期运行。
就漏洞而言,网站本身是安全的。 展望未来,我会说这是一组静态信息 - 简单的 html 页面,其中插入了肾脏和膀胱形式的插图。 “破坏”这样的网站是没有用的。
但其底层的网络服务器更有意思。从HTTP服务器标头来看,它运行的是IIS 6.0,这意味着它正在被使用。 Windows 操作系统是 2003。扫描器之前检测到,这位泌尿科医生的网站与其他位于同一 Web 服务器上的虚拟主机不同,它响应了 PROPFIND 命令,这意味着 WebDAV 已启用。顺便一提,扫描器以“信息”标记报告了此信息(在扫描器报告中,这意味着风险最低)——通常情况下,这类信息会被直接忽略。综合来看,这产生了一个有趣的后果,而这个后果只有在经过一番搜索后才被发现:一个与 Shadow Brokers 工具包相关的罕见缓冲区溢出漏洞,具体来说是 CVE-2017-7269,该漏洞已经有现成的利用程序。换句话说,如果你…… Windows 2003 年,WebDAV 运行在 IIS 上。虽然它在生产环境中可以正常工作。 Windows 2003 年的事件发生在 2018 年本身就是一场灾难。
该漏洞最终出现在 Metasploit 中,并立即使用向受控服务发送 DNS 请求的负载进行测试 - Burp Collaborator 传统上用于捕获 DNS 请求。 令我惊讶的是,它第一次就成功了:收到了 DNS 剔除。 接下来,尝试通过端口 80 创建反向连接(即从服务器到攻击者的网络连接,可以访问受害者主机上的 cmd.exe),但随后发生了惨败。 连接没有成功,在第三次尝试使用该网站后,所有有趣的图片都永远消失了。
通常,后面会跟一封类似“顾客,醒醒,我们把所有东西都扔掉了”的信。 但我们被告知该站点与业务流程无关,并且像整个服务器一样毫无理由地在那里工作,并且我们可以随意使用此资源。
大约一天后,该网站突然开始自行运行。 在 IIS 6.0 上从 WebDAV 构建了一个工作台后,我发现默认设置是每 30 小时重新启动 IIS 工作进程。 也就是说,当控制退出 shellcode 时,IIS 工作进程结束,然后它会自行重新启动几次,然后休眠 30 小时。
由于第一次反向连接到 tcp 失败,我将此问题归因于端口关闭。 也就是说,他假设存在某种防火墙,不允许传出连接通过外部。 我开始运行 shellcode,搜索许多 tcp 和 udp 端口,但没有效果。 通过 Metasploit 的 http(s) 进行反向连接加载不起作用 - meterpreter/reverse_http(s)。 突然,与同一端口 80 的连接建立,但立即断开。 我将此归因于仍然虚构的 IPS 的行为,它不喜欢 meterpreter 流量。 鉴于与端口 80 的纯 tcp 连接未通过,但 http 连接却通过,我得出结论,系统中以某种方式配置了 http 代理。
我什至尝试通过 DNS 进行 meterpreter(谢谢 感谢您的努力,挽救了许多项目),回想起最初的成功,但它甚至在展台上都不起作用 - shellcode 对于这个漏洞来说太大了。
事实上,它看起来像这样:3 分钟内尝试 4-5 次攻击,然后等待 30 小时。 如此连续三周。 我什至设置了提醒,以免浪费时间。 此外,测试环境和生产环境的行为也存在差异:该漏洞有两种类似的利用方式,一种来自 Metasploit,另一种来自互联网,由 Shadow Brokers 版本转换而来。 所以,只有Metasploit进行了实战测试,只有第二个进行了台架测试,这使得调试更加困难,很伤脑筋。
最后,通过 http 从给定服务器下载 exe 文件并在目标系统上启动它的 shellcode 被证明是有效的。 shellcode 足够小,可以容纳,但至少它可以工作。 由于服务器根本不喜欢 TCP 流量,并且检查了 http(s) 是否存在 meterpreter,因此我决定最快的方法是通过此 shellcode 下载包含 DNS-meterpreter 的 exe 文件。
这里又出现了一个问题:当下载一个exe文件时,正如尝试所示,无论是哪一个,下载都会被中断。 同样,我的服务器和泌尿科医生之间的某些安全设备不喜欢内部带有 exe 的 http 流量。 “快速”的解决方案似乎是更改 shellcode,以便它可以动态混淆 http 流量,从而传输抽象的二进制数据而不是 exe。 最终攻击成功,通过瘦DNS通道收到控制权:

我立即意识到我拥有最基本的 IIS 工作流权限,这让我什么都不做。 这是 Metasploit 控制台上的样子:

所有渗透测试方法都强烈建议您在获得访问权限时需要增加权限。 我通常不会在本地执行此操作,因为第一次访问被简单地视为网络入口点,并且危害同一网络上的另一台计算机通常比在现有主机上升级权限更容易、更快。 但这里的情况并非如此,因为 DNS 通道非常狭窄,并且不允许流量清理。
假设这台服务器是 Windows 2003 年的版本尚未修复臭名昭著的 MS17-010 漏洞。我通过 Meterpreter DNS 隧道将流量转发到 445/TCP 端口到本地主机(没错,这可行),并尝试利用该漏洞运行之前下载的 .exe 文件。攻击成功了,我获得了第二个连接,但这次拥有了 SYSTEM 权限。

有趣的是,他们仍然试图保护服务器免受 MS17-010 的侵害 - 它在外部接口上禁用了易受攻击的网络服务。 这确实可以防止通过网络的攻击,但是来自本地主机内部的攻击起作用了,因为您不能快速关闭本地主机上的 SMB。
接下来,新的有趣细节被揭晓:
- 拥有 SYSTEM 权限,您可以轻松地通过 TCP 建立反向连接。 显然,禁用直接 TCP 对于受限的 IIS 用户来说是一个严格的问题。 剧透:IIS 用户流量以某种方式双向封装在本地 ISA 代理中。 具体如何操作,我没有重现。
- 我位于某个“DMZ”(这不是 Active Directory 域,而是工作组) - 这听起来很合乎逻辑。 但我没有得到预期的私有(“灰色”)IP 地址,而是一个完全“白色”的 IP 地址,与我之前攻击的 IP 地址完全相同。 这意味着该公司在 IPv4 寻址领域已经很老了,以至于它有能力根据该方案维护 128 个“白色”地址的 DMZ 区域,而无需 NAT,如 2005 年思科手册中所述。
由于服务器很旧,Mimikatz 保证直接从内存工作:

我获取了本地管理员密码,通过 TCP 隧道建立 RDP 通信,然后登录到一台舒适的桌面电脑。由于我可以对服务器进行任何操作,我卸载了杀毒软件,发现服务器只能通过 TCP 端口 80 和 443 从互联网访问,而 443 端口空闲。我把服务器的端口 443 也启用了。 OpenVPN我为我的 VPN 流量添加了 NAT 功能,并通过我的 VPN 以无限制的方式直接访问 DMZ 网络。 OpenVPN值得注意的是,尽管ISA具备一些无法禁用的IPS功能,但它却屏蔽了我自己的端口扫描流量,迫使我用更简单、更符合规范的RRAS来替代它。所以,渗透测试人员有时仍然需要进行一些管理工作。

细心的读者会问:“第二个站点怎么样?一个带有 NTLM 身份验证的 wiki,关于它的文章已经写了很多了?” 稍后会详细介绍这一点。
第 2 部分. 仍然没有加密? 那么我们已经来找你了
这样,就可以访问DMZ网段了。 您需要去域管理员那里。 首先想到的是自动检查 DMZ 段内服务的安全性,特别是因为现在有更多服务可供研究。 渗透测试期间的典型情况:外部边界比内部服务受到更好的保护,并且当在大型基础设施内部获得任何访问权限时,仅因为该域开始被访问,就更容易获得域中的扩展权限。其次,在拥有数千台主机的基础设施中,总会存在一些关键问题。
我通过DMZ给扫描仪充电。 OpenVPN隧道,我在等。我打开报告——还是没什么大问题;显然之前有人做过同样的事情。下一步是调查DMZ网络内的主机是如何通信的。为此,我首先启动Wireshark并监听广播请求,主要是ARP请求。我收集了一整天的ARP数据包。结果发现,这个网段使用了多个网关。这之后会很有用。通过将ARP请求-响应数据与端口扫描数据合并,我找到了本地网络内部用户流量的出口点,以及之前已知的服务,例如网页和邮件。
由于目前我无法访问其他系统,也没有用于企业服务的单个帐户,因此决定使用 ARP 欺骗从流量中至少找出一些帐户。
Cain&Abel 在泌尿科医生的服务器上启动。 考虑到已识别的流量,选择最有可能进行中间人攻击的对,然后通过短期启动 5-10 分钟来接收一些网络流量,并使用定时器重新启动服务器以防结冰。 正如笑话中所说,有两条消息:
- 好的:大量凭据被捕获,并且整个攻击有效。
- 缺点:所有凭证均来自客户自己的客户。 在提供支持服务时,客户专家会连接到并不总是配置流量加密的客户的服务。
因此,我获得了大量在项目中毫无用处的凭证,但作为攻击危险性的演示,它们确实很有意思。大型公司的边界路由器配备了 Telnet,将调试 HTTP 端口转发到包含所有数据的内部 CRM 系统,并可直接从远程桌面协议 (RDP) 访问系统。 Windows XP 在本地网络上的运行以及其他一些晦涩难懂的内容。结果发现大概是这样的。 .
我还发现了一个有趣的机会来收集交通信件,就像这样。 这是一封现成的信件的示例,该信件从我们的客户发送到其客户的 SMTP 端口,同样没有加密。 某个安德烈要求他的同名者重新发送该文档,该文档被上传到云盘,并在一封回复信中包含登录名、密码和链接:

这是对所有服务进行加密的另一个提醒。 不知道谁以及何时会专门读取和使用您的数据 - 提供商、另一家公司的系统管理员或这样的渗透测试人员。 我对许多人可以简单地拦截未加密流量的事实保持沉默。
尽管取得了明显的成功,但这并没有让我们更接近目标。 当然,有可能坐很长时间并找出有价值的信息,但事实上它不会出现在那里,而且就网络的完整性而言,攻击本身风险很大。
在再次深入研究服务后,我想到了一个有趣的想法。 有一个名为 Responder 的实用程序(很容易找到该名称的使用示例),它通过“毒害”广播请求,通过各种协议(例如 SMB、HTTP、LDAP 等)激发连接。 以不同的方式,然后要求每个连接的人进行身份验证并进行设置,以便通过 NTLM 并以对受害者透明的模式进行身份验证。 大多数情况下,攻击者以这种方式收集 NetNTLMv2 握手信息,并使用字典从中快速恢复用户域密码。 在这里,我想要类似的东西,但用户坐在“墙后”,或者更确切地说,他们被防火墙隔开,并通过 Blue Coat 代理集群访问 WEB。
还记得我之前说过Active Directory域名要和“外部”域名一样吗,也就是company.ru?嗯, Windows更准确地说,Internet Explorer(包括 Edge 和 Chrome)允许用户在认为网站位于“内网区域”时,通过 NTLM 透明地进行 HTTP 身份验证。“内网”的标志之一是使用“灰色”IP 地址或简短的 DNS 名称(即不带句点)。由于服务器拥有“白色”IP 地址和 DNS 名称 preobrazhensky.company.ru,并且域计算机通常会通过 DHCP 获取 Active Directory 域后缀以简化名称输入,因此用户只需在地址栏中输入 URL 即可。 ,以便他们找到通往受感染泌尿科医师服务器的正确路径,不要忘记这现在被称为“内联网”。 也就是说,同时在用户不知情的情况下向我提供用户的 NTLM 握手。 剩下的就是迫使客户端浏览器考虑联系该服务器的迫切需要。
精彩的 Intercepter-NG 实用程序来救援(感谢 它允许实时更改交通状况,并且在以下方面运行完美: Windows 2003年,甚至还有一个专门用于修改流量中的JavaScript文件的独立功能。当时计划进行大规模跨站脚本攻击。
用户通过 Blue Coat 代理访问全球 WEB,定期缓存静态内容。 通过拦截流量,很明显他们正在全天候工作,无休止地请求频繁使用的静态,以加快高峰时段内容的显示速度。 此外,BlueCoat还有一个特定的User-Agent,它可以清楚地将其与真实用户区分开来。
Javascript 已准备好,使用 Intercepter-NG,在晚上用 Blue Coat 的 JS 文件执行每个响应一个小时。 该脚本执行了以下操作:
- 通过User-Agent确定当前浏览器。 如果是 Internet Explorer、Edge 或 Chrome,它仍然可以工作。
- 我一直等到页面的 DOM 形成。
- 使用表单的 src 属性将不可见图像插入到 DOM 中 :8080/NNNNNNN.png,其中 NNN 是任意数字,因此 BlueCoat 不会缓存它。
- 设置一个全局标志变量以指示注入已完成,无需再插入图像。
浏览器尝试加载此图像;在受感染服务器的端口 8080 上,一条 TCP 隧道正在等待它到达我的笔记本电脑,其中正在运行相同的响应程序,要求浏览器通过 NTLM 登录。

从 Responder 日志来看,人们早上来上班,打开工作站,然后在不知不觉中集体开始访问泌尿科医师的服务器,同时还不忘记“耗尽”NTLM 握手。 一整天的握手如雨点般落下,显然为恢复密码的明显成功的攻击积累了材料。 响应程序日志如下所示:
用户大规模秘密访问泌尿科医生服务器
你可能已经注意到,整个故事是建立在“一切都很好,但随后有一个无赖,然后是克服,然后一切都成功”的原则之上的。 所以,这里有一个无赖。 在五十种独特的握手方式中,没有一种被透露。 这考虑到了这样一个事实:即使在处理器已失效的笔记本电脑上,这些 NTLMv2 握手也会以每秒数亿次尝试的速度进行处理。
我必须用密码变异技术、一张显卡、一本更厚的字典武装自己,然后等待。 很长一段时间后,多个密码形式为“Q11111111....1111111q”的账户被曝光,这表明所有用户曾经被迫想出一个很长的不同大小写的密码,这也是应该的变得复杂。 但你骗不了经验丰富的用户,这就是他让自己更容易记住的方法。 总共约有 5 个帐户遭到泄露,其中只有一个帐户拥有对服务的任何有价值的权利。
第 3 部分:Roskomnadzor 的反击
这样,我们就收到了第一个域帐户。 如果您在阅读了很长一段时间后还没有睡着,您可能会记得我提到过一项不需要第二个身份验证因素的服务:它是一个具有 NTLM 身份验证的 wiki。 当然,首先要做的就是进入那里。 深入挖掘内部知识库很快就带来了成果:
- 该公司拥有一个 WiFi 网络,使用可访问本地网络的域帐户进行身份验证。 根据当前的数据集,这已经是一个有效的攻击媒介,但您需要亲自前往办公室并位于客户办公室范围内的某个位置。
- 我发现了一项指令,根据该指令,如果用户位于本地网络内并且自信地记住了他的域登录名和密码,则允许...独立注册“第二因素”身份验证设备。 在这种情况下,“内部”和“外部”由用户对该服务的端口的可访问性决定。 该端口无法从 Internet 访问,但可以通过 DMZ 访问。
当然,“第二个因素”立即以我手机上的应用程序的形式添加到受感染的帐户中。 有一个程序可以通过“批准”/“不批准”按钮大声向手机发送推送请求,也可以在屏幕上默默地显示 OTP 代码以供进一步独立输入。 此外,说明书认为第一种方法是唯一正确的方法,但与 OTP 方法不同,它不起作用。
随着“第二个因素”被打破,我能够在 Citrix Netscaler Gateway 中访问 Outlook Web Access 邮件和远程访问。 Outlook中的邮件中出现了惊喜:

在这张罕见的照片中,您可以看到 Roskomnadzor 如何帮助渗透测试人员
这是著名的“粉丝”封锁 Telegram 后的头几个月,当时拥有数千个地址的整个网络无情地无法访问。 很明显为什么推送没有立即起作用,为什么我的“受害者”没有发出警报,因为他们在开放时间开始使用她的帐户。
任何熟悉Citrix Netscaler的人都会想象它通常以这样的方式实现:只能向用户传达一个图片界面,尽量不给他提供启动第三方应用程序和传输数据的工具,百般限制操作通过标准控制外壳。 我的“受害者”,由于他的职业,只得到了1C:

稍微绕了一下1C接口,我发现那里有外部处理模块。 它们可以从界面加载,并且将根据权限和设置在客户端或服务器上执行。
我要求我的 1C 程序员朋友创建一个可以接受字符串并执行它的处理。 在1C语言中,启动一个进程看起来像这样(摘自互联网)。 您是否同意 1C 语言的语法以其自发性令俄语人士惊叹不已?

处理执行得很完美;结果证明它是渗透测试人员所说的“外壳”——Internet Explorer 是通过它启动的。

早些时候,在邮件中发现了一个允许您订购前往该地区通行证的系统的地址。 我订购了一张通行证,以防我不得不使用 WiFi 攻击媒介。

网上有传言说客户办公室还有美味的免费餐饮,但我还是更喜欢远程发起攻击,这样比较平静。
AppLocker在运行Citrix的应用程序服务器上被激活,但被绕过。 同一个 Meterpreter 是通过 DNS 加载和启动的,因为 http(s) 版本不想连接,而且当时我不知道内部代理地址。 顺便说一句,从这一刻起,外部渗透测试基本上完全变成了内部渗透测试。
第 4 部分:用户的管理员权限不好,好吗?
当获得域用户会话的控制权时,渗透测试人员的第一个任务是收集有关域中权限的所有信息。 有一个 BloodHound 实用程序,可自动允许您通过 LDAP 协议从域控制器下载有关用户、计算机、安全组的信息,并通过 SMB 下载有关哪个用户最近登录、何处以及谁是本地管理员的信息。
夺取域管理员权限的典型技术看起来被简化为单调操作的循环:
- 根据已捕获的域帐户,我们转到具有本地管理员权限的域计算机。
- 我们运行 Mimikatz,获取最近登录此系统的域帐户的缓存密码、Kerberos 票据和 NTLM 哈希值。或者,我们获取 lsass.exe 进程的内存映像,并在我们这边执行相同的操作。这种方法效果很好。 Windows 比 2012R2 更年轻/Windows 8.1,默认设置。
- 我们确定受感染的帐户在何处拥有本地管理员权限。 我们重复第一点。 在某个阶段,我们获得整个域的管理员权限。
“周期结束”,正如 1C 程序员会在这里写的那样。
所以,我们的用户原来只是某一台主机上的本地管理员。 Windows 7,它的名称中带有“VDI”(虚拟桌面基础架构)字样——也就是个人虚拟机。VDI 服务的设计者可能认为,既然 VDI 是用户的个人操作系统,那么只要主机还能“重新加载”,用户就可以随意更改软件环境。我也觉得这个想法不错,于是登录到这台个人 VDI 主机,创建了自己的虚拟机:
- 安装在那里了。 OpenVPN- 一个客户端通过互联网创建了一条连接到我服务器的隧道。该客户端也需要通过 Blue Coat 的域身份验证,但是 OpenVPN 正如他们所说,我“出乎意料地”做到了。
- 我在虚拟桌面基础架构(VDI)上安装了OpenSSH。说真的,这到底是什么玩意儿? Windows 7. 不使用 SSH?
这就是现场的样子。 让我提醒您,这一切都必须通过 Citrix 和 1C 来完成:

促进对相邻计算机的访问的一种技术是检查本地管理员密码是否匹配。 幸运的是:默认本地管理员(突然被称为管理员)的 NTLM 哈希值通过对邻近 VDI 主机(其中有数百台)的哈希传递攻击而被获取。 当然,攻击立刻就击中了他们。
这就是 VDI 管理员两次搬起石头砸自己脚的地方:
- 第一次是当 VDI 计算机没有纳入 LAPS 时,基本上保留了大规模部署到 VDI 的映像中的相同本地管理员密码。
- 默认管理员是唯一容易受到哈希传递攻击的本地帐户。 即使使用相同的密码,也可以通过使用复杂的随机密码创建第二个本地管理员帐户并阻止默认帐户来避免大规模泄露。
为什么这台机器上有SSH服务? Windows很简单:现在,OpenSSH 服务器不仅提供了一个方便的交互式命令行 shell,不会中断用户的工作,还在 VDI 上提供了一个 socks5 代理。通过这个 socks,我使用 SMB 协议连接,收集了数百台 VDI 机器的缓存凭据,然后在 BloodHound 的图表中搜索域管理员的路径。由于可以访问数百台主机,我很快就找到了这样的路径,并获得了域管理员权限。
这是来自互联网的图片,显示了类似的搜索。 连接显示管理员所在位置以及登录位置。

顺便说一下,请记住项目一开始的条件——“不要使用社会工程学”。 因此,我建议考虑一下,如果仍然可以使用平庸的网络钓鱼,那么所有具有特效的宝莱坞将会被切断多少。 但就我个人而言,做这一切对我来说非常有趣。 我希望您喜欢阅读本文。 当然,并不是每个项目看起来都那么引人入胜,但整个工作非常具有挑战性,不允许它停滞不前。
有人可能会问:我该如何保护自己?即使是本文也介绍了许多技巧,其中很多技巧都由管理员负责。 Windows 他们甚至都不知道。不过,我建议从信息安全领域一些公认的原则和措施的角度来看待它们:
- 不要使用过时的软件(记住这一点)。 Windows 2003年年初?
- 不要打开不必要的系统(为什么会有泌尿科医生的网站?)
- 自己检查用户密码的强度(否则士兵......渗透测试人员会这样做)
- 不同帐户没有相同的密码(VDI 妥协)
- 和其他
当然,这很难实现,但在下一篇文章中我们将通过实践证明这是完全可能的。
来源: habr.com
