Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
EasyTokens — Kali365 - EvilTokens Replica | Kitploit
ツール/GitHubGitHub/secdev02/easytokens
ソーシャルエンジニアリング用OSINT情報収集ポストエクスプロイトフィッシングペネトレーションテストクラウドセキュリティコマンド&コントロール認証レッドチーミング敵対的攻撃
GitHubsecdev02/easytokens

EasyTokens

7212402ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Kali365 - EvilTokens Replica

リポジトリを見る

EasyTokens

デバイスコードフィッシングサーバー。敵対的エミュレーション用。Microsoft 365 OAuthトークンをDevice Authorization Grantフローでキャプチャします。GraphSpyに触発されました。

警告 — 許可された使用のみ。 このツールは、明示的な書面による許可を得たペネトレーションテスターおよびレッドチームメンバーを対象としています。誤用はコンピュータ不正使用法に違反する可能性があります。


仕組み

  1. オペレーターはオペレーターUIを介してデバイスコードキャンペーンを作成します。
  2. 被害者向けの登録ページ(ダンダー・ミフリンをテーマ)にユーザーコードが表示され、ターゲットにmicrosoft.com/deviceloginでの認証を促します。
  3. バックグラウンドのポーラーがターゲットの認証完了を検出し、取得したアクセス/リフレッシュトークンをSQLiteに保存します。
  4. 被害者のブラウザは認証後の検索ページにリダイレクトされます。
  5. オペレーターはキャプチャしたトークンを使用して、Microsoft Graphを介して被害者のOneDriveやメールを検索できます。

アーキテクチャ

Pythonバックエンド(キャンペーンごとに1ポート) + nginxフロントエンド + SQLite永続化。

root@kitploit:~
main_server.py          ← 統一エントリポイント(これを実行)
db.py                   ← SQLite永続化レイヤー
html_enroll.py          ← 被害者登録ページビルダー
html_search.py          ← 被害者認証後検索ページビルダー
css_shared.py           ← オペレーターUI用共有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)にドメインごとのサーバーブロックを書き込み、nginxをリロードします。そのドメインへのポート80に到着した被害者トラフィックは、正しいPythonサーバーインスタンスにプロキシされます。

  • ドメインなしのキャンペーンはPythonポート(デフォルト3000)で直接提供されます。
  • ドメインありのキャンペーンはnginx経由でポート80で提供されます。
  • ベースのnginx.confは、Hostヘッダーが既知のキャンペーンと一致しないリクエストをドロップし(return 444)、Pythonバックエンドの偶発的な露出を防ぎます。
  • NGINX_CONF=''またはNGINX_RELOAD_CMD=''を設定して自動nginx管理を無効にします。

クイックスタート(Docker)

root@kitploit:~
docker compose up --build

Dockerが公開するポート:

ポート目的
80nginx — ドメインベースの被害者トラフィック
3000Python — オペレーターUI + 直接の被害者アクセス
  • 被害者ページ(直接): http://localhost:3000/
  • オペレーターUI: http://localhost:3000/app
  • ドメインキャンペーン: http://<campaign-domain>/ (nginx経由でポート80にルーティング)

キャプチャされたトークンとログは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はそれをnode_idタグ付きでメインパネルのPOST /webhookに転送します。

リレー環境変数

php-relay/.envで設定:

クイックスタート

両方のコンテナを同時に(推奨):

root@kitploit:~
# from EasyTokens/
docker compose -f docker-compose.yml -f php-relay/docker-compose.yml up --build

両方を1つの-fマージで実行すると、同じDockerネットワーク上に配置されるため、MAIN_SERVER_URL=http://easytokens:3000が正しく解決されます。

アクセス:

URL目的
http://localhost:8082/リレー被害者登録ページ
http://localhost:3000/app/nodes登録されたリレーノードのオペレーター表示

リレーのみ(リモートパネル):

root@kitploit:~
cd php-relay
# Set MAIN_SERVER_URL to the public panel URL in .env
docker compose up --build

共有シークレットの設定

  1. シークレットを生成: openssl rand -hex 32
  2. EasyTokens/.env に RELAY_SECRET=<secret> を設定(docker-compose.yml 経由でメインパネルに反映されます)
  3. php-relay/.env にも同じ値を設定

データベース

SQLiteデータベース内の2つのテーブル:

  • tokens — キャプチャされたすべてのアクセス/リフレッシュトークン(UPN、アクセストークン、リフレッシュトークン、IDトークン、スコープ、ソース、キャプチャタイムスタンプ)
  • device_codes — オペレーターが開始したキャンペーン(ユーザーコード、デバイスコード、検証URL、ステータス、リンクされたトークンID、ポート、ドメイン)

Microsoft OAuth詳細


ライセンス

MITライセンス — Copyright (c) 2026 Casey Smith

ツールをダウンロード
メソッドパス対象説明
GET/被害者デバイスコード登録ページ(ダンダー・ミフリンテーマ)
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をリロードするシェルコマンド;''に設定すると無効
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_idnode_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