Docs
Личный кабинет

Agent Windows


Описание

Модуль agent/windows позволяет на ОС Windows провести сканирование агентом , в режиме без установки. Подробнее про агент можно почитать в соответствующей документации (см. Об агенте). Конфигурирование и запуск агента для Windows работает на основе WinRM.

WinRM (Windows Remote Management) — это протокол и служба, разработанные Microsoft для удаленного управления и выполнения задач на компьютерах под управлением операционных систем Windows. Он позволяет администраторам удаленно выполнять команды, настраивать системы, собирать информацию и управлять серверами через сеть.

Данный модуль производит следующие операции:

  • Открывает сетевое соединение с целевым хостом по протоколу WinRM.
  • Проверяет существование агента на хосте, если он есть - сверяет его версию с текущей. Если агент не требует обновления, то копирования агента по сети можно избежать.
  • Копирует (если необходимо) и запускает на нем агента для выполнения сканирования.
  • Получает результаты выполнения и отправляет их в систему .
  • Закрывает сетевое соединение.

Принцип работы WinRM

  1. Протокол и порты:
    • WinRM работает поверх HTTP (по умолчанию порт 5985) или HTTPS (по умолчанию порт 5986).
    • Для защищенного соединения используется HTTPS с сертификатами.
  2. Клиент-серверная архитектура:
    • Клиент отправляет запросы на удаленный компьютер через WinRM.
    • Сервер (служба WinRM) обрабатывает запросы, выполняет команды и возвращает результаты.
  3. Режимы работы:
    • Локальные команды - выполнение команд на локальном компьютере.
    • Удаленные команды - использование 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?

  1. Клиент (например, PowerShell, WinRM или программа на Go) инициирует подключение к удалённому хосту через WinRM.
  2. Kerberos-клиент на компьютере пользователя запрашивает у контроллера домена (KDC - Key Distribution Center) билет на доступ (TGT - Ticket Granting Ticket).
  3. Kerberos-клиент получает билет службы (TGS - Ticket Granting Service) для WinRM на удалённой машине.
  4. Клиент отправляет этот билет серверу через WinRM (HTTP или HTTPS).
  5. Сервер проверяет билет и аутентифицирует пользователя без передачи пароля.
  6. После успешной аутентификации клиент получает доступ и может выполнять команды.

Для запуска сканирования идет подключение с помощью протокола Kerberos. После этого используется PowerShell-скрипт для скачивания исполняемого файла agent.exe.

Скрипт в свою очередь:

  1. Проверяет существование агента на устройстве в папке %TEMP%. Если файла агента нет или его хеш суммы расходятся с актуальной версией - происходит скачивание новой версии агента.
  2. Загружает сертификат в папку %TEMP%. Сертификат требуется для обеспечения безопасности соединения между агентом и сервером и для шифрования запросов на авторизацию агента на сервере.
  3. Проверяет целостность файла агента по SHA256.
  4. Устанавливает переменные среды.
  5. Запускает агент на устройстве.

Проверка существования агента на устройстве позволяет снизить нагрузку на сеть при каждом запуске сканирования.

Важно! Установка агента не производится. Агент запускается из временной папки (%TEMP%).

Запуск сканирования

Для запуска агентов необходимо сконфигурировать переменные user, password, agentToken при настройке сканера. При создании запроса данные переменные указываются только в виде секретов (secrets). Прямое указание переменных в запросе запрещено.

Для использования полей с типом Список ([]) в запросе необходимо использовать конструкцию matrix (матрица). (см. Матрицы).

Поля для default секции

agentToken

string

Токен агента для отправки данных в систему. Заполняется в запросе как secret.

auth

string

Тип аутентификации. Может быть basic или kerberos.

cleanAfter

boolean

Если передано true, то после сканирования удаляются все файлы агента.

winrm

Winrm

Данные, необходимые для подключения по WinRm. (см. структура Winrm)

basic

Basic

Данные, необходимые для basic авторизации. Обязательное поле если в auth указан basic. (см. структура Basic)

kerberos

Kerberos

Данные, необходимые для kerberos авторизации. Обязательное поле если в auth указан kerberos. (см. структура Kerberos)


Структура Winrm

port

number

Номер порта (от 0 до 65535).

Пример:

5985

https

boolean

Булево значение, будет ли использоваться HTTPS-схема.

insecure

boolean

Булево значение, отключает проверку SSL-сертификатов.

caCert

string

CA сертификат, заполняется в виде secret.

cert

string

Сертификат, заполняется в виде secret.

certKey

string

Ключ сертификата, заполняется в виде secret.


Структура Basic

user

string

Пользователь, заполняется в виде secret.

password

string

Пароль. Заполняется в запросе как secret.


Структура Kerberos

user

string

Пользователь. заполняется в виде secret.

password

string

Пароль. Заполняется в запросе как secret.

conf

string

Путь до файла конфигурации kerberos. Заполняется в запросе как secret.

Пример:

/etc/krb5.conf

realm

string

Название области kerberos

Пример:

EXAMPLE.LOCAL

spn

string

Имя субъекта-службы

Пример:

HTTP/DESKTOP-MCCQ6W.example.local

ccache

string

Путь до файла кэша учетных данных kerberos. Заполняется в запросе как secret.


Результаты сканирования

ip

string

IP-адрес целевого хоста.

deviceId

string

Идентификатор устройства, на котором размещен агент .

success

boolean

Показывает, успешно ли был запущен агент .

logs

Log[]

Список логов, поступивших от агента (см. структура Log).


Структура Log

time

string

Временная метка события.

level

string

Уровень логирования.

message

string

Текст сообщения/события, которое записывается в лог.

error

string

Детали ошибки.

collector

string

Название компонента/коллектора, сгенерировавшего лог.

duration

number

Время выполнения операции в секундах.

version

string

Версия слепка собранных данных.

Примеры использования


yaml


yaml

Назад

Agent Linux