6. Агент и Сервер

Агент

Агент выступает в роли исполнителя заданий, приходящих с сервера, а также в роли посредника, пересылающего данные следующему агенту, который может являться исполнителем. Он сканирует сеть, взаимодействуя с инструментами “Сетезор”, умеет подключаться не только через сервер, но и через другого агента. От сервера агент получает информацию по защищенному протоколу HTTP.

Пока агенту не придет запрос о передаче данных, он не знает, что есть кто-то после него. Он знает только о вышестоящем, но после передачи информации он забывает о том, что кто-то есть после него. Однако, с NAT-агентами ситуация обстоит иная - на сервере создается задача. Там она “висит”, пока NAT-агент не возьмёт ее в работу. Получается для работы “натового” агента не нужно передавать информацию, нужно ее просто создать. Агент с разной переодичностью сам проверяет есть для него задачи или нет.

Вся логика выполнения активного сканирования выполняется на агенте. По окончанию задания, агент обратно по цепочке отправляет результат родительскому агенту, тот в свою очередь своему родительскому агенту и т.д.

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

У Агента есть ограничение по одновременно запущенным задачам одного типа. Для активного сканирования значение составляет 1. Другими словами, может выполняться параллельно сканирование NMAP и MASSCAN, но 2 сканирования NMAP параллельно работать не могут, а только по очереди.

Сервер

Сервер выступает в роли командного центра и формируется автоматически при установке “Сетезор”, на нём происходит взаимодействие пользователя с проектом.

Задания, выполняемые в Сетезорделятся на 2 вида:

  • Локальные. Локальные задачи запускаются прямо на сервере (парсинг логов, взаимодействие с SearchVulns, CPEGuess)

  • Удалённые. В качестве исполнителя данного вида заданий выступает подключаемый агент (NMAP, MASSCAN, SCAPY, domain brute, TLS/SSL CERT, WHOIS).

Принадлежность агента

Приложение находится в веб-браузере по адресу https://localhost:16661, онлайн-версия располагается по адресу https://online.setezor.net.

При подключении агента к проекту на агенте создается файл конфигурации, содержащий ключ шифрования агента и URL-родительского агента. При подключении агента к проекту на агенте создается файл конфигурации, содержащий ключ шифрования агента и URL-родительского агента. Подключенный агент может быть привязан ко всем проектам.

Для того чтобы отвязать всех агентов от проекта, необходимо удалить файл config.json.

Агенты делятся на 3 вида:

  • Искусственный - создается по умолчанию.

  • Реальный - создавать при помощи хостинга и подключить к онлайн Сетезор.

  • Натовый - создать с помощью конфига и подключить к онлайн Сетезор.

Чтобы развернуть реального агента в онлайн-версии, необходимо приобрести виртуальный сервер (VDS) в аренду и развернуть в докере. Агент будет доступен для запуска во всех проектах, а не в одном (подробнее о разворачивании агента на вдс в нашей статье на Хабре).

С NAT-агентами пока что ситуация обстоит иначе. Нужно получить файлик “agent.bin” (уточнять в https://t.me/netmap_chat), в свойствах файла установить запуск “как приложение” и запустить в командной строке ./agent.bin. Затем создать агента, поставить галочку NAT-агент, настроить интерфейс и скопировать конфиг по кнопке “Agent config”. Затем ввести команду ./agent.bin -p 16662 -nat <скопированный_конфиг>. Агента подключить к проекту и можно использовать.

Установка Docker-образа

Сервер

Загрузить образ сервера с репозитория: https://hub.docker.com/r/lmsecure/setezor

docker pull lmsecure/setezor:latest

Создать рабочую папку. Она будет нужна для хранения логов и пользовательских данных:

mkdir ~/setezor && cd $_

Создать файл “.env” и прописать в него переменные:

SECRET_KEY=abcdef
SERVER_REST_URL=https://<ip/doamin>:<port>

Запустить Сервер:

docker run -p 16661:16661 --env-file .env --network=host -v ~/setezor:/root/.local/share/setezor -d lmsecure/setezor:latest

Агент

Загрузить образ агента с репозитория https://hub.docker.com/r/lmsecure/setezor.agent/tags.

docker pull lmsecure/setezor.agent:latest

Запустить агента:

docker run --network=host --cap-add=NET_ADMIN -d lmsecure/setezor.agent:latest

Терминал не закрывать, иначе необходимо заново запустить “Сетезор”.
Приложение разворачивается в веб-браузере по адресу https://localhost:16661 (см. Установка и запуск).

Привязать агента к проекту

На странице Админские настройки нажать “Подключить агента” напротив “Все агенты”, выбрать созданного ранее агента и нажать “Сохранить изменения”.

Добавленный агент отразится в таблице с агентами.

Далее ему нужно выбрать родителя нажав на “Родительские агенты”, т.е. того, от кого он будет получать задания, это может быть сервер или другой агент. Нажать “Сохранить изменения”.

После сохранения изменений в таблице нажать “Подключить”. Появится уведомление об успешном подключении агента.

Виды агентов

Искусственный агент

Создается по умолчанию и отображается на странице Настройки. Осуществляет только парсинг логов.

У искусственного агента - искусственный интерфейс. У него отсутствуют кнопки в таблице.

Если запустить инструмент с искусственного агента появится сообщение ошибки о том, что агент не настоящий.

Реальный агент

Создать интерфейс для реального агента нажав на кнопку “Родительские агенты” на странице Проекты в разделе “Админские настройки”. Отобразится окно, в котором необходимо выбрать интерфейс.

Если был подключен реально запущенный агент, то после нажатия на кнопку “Подключить” отобразится уведомление об успешном подключении.

При повторном нажатии на “Подключить агентов” будет предупреждение, что агент уже подключен.

После создания и настройки агентов, на странице “Инструменты”, будут доступны агенты для выполнения заданий по сканированию.

NAT-агент

С NAT-агентами пока что нужно получить файлик “agent.bin” (уточнять в https://t.me/netmap_chat), в своийствах файла установить запуск “как приложение” и запустить в командной строке ./agent.bin. Затем создать агента, поставить галочку NAT-агент, настроить интерфейс и скопировать конфиг по кнопке “Agent config”. Затем ввести команду ./agent.bin -p 16662 -nat <скопированный_конфиг>. Агента подключить к проекту и можно использовать.

Агент на карте сети

Карта сети строится относительно агента и наглядно показывает к чему он имеет доступ. Агент отображается на странице “Карта сети” на карте сети. Все агенты имеют связь с сервером, у каждого агента есть интерфейс из которого идут узлы

На карте узлы разного цвета. Цвета узлов, до которых имеют доступ несколько агентов - смешиваются.