惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
Recent Announcements
Recent Announcements
IT之家
IT之家
人人都是产品经理
人人都是产品经理
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
大猫的无限游戏
大猫的无限游戏
U
Unit 42
罗磊的独立博客
博客园 - Franky
WordPress大学
WordPress大学
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
SecWiki News
SecWiki News
V
Vulnerabilities – Threatpost
P
Privacy International News Feed
P
Palo Alto Networks Blog
F
Fortinet All Blogs
P
Proofpoint News Feed
博客园 - 叶小钗
C
CERT Recently Published Vulnerability Notes
T
Tor Project blog
Spread Privacy
Spread Privacy
S
Securelist
C
Cisco Blogs
I
Intezer
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Cyberwarzone
Cyberwarzone
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy & Cybersecurity Law Blog
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Engineering at Meta
Engineering at Meta
S
Schneier on Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
GbyAI
GbyAI
T
Troy Hunt's Blog
T
Threatpost
博客园 - 司徒正美
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog
AWS News Blog
AWS News Blog
T
The Blog of Author Tim Ferriss
G
GRAHAM CLULEY
N
Netflix TechBlog - Medium
酷 壳 – CoolShell
酷 壳 – CoolShell
Google DeepMind News
Google DeepMind News
Know Your Adversary
Know Your Adversary
S
SegmentFault 最新的问题

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром T-TOPS: Как распутать гордиев узел проекта после выхода в прод (меч не понадобится) Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Как (не) потерять домен за выходные
PR · 2026-04-16 · via Все публикации подряд на Хабре

Как (не) потерять домен за выходные

6 мин

8.1K

Пятница, 18:00: сотрудники одной достаточно крупной компании спокойно заканчивают работу. Понедельник, 08:00: все рабочие компьютеры показывают экран восстановления BitLocker, контроллер домена скомпрометирован, а ключи у злоумышленника. Между этими точками четыре шага, и ни один из них не был сложным.

Ни одна из уязвимостей не была чем-то необычным. Вы почти наверняка видели каждую из них в какой-нибудь инфраструктуре. Но здесь они сложились в цепочку, и никто не заметил, пока она не отработала до конца.

Меня зовут Виктор Иевлев, я руковожу отделом информационной безопасности в компании «Гарда». Сегодня вместе с вами буду расследовать этот инцидент и делиться мыслями о том, как компании можно было избежать печального финала.

Всё началось с MikroTik

На границе сети стоял MikroTik. Админку оставили открытой в интернет, чтобы можно было зайти снаружи без VPN. Удобно, спору нет, но только пока кто-то посторонний не заинтересуется этим устройством.

Злоумышленник проэксплуатировал уязвимость CVE-2024-54772 в RouterOS. Важно тут даже не конкретная CVE, а сам факт: наружу торчал интерфейс управления устройством на границе сети. Это значит, что рано или поздно подходящая уязвимость обязательно бы нашлась.

После эксплуатации атакующий получил контроль над роутером и превратил его в точку опоры внутри периметра. Через роутер он поднял туннель, и дальнейший трафик пошёл уже как будто изнутри. Для внутренних узлов источник выглядел «своим». Злоумышленник виртуально сел внутри офиса и начал разведку.

Внутри сети ему никто не мешал

Атакующий прошёлся по сети с помощью nmap и быстро собрал базовую карту: какие хосты активны, и какие сервисы отвечают. Почти сразу он нашёл удобную цель — Linux-сервер с открытым SSH.

В корпоративных инфраструктурах основное внимание почти всегда съедает Windows: домен, политики, терминалки, Exchange, файловые серверы, а Linux-хосты остаются без внимания. Именно на них часто стоят старые версии ПО и отсутствует нормальный EDR.

Здесь всё оказалось совсем грустно: у root был слабый пароль без защиты от перебора. Так злоумышленник и получил полноценный внутренний хост, с которого можно работать дальше тихо и без шума.

Если бы на сервере был антивирус, то теоретически он мог бы что-нибудь заметить.

Злоумышленник занёс Impacket на Linux, а Impacket — набор вполне легитимных Python-инструментов для работы с SMB, NTLM, Kerberos и другими протоколами Windows. Для сигнатурного антивируса они выглядят как обычные скрипты. Контекст он не понимает, файл как файл.

Основная проблема в AD CS

Дальше атака перешла в самую интересную фазу — к инфраструктуре сертификации Microsoft. Во многих компаниях используется AD CS — центр сертификации, который выдаёт цифровые сертификаты пользователям, серверам, сервисам, иногда контроллерам домена. Очень часто он настроен по принципу «когда-то подняли, вроде работает, трогать страшно».

В таких конфигурациях есть одна особенно неприятная штука — Web Enrollment. Это веб-интерфейс для запроса сертификатов из браузера. Сам по себе он не зло. Проблема в том, что в реальных инфраструктурах не все умеют его правильно настраивать: часто оставляют включённым без ограничений и без ручного подтверждения выпуска.

Механика эксплуатации уязвимости такая. Злоумышленник, уже сидя на внутреннем Linux-хосте, запускает ntlmrelayx.py из Impacket и готовится ловить NTLM-аутентификацию. Потом провоцирует контроллер домена аутентифицироваться на свой хост.

Контроллер домена отправляет свой NTLM challenge-response, но злоумышленник этот ответ не ломает и не подбирает. Он делает хуже: мгновенно пересылает его на Web Enrollment центра сертификации. А тот смотрит на запрос и говорит: «О, это же контроллер домена. Заходи» — и выдаёт сертификат на машинную учётную запись контроллера, условный DomainControllerName$.

Почему так произошло? Опция CA certificate manager approval не была активирована. Без неё CA штампует сертификат автоматически. Для атакующего — идеальный сценарий: никаких ручных действий администратора, никакой точки, где его могли бы остановить.

После сертификата домен был уже почти потерян

Как только у злоумышленника на руках оказывается сертификат контроллера домена, дальше начинается почти легитимная работа от имени доверенного узла. Следующий шаг — DCSync.

Смысл DCSync в том, что атакующий имитирует нормальное поведение контроллера домена, который просит у другого контроллера данные репликации. Active Directory считает, что перед ним свой, и отдаёт хэши учётных записей, включая привилегированные.

После этого вопрос «а есть ли у злоумышленника доменный админ?» отпал.

И дальше — финальный, самый обидный этап. Никаких зрелищных шифровальщиков, никаких экзотических malware-фреймворков. Имея права доменного администратора, атакующий использует обычный штатный механизм — Group Policy Object. Через GPO по сети распространяется команда на шифрование средствами BitLocker.

Утром сотрудники включают компьютеры и машины легитимно, по доменной политике, начинают шифровать себя. На этом этапе остаются только последствия.

Почему угрозу не заметили раньше

Потому что замечать было нечем. Сеть была плоской — попав внутрь, злоумышленник не упёрся ни в один внятный сегмент. East-West трафик никто не контролировал, внутренний nmap прошёл как фоновый шум. Linux-хост с простым паролем жил отдельной тихой жизнью — не ключевой узел, а забытый сервис. Антивирус стоял, но реагировать на происходящее не умел. Deception-ловушек не было, NDR не было, правил на аномальное движение внутри сети тоже не было.

Тут дело не в одном пропущенном алерте. Это театр безопасности: какие-то средства вроде бы есть, а злонамеренную активность они не останавливают и даже толком не видят.

Что было корневой причиной потери домена

Свалить всё на один Web Enrollment и успокоиться — соблазнительно, но неправильно. Да, AD CS сыграл ключевую роль в кульминации. Но компрометация стала возможной, потому что совпало сразу несколько грубых нарушений.

Периметр. Наружу торчал интерфейс управления MikroTik, уязвимость не была закрыта вовремя.

Внутренняя гигиена. Linux-сервер с простым root-паролем, плоская сеть без сегментации, файрвол не ограничивал доступ к критичным портам (22, 135, 139, 445, 3389, 5985, 5986) по белым спискам, PKI настроена без жёстких ограничений, NTLM жил слишком вольготно.

Мониторинг практически отсутствовал.

Классический эффект швейцарского сыра: каждая отдельная дырка неприятна, но не смертельна. Когда они выстраиваются в линию — вы теряете домен за выходные.

Где можно было остановить атаку

Каждый шаг этой цепочки был предотвратим. Не теоретически, а конкретной мерой, которую можно было внедрить до атаки.

Шаг атаки

Что было не так

Как можно защитить

Вход через MikroTik

Админка открыта в интернет, прошивка с известной уязвимостью

VPN или jump-host для управления, патч-менеджмент на периметре

Разведка и перемещение по сети

Плоская сеть, east-west трафик без контроля

Сегментация, ACL на критичные порты (22, 135, 445, 3389, 5985) по белым спискам

Захват Linux-хоста

Простой root-пароль, нет защиты от перебора, нет EDR

Парольная политика, fail2ban/аналог, EDR на всех хостах, включая «вспомогательные»

NTLM Relay на AD CS (ESC8)

Web Enrollment без ограничений, автовыпуск сертификатов, NTLM разрешён на CA

Отключить Web Enrollment или включить CA manager approval, Deny All на NTLM, мониторинг 4624 на CA

DCSync и GPO

Следствие предыдущих шагов — к этому моменту уже поздно

Последняя строка намеренно пустая. Если атака дошла до DCSync, технических мер уже нет. Остаётся восстановление из бэкапов и разбор последствий.

Несколько пояснений к таблице, потому что дьявол именно в деталях.

Начнём с AD CS. Машинные учётные записи домена запрашивают сертификаты по RPC, веб-интерфейс им в принципе не нужен. Но если Web Enrollment всё же используется, без включённой опции CA certificate manager approval, центр сертификации штампует сертификаты автоматически. Поэтому ESC8 и смогла отработать без единого ручного действия администратора.

С NTLM история похожая по духу: одна настройка могла бы закрыть всю механику. Политика «Network security: Restrict NTLM: Incoming NTLM traffic» в значении Deny All Accounts убирает саму возможность relay-атаки — атакующему нечего перехватывать и некуда пересылать.

Отдельно стоит сказать про мониторинг. Event ID 4624 на центре сертификации — не самое очевидное место для алертов, но именно там появился бы первый след. Когда машинная учётная запись аутентифицируется нетипичным способом — это уже повод разбираться.

Про Linux-хосты и говорить неловко: простой пароль у root в 2026 году — не технический долг, а открытая дверь. Парольная политика, fail2ban, обновления, EDR — базовый минимум, который регулярно отсутствует на «вспомогательных» серверах, до которых у всех не доходят руки.

И наконец, сегментация. Если бы SSH на тот Linux-хост был открыт только с конкретных админских узлов, злоумышленник с захваченного роутера туда бы не дошёл и весь дальнейший сценарий просто не случился.

Большинство перечисленных мер не требуют коммерческих продуктов. Так, IDPS на базе snort и Suricata на периметре подсветила бы туннель. Кстати, их можно установить, как модули на фаервол OPNsense или pfSense CE (Community Edition).

В качестве SIEM или XDR со встроенным модулем EDR можно было бы посмотреть в сторону Wazuh. Установленный на Linux-хосте, он сразу указал бы ИБ на перебор SSH и появление Impacket, а настроенные правила в SIEM — на нетипичную аутентификацию на CA.

Но Open Source не значит «само заработает»: без инженера, который понимает, что он ловит, это ещё один слой театра безопасности.

К сожалению, открытые админки, забытые Linux-хосты, PKI (Public Key Infrastructure) на дефолтах, плоская сеть встречаются где угодно. Вопрос не в том, возможна ли такая цепочка у вас. Вопрос в том, в какой строке этой таблицы вы её прервёте.


Гарда

t.me/garda_ai — создаем решения для защиты корпоративных данных и сетевой безопасности