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)。