侦察:Azure云与Kevin Klingbile - Black Hills信息安全公司
本网络研讨会最初发布于2024年9月26日。
在本视频中,Black Hills信息安全的Kevin Klingbile讨论了Azure云服务和M365的复杂性,重点介绍了渗透测试中未认证和认证侦察的区别。他详细介绍了进行有效侦察的各种工具和技术,包括用户名枚举、密码喷洒和令牌提取。Kevin还分享了关于设置Azure开发人员订阅的实用见解,并强调了保持态势感知以增强安全状况的重要性。
研讨会重点讨论了M365和Azure云服务之间的差异,以及在这些环境中进行渗透测试的具体考虑因素。讨论了各种侦察技术,包括未认证和认证侦察,重点关注DNS记录、用户枚举和识别潜在的安全配置错误。涵盖了几种利用M365和Azure中漏洞的工具和方法,包括使用Cloud Enum、Cred Master和Graph Runner进行详细侦察和潜在利用。
亮点
- 完整视频
- 文字记录
Kevin Klingbile: 好吧,我在主题上撒了点小谎。我要从这一点开始。我说的是Azure云。我们会讨论为什么我说Azure云。大多数人认为Azure是微软的云服务。还有M365和Azure云,它们是不同的。我们会讨论为什么。但在那之前,我们先来概述一下。我们有介绍,其实不用担心。我们有一些概念,我们要做未认证的侦察,因为这是一个渗透测试类的话题,我们必须加入一些利用,然后我们要看看认证的侦察。
所以这里有两个主要的区别。我们可以看看未认证的一面,以及我们从那里可以看到什么,一旦我们获得了那组凭证,或者如果你是一个安全分析师,想要实际进入并使用你的租户或你被授权检查的租户更深入地研究,我们就有那个认证的侦察部分。这也是我们作为测试人员在这里所做的。所以我们到时候会讲到。所以,关于我的一点介绍:Black Hills信息安全的渗透测试员,分析师,终身黑客,从我记事起就一直在做。我记得在中学时做的事情可能也有点可疑。我是CIS关键安全控制的编辑。所以第八版的编辑小组,我参与了ICS配套指南第八版的工作,我有22年各方面的经验,很多互联网提供商,很多能源,一点医疗保健和渗透测试。现在,只要我记得,我一直做渗透测试风格的角色,安全角色。所以今天的目标,我不会读这些,因为我们要深入探讨这些。但如果你需要回去,第四张幻灯片有我们开始的大纲。我一开始就说我对你们撒了点小谎。我们有M365和Azure。很多人只是把它们合并起来说Azure,从它是一个你可以用来描述微软云的术语的角度来看,这是有道理的,但当你在考虑那里的差异时,这有点棘手。比如,我需要测试M365还是需要测试Azure?我两者都需要吗?实际上答案可能是两者都需要或M365。大多数人都在用M365。Azure是当你开始引入实际的基础设施部分时。M365将是SaaS,enter id基本上也在M365之下。从技术上讲,它是一种平台即服务。这个小底部描述是我从微软网站上摘录的。如果你抓取幻灯片的PDF,我知道他们要发布的一个PDF有幻灯片中的注释部分。在注释部分,我有各种资源的链接。所以我有基本上我从中提取的链接。我有一些图表的链接,到其他微软资源,到其他渗透测试资源,到GitHub仓库,幻灯片上的一切。M365和enter id是大多数客户在想到Azure云时的所在。如果我们超越这一点,我们开始做Azure中的DevOps,我们开始使用桶,我们开始做构建代码仓库,我们托管应用程序。所有这些都是Azure的部分。我们将看看从M365的角度我们可以看什么进行侦察。从Azure的角度我们可以看什么进行侦察,包括认证和未认证的侦察。
所以如果我们想再分解一点,只是再多一张微软的幻灯片,我想我就用完了微软的幻灯片。我还能想到一张,但这里面除了这张之外没有很多微软的幻灯片。我只是想列出一些服务以及它们在线上的位置。所以你可以参考这个来说我在微软生态系统中的哪个位置工作,我在看什么?这就是我在这里包含这个的原因。所以只是一个参考。所以如果我们实际跳入我们正在做的侦察部分,我们可以从最开始的地方开始,DNS记录,对吧?任何时候你在看侦察,你都会看DNS。所以如果我们从这里开始,我们可以看DNS,特别是文本记录,我会想到有两个不同的文本记录会对我们有效。其中一个是一旦你注册了一个微软租户,你去了,你说我想要一个自定义域,它会弹出来说你需要授权你的域。所以有了那个域授权,他们希望你设置一个MS等于值作为一个文本记录。所以这里有一个 redacted 域的例子,他们有一个 redacted 再次微软Ms值。所以如果你看到一个DNS文本记录,在某个时候,他们进去了,他们可能说,我想在Azure中注册这个域作为自定义域。微软给了他们那个值添加到文本记录中。另一个我们可以看的是,他们是否使用M365服务进行交换。所以交换,在线交换,一切都被认为是M365方面,而不是Azure方面。这将通过,例如一个SPF记录。也许我们看到保护.outlook.com的SPF记录,授权微软的Outlook.com为该域发送电子邮件。所以我们可以从文本记录的角度看这些。然后类似于SPF记录,我们会有MX记录。所以邮件记录。所以如果我们点击邮件记录,我们是否看到mail.protection.outlook.com现在我这里有一个小笔记,我们很快就会讲到。注意假阴性。所以仅仅因为你看了MX记录而没有看到mail.protection.outlook.com,并不意味着邮件不在那个租户上工作。每当你注册一个租户并开始在那里添加不同的资源时,邮件在技术上是在那个租户上运行的。所以我们很快就会深入探讨。实际上,很快,我移动了幻灯片,所以直接发送当我们看那个mx记录时,在这个幻灯片上,我有这个mail.protection.look.com。Steve写了,Steve是Bhis的一个测试员,写了一篇非常非常非常好的关于直接发送的博客文章。如果你看幻灯片上的注释,我有一个链接到他写的欺骗Microsoft 365,就像1995年的博客文章。具体来说,他深入探讨了通过直接发送欺骗邮件记录,这是Outlook邮件连接器之一。现在我说这里要小心的原因是,每当我为客户做微软评估或Azure评估时,我会继续尝试直接发送。无论他们是否有这个mail.protection.outlook.com。我会尝试手动nslookup我们是否有域-顶级域.microsoft.protection.outlook.com如果存在。这意味着M365服务在后台运行交换,所以我们实际上仍然可以尝试直接发送到那个,到那个客户在我们的情况下,或到你的公司,无论它可能是什么,看看我们是否能通过。现在,邮件规则中的错误配置有时仍然允许那个直接发送消息直接通过,即使SPF不允许。所以我实际上见过实例,我欺骗了一个邮件记录。它直接进入了内部。根本没有垃圾邮件控制,因为他们没有使用内置的微软垃圾邮件控制。也没有交换规则、邮件规则、传输规则来实际将其转发到垃圾邮件系统。我实际上见过案例,我们可以直接附加可执行文件,发送到公司,让用户点击它们以获取shell。所以当公司不知道这在后台运行时,这几乎更危险。我见过这个,我不想说经常,但比我们应该的更频繁。所以发送直接消息,我这里有那个文本,它也在幻灯片里,你只需发送到任何解析的域。我见过的另一件事是,一些客户设置,基本上像一个邮件转发器,从域a到域b。所以我们会转发一个消息进来或直接发送一个消息进来,它被那个邮件转发器拾取,它仍然被发送通过,基本上转发到另一个域,因为他们有内部信任,可能有一些内部DKIM记录或他们设置的其他东西。所以总是,总是值得一看和检查的好事。手动发现看这里的vast项目,很多手动发现在Azure中有效的原因基本上是我们有这些静态基础URL这里的例子。如果你在看blob存储,它总是某个客户名存储账户,blob core Windows uh.net。同样适用于表存储、队列存储等。这些只是例子。幻灯片上列出的还有更多。基本上任何会暴力破解子域的东西都是你可以访问不同或找到不同存储账户的方式。表存储队列存储Azure文件数据库web,这里没有列出,还有其他。我下一张幻灯片有一个工具,我想会显示那个我们也可以使用google dorks所以我们可以去,我不想说老派,但我记得20年前做google dorks。所以我们可以通过并点击那个静态基础URL,例如blob.core.windows.net,并用google搜索一些关键词。如果我们继续,我们有cloud enum。Cloud enum将以编程方式获取上一张幻灯片并评估关键词,针对这里的一切。现在,cloud enum会做的不只是Azure。它可以做aws和GCP。但因为我们在谈论Azure,我有标志禁用AWs和禁用GCP。在这个例子中,如果我们用关键词运行cloud enum,它会取我们输入的关键词,它会检查所有不同的基础静态URL与我们在那里的关键词。我几天前拿了一个我知道存在的blob的例子。我把它作为关键词输入。我们可以看到cloud enum通过基本上使用这些突变和暴力列表这里,并尝试这个关键词与一些模糊测试针对那些静态URL。第一个检查是Azure存储账户。它检查了那里。花了18秒,完成那个阶段。然后我们有这个开放的Azure容器,找到了它。然后它列出了blob,然后它找到了那个实际容器中的静态桶。我们将稍微深入探讨桶是如何设置的,用微软图表来显示那些存储账户与blob数据是如何的。这里它开始列出文件。在这个特定的桶里有很多文件。我想这些在这个特定的里是打算公开的。但我 redacted 它只是为了保护。所以如果我们看blob存储是如何实际设置在微软云服务中的,这将是Azure方面,你从一个账户开始,这实际上是来自微软网站的一个片段。我在幻灯片注释部分有参考。所以你从一个账户开始,我们称之为Sally。那就像你的存储。然后你在那个存储里面设置容器,那就像是你的 essentially blob bucket, storage。在这种情况下,你可能有图片或电影或其他东西。然后你最终得到实际的blob数据,实际的文件。现在如果你不想去尝试一堆关键词,有一个网站greyhatwarfare.com,他们实际上为你做了很多这个。用一个免费账户,未注册的免费账户,你可以去,例如点击Azure blob存储,开始看有什么不同的桶在那里,容器名称是什么,备份或图片或电影或无论在那个桶里可能是什么。然后你实际上可以点击链接看文件,它会列出他们在那个特定blob存储中找到的所有不同文件。另一件我们可以看的是ad FS活动目录联合服务。有一个手动URL你可以去,在微软内部,它是login.microsoftonline.com getuser realm和这个电子邮件地址,一些域顶级域这里,你可以用任何电子邮件替换。它只需要匹配域。所以你可以说没有人无论你在测试的域。你会得到两个可能弹出的不同项目。你会得到is federated false,这意味着你正在使用Microsoft 365 entra id essentially。那可能加入本地云加入可能是双重用途,或其他东西。但无论如何,他们正在使用那些服务。另一个选项是你可能得到嘿,这个auth URL是联合的。所以is federated true?它会给你一些auth URL,可能到一个IDP,无论他们的身份提供者URL是什么。这会给你一点信息,从他们是否与某些其他第三方服务如okta联合的角度。然后Azure活动目录内部。它曾经被称为Azure活动目录。他们后来改名为entra id。但aad internals仍然是我们用于那个的工具。我刚运行了这个get help,invoke aad int recon as outsider来拉出一个例子放入幻灯片。如果我对一个客户运行它,我通常只是非常非常快地运行这个来从高层次的角度了解这个域上有什么。FT只是Powershell中的formattable。我只是缩短它为ft。我们得到很多信息,包括像租户id这样的东西。所以现在我们有了这个租户id,我们将需要用于其他工具。有时当我们执行某些命令时,我们需要指定租户id。所以非常快速简单的方法就是在这里。这个桌面SSO启用在这个例子中,是false。当我们稍后讲到密码喷洒时,我会谈论这个特定情况,如果这是true。更常见的是,这个桌面SSO在租户中是启用的。至少从我看到的,这里有另一个例子。在下面这里我们可以看到他们是否是联合的或管理的,与我刚才讲的上一个幻灯片相同。但这会给我们实际的auth URL门户,并告诉我们他们是联合的还是管理的。然后另外用Aad internals会给我们列出其他URL,其他域,而不是我们可能不知道的公司以某种方式与之关联的。所以在Azure活动目录enter id格式中,那个特定域以某种方式绑定到那个租户。所以我们可以得到额外资源的列表,回去重新计数。让我们看看用户名枚举,可能是我们可以从M365服务中相对容易获得的有趣和有价值的事情之一。现在微软不认为用户名枚举是漏洞。他们说