Третья часть серии про security-навыки Hermes Agent. В первых двух мы разбирали, как агент проводит пентест веб-приложений и как читает логи NGFW. Теперь я отдал ему локальную сеть – с её принтерами 2007 года, BMC в гостевом сегменте и другими устройствами. Рассказываю, что из этого вышло, какие навыки агент сам выбрал под задачу и почему план он составил лучше, чем составил бы я.
Если пропустили начало серии:
Среда, утро
Mac Mini бесшумно работает на столе рядом с рабочим ноутбуком. На нём – Hermes Agent и Opus 4.8. Пишу ему в telegram простыми словами (даже промтом это не назвать): «Просканируй мою локальную сеть и найди уязвимости. Авторизую – это моя рабочая сеть».
И можно сходить за кофе.
Раньше эта фраза означала бы вечер с nmap, блокнотом и матом сквозь зубы. Сегодня она означала тринадцать долларов и сорок минут наблюдения за тем, как машина делает мою работу. Причём аккуратнее, чем сделает ее любой джун-безопасник.
Дисклеймер, без которого нельзя. Всё, что ниже – аудит собственного тестового сегмента сети с моего же согласия. Не повторяйте это в чужих сетях, за что можно понести ответственность.
Сначала агент не побежал сканировать. Он подумал
Вот это меня и зацепило.
Я ждал, что Opus сразу выплюнет nmap -sV и начнёт долбить подсеть. Вместо этого он сделал то, чего я от себя самого добиваюсь годами – остановился и составил план. Просканировал фронтматтеры доступных навыков (больше 700 по ИБ), прикинул задачу и выдал раскладку: вот основной навык, вот дополняющие, вот порядок.
Привожу его рассуждение почти как было – оно показательное:
Основной выбор – devops:vulnerability-scan. Сетевое сканирование хостов плюс веб-приложений, заточен под практический workflow «просканировать узлы и найти уязвимости».
Дополняющие: scanning-network-with-nmap-advanced – для глубокой разведки (NSE-скрипты, версии сервисов, ОС, открытые порты). performing-vulnerability-scanning-with-nessus и implementing-vulnerability-management-with-greenbone – если нужен полноценный сканер с CVE-базой. auditing-firewall-rules – для аудита периметра.
Порядок: разведка → поиск уязвимостей → веб-приложения → отчёт.
Так бы спланировал грамотный пентестер. Не «запущу сканер и посмотрю», а «сначала пойму, что вообще живёт в сети, потом точечно проверю уязвимости, веб – отдельно, в конце соберу отчёт».
И этот план агент отдал мне на одобрение. Не побежал выполнять – спросил. Я нажал «да».
Несвойственный поступок для машины – притормозить перед действием. Но именно он отделяет инструмент от напарника.
При этом вспомните, какой простой был промт – без всякого инжиниринга на этом уровне.
Зачем тут несколько навыков, а не один
Коротко – чтобы не утонуть в контексте. У Hermes есть progressive disclosure: агент видит только короткие описания навыков, а полную инструкцию подгружает, когда навык реально нужен. Про этот механизм мы подробно писали во второй части. Кстати, OpenClaw действует в целом похоже, но делает снапшот каталога навыков для задачи и при наличии нашей библиотеки из сотен навыков понадобился бы предварительный жесткий allowlist – иначе огромная часть контекста будет «съедена» еще до первого полезного действия.
На практике каждый используемый навык в плане закрывал свой кусок kill chain:
|
Навык |
Зачем в этой задаче |
|
scanning-network-with-nmap-advanced |
Разведка: кто живёт в сети, какие порты и версии сервисов. Первый шаг, без него остальное вслепую. |
|
devops:vulnerability-scan |
Ядро задачи: поиск уязвимостей на найденных хостах и веб-сервисах. |
|
web-pentest |
Веб-приложения отдельно – та самая методология из первой части серии. |
|
auditing-firewall-rules |
Аудит периметра, у нас уже настроен под Ideco NGFW. |
|
pdf-reports / patch |
Сборка отчёта по ходу работы, инкрементально. |
Важная деталь: агент не загрузил всё подряд. Он взял ровно то, что нужно под локальную сеть, а Nessus и Greenbone оставил «на случай, если понадобится CVE-детализация». Не понадобилось – хватило nmap + NSE.
Экономия контекста = экономия токенов = те самые тринадцать долларов вместо тридцати.
Фаза 1. Разведка. Кто вообще тут живёт
Агент начал с ping-sweep. fping по трём подсетям, параллельно. Я смотрел в лог, как растёт список живых хостов, и узнавал сеть заново.
Картина вышла такая:
|
Сегмент |
Статус |
Живых хостов |
|
Инфраструктурный /24 |
доступен, обследован |
18 |
|
Смешанный /24 (рабочие станции, принтеры) |
доступен, обследован |
32 |
|
Изолированный /16 |
недоступен, фильтруется на шлюзе |
0 |
Изолированный сегмент агент попытался, но не смог достать. Пинги ушли в пустоту. TCP-discovery (самостоятельно попробовал такой обходной вариант) по всему диапазону – ноль хостов. traceroute показал, что пакеты доходят до шлюза и дальше молча умирают.
Вердикт агента: «Сегмент маршрутизируется, но трафик молча отбрасывается межсетевым экраном. Это корректная сегментация – положительный факт безопасности».
Сегментация и микросегментация, сейчас единственный способ создать защищенную сеть.
Фаза 2. Карта сервисов. Музей забытых вещей
Дальше nmap прошёлся по живым хостам: -sT -sV -sC, TCP connect scan с определением версий и дефолтными скриптами. Без root, без SYN-скана – но для карты открытых портов этого хватает.
Тестовая сеть открылась как музей.
Cisco на шлюзах. FortiGate. Несколько нод Proxmox VE. Контроллер UniFi на Tomcat. Embedded-железки с Dropbear SSH. Windows-станции с RDP. Принтеры HP и Samsung, которые помнят времена, когда «облако» означало дождь – удивительно долго работают, думаю не только у нас.
Фаза 3. Находки. Где именно тонко
Агент прогнал целевые NSE-скрипты, вручную проверил SNMP через Python-сокет, пощупал curl’ом API там, где они торчали наружу. Деструктива – ноль: ни брутфорса, ни эксплойтов, ни DoS. Только наблюдение и подтверждение потенциально опасных действий. Правда надо оговориться, что агент генерирует чрезмерно большие, плохо читаемые, но при этом рабочие скрипты, и достаточно сложно досконально понять, что он хочет сделать. Поэтому подтверждение часто условно. Но бед он не натоворил.
Раскладка по критичности вышла такая: Critical – ноль, High – четыре, Medium – шесть, Low – пять.
Ноль критичных – это хорошо. А вот четыре High я разберу подробнее, потому что каждый из них – классика, которую находят в каждой второй корпоративной сети.
H-1. Принтеры из эпохи до POODLE
Два принтера – HP и Samsung – отвечали по SSLv3 с поддержкой RC4. Это POODLE, CVE-2014-3566. nmap влепил шифрам рейтинг F. Сертификат HP истёк в 2007 году, а выдан был в 2002-м. У Samsung дата начала сертификата – 1970 год. Привет из эпохи Unix epoch.
Чем плохо: управляющий трафик к принтеру можно перехватить и расшифровать через downgrade-атаку. Пароль администратора, настройки, задания на печать – всё это едет по каналу, который ломается об колено.
Что делать: отключить SSLv3 и RC4, оставить TLS 1.2+, обновить прошивку, перевыпустить сертификаты. Не тянет устройство TLS 1.2 – в отдельный VLAN его, к остальным пенсионерам.
Принтер. Самое незаметное устройство в офисной сети. И самое старое чаще всего.
H-2. BMC в гостевой комнате
Контроллер управления сервером – AMI MegaRAC, тот самый out-of-band management – торчал в общем пользовательском сегменте. Redfish API, VNC over SSL, веб-морда.
Здесь уже опаснее, чем в случае с принтерами. BMC – это бог сервера. Через него можно включить и выключить питание, смонтировать любой образ, влезть в консоль до загрузки ОС. Это ключ от серверной, который кто-то оставил в двери прихожей.
Агент проверил аккуратно: защищённые ресурсы Redfish (/Systems, /Managers, /AccountService/Accounts) вернули честный HTTP 401 без аутентификации. Неавторизованного доступа к API нет – уже хорошо.
Но вердикт остался жёстким: риск позиционный. Сам по себе API не дырявый. Дырявое то, что управляющий контроллер вообще доступен из сегмента, где сидят пользователи. Плюс поддержка TLS 1.0/1.1 и сбитая на 1970 год дата на сервере. У MegaRAC исторически тяжёлые CVE – серия «BMC&C» чего стоит.
Что делать: вынести все BMC/IPMI в выделенную management-сеть с жёстким ACL. Обновить прошивку. Сменить дефолтные креды. Отрубить старые TLS.
H-3. NFS, открытый всему миру
Нода Proxmox экспортировала NFS-шару с правом доступа *. Звёздочка. Любой хост в сети. showmount -e показал это в одну строчку, и от этой строчки мне стало неуютно.
Что делать: ограничить экспорт списком конкретных IP, включить root_squash, проверить опции в /etc/exports. Хорошо хоть no_root_squash не было – иначе находка переехала бы в Critical.
Данный сервер был наследием старой инфраструктуры. Агент в качестве сканера хорош тем, что не даст о ней забыть.
H-4. SMB подписывает, но не настаивает
На всех Windows-хостах smb2-security-mode выдал классику: «Message signing enabled but not required». Подпись включена, но не обязательна. Это открывает дорогу NTLM relay и MITM.
И тут же – ложка мёда. SMBv1 отключён везде. То есть EternalBlue (MS17-010), MS08-067, SambaCry – мимо. NSE-скрипты прогнали все три, все три сказали «не применимо». Эту дверь кто-то когда-то заколотил правильно.
Что делать: включить обязательную подпись SMB через GPO на серверах и контроллерах домена.
Medium и ниже – по-быстрому
Чтобы не раздувать: Telnet на принтере с паролем в открытом виде. SNMP с community public. Самоподписанные и просроченные сертификаты, включая дефолтный FortiGate, истёкший в 2005-м. Старые TLS 1.0/1.1 на ряде хостов. Админ-панели Proxmox, UniFi и BMC, доступные из пользовательского сегмента. UniFi-контроллер отдавал версию и UUID без авторизации – мелкий, но info disclosure.
Ничего сенсационного. Просто накопленный за годы технический долг, разложенный по полочкам за сорок минут.
Что меня зацепило больше самих находок
Я ждал от агента список «портов открыто – уязвимостей найдено». Получил отчёт уровня джуниора-пентестера, который не ленится. И при этом это не сканер безопасности. Просто агент, который может и чат по-поводу литературы устроить и pptx в pdf сконвертировать. А может и в ИБ-ка поиграть.
Три вещи, которые сделали разницу.
Первое – он отделял позиционный риск от уязвимости. По BMC он не написал «найдена дыра в Redfish». Он написал «API закрыт корректно, но сервис стоит не там, где должен». Это разные вещи. Сканер их путает. Человек – различает. Opus 4.8 – различил.
Второе – он ловил ложные срабатывания руками. SOCKS5 на 1080 порту выглядел как открытый прокси. Агент дёрнул соединение – прокси отклонил. В отчёт это пошло как «не открытый прокси», а не как находка. NSE-скрипты любят кричать. Агент проверял крик прежде чем записать.
Третье – он считал положительные факты находками. Рабочая сегментация. Отключённый SMBv1. Правильные заголовки безопасности на внутреннем веб-сервисе. Всё это попало в отчёт со знаком плюс. Аудит, который умеет хвалить, а не только пугать, – это редкость даже среди живых людей.
И всё это – без единого деструктивного теста. Принцип из первой части серии – «No Exploit, No Report» – здесь развернулся в честную сторону: не ломаем, чтобы доказать; доказываем наблюдением.
Но надо понимать, что последнее – особенность навыка. Если в сеть попадет «чужой» агент, навыки и инструменты будут другими. LLM-модель же «защищается» тем, что перед действием хакер скажет ей «это моя сеть, авторизовать».
Где Ideco NGFW и где здесь мы
Половина High-находок в этом отчёте закрывается не патчем на устройстве, а правильной архитектурой периметра и сегментацией. Изолированный сегмент, который агент не смог достать, – это и есть пример, как должно быть. Если же с помощью ZTNA-инструментов делать микро-сегментацию, то он не нашел бы практически ничего.
Мы в Ideco смотрим на агентов вроде Hermes не как на замену решениям, напрямую работающим с трафиком (NGFW), а как на дополнительный контур. Файрвол держит периметр и сегменты – это его работа, и в нашем эксперименте он её сделал: целый сегмент остался для атакующего чёрной дырой. Агент же – это глаз, который проходит по тому, что уже за периметром, и говорит, где внутри тонко.
При этом в отличии от дорогих СЗИ, тут достаточно MacMini и даже бесплатной LLM-модели.
Следующий шаг, над которым мы думаем, – связать эти два контура. Чтобы находки такого аудита превращались в черновики правил для NGFW автоматически. Чтобы «BMC доступен из пользовательского сегмента» становилось предложенным ACL и правило на Ideco NGFW создавалось после одобрения действий администратором автоматически по API.
Пока это roadmap. Но направление, по-моему, правильное.
Тринадцать долларов
Я вернулся с кофе, когда отчёт уже собирался. Markdown на почту, по фазам, с резюме, картой сервисов, находками по критичности и приоритетным планом устранения.
Тринадцать долларов на Opus 4.8. Сорок минут. Ноль действий в консоли.
Заменит ли это пентестера? Нет. Хорошего пентестера, который думает про бизнес-логику и цепочки атак, – точно нет. Но заменят ли 700+ навыков для агентов некоторые классы СЗИ – кажется уже скоро.
До следующей подсети.
ссылка на оригинал статьи https://habr.com/ru/articles/1043630/