
В ADHammer 1.5.0 появился самостоятельный конвейер первичного обнаружения доменной инфраструктуры. Его задача — не «угадать» контроллеры домена по открытым портам, а собрать воспроизводимые доказательства: от DNS SRV-записей до веб-интерфейсов и анонимной поверхности SMB/RPC.
Релиз: github.com/icedracon/adhammer/releases/tag/v1.5.0
Почему всё начинается с DNS
Active Directory сама публикует карту своих ролей через SRV-записи. Запросы к семействам ldap.tcp, kerberos.tcp, Global Catalog и site-specific именам дают намного больше контекста, чем слепое сканирование диапазона. ADHammer строит эту карту в заданной области, разрешает A/AAAA и PTR и сохраняет происхождение каждого найденного узла.
Ключевое слово здесь — «область». В 1.5.0 include/exclude-фильтры применяются до активных проверок. Это помогает исследователю соблюдать согласованные границы теста и не превращать discovery в бесконтрольный sweep.
Минимальный RFC 1035-кодек
Для этого пути реализован узкий DNS-кодек без большого универсального resolver-стека. Код формирования запроса отделён от сетевого транспорта и от разбора ответа. Проверяется transaction ID; ответы с флагом truncation повторяются по TCP; сжатые имена разбираются с ограниченным числом переходов по указателям.
Последний пункт особенно важен для безопасности парсера. Указатели компрессии управляются удалённой стороной: без лимитов можно получить цикл, чрезмерную работу или чтение за границами сообщения. Маленький кодек проще покрыть тестами на повреждённые длины, циклические ссылки и неожиданные секции.
От имени хоста к доказательству
Найденный FQDN сам по себе ещё ничего не говорит о назначении системы. Поэтому следующий слой проверяет 13 характерных HTTP(S)-точек: AD FS, RD Web, WinRM, сертификатные службы и другие интерфейсы. Результат содержит URL, код ответа, заголовки и признаки продукта, а не только булево «есть/нет».
После этого оператор может продолжить тем же бинарником: adhammer run для базового пути, run --web для веб-слоя или run --deep для более полного разрешённого исследования. Отдельные этапы доступны через enum web, enum nullbind, enum rpc-null, enum shares --anon, enum host --anon и enum sysvol.
Почему это полезно защитникам
Такой отчёт показывает не только доступные сервисы, но и качество сегментации. Если SRV-запись указывает на узел, веб-отпечаток подтверждает роль, а SMB/RPC-интерфейсы корректно отказывают анонимному клиенту, отказ становится положительным доказательством настройки. Если же часть интерфейсов раскрывает метаданные, видно, где именно начинается расхождение с политикой.
Честные границы релиза
Версия 1.5.0 не объявлена «идеальной». В плане остаются миграция RSA-зависимости с учётом advisory, крупное обновление picky-krb, семиночный deep-fuzz gate, исследование LDAPS channel binding и дальнейшее разделение CLI и SDK. Публикация такого долга важна: безопасность инструмента измеряется не рекламным слоганом, а тем, какие утверждения подтверждены тестами и какие ещё требуют работы.
ADHammer и связанные библиотеки написаны на Rust и предназначены для авторизованного тестирования, исследований, обучения и защитной валидации.
