DEFCON 20会议,在60秒内捕获:从来宾帐户到Windows域管理员。 第一部分好消息是我们可以通过伪造DNS进入本地网络。 考虑到用户偏好和倾向的社会工程又如何呢? 渗透测试者知道,在IE中,您可以为UNC网络路径放置.jpg格式的图像文件标签,然后IE会将其传输回Windows并自动连接到网络文件夹,以尝试获取请求的图像或其他内容。 ,JavaScript,iFrame等。 因此,今天,IE具有自动身份验证。

尽管人们认为这些浏览器更安全,但在Firefox和Chrome中可以完成相同的操作。 此屏幕快照显示了Firefox错误控制台,该控制台指出浏览器无法从公共网络下载此图像文件,因为安全策略阻止下载不在浏览器安全上下文中的文件。 我们工具的一个有趣功能是,只需发送HTTP标头以强制Content-Type:application / force-download即可下载并随后从Temp文件夹或直接从桌面打开这些文件,即可强制Firefox和Chrome浏览器下载文件。 因此,我们在常规SMB中设置了文件安全性上下文并激活了自动身份验证,因此现在您可以强制用户在欺诈性服务器上进行身份验证。
但是,如果他们不单击“上传文件”或从Temp文件夹中打开它,该怎么办? 在这种情况下,您可以这样做,以便用户仅在浏览器中查看HTML页面时即可自动进行身份验证。 为此,必须将插件连接到Firefox和Chrome。 我的注意力吸引到了QuickTime插件,该插件通常由用户默认安装。 我知道有很多不同的插件,但是最经常遇到的是在iPhone上安装iTunes并安装QuickTime的人。 我浏览了QuickTime功能列表,想知道如何将其固定到欺诈性的网络服务器上,以迫使人们通过输入用户名和密码来进行身份验证。
我们考虑了一下,决定将播放列表插入UNC网络路径,然后用户将自动进行身份验证并绕过本地安全上下文。 我们需要在其他两个插件上做更多的工作,但是就目前而言,QuickTime在我们的任务上做得很好。
强制人们在我们的服务器上自动进行身份验证的另一种方法是通过电子邮件。 有人知道,在Outlook中,您可以使用HTML电子邮件,也可以使用使用HTML模板的电子邮件。 如果我们拥有共享的网络资源,则可以将其插入到此类电子邮件中,并且如果用户打开此电子邮件,它将自动连接到该资源并进行身份验证。
为了我们的目的,您可以使用.docs格式的文件。 任何文档都可以与插入UNC的图像或HTML文件相同的方式使用,打开该图像或HTML文件将自动连接到网络共享。
不要忘了desktop.ini文件。 这不是很为人所知,但是您可以生成此文件以安装桌面资源,例如图标和墙纸,并将其放置在“共享”文件夹中。 在这种情况下,系统将再次自动连接以接收这些图标并使用当前用户帐户“登录”。

以相同的方式,您可以使用扩展名.lnk更改快捷方式文件的设置,以自动连接到资源。
因此,我们的工具可以快速,轻松地自动创建这些.ini或HTML文件。
我要说的最后一件事是MITM,或“中间人”。 您可以重定向NTLM身份验证请求,也可以在页面中嵌入HTML内容,因为该工具没有这样做,因此可以帮助它完成工作。 这样,您可以强制客户端连接到欺诈性服务器,以实施NTLM中继。 还有其他工具可让您通过SMB或HTTP执行NTLM中继,并强制用户为您进行身份验证。
Squirtle的另一个很酷的功能是能够将其作为创建API请求的起点,您可以使用编写的任何工具来接收Type 2和3消息,Type 3消息是最后一个身份验证请求,您必须发送API消息才能接收它输入2并取回。 我迅速编写了一个API,该API允许您使用所需的任何工具集,可以更改源代码并使用欺诈性的服务器进行连接等等。
但是,如果您是一个pentester或测试用户,则需要一些关系,反向交互。 因此,我们的工具包括一组规则。 我已经说过,所有现有工具都会将用户发送到同一来源,我们必须确定这些用户是谁。 我想一键执行此操作,以便如我所说,可以在60秒内获得域管理员的权限。
我基于用户属于组而目标属于目标组这一事实在应用程序规则中编写了代码。
一旦我们发现该用户属于某个组并且可以通过自动连接访问某些内容,我们就无需强迫他连接,等待并希望他返回。 我们建立了一个简单的规则,稍后将在用户界面中显示它,如果用户进入组X,则将使用某个模块Y来执行与目标组T相关的动作Z.几秒钟后,我将演示其工作原理。
规则还包括立即检查API请求,检查常规规则,并重复此操作直到发生超时。 一旦发生超时,您就需要使用静态呼叫进行应答并保持身份验证状态,不允许用户断开连接。
通过实现NTLM中继,我们可以使用SMB连接到SMB,HTTP连接到HTTP,HTTP连接到SMB,等等。 问题是人们实际上并没有使用许多其他协议,因此我决定仔细研究LDAP和MSSQL等协议。
稍后我将讨论LDAP,但是现在我会注意到MSSQL是一件很酷的事情,因为我们可以获得数据库,可以访问数据,这真是太神奇了。

由于我们正在与客户打交道,因此我们希望在连接后立即自动执行操作。 因此,我们使用Metasploit列出了用户和组,该用户和组在今年的BlackHat会议上进行了介绍。 因此,作为一个上学期,我可以访问共享文件,有机会执行命令并拥有有关目标用户和目标组的信息,而没有管理员权限。 但是,尽管如此,我无法连接到域控制器。 原因是默认情况下,大多数域控制器都具有SMB签名。 对于那些不熟悉SMB签名的人,我会说这是SMB协议的安全机制,也称为安全签名。 它使用原始的NTLM哈希对会话进行签名并为每个数据包签名,如果没有签名,它将断开您的连接。 因此,默认情况下,我们不能将NTLM中继应用于域控制器。 这让我很生气,所以我决定找出使用此控制器的过程是多么容易和快捷。 让我们返回几张幻灯片。

事实证明,默认情况下在域控制器中启用了LDAP,这允许使用NTLM身份验证,这很棒。 但是我们无法更改密码,因为通常,更改密码或添加用户需要SSL,并且如果域具有CA证书,则LDAP中包括SSL。 我们所做的就是进入我们的工具,您可以更改用户密码,排除和添加用户,列出域,从内存中提取活动的用户哈希,登录到域控制以及执行其他出色的工作。 很酷的事情是,您可以将用户添加到没有SSL和其他功能的组中,因此,如果您花了五个月的时间,就可以使用并连接其他用户的帐户,如果您具有管理员权限,则将其添加到域管理员组中,依此类推。
返回SMB。 在我从芝加哥出发的4小时飞行中,我想到了将SMB SOCKS代理用于我们的目的。 任何人都知道该协议允许应用程序通过防火墙进行通信,该防火墙使用两个客户端都可以连接到的中间服务器来阻止直接连接。 也就是说,SOCKS代理将干净数据从一个客户端发送到另一个客户端,反之亦然。 因此,该代理可以用中继数据替换NTLM数据包。

使用HTTP,我们可以将SharePoint服务器链接到内部网站。 有人认为NTLM不会有问题,因为您在内部网络中,但是外部网络又如何呢? 有时也有SharePoint服务器,但不是太频繁。 我认为许多组织对外部访问开放,支持NTLM并允许交换Web服务。 对于那些不熟悉Exchange Web服务(EWS)的人,我将说它们是一种HTTP API,通常与Outlook Web Access位于同一服务器上。 默认情况下,他们使用支持NTLM的Negotiate HTTP身份验证方法,以便我们可以对EWS中的服务进行外部HTTP中继。
这很麻烦,因为从外部您可以使用HotSpot连接点访问通讯,联系人,事件日历并为电子邮件设置自己的规则。 如果它们没有用于传出连接的防火墙规则(不允许您连接到欺诈性SMB服务器并自动接收身份验证),则可以通过Internet访问EWS服务器。 由于每个人都有一部连接到EWS服务并与之同步的手机,所有这一切都是可能的。
现在我需要喝一杯,因为我想在这个地方开始演示。 因此,此幻灯片显示了ZackAttack应用程序的图形用户界面的外观,我将向下滚动页面以查看操作,目标,目标组和用户组的设置。

因此,您可以了解其功能及其强大功能。 欺诈性HTTP服务器,欺诈性SMB服务器和管理HTTP服务器目前正在运行。 幻灯片进一步显示了用户所在的组。

它显示了谁以及何时连接到网络,以便您可以看到哪个用户已重新连接。

在右侧,系统帐户和现有用户帐户显示为红色,您可以在其中一键通过SMB列出目标,从Exchange Web服务接收邮件,如果您是会话管理员则使用命令外壳,访问共享文件,SharePoint等。

如我所说,我们可以创建规则,也可以通过自动枚举或手动创建组将用户添加到组中,例如,创建一个名为“ moo”的组。

正如我所说,我无法做的事情是,演示之神不喜欢我。 我们将不得不返回并调整程序中的某些内容。

抱歉,这只是alpha版本,我在3周内独自编写了这段代码。 现在,我将添加一个名为“ yar”的组,现在您将看到这两个组都出现在底部,其中添加了所选用户。

正如我所说,我们还可以从域控制器中列出各种用户组,这是“ UserGroups”选项卡,并使用“ Attack Rules”选项卡-“ Attack Rules”创建用于自动身份验证的规则。
您在此处看到新创建的Yar组的用户,这些用户可以出于目标组的特定目的而连接到Exchange Web服务,并且在这里您还可以向目标组添加任何IP地址,例如10.1.10.250。

一旦收到来自用户组某人的身份验证请求,我们就会自动连接到EWS,并从草稿文件夹中提取收件箱中的所有字母,我们可以轻松地添加另一个文件夹,例如“已发送邮件”。

关于此工具的最好之处在于,经过身份验证后,会话在与欺诈服务器的整个连接中保持打开状态,并执行所有这些操作。 因此,我们无需再次进行身份验证即可接收传入的电子邮件。
由于我们有30个来自系统的请求,因此我们可以先建立约30条规则,然后在此特定连接中执行各种操作。 正如我所说,我们可以为所有用户以及给定连接的所有目的或特定目的重复所有这些步骤。
同时,我们可以通过单击Auth Payloads标签来生成有效负载。 在这里,您可以创建HTML文件来确定用户的OC,并使用3种方法之一来强制浏览器自动进行身份验证。

在这里,您可以创建desktop.ini来将文件上传到共享文件夹,并使用文件生成器将UNC路径注入到xml .doc文件中,创建.lnk快捷方式文件并存档Zip文件,就像自动创建XTML邮件文件一样。 借助Firesheep和NTLM中继,所有这些操作都尽可能简单。
最后,通过“结果+日志”选项卡,我的工具可以像静态身份验证之前一样跟踪用户哈希,因此您可以尝试破解密码。

因此,这是ZackAttack功能的演示。 那么我们如何保护自己呢? 防御措施是限制攻击面。

每个人都有自己的防御方法来抵御这种攻击。 人们建议使用NTLM版本2。我的工具支持该版本,但是版本2和版本1之间没有显着差异。
您可以在出站端口445上安装防火墙,该防火墙将保护您免遭任何发送欺诈性有效负载并强制进行自动身份验证的人的攻击。 但是,这不能防止通过移动设备的渗透。
您可以配置组策略来限制Windows 7中GPO程序的使用,以限制NTLM身份验证的目标。 每个人都认为最好的解决方案是Kerberos。 但是,问题在于组织将需要将所有内容都切换到Kerberos,并且这将无法工作,因为有很多东西不支持Kerberos。 另一件事是,如果启用Kerberos,则将完全无法支持NTLM,签名也是如此,因为对于您不知道的人,您需要使用原始密码哈希对每个程序包进行签名。 签名LDAP,SMB签名,高级HTTP身份验证-Cerberus不支持所有这些功能,因此人们误以为签名可以解决所有问题。 如果您强制执行强制签名,则可能会禁用许多功能。
因此,在保护组织时,必须保持一定的平衡。 如果您是最终用户,那么通常不必担心这些事情,但是如果您是公司的系统管理员,则最大的问题是需要拒绝使用NTLM。
由于Windows 8和Windows 2012默认仍支持NTLM,因此放弃它并花一些时间继续使用Kerberos,希望我的工具能对您有所帮助。 当我回到
zfasel.com/tools时 ,它将在7月31日星期二出版。 它也可以在本次会议的DVD以及我的幻灯片上找到。 如果您想告诉我我的表现和演示多么糟糕,请发送电子邮件至dc20@zfasel.com或在Twitter上搜索我的@zfasel昵称。
感谢您与我们在一起。 你喜欢我们的文章吗? 想看更多有趣的资料吗? 通过下订单或将其推荐给您的朋友来支持我们,
为我们为您发明的入门级服务器的独特模拟,为Habr用户提供
30%的折扣: 关于VPS(KVM)E5-2650 v4(6核)的全部真相10GB DDR4 240GB SSD 1Gbps从$ 20还是如何划分服务器? (RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。
VPS(KVM)E5-2650 v4(6核)10GB DDR4 240GB SSD 1Gbps,直到春季免费,直到半年付款,您都可以
在此处订购。
戴尔R730xd便宜2倍? 仅
在荷兰和美国,我们有
2台Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100电视(249美元起) ! 阅读有关
如何构建基础架构大厦的信息。 使用价格为9000欧元的Dell R730xd E5-2650 v4服务器的上等课程?