nromsdahl/squarephish2

GitHub: nromsdahl/squarephish2

SquarePhish 2.0 是一个 OAuth 设备代码钓鱼工具,用于模拟攻击以测试身份验证系统的安全性。

Stars: 126 | Forks: 18

SquarePhish 2.0

SquarePhish 是一个高级钓鱼工具,它结合了 OAuth 设备代码认证流程和二维码技术。

攻击流程

### 步骤 1:二维码邮件 攻击者将向受害者发送一封初始邮件,其中包含一个指向 SquarePhish 服务器的二维码。其理念是等到用户主动查阅邮件后,我们再触发具有 15 分钟过期窗口的 OAuth 设备代码流程。
``` 2025-04-20 02:29:30 INFO Email sent to victim(s): minnow@victim.com ``` ### 步骤 2:受害者扫描二维码 然后,受害者使用他们的移动设备扫描邮件正文中找到的二维码。该二维码会将受害者定向到攻击者控制的 SquarePhish 服务器,并带有一个设置为其电子邮件地址的 URL 参数。一旦 SquarePhish 服务器接收到传入的二维码扫描请求,受害者将被自动重定向到 Microsoft。 ### 步骤 3:启动设备代码流程 当 SquarePhish 服务器接收到传入的二维码扫描请求时,OAuth 设备代码认证流程随即启动。检索到的“用户代码”随后通过电子邮件发送给受害者,并指示他们将代码输入到合法的 Microsoft 设备代码网站中。 邮件发送给受害者后,一个后台线程将继续轮询 Microsoft 设备代码端点以获取有效认证。此轮询将持续直到设备代码过期(15 分钟)。
``` 2025-04-20 02:29:34 INFO [minnow@victim.com] Link triggered 2025-04-20 02:29:34 INFO [minnow@victim.com] Initializing device code flow... 2025-04-20 02:29:34 INFO [minnow@victim.com] Client ID: 29d9ed98-a469-4536-ade2-f981bc1d605e 2025-04-20 02:29:34 INFO [minnow@victim.com] Scope: .default offline_access profile openid ``` ### 步骤 4:受害者认证 受害者收到包含设备用户代码的第二封邮件。然后,受害者输入代码,并在 Microsoft 的设备代码页面上继续完成认证过程。 一旦发生有效认证,后台轮询将检索并保存访问令牌和刷新令牌数据。
``` 2025-04-20 02:29:40 INFO [minnow@victim.com] Polling for user authentication... 2025-04-20 02:29:40 INFO [minnow@victim.com] Polling for user authentication... 2025-04-20 02:29:40 INFO [minnow@victim.com] Authentication successful 2025-04-20 02:29:40 INFO [minnow@victim.com] Token retrieved and saved to database ```

安装说明

**要求:** Python 3.9+,Chrome/Chromium(需安装 chromedriver,用于自动获取认证 URL) ``` # 安装依赖项 pip install -e . # 或从 requirements.txt 安装 pip install -r requirements.txt ```

使用方法

``` usage: squarephish [-h] [-c CONFIG] [-v] [--version] options: -h, --help show this help message and exit -c, --config CONFIG Path to the config file (default: config.json) -v, --verbose Enable verbose logging --version show program's version number and exit example: python -m squarephish --config config.json -v ``` 修改包含的配置文件 `config.json` 或使用以下模板: ``` { "dashboard_server": { "listen_url": "127.0.0.1:8080", "cert_path": "", "key_path": "", "use_tls": false }, "phish_server": { "listen_url": "0.0.0.0:8443", "cert_path": "server.crt", "key_path": "server.key", "use_tls": true } } ```

仪表板

仪表板视图允许操作者查看与当前活动相关的简单指标。指标包括已发送邮件数、已扫描二维码数以及检索到的凭证列表。每个凭证可以在一个新标签页中作为 JSON 对象查看。

配置

配置页面允许操作者设置 SquarePhish 的核心设置。需要配置以下设置: - SMTP 主机和凭据 - SquarePhish 服务器设置(用于生成初始二维码) - 所有邮件(二维码邮件和设备代码邮件)的主题和发件人 - 设备代码邮件正文模板(当二维码被扫描时自动使用)


发送邮件

发送邮件页面允许操作者指定收件人和初始二维码邮件模板。然后,操作者可以向所有收件人发送邮件。

自动获取认证 URL

其中包含一个来自 [@denniskniep](https://github.com/denniskniep) 的 [DeviceCodePhishing](https://github.com/denniskniep/DeviceCodePhishing) PoC 中的函数,该函数可以根据生成的设备代码自动检索认证 URL。这项技术消除了向受害者发送包含设备代码的第二封邮件的需要。相反,一旦二维码被扫描或 URL 被点击,受害者将被自动重定向到给定 OAuth 流程的认证页面。

主要刷新令牌

当使用 `Microsoft Authentication Broker` 客户端 ID 时,攻击者可以获取返回的刷新令牌,并使用包含的 [gimmePRT](scripts/gimmePRT/) Python 工具将其转换为主要刷新令牌。

自定义话术

目前,SquarePhish 提供了几个话术参考模板,可以在 [pretexts](pretexts/) 文件夹中找到。 - **二维码邮件**:包含 `` 用于插入二维码图片。 - **ASCII 二维码邮件**:包含 `{QR_CODE}` 用于插入二维码图片。 - **设备代码邮件**:包含 `{DEVICE_CODE}` 用于插入设备用户代码。

SquarePhish 1.0

SquarePhish 的原始版本(使用 Python 编写)[托管在此处](https://github.com/secureworks/SquarePhish)。
标签:ESC8, Microsoft认证攻击, OAuth钓鱼, QR码钓鱼, 代码生成, 渗透测试工具, 电子邮件诈骗, 社会工程学, 移动设备安全, 网络安全, 网络攻击工具, 认证绕过, 设备代码流, 身份验证攻击, 逆向工具, 隐私保护