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

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

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

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

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

Категории

Все категории
Loading categories
Kerbeus-BOF — BOF для злоупотребления Kerberos (реализация некоторых важных функций Rubeus). | Kitploit
Инструменты/GitHubGitHub/ralfhacker/kerbeus-bof
Повышение привилегийАтаки на ПаролиЭксплуатацияЛатеральное перемещениеПост-эксплуатацияТестирование на ПроникновениеКомандование и УправлениеАутентификацияRed Teaming
GitHubralfhacker/kerbeus-bof

Kerbeus-BOF

BOF для злоупотребления Kerberos (реализация некоторых важных функций Rubeus).

603779 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

Kerbeus-BOF


Beacon Object Files для атак на Kerberos. Это реализация некоторых важных функций проекта Rubeus, написанная на C. Проект поддерживает интеграцию с C2-фреймворками Cobalt Strike, Havoc, AdaptixC2 и Outflank C2.

Запросы и обновление билетов

asktgt

Действие asktgt формирует сырой трафик AS-REQ (запрос TGT) для указанного пользователя и ключа шифрования (/rc4 или /aes256). Также можно использовать флаг /password вместо хеша — в этом случае /enctype:X по умолчанию будет RC4. Если не указан /domain, извлекается текущий домен компьютера; если не указан /dc, аналогично определяется текущий контроллер домена. При успешной аутентификации парсится полученный AS-REP и выводится KRB-CRED (файл .kirbi, содержащий TGT пользователя) в виде base64-строки. Флаг /ptt выполняет «передачу билета» (pass-the-ticket) и применяет полученные учетные данные Kerberos к текущему сеансу входа. Также важное замечание по OPSEC: в текущий сеанс можно применить только один TGT за раз, поэтому при использовании /ptt предыдущий TGT затирается.

Для формирования AS-REQ, более похожих на настоящие запросы, можно использовать флаг /opsec. Он сначала отправляет начальный AS-REQ без предаутентификации; если он успешен, полученный AS-REP расшифровывается и возвращается TGT, иначе отправляется AS-REQ с предаутентификацией.

Запрос TGT без PAC выполняется с помощью ключа /nopac. Флаг /nopreauth позволяет отправить AS-REQ без предаутентификации.

root@kitploit:~
krb_asktgt /user:USER /password:PASSWORD [/domain:DOMAIN] [/dc:DC] [/enctype:{rc4|aes256}] [/ptt] [/nopac] [/opsec]
krb_asktgt /user:USER /aes256:HASH [/domain:DOMAIN] [/dc:DC] [/ptt] [/nopac] [/opsec]
krb_asktgt /user:USER /rc4:HASH [/domain:DOMAIN] [/dc:DC] [/ptt] [/nopac]
krb_asktgt /user:USER /nopreauth [/domain:DOMAIN] [/dc:DC] [/ptt]

asktgs

Действие asktgs формирует/парсит сырой TGS-REQ/TGS-REP (запрос сервисного билета) с использованием указанного TGT /ticket:X. Это значение должно быть base64-кодировкой файла .kirbi. Если не указан /dc, извлекается текущий контроллер домена компьютера и используется как адрес для трафика запроса. Флаг /ptt выполняет «передачу билета» и применяет полученный сервисный билет к текущему сеансу входа. Необходимо указать один или несколько SPN /service:X через запятую.

Поддерживаемые типы шифрования в формируемом TGS-REQ: RC4_HMAC и AES256_CTS_HMAC_SHA1. В этом случае KDC выберет наиболее высокий взаимно поддерживаемый тип шифрования для возвращаемого сервисного билета. Если нужно принудительно использовать ключи RC4 или AES256, укажите /enctype:[rc4 or aes256].

Для формирования TGS-REQ, более похожих на настоящие запросы, можно использовать флаг /opsec. Это также приведет к автоматической отправке дополнительного TGS-REQ при запросе сервисного билета для учетной записи, настроенной на неограниченное делегирование.

Флаг /u2u реализован для запроса билетов «пользователь-пользователь» (User-to-User). Вместе с аргументом /tgs:X (используется для передачи TGT целевой учетной записи), аргумент /service:X может быть именем пользователя, для которого предназначен переданный TGT (через аргумент /tgs:X). Аргумент /targetuser:X запрашивает PAC любой другой учетной записи, вставляя раздел данных PA-FOR-USER с именем «целевого пользователя».

Флаг /keyList реализован для запросов списка ключей Kerberos. Такие запросы должны использовать поддельный частичный TGT от контроллера домена, доступного только для чтения, в параметре /ticket:BASE64. Кроме того, поле /spn:x должно быть установлено в SPN KRBTGT в домене, например, KRBTBT/domain.local.

root@kitploit:~
krb_asktgs /ticket:BASE64 /service:SPN1,SPN2,... [/domain:DOMAIN] [/dc:DC] [/tgs:BASE64] [/targetdomain:DOMAIN] [/targetuser:USER] [/enctype:{rc4|aes256}] [/ptt] [/keylist] [/u2u] [/opsec]

renew

Действие renew формирует/парсит сырой обмен TGS-REQ/TGS-REP для продления TGT с использованием указанного /ticket:X. Это значение должно быть base64-кодировкой файла .kirbi. Если не указан /dc, извлекается текущий контроллер домена компьютера и используется как адрес для трафика продления. Флаг /ptt выполняет «передачу билета» и применяет полученные учетные данные Kerberos к текущему сеансу входа.

root@kitploit:~
krb_renew /ticket:BASE64 [/dc:DC] [/ptt]

Атака на ограниченное делегирование

Если учетная запись (пользователя или компьютера) настроена на ограниченное делегирование (т.е. имеет значение SPN в поле msds-allowedtodelegateto), это действие можно использовать для злоупотребления доступом к целевому SPN/серверу.

Краткое объяснение: учетная запись с ограниченным делегированием может запрашивать билеты для себя от имени любого пользователя — этот процесс известен как S4U2self. Для этого учетная запись должна иметь включенное свойство TrustedToAuthForDelegation в атрибуте userAccountControl, которое по умолчанию могут изменять только привилегированные пользователи. Такой билет имеет флаг FORWARDABLE по умолчанию. Затем служба может использовать этот специально запрошенный билет для запроса сервисного билета для любого имени участника службы (SPN), указанного в поле msds-allowedtodelegateto учетной записи. Короче говоря, если вы контролируете учетную запись с установленным TrustedToAuthForDelegation и значением в msds-allowedtodelegateto, вы можете выдавать себя за любого пользователя в домене для SPN, указанных в поле msds-allowedtodelegateto этой учетной записи.

Билет S4U2self затем может быть использован как параметр /tgs:Y (base64-строка) для выполнения процесса S4U2proxy. Необходимо указать допустимое значение msds-allowedtodelegateto для учетной записи (/service:X).

Параметр /altservice позволяет подставить любое имя службы в результирующий файл KRB-CRED. Можно указать одно или несколько альтернативных имен служб через запятую (/altservice:cifs,HOST,...).

Для формирования TGS-REQ, более похожих на настоящие запросы, можно использовать флаг /opsec.

В определенных обстоятельствах можно использовать билет S4U2Self для выдачи себя за защищенных пользователей с целью повышения привилегий на запрашивающей системе, как описано здесь. Для этого можно использовать флаг /self и аргумент /altservice:X для создания используемого сервисного билета.

Для подделки реферала S4U2Self требуется только ключ доверия. Используя аргумент /targetdomain:X с флагом /self и без аргумента /targetdc, билет, переданный с /ticket:X, будет рассматриваться как реферал S4U2Self, и будет запрошен только итоговый сервисный билет S4U2Self. /altservice:X также может использоваться для перезаписи sname в результирующем билете.

root@kitploit:~
krb_s4u /ticket:BASE64 /service:SPN {/impersonateuser:USER | /tgs:BASE64} [/domain:DOMAIN] [/dc:DC] [/altservice:SERVICE] [/ptt] [/nopac] [/opsec] [/self]
krb_cross_s4u /ticket:BASE64 /service:SPN /targetdomain:DOMAIN /targetdc:DC {/impersonateuser:USER | /tgs:BASE64} [/domain:DOMAIN] [/dc:DC] [/altservice:SERVICE] [/nopac] [/self]

Управление билетами

ptt

Действие ptt отправляет /ticket:X (TGT или сервисный билет) для текущего сеанса входа через API LsaCallAuthenticationPackage() с сообщением KERB_SUBMIT_TKT_REQUEST или (если запущено с повышенными привилегиями) для сеанса входа, указанного через /luid:ea4... Как и другие параметры /ticket:X, значение может быть base64-кодировкой файла .kirbi.

root@kitploit:~
krb_ptt /ticket:BASE64 [/luid:LOGONID]

purge

Действие purge очищает все билеты Kerberos из текущего сеанса входа или (с повышенными привилегиями) из сеанса, указанного через /luid:0xA...

root@kitploit:~
krb_purge [/luid:LOGONID]

describe

Действие describe принимает значение /ticket:X (TGT или сервисный билет), парсит его и выводит описание полей билета. Как и другие параметры /ticket:X, значение может быть base64-кодировкой файла .kirbi.

root@kitploit:~
krb_describe /ticket:BASE64

klist

Действие klist выводит подробную информацию о сеансе входа текущего пользователя и билетах Kerberos (если не запущено с повышенными привилегиями). При запуске из повышенного контекста (SYSTEM) отображается информация обо всех сеансах входа и связанных билетах Kerberos. Информацию о сеансе и билетах можно отфильтровать по конкретному LogonID с помощью /luid:3ea.. (если запущено с повышенными привилегиями).

root@kitploit:~
krb_klist [/luid:LOGINID] [/user:USER] [/service:SERVICE] [/client:CLIENT]

dump

Действие dump извлекает текущие TGT и сервисные билеты, если запущено из повышенного контекста (SYSTEM). Если без повышения, извлекаются сервисные билеты текущего пользователя.

root@kitploit:~
krb_dump [/luid:LOGINID] [/user:USER] [/service:SERVICE] [/client:CLIENT]

triage

Действие triage выводит таблицу билетов Kerberos текущего пользователя (если не запущено с повышенными привилегиями). При запуске из повышенного контекста (SYSTEM) отображается таблица всех билетов Kerberos в системе.

root@kitploit:~
krb_triage [/luid:LOGINID] [/user:USER] [/service:SERVICE] [/client:CLIENT]

фильтры

Для klist, triage и dump билеты можно фильтровать по /luid, /service и /client.

Требуется контекст SYSTEM.

tgtdeleg

Действие tgtdeleg злоупотребляет API Kerberos GSS-API для получения используемого TGT текущего пользователя без необходимости повышения привилегий на хосте. Функция AcquireCredentialsHandle() используется для получения дескриптора к учетным данным Kerberos текущего пользователя, а InitializeSecurityContext() с флагом ISC_REQ_DELEGATE и целевым SPN CIFS/DC.domain.com подготавливает фиктивный контекст делегирования для отправки на контроллер домена. Это приводит к тому, что в выводе GSS-API появляется AP-REQ, содержащий KRB_CRED в контрольной сумме аутентификатора. Ключ сеанса сервисного билета извлекается из локального кэша Kerberos и используется для расшифровки KRB_CRED в аутентификаторе, в результате чего получается используемый TGT .kirbi.

Если автоматическое извлечение цели/домена не удаётся, можно указать известный SPN службы, настроенной на неограниченное делегирование, с помощью /target:SPN.

root@kitploit:~
krb_tgtdeleg [/target:SPN]

Роастинг (Roasting)

kerberoasting

Kerberoasting используется для запроса соответствующего сервисного билета. Аргумент /ticket:X задает TGT пользователя домена. Аргумент /spn:X задает целевой SPN. Аргументы /domain и /dc необязательны и, как и в других действиях, извлекают системные значения по умолчанию.

Аргумент /nopreauth:USER попытается отправить AS-REQ с сервисным SPN, переданным в /spn:Y, для запроса сервисных билетов.

root@kitploit:~
krb_kerberoasting /spn:SPN [/nopreauth:USER] [/dc:DC] [/domain:DOMAIN]
krb_kerberoasting /spn:SPN /ticket:BASE64 [/dc:DC]

asreproasting

Если у пользователя домена не включена предварительная аутентификация Kerberos, можно успешно запросить AS-REP для этого пользователя и взломать часть структуры в офлайн-режиме (аналогично kerberoasting). Аргумент /user:X задает целевого пользователя. Аргументы /domain и /dc необязательны и, как и в других действиях, извлекают системные значения по умолчанию.

root@kitploit:~
krb_asreproasting /user:USER [/dc:DC] [/domain:DOMAIN]

Разное

hash

Действие hash принимает /password:X и, опционально, /user:USER и/или /domain:DOMAIN. Оно генерирует представление пароля в виде rc4_hmac (NTLM). Если указаны имена пользователя и домена, также генерируются хеши aes128_cts_hmac_sha1 и aes256_cts_hmac_sha1. Имена пользователя и домена используются как соль для AES-реализаций.

root@kitploit:~
krb_hash /password:PASSWORD [/user:USER] [/domain:DOMAIN]

changepw

Действие changepw принимает TGT пользователя в виде blob .kirbi и выполняет смену пароля по протоколу MS kpasswd с указанным значением /new:PASSWORD. Если не указан /dc, извлекается текущий контроллер домена компьютера и используется как адрес для трафика сброса пароля.

Аргументы /targetuser и /targetdomain могут использоваться для смены пароля других пользователей, если у пользователя, чей TGT используется, достаточно привилегий.

Обратите внимание: для смены пароля можно использовать как TGT пользователя, так и сервисный билет для kadmin/changepw.

root@kitploit:~
krb_changepw /ticket:BASE64 /new:PASSWORD [/dc:DC] [/targetuser:USER] [/targetdomain:DOMAIN]

TODO

  • Реализовать asktgt /cert:...
  • Рефакторинг кода для уменьшения размера BOF
  • Расширить вывод describe
  • Если что-то нужно, пишите мне в X или TG :)

Благодарности

  • Rubeus - https://github.com/GhostPack/Rubeus
  • CS-Situational-Awareness-BOF - https://github.com/trustedsec/CS-Situational-Awareness-BOF
  • nanorobeus - https://github.com/wavvs/nanorobeus
Скачать инструмент