Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
EasyTokens — Kali365 - EvilTokens Replica | Kitploit
Инструменты/GitHubGitHub/secdev02/easytokens
OSINT для социальной инженерииСбор информацииПост-эксплуатацияФишингТестирование на ПроникновениеБезопасность облачных средКомандование и УправлениеАутентификацияRed TeamingСостязательная Атака
GitHubsecdev02/easytokens
7212402 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

EasyTokens

Kali365 - EvilTokens Replica

Репозиторий

EasyTokens

Сервер фишинга с использованием кода устройства для имитации действий злоумышленника. Захватывает токены OAuth Microsoft 365 через поток Device Authorization Grant. Вдохновлен GraphSpy.

Предупреждение — только для авторизованного использования. Этот инструмент предназначен для тестировщиков на проникновение и участников красных команд, действующих на основании явного письменного разрешения. Неправомерное использование может нарушать законы о компьютерном мошенничестве.


Как это работает

  1. Оператор создает кампанию с кодом устройства через интерфейс оператора.
  2. Страница регистрации для жертвы (в стиле «Офис») отображает код пользователя и предлагает цели пройти аутентификацию на microsoft.com/devicelogin.
  3. Фоновый опросчик обнаруживает, когда цель завершает аутентификацию, и сохраняет захваченный токен доступа/обновления в SQLite.
  4. Браузер жертвы перенаправляется на страницу поиска после аутентификации.
  5. Оператор может искать в OneDrive и электронной почте жертвы через Microsoft Graph, используя захваченный токен.

Архитектура

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 по умолчанию) и перезагружает 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 — интерфейс оператора + прямой доступ жертв
  • Страница жертвы (напрямую): http://localhost:3000/
  • Интерфейс оператора: http://localhost:3000/app
  • Доменные кампании: http://<campaign-domain>/ (маршрутизируется через nginx на порту 80)

Захваченные токены и журналы сохраняются в томах Docker:

ТомПуть в контейнереНазначение
easytokens-data/data/easytokens.dbБаза данных SQLite
./logs/logs/Файлы журналов для каждого запроса

Ручная настройка

Требования: Python 3.12+, без сторонних пакетов.

root@kitploit:~
python main_server.py

Переменные окружения


Узел-ретранслятор PHP

Каталог php-relay/ содержит автономный контейнер Apache/PHP, который выступает в качестве распределенного узла для жертв. Он обслуживает ту же страницу регистрации с кодом устройства, что и основной сервер, напрямую опрашивает Microsoft и пересылает захваченные токены на главную панель через POST /webhook.

Как это работает

  1. При запуске checkin.php отправляет POST-запрос к POST /relay/checkin на главную панель, аутентифицируясь с помощью RELAY_SECRET. Панель регистрирует узел и возвращает node_id.
  2. Жертвы переходят на страницу регистрации ретранслятора (index.php), которая инициирует новый поток кода устройства.
  3. JavaScript на стороне браузера опрашивает 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
# Установите MAIN_SERVER_URL на публичный URL панели в .env
docker compose up --build

Настройка общего секрета

  1. Сгенерируйте секрет: openssl rand -hex 32
  2. Установите RELAY_SECRET=<секрет> в EasyTokens/.env (будет подхвачен главной панелью через docker-compose.yml)
  3. Установите то же значение в php-relay/.env

База данных

Две таблицы в базе данных SQLite:

  • 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
ПеременнаяПо умолчаниюОписание
PORT3000Порт прослушивания для Python-сервера
PORT_MAX3010Верхняя граница диапазона портов, открываемых Docker
DB_PATH/data/easytokens.dbПуть к базе данных SQLite
LOG_DIR/logsКаталог журналов для каждого запроса
NGINX_CONF/etc/nginx/conf.d/easytokens.confПуть, куда nginx_helper записывает сгенерированную конфигурацию; установите '' для отключения
NGINX_RELOAD_CMDnginx -s reloadКоманда оболочки для перезагрузки nginx после изменений конфигурации; установите '' для отключения
RELAY_SECRET(не установлено)Общий секрет для аутентификации узлов-ретрансляторов. Сгенерируйте с помощью openssl rand -hex 32. Должен совпадать с RELAY_SECRET в php-relay/.env. Оставьте неустановленным для отключения поддержки ретрансляции.
ПеременнаяПо умолчаниюОписание
MAIN_SERVER_URLhttp://easytokens:3000URL главной панели, доступный из контейнера ретранслятора
RELAY_SECRET(обязательно)Должен совпадать с RELAY_SECRET на главной панели
RELAY_PORT8082Хост-порт для открытия ретранслятора
RELAY_LABELимя хостаЧеловекочитаемое имя, отображаемое на панели для этого узла
CHECKIN_RETRIES10Количество попыток повторной регистрации до отказа
CHECKIN_DELAY5Секунды между попытками повторной регистрации
NODE_ID_FILE/tmp/relay_node_idПуть, где кэшируется node_id после регистрации
ПолеЗначение
ID клиентаd3590ed6-52b3-4102-aeff-aad2292ab01c (Microsoft Office)
Ресурсhttps://graph.microsoft.com
Областиopenid profile email offline_access Mail.Read Files.Read
URL кода устройстваhttps://login.microsoftonline.com/common/oauth2/devicecode
URL токенаhttps://login.microsoftonline.com/Common/oauth2/token