Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
EasyTokens — Kali365 - EvilTokens 复制品 | Kitploit
工具/GitHubGitHub/secdev02/easytokens
社会工程学OSINT信息收集后渗透利用钓鱼攻击渗透测试云安全命令与控制身份验证红队对抗性攻击
GitHubsecdev02/easytokens

EasyTokens

Kali365 - EvilTokens 复制品

72121个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

EasyTokens

一个用于对手模拟的设备代码钓鱼服务器。通过设备授权许可流程捕获 Microsoft 365 OAuth 令牌。灵感来源于 GraphSpy。

警告——仅限授权使用。 本工具面向在明确书面授权下操作的渗透测试人员和红队成员。滥用可能导致违反计算机欺诈法律。


工作原理

  1. 操作员通过操作员界面创建一个设备代码活动。
  2. 面向受害者的注册页面(Dunder Mifflin 主题)显示用户代码,并提示目标在 microsoft.com/devicelogin 进行身份验证。
  3. 后台轮询器检测到目标完成身份验证后,将捕获的访问/刷新令牌存储到 SQLite 中。
  4. 受害者的浏览器被重定向到认证后的搜索页面。
  5. 操作员可以使用捕获的令牌通过 Microsoft Graph 搜索受害者的 OneDrive 和邮件。

架构

Python 后端(每个活动一个端口)+ nginx 前端 + SQLite 持久化。

root@kitploit:~
main_server.py          ← 统一入口点(运行此文件)
db.py                   ← SQLite 持久化层
html_enroll.py          ← 受害者注册页面构建器
html_search.py          ← 受害者认证后搜索页面构建器
css_shared.py           ← 操作员界面共享 CSS
nginx_helper.py         ← 自动生成并重新加载 nginx 反向代理配置
nginx.conf              ← 基础 nginx 配置(包含 /etc/nginx/conf.d/*.conf)

路由


Nginx——域名活动

当创建活动时设置了域名,nginx_helper.py 会自动向 NGINX_CONF(默认为 /etc/nginx/conf.d/easytokens.conf)写入一个基于域名的 server 块,并重新加载 nginx。针对该域名到达端口 80 的受害者流量会被代理到正确的 Python 服务器实例。

  • 未设置域名的活动直接在 Python 端口(默认 3000)上提供服务。
  • 设置了域名的活动通过端口 80 上的 nginx 提供服务。
  • 基础 nginx.conf 会丢弃 Host 头不匹配已知活动的任何请求(return 444),防止意外暴露 Python 后端。
  • 将 NGINX_CONF='' 或 NGINX_RELOAD_CMD='' 设置为空可禁用自动 nginx 管理。

快速开始(Docker)

root@kitploit:~
docker compose up --build

Docker 暴露的端口:

端口用途
80nginx——基于域名的受害者流量
3000Python——操作员界面 + 直接受害者访问
  • 受害者页面(直接访问):http://localhost:3000/
  • 操作员界面:http://localhost:3000/app
  • 域名活动:http://<campaign-domain>/(通过端口 80 的 nginx 路由)

捕获的令牌和日志持久化到 Docker 卷:

卷容器内路径用途
easytokens-data/data/easytokens.dbSQLite 数据库
./logs/logs/每次请求的日志文件

手动设置

要求: Python 3.12+,无需第三方包。

root@kitploit:~
python main_server.py

环境变量


PHP 中继节点

php-relay/ 目录包含一个独立的 Apache/PHP 容器,作为面向受害者的分布式节点。它提供与主服务器相同的设备代码注册页面,直接轮询 Microsoft,并通过 POST /webhook 将捕获的令牌转发到主面板。

工作原理

  1. 启动时,checkin.php 向主面板的 POST /relay/checkin 发送 POST 请求,使用 RELAY_SECRET 进行身份验证。面板注册该节点并返回一个 node_id。
  2. 受害者浏览到中继节点的注册页面(index.php),该页面发起一个新的设备代码流程。
  3. 浏览器端的 JS 轮询 poll.php。捕获到令牌时,poll.php 将其转发到主面板的 POST /webhook,并附带 node_id 标记。

中继环境变量

在 php-relay/.env 中配置:

快速开始

同时启动两个容器(推荐):

root@kitploit:~
# 在 EasyTokens/ 目录下
docker compose -f docker-compose.yml -f php-relay/docker-compose.yml up --build

使用单个 -f 合并启动会使它们处于同一 Docker 网络,因此 MAIN_SERVER_URL=http://easytokens:3000 能正确解析。

访问:

URL用途
http://localhost:8082/中继节点受害者注册页面
http://localhost:3000/app/nodes操作员查看已注册中继节点

仅启动中继节点(远程面板):

root@kitploit:~
cd php-relay
# 在 .env 中将 MAIN_SERVER_URL 设置为公共面板 URL
docker compose up --build

共享密钥设置

  1. 生成密钥:openssl rand -hex 32
  2. 在 EasyTokens/.env 中设置 RELAY_SECRET=<secret>(通过 docker-compose.yml 被主面板读取)
  3. 在 php-relay/.env 中设置相同的值

数据库

SQLite 数据库中的两个表:

  • tokens —— 所有捕获的访问/刷新令牌(UPN、访问令牌、刷新令牌、ID 令牌、作用域、来源、捕获时间戳)
  • device_codes —— 操作员发起的活动(用户代码、设备代码、验证 URL、状态、关联令牌 ID、端口、域名)

Microsoft OAuth 详情


许可证

MIT —— 版权所有(c)2026 Casey Smith

下载工具
方法路径受众描述
GET/受害者设备代码注册页面(Dunder Mifflin 主题)
POST/poll受害者(JS)轮询 MS 令牌端点;成功时存储令牌
GET/search?s=<id>受害者认证后的 OneDrive/邮件搜索页面
GET/app操作员仪表板——统计信息与最近捕获内容
GET/app/device-codes操作员所有活动及实时轮询状态
POST/app/device-codes/new操作员创建新的设备代码活动
GET/app/tokens操作员所有捕获的令牌
GET/app/search?id=<id>操作员针对特定令牌的 OneDrive + 邮件搜索
POST/webhook中继节点从已验证的中继节点接收令牌
POST/relay/checkin中继节点注册中继节点;返回 node_id
变量默认值描述
PORT3000Python 服务器监听端口
PORT_MAX3010Docker 暴露的端口范围上限
DB_PATH/data/easytokens.dbSQLite 数据库路径
LOG_DIR/logs每次请求的日志目录
NGINX_CONF/etc/nginx/conf.d/easytokens.confnginx_helper 写入生成配置的路径;设为 '' 以禁用
NGINX_RELOAD_CMDnginx -s reload配置更改后重新加载 nginx 的 Shell 命令;设为 '' 以禁用
RELAY_SECRET(未设置)中继节点身份验证的共享密钥。使用 openssl rand -hex 32 生成。必须与 php-relay/.env 中的 RELAY_SECRET 匹配。留空以禁用中继支持。
变量默认值描述
MAIN_SERVER_URLhttp://easytokens:3000主面板 URL,从中继容器内部可访问
RELAY_SECRET(必需)必须与主面板的 RELAY_SECRET 匹配
RELAY_PORT8082暴露中继节点的主机端口
RELAY_LABEL主机名面板上为该节点显示的人类可读名称
CHECKIN_RETRIES10放弃前的签到重试次数
CHECKIN_DELAY5签到重试间隔秒数
NODE_ID_FILE/tmp/relay_node_id签到后缓存 node_id 的路径
字段值
客户端 IDd3590ed6-52b3-4102-aeff-aad2292ab01c (Microsoft Office)
资源https://graph.microsoft.com
作用域openid profile email offline_access Mail.Read Files.Read
设备代码 URLhttps://login.microsoftonline.com/common/oauth2/devicecode
令牌 URLhttps://login.microsoftonline.com/Common/oauth2/token