Исследовательская заметка N.10 · 2026-10-16

Mimikatz — магнит. Мы используем библиотеку.

Каждый engagement доходит до одного и того же громкого момента: нужны ключи каталога. Классический ответ индустрии — самый засигнатуренный бинарь в истории: у каждого EDR на планете есть стек правил на его имя, импорты, командные строки, память. Модуль discovery в AXIS идёт другим путём: те же операции — DCSync, Kerberoast, абьюз ADCS, shadow credentials — исполняются через защитническую .NET-библиотеку, захощенную в-процессе, выданную по требованию, затёртую при выходе. Эта заметка — весь конвейер, от конца до конца, с телеметрией, которой не избежать, внизу.

ВРЕМЯ ЧТЕНИЯ ≈ 7 МИН АВТОР КОМАНДА AXIS

Проблема магнита

Mimikatz заслужил свою легенду — а индустрия потратила десятилетие, чтобы превратить его в растяжку. Бинарь захеширован. Его командные строки матчатся паттернами. sekurlsa::dcsync для современного EDR — практически признание. Даже его легитимные потомки наследуют подозрение: всё, что касается LSASS, запрашивает права репликации, зовётся как креденшел-инструмент, по умолчанию получает второй взгляд. Техника не сгорела — сгорел артефакт. DCSync под всеми слоями — документированный вызов репликации каталога; API никогда не был зловредным, только репутация вызывающего. Инженерный вопрос формулируется так: как сделать вызов, не наследуя репутацию?

Библиотека, а не инструмент

Наш ответ — та же библиотека, с которой аудируют защитники. Модуль discovery встраивает управляемую обёртку вокруг DSInternals — открытой .NET-библиотеки каталога, которой пользуются синие, — и хостит её через тот же неуправляемый CLR-конвейер из заметки N.09: без powershell.exe, без Add-Type, без управляемого бинаря на диске. Сборки путешествуют зашифрованными внутри модуля и расшифровываются только в памяти. Когда оператор таскает DCSync, вызов, достигающий контроллера домена, — это запрос репликации каталога от процесса без наступательного прошлого — разница между известным преступником и вежливым незнакомцем, задающим тот же вопрос. Пять охватов операции: один аккаунт, набор админов, всё, krbtgt для материала золотого билета, или машинные аккаунты.

API никогда не был зловредным. Зловредной была только репутация вызывающего.

Как это исполняется

Сам модуль — ~7 МБ и прибывает через депо — одноразовый токен, ключ на модуль, запрос под прикрытием — со своими CLR-сборками внутри, так что ядро агента остаётся маленьким, а хост тихим, пока не заташковано. Исполнение намеренно сформовано: короткоживущий дочерний процесс, созданный с подменённым родителем и запретом не-Microsoft DLL, делает управляемую работу и возвращает результаты через разделяемую память — без выводных каналов, без временных файлов. Память, державшая секреты, затирается на выходе. Аутентификация — то, чем операция уже владеет: текущий контекст, явные учётные данные, украденный токен или pass-the-hash — модуль распоряжается привилегией, которая у вас есть; он никогда не притворяется, что выдаёт вам её.

Рис. A — конвейерГромкий момент — выдача, и случается она один раз

Вся поверхность

DCSync — одна строка. Настоящая ценность модуля — вся поверхность от разведки до ключей за одним интерфейсом таскинга; каждая строка ниже — классическая операция, которая исторически означала отдельный инструмент, отдельный бинарь, отдельный набор сигнатур:

ОперацияЧто получает оператор
KerberoastАккаунты с SPN перечислены, сервисные билеты запрошены (RC4/AES) — вывод готов для hashcat
AS-REP roastАккаунты без предварительной аутентификации найдены; хеши запрашиваются по требованию
Сбор GPPXML групповой политики SYSVOL распарсен — Groups, Services, Scheduled Tasks, Data Sources, Drives, Printers — на наследие эпохи cPassword
Прочёс NETLOGONЛогон-скрипты промыты на встроенные учётные данные
Обзор ADCSCA и шаблоны сертификатов перечислены; условия ESC1–11, ESC13–14 проверены по ACL шаблонов и CA
Триада делегированияБез ограничений, ограниченное (с S4U), ресурсное — одним проходом
DCSyncРепликация через управляемую библиотеку: single / admins / all / krbtgt / computers
LAPSПароли локальных админов читаются там, куда достают права оператора
Shadow credentialsmsDS-KeyCredentialLink add / list / remove — захват аккаунта без сброса пароля
Резервный ключ DPAPI доменаМастер-ключ всех доменно-защищённых блобов DPAPI, полученный тем же конвейером
Рис. B — один модуль, десять классикКаждая строка заменяет бинарь, который EDR уже знает

И поскольку разведка стоит ровно столько, сколько можно с ней сделать, модуль заканчивает предложение: к каждой находке генерируется соответствующая команда атаки — вызовы pass-the-hash, запросы билетов, материал золотого билета, — так что оператор переходит от обнаружения к действию без второго тулчейна. Экспорт питает ваши инструменты анализа (формы BloodHound), когда нужен граф, а не список.

Честные пределы

Три свойства, которые мы не будем округлять. Репликации нужны права: DCSync работает, потому что аккаунт, которым вы распоряжаетесь, держит права репликации — модуль делает тише вызывающего, он не может сделать тише вызов; всякий, кто аудирует события репликации, увидит саму операцию. Ребёнок — это рождение: fork-and-run означает одно короткое создание процесса, с подменённым родителем и ограниченными DLL — атрибутировано и минимизировано, но присутствует; аналитика родословной здесь зарабатывает свой хлеб. Выдача — это шов: on-demand загрузка 7 МБ незадолго до поведения, трогающего каталог, — ровно та корреляция, которую мы учим защитников строить в карте телеметрии — мы сузили её токенами и прикрытиями, но не удалили.

Угол защитника

Напишите эти правила — и заметка станет подарком. Репликация с чужого хоста: события репликации каталога (4662 с GUID-ами DS-Replication), исходящие с любой машины, не являющейся контроллером домена, — самое близкое к бесплатному приговору, что предлагает эта индустрия, — легитимная репликация это привычка DC-к-DC. Машинные аккаунты, которые реплицируют — второй маркер. Записи key-credential: тревога на модификации msDS-KeyCredentialLink — shadow credentials тихи ровно потому, что никто не смотрит на атрибут. SYSVOL в масштабе: один хост, разбирающий XML политик по всей шаре, — паттерн сбора, а не привычка админа. Дрейф центра сертификации: изменения ACL шаблонов, за которыми следует необычный выпуск сертификатов, — сердцебиение семейства ESC; аудит шаблонов ловит то, чего endpoint-инструментарий не видит. Артефакт может менять лицо; у операций есть физика, и физика наблюдаема.

Следующая заметка: Сколько ещё стоит каждый обход. Прямые и непрямые сисколлы, разхукивание, подмена стека, обфускация сна, порча ETW — полка обходов с показаниями счётчиков и почему импланты с одним трюком быстро стареют.