Agent Windows
Описание
Модуль agent/windows позволяет на ОС Windows провести сканирование агентом , в режиме без установки. Подробнее про агент можно почитать в соответствующей документации (см. Об агенте).
Конфигурирование и запуск агента для Windows работает на основе WinRM.
WinRM (Windows Remote Management) — это протокол и служба, разработанные Microsoft для удаленного управления и выполнения задач на компьютерах под управлением операционных систем Windows. Он позволяет администраторам удаленно выполнять команды, настраивать системы, собирать информацию и управлять серверами через сеть.
Данный модуль производит следующие операции:
- Открывает сетевое соединение с целевым хостом по протоколу WinRM.
- Проверяет существование агента на хосте, если он есть - сверяет его версию с текущей. Если агент не требует обновления, то копирования агента по сети можно избежать.
- Копирует (если необходимо) и запускает на нем агента для выполнения сканирования.
- Получает результаты выполнения и отправляет их в систему .
- Закрывает сетевое соединение.
Принцип работы WinRM
- Протокол и порты:
- WinRM работает поверх HTTP (по умолчанию порт 5985) или HTTPS (по умолчанию порт 5986).
- Для защищенного соединения испол ьзуется HTTPS с сертификатами.
- Клиент-серверная архитектура:
- Клиент отправляет запросы на удаленный компьютер через WinRM.
- Сервер (служба WinRM) обрабатывает запросы, выполняет команды и возвращает результаты.
- Режимы работы:
- Локальные команды - выполнение команд на локальном компьютере.
- Удаленные команды - использование WinRM для управления другим компьютером.
- Сценарии PowerShell Remoting - позволяют выполнять сложные задачи через сессии PowerShell.
Запуск службы WinRM
Для запуска службы WinRm выполните команду в PowerShell или командной строке с правами администратора:
powershell
После выполнения команда:
- Вк лючает службу WinRM.
- Открывает порт 5985 на брандмауэре.
- Настраивает параметры для локального и удаленного управления.
Для аутентификации WinRM поддерживает несколько методов, включая базовый (basic) и Kerberos.
Базовый метод аутентификации (Basic Auth) — это простой способ аутентификации, при котором логин и пароль передаются в HTTP-запросе в закодированном Base64 виде. В контексте WinRM Basic Auth используется при работе, но может быть небезопасна, так как без шифрования передача пароля небезопасна.
Важно! При использовании аутентификации по протоколу Basic для WinRM, если запрос выполняется на неподконтрольное, компрометированное или управляемое злоумышленником актив, учетные данные (логин и пароль администратора или пользователя) передаются в открытом виде. Это создает риск их перехвата и последующего использования для несанкционированного доступа или распространения атаки внутри сети.
Kerberos — это прото кол аутентификации, который позволяет клиентам и серверам безопасно пройти аутентификацию без передачи паролей в открытом виде. В контексте WinRM Kerberos часто используется для безопасного входа в систему и выполнения удалённых команд. Kerberos в Windows используется как основной механизм аутентификации в доменной среде Active Directory.
Работа с Kerberos
Чтобы разрешить WinRM использовать Kerberos, необходимо выполнить команду:
powershell
Как работает аутентификация WinRM через Kerberos?
- Клиент (например, PowerShell, WinRM или программа на Go) инициирует подключение к удалённому хосту через WinRM.
- Kerberos-клиент на компьютере пользователя запрашивает у контроллера домена (KDC - Key Distribution Center) билет на доступ (TGT - Ticket Granting Ticket).
- Kerberos-клиент получает билет службы (TGS - Ticket Granting Service) для WinRM на удалённой машине.
- Клиент отправляет этот билет серверу через WinRM (HTTP или HTTPS).
- Сервер проверяет билет и аутентифицирует пользователя без передачи пароля.
- После успешной аутентификации клиент получает доступ и может выполнять команды.
Для запуска сканирования идет подключение с помощью протокола Kerberos. После этого используется PowerShell-скрипт для скачивания исполняемого файла agent.exe.
Скрипт в свою очередь:
- Проверяет существование агента на активе в папке %TEMP%. Если файла агента нет или его хеш суммы расходятся с актуальной версией - происходит скачивание новой версии агента.
- Загружает сертификат в папку %TEMP%. Сертификат требуется для обеспечения безопасности соединения между агентом и сервером и для шифрования запросов на авторизацию агента на сервере.
- Проверяет целостность файла агента по SHA256.
- Устанавливает переменные среды.
- Запускает агент на активе.
Проверка существования агента на активе позволяет снизить нагрузку на сеть при каждом запуске сканирования.
Важно! Установка агента не производится. Агент запускается из временной папки (%TEMP%).
Запуск сканирования
Для запуска агентов необходимо сконфигурировать переменные user, password, agentToken при настройке сканера.
При создании запроса данные переменные указываются только в виде секретов (secrets). Прямое указание пере менных в запросе запрещено.
Для использования полей с типом Список ([]) в запросе необходимо использовать конструкцию matrix (матрица). (см. Матрицы).
Поля для default секции
string
Токен агента для отправки данных в систему. Заполняется в запросе как secret.
string
Тип аутентификации. Может быть basic или kerberos.
boolean
Если передано true, то после сканирования удаляются все файлы агента.
Winrm
Данные, необходимые для подключения по WinRm. (см. структура Winrm)
Basic
Данные, необходимые для basic авторизации. Обязательное поле если в auth указан basic. (см. структура Basic)
Kerberos
Данные, необходимые для kerberos авторизации. Обязательное поле если в auth указан kerberos. (см. структура Kerberos)
Структура Winrm
number
Номер порта (от 0 до 65535).
Пример:
5985
boolean
Булево значение, будет ли использоваться HTTPS-схема.
boolean
Булево значение, отключает проверку SSL-сертификатов.
string
CA сертификат, заполняется в виде secret.
string
Сертификат, заполняется в виде secret.
string
Ключ сертификата, заполняется в виде secret.
Структура Basic
string
Пользователь, заполняется в виде secret.
string
Пароль. Заполняется в запросе как secret.
Структура Kerberos
string
Пользователь. заполняется в виде secret.
string
Пароль. Заполняется в запросе как secret.
string
Путь до файла конфигурации kerberos. Заполняется в запросе как secret.
Пример:
/etc/krb5.conf
string
Название области kerberos
Пример:
EXAMPLE.LOCAL
string
Имя субъекта-службы
Пример:
HTTP/DESKTOP-MCCQ6W.example.local
string
Путь до файла кэша учетных данных kerberos. Заполняется в запросе как secret.
Результаты сканирования
string
IP-адрес целевого хоста.
string
Идентификатор актива, на котором размещен агент
boolean
Показывает, успешно ли был запущен агент
Log[]
Список логов, поступивших от агента
Структура Log
string
Временная метка события.
string
Уровень логирования.
string
Текст сообщения/события, которое записывается в лог.
string
Детали ошибки.
string
Название компонента/коллектора, сгенерировавшего лог.
number
Время выполнения операции в секундах.
string
Версия слепка собранных данных.