目录导航
项目地址:
GitHub:
https://github.com/TROUBLE-1/Vajra
Vajra简介
Vajra 是一个基于 UI 的工具,具有多种技术,用于在目标的 Azure 环境中进行攻击和枚举。
Vajra 一词是指印度神话中的神 Indra 的武器(雷电与风暴之神)。它与云的连接使其成为该工具的完美名称。
Vajra 目前支持 Azure 云环境,未来计划支持 AWS 云环境和部分 OSINT。

目前提供以下功能:
- Azure
- 攻击
- 基于 OAuth 的网络钓鱼(非法同意授予攻击)
- 泄露数据
- 枚举环境
- 部署后门
- 发送邮件/创建规则
- 密码喷洒
- 密码爆破
- 基于 OAuth 的网络钓鱼(非法同意授予攻击)
- 枚举
- 用户
- 子域
- Azure Ad
- Azure 服务
- 具体服务
- 存储帐户
- 攻击
注意:此工具已在具有大约 30 万个主体(如用户、组、企业应用程序等)的环境中进行了测试。

它具有使用 Python Flask 模块构建的基于 Web 的直观用户界面,可提供更好的用户体验。
关于作者
Raunak Parmar 是一名高级安全工程师。Web/云安全、源代码审查、脚本和开发是他的一些兴趣。此外,熟悉 PHP、NodeJs、Python、Ruby 和 Java。他获得了 OSWE 认证,并且是 Vajra 和 365-Stealer 的作者。
安装
使用凭据 postgres/postgres 安装 postgres 数据库并创建数据库名称 vajra。如果未安装 postgres,则默认使用 sqlite。
运行以下命令安装所有模块。
pip install -r requirements.txt
安装后运行以下命令来启动应用程序。
python app.py
为什么要使用Vajra
每当我在云安全评估或一些云红队项目中遇到时,都需要运行很多工具来枚举从无到有的东西。有些需要大量自动化,例如暴力破解或从数千个资源中查找特定的特权服务或策略。
最初,我编写了一个工具365-Stealer,它具有执行非法同意授予攻击的能力,但我对代码结构及其 Web 界面不满意,这让我再次重写了整个工具并将其作为模块添加到 Vajra 中。这个模块最有趣的部分是它使用从受害者那里窃取的刷新令牌,可以使用至少 3 个月,最长 1 年或没有限制。将解释如何使用这个模块以及在什么情况下应该使用它。
注意:365-Stealer不会在未来发布或更新,因为我已经放弃了这个工具。
Vajra 未来将有更多模块,这将有助于在执行云安全评估的同时模拟攻击。
模块
让我带您了解当前工具的所有模块,并将指导您如何设置以及何时使用什么。

用户编号
任何人都想执行的第一个工具是用于用户枚举。在黑匣子期间,您可能会执行一些 OSINT 技术来收集目标公司的电子邮件 ID,比如说公司 XYZ Ltd。您可以尝试使用匹配的正则表达式在整个 google 上进行枚举。
^[\w.+\-]+@XYZ\.com$
或者也许使用一些秘密技术你得到了几十个电子邮件 ID。现在重要的是在我们进一步攻击之前验证这些 id。
准备好列表后,您只需将其粘贴到文本字段或上传文件,然后单击保存并单击攻击,如下所示。

结果保存在同一页面上,甚至可以下载。

后台发生了什么?
通过使用包含电子邮件 ID 的 JSON 正文向“ https://login.microsoftonline.com/common/GetCredentialType ”发出 POST 请求,可以分析有效的电子邮件 ID。如果“ IfExistsResult ”键值为 0,则表示用户存在。
以下是相同的示例代码。
import requests
body = '{"Username":"[email protected]"}'
response = requests.post("https://login.microsoftonline.com/common/GetCredentialType", data=body).json()
if response["IfExistsResult"] == 0:
print("Valid User")
网络钓鱼
第二个模块将帮助您对从第一个模块获得的有效受害者进行网络钓鱼攻击。我们要执行的网络钓鱼类型称为非法同意授予攻击。
非法同意授予攻击
在非法同意授予攻击中,攻击者创建一个在 Azure 注册的应用程序,该应用程序请求访问联系信息、电子邮件或文档等数据。然后,攻击者诱使最终用户同意应用程序,以便攻击者可以访问目标用户有权访问的数据。应用程序获得同意后,无需组织帐户即可对数据进行用户帐户级别的访问。
简单来说,当受害者单击“接受”那个漂亮的蓝色按钮时,Azure AD 会向属于攻击者的第三方站点发送一个令牌,攻击者将使用该令牌代表受害者执行操作,例如访问所有文件、阅读邮件、发送邮件等。
攻击流程图

为了进一步理解 Illicit Consent Grant 攻击,请考虑以下场景:两个假设的公司,“ECorp”和“PentestCorp”。PentestCorp 赢得了 ECorp 的合同,模拟网络钓鱼攻击以获取有关用户的信息并从用户的电子邮件、OneDrive、OneNote 和其他帐户中提取敏感信息。PentestCorp 选择进行非法同意授予攻击,他们只是简单地在其中引诱并说服他们的受害者单击一个链接,该链接将他们带到微软官方第三方应用程序同意页面,该页面允许他们从受害者的帐户中窃取所有数据。
PentestCorp 通过注册一个名为“safedomainlogin.com”的域并创建一个名为“ecorp.safedomainlogin.com”的子域发起了这次攻击,他们在其中托管了捕获授权代码并随后请求访问令牌的应用程序。PentestCorp 然后创建了一个多租户在他们的 Azure AD 租户中添加应用程序并将其命名为“ECorp”,并添加一个指向“ecorp.safedomainlogin.com”的重定向 URL,该 URL 托管一个用于收集授权代码的应用程序。PentestCorp 还包括一个新的客户端密码和一个应用程序中的一些 API 权限,例如 Mail.Read、Notes.Read.All、Files.ReadWrite.All、User.ReadBasic.All、User.Read,读取。因此,在用户授权该程序的权限后,PentestCorp 可以收集用户的敏感信息
PentestCorp 然后生成一个带有受尊重的客户端 ID 和恶意程序重定向 URL 的链接,并将其分发给目标用户以获得他们的批准。PentestCorp 为同意第三方应用程序 ECorp 的用户获取授权代码。PentestCorp 然后使用授权代码来获取访问令牌和刷新令牌,其中访问令牌用于使用 GraphAPI 检索所有信息。
为了减少手动提取数据的开销,我们可以利用 Vajra 的网络钓鱼模块。
按照以下部分中概述的过程配置网络钓鱼模块以执行非法同意授予攻击。
注册申请
若要在 Azure 上注册应用程序,请按照下面概述的过程。
- 登录https://portal.azure.com
- 导航到 Azure Active Directory
- 点击应用注册
- 点击新注册
- 输入我们的应用程序的名称(在同意时将向受害者显示相同的名称)
- 在支持帐户类型下选择“任何组织目录中的帐户(任何 Azure AD 目录 – 多租户)”
- 输入重定向 URL。此 URL 应指向我们的 Vajra 网络钓鱼应用程序,我们将托管该应用程序以托管我们的网络钓鱼页面。例如,http://localhost:8080/azure/getcode/[–UUID–]
- 点击注册


注册应用程序后,我们将被重定向到应用程序的概述选项卡。记下应用程序(客户端)ID
配置应用程序
让我们首先为我们的应用程序生成一个新的客户端密码。
- 从下拉菜单中选择“证书和机密”。
- 从下拉菜单中选择 New Client Secret,然后添加描述并单击 Add。
- 将机密值存储在安全位置。

现在让我们提供我们的应用程序权限。
- 从下拉菜单中选择 API 权限。
- 从下拉菜单中选择添加权限。
- 从下拉菜单中选择 Microsoft Graph。
- 从下拉菜单中选择委派权限。
- 找到并选择下面列出的权限,然后单击添加权限(这取决于您希望受害者获得哪些权限)
- Contacts.Read
- Mail.Read
- 邮件.发送
- 笔记.阅读.全部
- 邮箱设置.ReadWrite
- 文件.ReadWrite.All
- User.ReadBasic.All

设置网络钓鱼模块
提供所有详细信息,然后单击保存。完成后,您应该获得如下所示的网络钓鱼 URL

单击开始网络钓鱼,然后单击浏览。

将打开一个新选项卡,其中包含一个示例网络钓鱼页面,该页面可用于通过让用户相信它是 Microsoft 的合法网站之一来对用户进行网络钓鱼。


单击“阅读更多”、“参加考试”之类的任何位置后,您将被重定向到如下所示的 Microsoft 官方批准页面。

方法
但首先,让我们了解何时使用它,问题是您能否授予任何用户的所有权限?
如果您曾经见过或遇到过如下所示的问题,您可能会想到这个问题。

因此,答案是否定的,除了一些管理员用户之外,您无法从您的 vuctms 获得所有这些权限,您本可以在 2020 年之前获得,但在 Microsoft 新更新之后获得。因此,让我们了解我们的方法是什么。
注意:如果您在目标租户上有一个用户并从中创建应用程序注册,那么普通用户可以提供所有权限,因为该应用程序属于受害者的租户。
您只能从全局、应用程序和云管理员等管理员用户那里获得这些高权限同意。但是,普通用户也可以授予一些可用的权限,它们是:
- Calendars.Read
- Tasks.Read
- User.ReadBasic.All
从这些中,对我们来说最好的许可是第三个User.ReadBasic.All
。这将让我们列出受害者租户中所有可用用户的名称。您可以在受害者选项卡下的 Office365 部分中找到所有用户的列表。

现在您拥有比以前更多的有效电子邮件,假设您有大约 100 个用户,甚至可能更多。电子邮件 ID 越多,成功进行密码喷射攻击的机会就越大。有了这个让我们跳到下一个模块。
密码喷射
密码喷射是一种暴力破解攻击,攻击者将利用应用程序上的用户列表和默认密码来蛮力登录。为了防止在暴力破解具有多个密码的单个帐户时通常发生的帐户锁定,攻击者可能会使用一个密码,例如“Secure@123”来攻击应用程序上的许多其他帐户。
当应用程序或管理员为新用户创建默认密码时,这种技术很常见。
在我们的喷洒模块中,您可以上传包含电子邮件的自定义列表,或者只需提供密码点击保存,然后开始攻击,这只会对我们在执行网络钓鱼攻击时遇到的受害者执行。

暴力破解
这个模块与我们在喷涂中所做的类似,唯一的区别是您可以提供多个密码,而不是提供 1 个密码。默认情况下,Microsoft 允许 10 次尝试,因此您最多可以尝试 9 个密码。您只需提供密码和用户列表,单击保存并开始攻击。

后渗透
一旦您获得了对目标租户的访问权限,您现在就可以从您想要的任何用户那里授予所有这些高特权权限。所以这次你可以在受害者的租户中创建新的应用程序注册,并使用所有权限配置它,如 Files.ReadWrite.All 等。一旦 Phish,所有数据将显示在 Vajra 中,如下所示。
OneDrive 数据

Outlook 邮件

附件文件

Onenote 文件

您可以替换 OneDrive 中的任何文件,这意味着您可以通过将文件名分别更改为 .doc 或 .xlx 来在 .docx 和 .xlsx 文件中注入宏。
如果您希望向网络钓鱼受害者授予访问令牌以执行您的自定义 API 请求,只需单击获取令牌,您就会收到一个。而且您还希望再次窃取其数据,然后只需单击再次窃取并自定义您的窃取,例如,仅窃取邮件只需在网络钓鱼模块中配置即可。

Azure Ad枚举

您有 2 种不同的方式从 Azure Ad中提取数据。
- 提供凭据和客户端 ID
- 提供访问令牌
https://graph.microsoft.com
选项 2 相当简单,只需要提供一个令牌,因此将讨论选项 1。使用凭据需要提供具有以下应用程序权限的应用程序注册的客户端 ID。
- Directory.AccessAsUser.All

或者,您可以登录 az cli 并使用以下命令获取令牌。
az account get-access-token --resource=https://graph.microsoft.com
Azure 资源枚举

您有 2 种不同的方式来提取 Azure 资源。
- 提供凭据和客户端 ID
- 提供访问令牌
https://management.azure.com
选项 2 相当简单,只需要提供一个令牌,因此将讨论选项 1。使用凭据需要提供具有以下应用程序权限的应用程序注册的客户端 ID。
- user_impersonation

或者,您可以登录 az cli 并使用以下命令获取令牌。
az account get-access-token --resource=https://management.azure.com
保护您的服务器租户
首先,您需要确保您的用户不能对任何不受信任的应用程序提供任何同意。导航到活动目录-> 企业应用-> 同意和权限,然后选择“不允许用户同意”和“不允许组所有者同意”。
这将不允许任何用户同意任何应用程序。或者,您甚至可以让用户只同意经过验证的应用程序。

错误和功能问题汇报
如果您遇到错误或有功能请求,请提出问题。
下载地址
GitHub:
https://github.com/TROUBLE-1/Vajra.zip
云中转网盘:
https://yzzpan.com/#sharefile=uYi8CCwS_37247
转载请注明出处及链接