
собирать собирать собирать
собирай, собирай, собирай

Jackdaw предназначен для сбора всей информации в вашем домене, хранения её в SQL-базе данных и отображения красивых графиков того, как объекты вашего домена взаимодействуют друг с другом и как потенциальный злоумышленник может использовать эти взаимодействия. Также он имеет удобную функцию для помощи в проекте по взлому паролей: хранение/поиск/отчёты по хэшам/паролям/пользователям.
dbinitenum. Это можно сделать автоматически в Windows двойным щелчком по исполняемому файлу или вводом jackdaw.exe auto.nest для веб-интерфейса. По умолчанию он доступен по адресу http://127.0.0.1:5000/nest, также есть API с документацией SWAGGER по адресу http://127.0.0.1:5000/ui.Этот раздел будет регулярно обновляться на основе отзывов пользователей.
Здесь советов нет, хотя некоторые улучшения можно внести в код, но ничего такого, что мог бы сделать обычный пользователь.
Генерация файла кэша данных графа должна быть выполнена для каждого графа один раз (и только один раз), что может занять много времени при использовании стандартного инструмента sqlalchemy.
Производительность и скорость могут быть значительно улучшены (более чем в 50 раз по скорости и в 20 раз меньше по памяти), если использовать бэкенд sqlite И поместить утилиту командной строки «sqlite3» где-нибудь в PATH. Я рекомендую это каждому пользователю.
Теперь наступает часть с большим компромиссом. В ранних реализациях Jackdaw использовал модуль networkx в качестве бэкенда графа, поскольку он полностью написан на Python. Но это приводило к значительным затратам памяти и скорости. Чтобы сохранить Jackdaw чисто Python, эта опция всё ещё существует, однако использование бэкенда igraph теперь является стандартным.
Примечание: igraph — это библиотека на C++ с привязками Python. У неё есть предварительно скомпилированные колеса для Windows и основных дистрибутивов Linux, но если вы используете Jackdaw на чём-то другом (встраиваемые системы, мобильные телефоны, веб-браузеры), вам придётся либо вернуться к networkx, либо страдать от многочасовой компиляции.
Нет необходимости предварительно инициализировать базу данных, это будет сделано автоматически.
Используя распространяемый бинарный файл, вы можете просто дважды щелкнуть на jackdaw.exe
При использовании в качестве Python-скрипта: jackdaw auto
jackdaw --sql sqlite:///<full path here>/test.db dbinit
В СИСТЕМАХ LINUX <полный путь> включает первый /, поэтому у вас будет //// четыре (4) косые черты перед именем файла. Не пугайтесь.
jackdaw --sql sqlite:///test.db enum 'ldap+sspi-ntlm://<domain>\<placeholder>@10.10.10.2' 'smb+sspi-ntlm://<domain>\<placeholder>@10.10.10.2'
Пароль: Passw0rd!
jackdaw --sql sqlite:///test.db enum 'ldap+ntlm-password://TEST\victim:[email protected]' 'smb+ntlm-password://TEST\victim:[email protected]'
Пароль: Passw0rd!
jackdaw --sql sqlite:///test.db ldap 'ldap+ntlm-password://TEST\victim:[email protected]'
jackdaw --sql sqlite:///<FULL PATH TO DB> nest
Откройте http://127.0.0.1:5000/ui для API
Пожалуйста, обратитесь к разделу «Сборка UI» ниже, чтобы узнать, как собрать интерфейс. После сборки:
Откройте http://127.0.0.1:5000/nest для интерфейса графа (показывает граф, но далёк от работоспособности)
Фаза перечисления LDAP собирает данные об объектах AD: пользователи, компьютеры, OU, группы, которые будут представлены в виде узлов графа и отдельных таблиц в БД. Кроме того, будет разобран дескриптор безопасности всех вышеупомянутых объектов, а ACL для DACL добавлены в БД. Эта информация вместе с информацией о членстве будет представлена в виде рёбер графа. Также при необходимости могут выполняться пользовательские SQL-запросы к любому из вышеперечисленных типов данных.
Фаза перечисления SMB собирает данные об общих ресурсах, локальных группах, сессиях, NTLM-данные путём подключения к каждой машине в домене (которая получена через LDAP).
Модуль Kerberos выполняет автоматические kerberoasting и asrep-roasting.
Фреймворк позволяет пользователям загружать дампы памяти LSASS для хранения учётных данных и расширения таблицы информации о сессиях. Оба будут использоваться как дополнительные рёбра в графе (общий пароль и сессия соответственно). Фреймворк также использует эту информацию для создания отчёта о слабых/общих/взломанных учётных данных.
Фреймворк позволяет пользователям загружать файлы DCSYNC от impacket для хранения учётных данных. Это будет использоваться как дополнительные рёбра в графе (общий пароль). Фреймворк также использует эту информацию для создания отчёта о слабых/общих/взломанных учётных данных.
Фреймворк позволяет вручную расширять доступную БД во всех аспектах. Пример: когда информация о пользовательских сессиях на определённом компьютере обнаружена (вне автоматического перечисления), есть возможность вручную загрузить эти сессии, что заполнит БД и результирующий граф.
Фреймворк может генерировать граф, используя доступную информацию в базе данных, и отображать его через веб-интерфейс (nest). Кроме того, генерация графа и вычисления путей могут быть вызваны программно, либо через веб-API (endpoint /ui), либо через функции объекта графа.
Фреймворк может выявлять распространённые ошибки конфигурации AD без генерации графа. В настоящее время только через веб-API.
Обнаружение аномалий пользователей включает выявление небезопасных разрешений UAC и обширных значений описания пользователей. Ожидается, что в будущем этот набор функций будет расширяться по мере внедрения новых возможностей.
Обнаружение аномалий компьютеров включает выявление небезопасных разрешений UAC, необязательной подписи SMB, устаревшей версии ОС, машин вне домена. Ожидается, что в будущем этот набор функций будет расширяться.
Фреймворк не выполняет взлом, а только организует хэши и результаты взлома
в настоящее время основное внимание уделяется результатам dcsync от impacket и aiosmb, только !NT и LM хэши!
Пример процесса:
Примечание автора: Эта функция была реализована как для атакующих, так и для защитников. Лично я не вижу особой ценности ни для одной из сторон, поскольку, получив NT-хэш пользователя, он так же хорош, как и пароль... Тем не менее, всё больше компаний проводят упражнения по стойкости паролей, и эта функция может им помочь. Что касается атакующих: на данный момент это просто хвастовство, но пожалуйста. Может быть, запугать руководство для дополнительных баллов.
Этот проект находится в экспериментальной фазе! Это означает несколько вещей:
Jackdaw использует модуль ORM SQLAlchemy, который даёт вам возможность использовать любой понравившийся бэкенд SQL БД. Тесты в основном проводятся на SQLite по очевидным причинам. В этом проекте не будет использоваться никаких команд, специфичных для конкретного бэкенда, которые вас бы ограничивали.
ЭТО НУЖНО ТОЛЬКО В ТОМ СЛУЧАЕ, ЕСЛИ ВЫ УСТАНАВЛИВАЕТЕ ЧЕРЕЗ GIT И/ИЛИ ВНОСИТЕ ИЗМЕНЕНИЯ В КОД UI
UI написан на React. Перед первым использованием/установкой его нужно собрать. Для этого вам понадобятся установленные nodejs и npm. Затем:
jackdaw/nest/site/nuinpm installnpm run buildПосле выполнения вышеуказанных действий UI готов к использованию.
"Если я видел дальше, то потому, что стоял на плечах гигантов."
Команда BloodHound
@dirkjanm (https://github.com/dirkjanm/)
Zsolt Imre (https://github.com/keymandll)
пожалуйста, смотрите раздел благодарностей в модулях aiosmb и msldap