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

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

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

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

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

Категории

Все категории
Loading categories
aggrokatz — Aggrokatz — это расширение-плагин агрессора для Cobalt Strike, которое позволяет pypykatz удаленно взаимодействовать с beacon-ами и дает возможность анализировать файлы дампа LSASS и файлы кустов реестра для извлечения учетных данных и других секретов, хранящихся без загрузки файла и без загрузки какого-либо подозрительного кода на beacon. | Kitploit
Инструменты/GitHubGitHub/sec-consult/aggrokatz
Фреймворки для эксплойтовПост-эксплуатацияТестирование на ПроникновениеRed TeamingРазработка Полезной Нагрузки
GitHubsec-consult/aggrokatz

aggrokatz

Репозиторий
155265 лет назадПроверено Kitploit

Популярное

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

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

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

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

Смотреть все инструменты →

Описание

Aggrokatz — это расширение-плагин агрессора для Cobalt Strike, которое позволяет pypykatz удаленно взаимодействовать с beacon-ами и дает возможность анализировать файлы дампа LSASS и файлы кустов реестра для извлечения учетных данных и других секретов, хранящихся без загрузки файла и без загрузки какого-либо подозрительного кода на beacon.

Поделиться

aggrokatz

aggro_card

Что это такое

aggrokatz — это расширение плагина Aggressor для CobaltStrike, которое позволяет pypykatz взаимодействовать с биконами удалённо.
Текущая версия aggrokatz позволяет pypykatz анализировать дампы LSASS и файлы кустов реестра для извлечения учётных данных и других секретов без загрузки файла и без загрузки подозрительного кода на бикон (Cobalt Strike там уже есть). В будущем этот проект планирует предоставить дополнительные возможности для скрытных операций, такие как поиск и расшифровка всех секретов DPAPI, кербероастинг и т.д.

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

ВАЖНЫЕ ЗАМЕЧАНИЯ — ПОЖАЛУЙСТА, ПРОЧТИТЕ ЭТО

Снятие дампов LSASS/реестра не является целью этого проекта, только анализ. Причины:

  1. Множество техник дампинга уже реализованы в Cobalt Strike (CS) и широко доступны публике. Недавно мы переключились на использование модифицированной версии CredBandit, которая сбрасывает сырые байты на диск вместо base64. Отличный инструмент, зацените.
  2. Мы хотим сохранить нашу технику дампинга в секрете.

В клиенте CS не используйте "reload" и не пытайтесь вручную выгрузить, а затем перезагрузить скрипт, если вы его изменили. Вы ОБЯЗАТЕЛЬНО должны выгрузить его, закрыть клиент, открыть его заново, а затем загрузить изменённый скрипт. Иначе у вас будут запущены несколько версий одновременно и возникнет множество ошибок и странного поведения!
Во время анализа файлов LSASS/реестра на удалённой стороне, пожалуйста, не взаимодействуйте с конкретным биконом, с которого вы запустили скрипт. Обычно это не вызывает проблем, но я не могу дать никаких гарантий.

Установка

  • Вам потребуется установить и настроить pycobalt. В их репозитории на GitHub есть readme.
  • Вам потребуется установить pypykatz версии не ниже >=0.4.8
  • Вам потребуется Cobalt Strike

Настройка

  • Убедитесь, что файл aggressor.cna из pycobalt настроен и знает расположение вашего интерпретатора Python
  • Измените pycobalt_path в aggrokatz.cna, указав путь к pycobalt.cna
  • В CS используйте окна View > Script Console и Cobalt Strike > Script Manager. Через Script Manager загрузите скрипт aggkatz.cna.

Использование

  • Если скрипт aggkatz.cna загружен успешно, при щелчке правой кнопкой мыши на биконе появится новый пункт меню pypykatz.
  • Во время анализа вы будете видеть отладочные сообщения в окне Script Console.
  • После завершения анализа результаты будут отображены как в окне Script Console, так и в окне самого бикона.

Параметры меню анализа дампа LSASS

  • LSASS file: Расположение файла lsass.dmp на удалённом компьютере. Также можно использовать UNC-пути для доступа к общим файлам lsass.dmp по SMB.
  • chunksize : Максимальный объём данных, считываемый за один раз
  • BOF file : BOF-файл (Beacon Object File), который позволяет читать по частям. Этот файл будет загружен и выполнен (в памяти) каждый раз при чтении нового фрагмента.
  • (module) : Указывает, какие модули будут анализироваться. По умолчанию: all
  • Output : Задаёт формат(ы) вывода
  • Populate Credential tab : После успешного анализа все полученные учётные данные станут доступны на вкладке Credential в Cobalt Strike. Эта функция в бета-версии
  • Delete remote file after parsing : После успешного анализа дамп LSASS будет удалён с целевой машины

Параметры меню анализа дампа реестра

  • SYSTEM file: Расположение файла SYSTEM.reg на удалённом компьютере. Также можно использовать UNC-пути для доступа к общим файлам по SMB.
  • SAM file (optional): Расположение файла SAM.reg на удалённом компьютере. Также можно использовать UNC-пути для доступа к общим файлам по SMB.
  • SECURITY file (optional): Расположение файла SECURITY.reg на удалённом компьютере. Также можно использовать UNC-пути для доступа к общим файлам по SMB.
  • SOFTWARE file (optional): Расположение файла SOFTWARE.reg на удалённом компьютере. Также можно использовать UNC-пути для доступа к общим файлам по SMB.
  • chunksize : Максимальный объём данных, считываемый за один раз
  • BOF file : BOF-файл (Beacon Object File), который позволяет читать по частям. Этот файл будет загружен и выполнен (в памяти) каждый раз при чтении нового фрагмента.
  • Output : Задаёт формат(ы) вывода

Ограничения

Текущий BOF для чтения файлов поддерживает чтение файлов размером до 4 ГБ. Это можно расширить с помощью некоторых модификаций, но пока такие большие файлы не наблюдались.

Как это работает

TL;DR

Обычно парсер pypykatz выполняет серию операций чтения файлов на диске, но с помощью aggrokatz эти операции чтения туннелируются к бикону с помощью специально созданного BOF (Beacon Object File), который позволяет читать содержимое удалённого файла по частям. Это позволяет pypykatz извлекать все секреты из удалённых файлов без чтения всего файла, захватывая только необходимые фрагменты, где находятся секреты.

Подробно

Чтобы получить полную картину всего процесса, нужно выделить две части:

  1. как pypykatz интегрируется с CobaltStrike
  2. как pypykatz выполняет извлечение учётных данных без чтения всего файла

Интеграция pypykatz с CobaltStrike

CobaltStrike (агент) написан на Java, pypykatz — на Python. Это проблема. К счастью для нас, неизвестный автор создал pycobalt, который предоставляет удобный интерфейс между двумя мирами с полезными API, которые можно вызывать напрямую из Python. Несмотря на то, что pycobalt — замечательная инженерная работа, есть некоторые проблемы/недостатки, на которые нужно указать:

  1. О доверии к проекту pycobalt:
  • Мы пытались связаться с автором, но не получили ответа.
  • Мы не можем гарантировать, что проект pycobalt будет поддерживаться в будущем.
  • Мы не контролируем никакие аспекты разработки pycobalt.
  1. О замеченных технических проблемах:
  • В целом существуют некоторые проблемы с кодировкой между pycobalt и CobaltSrike. Это приводит к тому, что некоторые вызовы API возвращают байты, которые нельзя использовать, потому что часть байтов искажается кодировщиком. Анализируя код, мы приходим к выводу, что большинство проблем с кодировкой/декодировкой связаны с тем, что pycobalt использует STDOUT/STDIN для связи с процессом Java.
  • В частности, вызов API bof_pack, который критически важен для этого проекта, пришлось реализовать как чистый скрипт aggressor и вызывать его из Python, используя только базовые структуры данных (строки и целые числа), а не байты.
  • Доступны только блокирующие API, предоставляемые пакетом pycobalt, без поддержки многопоточности. По крайней мере, мы заметили, что многопоточность случайным образом ломается, но мы этого ожидали.
  • Блокирующее API + отсутствие многопоточности + зависимость от колбэков = пришлось применить несколько странных хаков, чтобы всё заработало.

Анализ учётных данных на стеке карт

pypykatz и его сопутствующий модуль minidump пришлось модифицировать, чтобы обеспечить более эффективный анализ по частям, чем было реализовано ранее, но это тема для другого раза.
После того как pypykatz смог взаимодействовать с CobaltStrike через pycobalt, следующим шагом стало обеспечение чтения файлов по частям. К сожалению, эта функция не доступна по умолчанию ни в одном из виденных нами C2-решений, поэтому нам пришлось её реализовать. Мы подошли к этой проблеме, реализовав чтение по частям с помощью интерфейса Beacon Object Files от CobaltStrike, сокращённо BOF. BOF — это программы на C, которые выполняются на биконе не как отдельный исполняемый файл, а как часть уже работающего бикона. Этот интерфейс чрезвычайно полезен, так как делает BOF гораздо более скрытными — весь код выполняется в памяти, ничего не записывается на диск.
Наше решение BOF — это простая функция, принимающая 4 аргумента:

  • fileName : Полный путь к файлу дампа LSASS или кусту реестра (на удалённой стороне)
  • buffsize : Объём (в байтах), который нужно прочитать из файла
  • seekSize : Позиция, с которой должно начаться чтение файла (от начала файла)
  • rplyid : Идентификационный номер, включаемый в ответ для предотвращения возможных коллизий

С этими параметрами pypykatz (работающий на агенте) может выполнять операции чтения файлов на биконе (целевой компьютер), которые специально нацелены на определённые части файла.
На другом конце (в CobaltStrike) aggrokatz регистрирует колбэк для отслеживания каждого сообщения, возвращаемого целевым биконом. Если заголовок сообщения совпадает с заголовком операции чтения файла, оно будет обработано как фрагмент файла minidump и передано парсеру minidump, который передаст результат в pypykatz. Если требуется дополнительное чтение, pypykatz выдаст команду чтения через ридер minidump, который отправит новую команду чтения на бикон через интерфейс BOF. Этот процесс повторяется до тех пор, пока файл не будет проанализирован.

Результаты

После анализа около 100 дампов LSASS с помощью этого метода можно констатировать следующее (размер чанка — 20 КБ):

  • В зависимости от размера дампа LSASS (наши дампы были от 40 МБ до 300 МБ) в среднем все секреты можно извлечь, используя 3,5 МБ. Обратите внимание, что это число зависит не от размера дампа LSASS, а от количества секретов и количества выбранных для анализа пакетов.
  • Для успешного анализа в среднем использовалось 250 операций чтения.
  • Время анализа зависит только от вашей конфигурации jitter/sleep, поэтому его измерение бессмысленно.

Недостатки

  • Для каждой операции чтения BOF нужно загружать на бикон. (Мы втайне надеемся, что кто-то из Cobalt Strike посмотрит на эту статью и решит реализовать базовые операции чтения файлов по умолчанию, чтобы мы могли отказаться от этого решения).
  • Количество операций чтения может быть проблематичным, если вы используете бикон с очень большим jitter/sleep.

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

dcsync — автор pycobalt
@anthemtotheego Twitter — создатель CredBandit
Nicol Jos @shinepaw — дизайн логотипа

Скачать инструмент