Про мониторинг USB-накопителей
Мониторинг USB-накопителей важен для поддержания общей безопасности системы и защиты от потенциальных угроз, созданных внешними устройствами хранения данных. Они могут служить потенциальной точкой входа для вредоносного ПО и несанкционированного доступа к информации. Проводя мониторинг USB-накопителей, это можно обнаружить и предотвратить. Кроме того, он помогает обеспечить соответствие политикам и нормам безопасности, защитить чувствительные данные и снизить риск их утечки.
В блоге также есть публикация про мониторинг USB-накопителей на Windows.
Wazuh, платформа SIEM и XDR, предоставляет out-of-the-box правило для мониторинга USB-устройств на конечных точках Linux. Однако эти журналы ограничены и не содержат достаточной информации о событии, как видно на изображении ниже. Используя правила udev, можно получить расширенные журналы о событиях, связанных с USB.

Инфраструктура
- Настроенная и готовая к использованию последняя версия виртуальной машины Wazuh OVA, которая содержит основные компоненты решения (сервер, indexer, дешборд).
- Установленная и зарегистрированная на сервере Wazuh конечная точка Ubuntu 22.04 LTS с агентом Wazuh.
Конфигурация
Необходимо настроить конечную точку Ubuntu для использования утиліти udev, которая может генерировать расширенные журналы, когда USB-накопитель подключен к конечной точке. Также нужно настроить кастомные правила и список CDB (constant database, постоянная база данных) на сервере Wazuh, позволяя ему инициировать оповещение, когда к конечной точке Ubuntu подключается неавторизованное USB-устройство.
Конечная точка Ubuntu
Устройства Linux поставляются с утилитой udev по умолчанию. udev – менеджер девайсов для ядра Linux, который динамически управляет узлами устройств в каталоге /dev. Он отвечает за распознавание и конфигурацию девайсов при их подключении к системе или отключении от нее. Утилита udev облегчает пользователям и программам взаимодействие с аппаратными компонентами.
Необходимо создать правило udev, которое обнаруживает подключение USB-устройств к контролируемой конечной точке. Оно запускает скрипт, который записывает детали события в файл журнала, который агент Wazuh читает и пересылает на сервер Wazuh для анализа.
Следует выполнить следующие действия, чтобы создать правило и настроить агент Wazuh для сбора журналов.
1) Создать файл с названием usb_detect.sh в каталоге /var/ossec/bin/:
touch /var/ossec/bin/usb_detect.sh
2) Добавить следующий скрипт в файл /var/ossec/bin/usb_detect.sh:
#!/bin/bash
log_file="/var/log/usb_detect.json"
vendor="$ID_VENDOR"
model="$ID_MODEL"
serial="$ID_SERIAL_SHORT"
device="$DEVNAME"
devtype="$DEVTYPE"
hostname=$(hostname)
json="{\"hostname\":\"$hostname\",\"vendor\":\"$vendor\",\"model\":\"$model\",\"serial\":\"$serial\",\"device\":\"$device\",\"type\":\"$devtype\"}"
echo "$json" >> "$log_file"
Этот скрипт позволяет утилите udev собирать подробную информацию о USB-устройстве, подключенном к конечной точке. Он также записывает журнал в JSON-файл /var/log/usb_detect.json, доступный для Wazuh.
3) Изменить разрешение файла, чтобы этот скрипт не могли выполнять другие:
chmod 700 /var/ossec/bin/usb_detect.sh
4) Создать файл usb-detect.rules в каталоге /etc/udev/rules.d/:
touch /etc/udev/rules.d/usb-detect.rules
5) Добавить следующее правило в файл:
ACTION=="add", SUBSYSTEMS=="usb", RUN+="/var/ossec/bin/usb_detect.sh"
6) Выполнить наведенную ниже команду, чтобы перезагрузить правила udev:
udevadm control --reload
7) Добавить следующую конфигурацию в файл агента Wazuh /var/ossec/etc/ossec.conf, чтобы собирать журналы из файла /var/log/usb_detect.json:
<ossec_config>
<!-- Logcollector for udev USB detected Logs -->
<localfile>
<log_format>json</log_format>
<location>/var/log/usb_detect.json</location>
</localfile>
</ossec_config>
8) Перезапустить агент Wazuh, чтобы применить изменения:
systemctl restart wazuh-agent
Сервер Wazuh
На сервере Wazuh необходимо создать список CDB авторизованных USB-устройств. Кроме того, нужно создать кастомное правило для инициирования оповещения, когда неавторизованное USB-устройство подключается к контролируемой конечной точке.
Обнаружение USB-накопителей
1) Добавить следующее правило в файл /var/ossec/etc/rules/local_rules.xml:
<!-- Rule for USB monitoring in Linux-->
<group name="Linux, usb,">
<rule id="111010" level="7">
<field name="serial">\w+</field>
<field name="type">usb_device</field>
<description>A PNP device $(vendor) $(model) was connected to $(hostname).</description>
</rule>
</group>
Где:
Правило ID 111010 обнаруживает подключение USB-накопителя к конечной точке Linux.
2) Перезапустить менеджер Wazuh, чтобы применить изменения:
systemctl restart wazuh-manager
Подключение USB-устройства к контролируемой конечной точке запускает правило, как показано ниже.

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

Фильтрация авторизованных и неавторизованных USB-накопителей
Чтобы обнаруживать, когда неавторизованные USB-накопители подключаются к контролируемой конечной точке, необходимо создать список CDB (constant database, постоянная база данных). Он содержит серийные номера авторизованных USB-накопителей, которые нужны для кастомных правил.
Для этого нужно выполнить следующие действия:
1) Создать список CDB usb-drives в каталоге /var/ossec/etc/lists/:
touch /var/ossec/etc/lists/usb-drives
2) Добавить серийный (serial) номер с двоеточием (:) в список CDB:
4C530001260524115055:
3) Добавить конфигурацию <list>etc/lists/usb-drives</list> к блоку <ruleset> файла /var/ossec/etc/ossec.conf:
<ruleset>
<!-- Default ruleset -->
<decoder_dir>ruleset/decoders</decoder_dir>
<rule_dir>ruleset/rules</rule_dir>
<rule_exclude>0215-policy_rules.xml</rule_exclude>
<list>etc/lists/audit-keys</list>
<list>etc/lists/amazon/aws-eventnames</list>
<list>etc/lists/security-eventchannel</list>
<!-- User-defined ruleset -->
<decoder_dir>etc/decoders</decoder_dir>
<rule_dir>etc/rules</rule_dir>
<list>etc/lists/usb-drives</list>
</ruleset>
4) Добавить следующее правило в ранее созданную группу Linux, usb в файле /var/ossec/etc/rules/local_rules.xm:
<!-- Rule for USB monitoring in Linux-->
<group name="Linux, usb,">
<rule id="111010" level="7">
<field name="serial">\w+</field>
<field name="type">usb_device</field>
<description>A PNP device $(vendor) $(model) was connected to $(hostname).</description>
</rule>
<rule id="111011" level="8">
<if_sid>111010</if_sid>
<list field="serial" lookup="not_match_key">etc/lists/usb-drives</list>
<description>Unauthorized PNP device $(vendor) $(model) was connected to $(hostname).</description>
</rule>
</group>
Где:
Правило ID 111011 проводит обзор списка CDB для проверки, является ли подключенный USB-накопитель авторизованным.
5) Перезапустить менеджер Wazuh, чтобы применить изменения:
systemctl restart wazuh-manager
Тестирование конфигурации
Проверка проводится путем подключения неавторизованного USB-устройства к контролируемой конечной точке Ubuntu. Серийного номера девайса нет в списке CDB. Это запускает правило обнаружения неавторизованного USB, как показано ниже.








