
Расширение Burp Suite для выполнения аутентификации Kerberos
Выпущено как программное обеспечение с открытым исходным кодом компанией NCC Group Plc - http://www.nccgroup.trust/
Разработано Ричардом Тернбуллом, richard [dot] turnbull [at] nccgroup [dot] com
http://www.github.com/nccgroup/Berserko
Выпущено под лицензией AGPL, см. LICENSE для получения дополнительной информации
Дальнейшая разработка Berserko будет осуществляться по адресу https://github.com/rteatea/Berserko
Berserko — это расширение Burp для добавления поддержки аутентификации Kerberos. Это полезно для тестирования в домене Windows, когда аутентификация NTLM не поддерживается (Burp уже умеет работать с NTLM). Для работы Berserko не требуется, чтобы машина, на которой запущен Burp, была включена в домен (или даже чтобы на ней была установлена Windows).
Единственное известное нам существующее решение для тестирования приложений Kerberos с помощью Burp — это организация цепочки через Fiddler с настройкой аутентификации согласно этой инструкции. Но Fiddler работает только в Windows, а использование цепочки прокси добавляет сложности и снижает производительность, поэтому удобно иметь возможность Kerberos прямо внутри Burp.
Получите последний jar-файл Berserko на вкладке Releases или из папки berserko\releases
Перейдите на вкладку Extender в Burp, выберите Add, убедитесь, что в качестве Extension type выбран Java, и укажите путь к jar-файлу. Если всё сделано правильно, в интерфейсе Burp должна появиться вкладка Berserko.
На вкладке Berserko в Burp есть различные элементы управления.
Флажок Do Kerberos authentication является главным переключателем. Пока он не включён, Berserko вообще ничего не делает.
Кнопка Restore defaults возвращает Berserko к конфигурации по умолчанию (в которой нет ни данных о домене, ни учётных данных пользователя).
Кнопка Clear Kerberos state очищает все билеты Kerberos и другое состояние на клиенте. Единственная причина, по которой вам может понадобиться это сделать, — если на серверной стороне были изменены настройки Kerberos и вы хотите начать с чистого состояния.
Кнопка Write tickets to log записывает информацию о ваших текущих билетах Kerberos в поток журнала Berserko — это может быть полезно для отладки/поиска неисправностей. Чтобы увидеть журналы, перейдите на вкладку Extender в Burp, выберите Berserko и посмотрите вкладку Output ниже. Возможно, имеет смысл использовать здесь опцию Save to file, поскольку данные билетов могут легко заполнить буфер журнала в графическом интерфейсе.
У некоторых элементов управления есть кнопка справки, которая открывает дополнительную информацию.
Укажите Domain DNS Name и KDC Host с помощью элементов управления в этом разделе. Текстовые поля нельзя редактировать напрямую; для их изменения необходимо использовать кнопку «Change».
Domain DNS Name должно быть DNS-именем домена, к которому вы хотите выполнить аутентификацию (если быть точным, это Kerberos-область). Оно должно выглядеть примерно так: mydomain.acme.local. Это не должно быть NETBIOS-имя домена (которое выглядело бы примерно так: MYDOMAIN).
KDC Host должен быть именем хоста (или IP-адресом) Kerberos KDC (Key Distribution Center). В домене Windows KDC — это просто контроллер домена.
После указания Domain DNS Name вы можете использовать кнопку Auto, чтобы попытаться автоматически найти KDC. Это делается путём отправки DNS SRV-запроса для службы Kerberos. Если один из ваших DNS-серверов является контроллером домена для нужного домена, это должно сработать. Если нет — не сработает. ❗Эта функциональность не будет работать в последних версиях Burp, поскольку необходимые библиотеки DNS не поставляются в составе встроенной JRE. Вы можете обойти это, запустив Burp под полной JRE, как описано в начале этого README.❗
Когда Domain DNS Name и KDC Host введены, используйте кнопку Test domain settings для проверки подключения. При успехе вы получите ответ Successfully contacted Kerberos service.
См. этот файл для получения дополнительной информации о том, как получить правильные значения для этих Domain Settings.
Укажите Username и Password для учётной записи домена с помощью элементов управления в этом разделе. Текстовые поля нельзя редактировать напрямую; для их изменения необходимо использовать кнопку «Change».
Username должно быть просто именем пользователя. Оно должно выглядеть примерно так: bob. Это не должно быть MYDOMAIN\bob или [email protected] или что-то подобное.
После указания учётных данных вы можете использовать кнопку Test credentials. Она попытается получить билет, выдающий билеты (ticket-granting ticket) Kerberos для указанного пользователя. В случае успеха вы получите ответ TGT successfully acquired. В случае неудачи учтите, что это попытка аутентификации в домене, поэтому будьте осторожны, чтобы не заблокировать свою учётную запись.
Пароль не будет сохранён в конфигурации Berserko до следующего раза, если не установлен флажок Save password in Burp config?. Однако все остальные настройки будут сохранены.
Некоторые приложения используют делегирование Kerberos на серверной стороне для передачи идентификационных данных клиента другим серверам (но со стороны клиента нет простого способа определить, используется ли эта функция).
Berserko поддерживает это, но есть одна загвоздка. Делегирование работает только в том случае, если у пользователя есть forwardable TGT (билет, выдающий билеты). К сожалению, реализация Kerberos в Java не предоставляет возможности программно указать, что должен быть получен перенаправляемый (forwardable) билет. Это можно сделать только путём добавления соответствующей записи в файл конфигурации krb5.conf.
Таким образом, для работы делегирования Berserko необходимо указать подходящий файл krb5.conf, и здесь есть два возможных подхода.