Виявлення та протидія BlackSuit з Wazuh

blacksuit-logo

BlackSuit – це шкідливе програмне забезпечення, призначене для проникнення в комп’ютерні системи та шифрування критично важливих даних. Воно передусім націлене на організації з високим рівнем цінності в критично важливих секторах, демонструючи свій потенціал порушувати роботу та завдавати масштабних збитків.

Ця програма-вимагач спричинила значні фінансові збитки та операційні перебої в різних галузях. Розуміння того, як працює BlackSuit, та впровадження стратегій протидії їй допомагає організаціям проактивно захищати активи та підтримувати безперебійну роботу бізнесу в умовах мінливого ландшафту загроз.

У цьому блозі показано, як організації можуть виявляти та реагувати на програми-вимагачі BlackSuit на скомпрометованих кінцевих точках Windows.

Поведінка програми-вимагача BlackSuit

Нижче наведені деякі поведінкові ознаки успішного виконання програми-вимагача BlackSuit на комп’ютері з ОС Windows:

  • Для виконання та шифрування файлів на кінцевій точці програмі-вимагачу потрібні аргументи командного рядка. Він підтримує кілька аргументів, за якими слідує будь-яке 32-символьне значення. У цій публікації використано аргумент -name, за яким слідує випадкове 32-символьне значення.
  • Щоб запобігти відновленню після шифрування файлів, вона видаляє службу тіньових копій томів (Volume Shadow Copies Service, VSS). Це робиться за допомогою прихованої shell-команди, яка запускає VSSADMIN.EXE з параметрами /ALL і /Quiet.
"C:\Windows\Sysnative\vssadmin.exe" Delete Shadows /All /Quiet
  • Перед шифруванням програма використовує Microsoft-Windows-RestartManager, щоб визначити, чи використовуються цільові файли в даний момент або заблоковані іншими програмами. Це робиться для того, щоб зашифрувати якомога більше файлів. Послідовність API диспетчера перезапусків (Windows Restart Manager APIs), які використовує BlackSuit: RmStartSession, RmRegisterResources, RmGetList, RmShutdown і RmEndSession.
  • Програма-вимагач створює вимогу з файлом README.BlackSuit.txt в декількох каталогах, таких як C:\PerfLogs\, C:\Temp\, C:\Users\AppData\Roaming\, C:\Users\AppData\local\ C:\Users\, C:\ProgramData.
  • Вона шифрує файли на кінцевій точці та змонтованих ресурсах, додаючи до зашифрованих файлів розширення .blacksuit.

Проаналізовані індикатори компрометації (IOC)

Хеш-алгоритмЗначення
SHA25690ae0c693f6ffd6dc5bb2d5a5ef078629c3d77f874b2d2ebd9e109d8ca049f2c
MD5748de52961d2f182d47e88d736f6c835

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

Використано наступну інфраструктуру для демонстрації виявлення програм-вимагачів BlackSuit:

  • Попередньо зібрана, готова до використання остання доступна версія Wazuh, яка включає центральні компоненти Wazuh (сервер Wazuh, індексатор Wazuh та інформаційну панель Wazuh).
  • Комп’ютер з Windows 11 та встановленим агентом Wazuh.

Виявлення за допомогою Wazuh

Використано наступні методи для виявлення поведінки програми-вимагача BlackSuit на скомпрометованій кінцевій точці Windows:

  • Використання правил виявлення для розпізнавання активності, пов’язаної з програмою-вимагачем BlackSuit.
  • Виявлення та видалення шкідливих файлів за допомогою інтеграції з YARA та модулем Wazuh Active Response.

Правила виявлення

Wazuh відстежують системні події на кінцевій точці Windows за допомогою Sysmon і створюють власні правила на своєму сервері, щоб виявити зловмисну поведінку програм-вимагачів BlackSuit.

Кінцева точка Windows

Щоб налаштувати 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. Після успішного встановлення Sysmon слід додати наступні налаштування <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

Сервер Wazuh

У цьому розділі створено правила для виявлення активності програм-вимагачів BlackSuit на контрольованій кінцевій точці.

1. Створити файл blacksuit_ransomware.xml в каталозі /var/ossec/etc/rules/:

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

2. Додати наступні правила до файлу /var/ossec/etc/rules/blacksuit_ransomware.xml:

<group name="BlackSuit, ransomware,">

<!-- Ransomware execution -->
  <rule id="100011" level="12">
    <if_sid>61603</if_sid>
    <field name="win.eventdata.CommandLine" type="pcre2">(?i).*.exe\s+-name\s\d{32}$</field>
     <description>Possible BlackSuit ransomware executed.</description>
    <mitre>
       <id>T1059</id>
       <id>T1086</id>
    </mitre>
  </rule>
  
<!-- Inhibit system recovery -->
  <rule id="100012" level="12">
    <if_sid>61603</if_sid>
    <field name="win.eventdata.CommandLine" type="pcre2">(?i)vssadmin.exe\\"\sDelete\sShadows\s\/All\s\/Quiet</field>
    <description>Volume shadow copy deleted using $(win.eventdata.originalFileName). Potential ransomware activity detected.</description>
    <mitre>
      <id>T1490</id>
      <id>T1059.003</id>
    </mitre>
  </rule>
 
<!-- Ransom note file creation -->
  <rule id="100013" level="15" timeframe="100" frequency="2">
    <if_sid>61613</if_sid>
    <field name="win.eventdata.image" type="pcre2">\.exe</field>
    <field name="win.eventdata.targetFilename" type="pcre2">(?i)[C-Z]:.*.\\README.BlackSuit.txt</field>
    <description>The file $(win.eventdata.targetFilename) has been created in multiple directories. BlackSuit ransomware detected.</description>
    <mitre>
      <id>T1059</id>
    </mitre>
  </rule>
    
</group>

Наступні ідентифікатори правил спрацьовують, коли на кінцевій точці виявлено дії, пов’язані з програмою-вимагачем BlackSuit:

  • Правило з ID 100011 спрацьовує, коли на кінцевій точці виконується програма-вимагач BlackSuit з аргументом, за яким слідує 32-символьне значення.
  • Правило з ID 100012 спрацьовує, коли програма-вимагач BlackSuit видаляє всі тіньові копії файлів і папок на кінцевому комп’ютері.
  • Правило з ID 100013 спрацьовує, коли програма-вимагач BlackSuit скидає свою вимогу з файлом README.BlackSuit.txt в кілька папок.

3. Перезапустити сервер Wazuh, щоб застосувати зміни:

# systemctl restart wazuh-manager

Візуалізація сповіщень

На скриншоті нижче показано сповіщення, що генеруються на інформаційній панелі Wazuh, коли на кінцевій точці виконується програма-вимагач BlackSuit.

З інформаційної панелі Wazuh

  1. Перейти до Threat Intelligence > Threat Hunting.
  2. Натиснути + Add filter. Потім відфільтрувати за rule.id.
  3. У полі Operator вибрати is one of.
  4. Знайти й вибрати правила з ID 100011, 100012 і 100013 у полі Values.
  5. Натиснути кнопку Save.
blacksuit-ransomware-dashboard

Виявлення та видалення шкідливих файлів за допомогою інтеграції з YARA

Wazuh інтегрується з YARA, інструментом, призначеним для виявлення та класифікації артефактів шкідливого програмного забезпечення. Ця інтеграція сканує файли, додані або змінені на кінцевій точці Windows, щоб визначити, чи містять вони шкідливе програмне забезпечення.

Налаштовано модуль моніторингу цілісності файлів Wazuh (Wazuh File Integrity Monitoring) для відстеження змін у певній папці. Щоразу, коли файли додаються або змінюються в контрольованій папці, модуль Wazuh Active Response автоматично ініціює сканування YARA. Він виявляє потенційно шкідливі файли на основі попередньо визначених правил.

Кінцева точка Windows

Для цієї інтеграції потрібно, щоб на кінцевій точці були встановлені та налаштовані перелічені нижче передумови.

  • Python v 3.12.2 або новішої версії (з попередньо встановленим pip).

Після успішного встановлення вищезазначених умов слід перейти до наступних кроків, щоб завантажити виконуваний файл YARA.

Примітка: Запуск PowerShell від імені адміністратора

1. Запустити команду для завантаження YARA:

> Invoke-WebRequest -Uri https://github.com/VirusTotal/yara/releases/download/v4.3.2/yara-4.3.2-2150-win64.zip -OutFile v4.3.2-2150-win64.zip

2. Розпакувати завантажений файл YARA:

> Expand-Archive v4.3.2-2150-win64.zip

3. Створити папку C:\Program Files (x86)\ossec-agent\active-response\bin\yara\ і скопіювати в неї файл YARA binary:

> mkdir 'C:\Program Files (x86)\ossec-agent\active-response\bin\yara\'
> cp .\v4.3.2-2150-win64\yara64.exe 'C:\Program Files (x86)\ossec-agent\active-response\bin\yara\'

Після того, як вищеописані кроки будуть виконані, необхідно перейти до завантаження правил YARA.

4. У тому ж терміналі PowerShell, який було відкрито раніше, за допомогою утиліти pip потрібно встановити valhallaAPI. Цей API використовується для отримання набору правил YARA на основі відкритих підписів:

> pip install valhallaAPI

5. Створити файл download_yara_rules.py і вставити в нього наведений нижче скрипт:

from valhallaAPI.valhalla import ValhallaAPI
v = ValhallaAPI(api_key="1111111111111111111111111111111111111111111111111111111111111111")
response = v.get_rules_text()
with open('yara_rules.yar', 'w') as fh:
    fh.write(response)

6. Завантажити правила YARA і скопіювати їх до папки C:\Program Files (x86)\ossec-agent\active-response\bin\yara\rules\:

> python download_yara_rules.py 
> mkdir 'C:\Program Files (x86)\ossec-agent\active-response\bin\yara\rules\'
> cp yara_rules.yar 'C:\Program Files (x86)\ossec-agent\active-response\bin\yara\rules\'

7. Відредагувати завантажене правило YARA C:\Program Files (x86)\ossec-agent\active-response\bin\yara\rules\yara_rules.yar і додати наступне правило для програми-вимагача BlackSuit:

rule BlackSuit_ransomware {
   meta:
      description = "BlackSuit ransomware executable detection"
      author = "Aishat Motunrayo Awujola"
      reference = "https://github.com/Neo23x0/yarGen"
      date = "2024-10-03"

hash1= "90ae0c693f6ffd6dc5bb2d5a5ef078629c3d77f874b2d2ebd9e109d8ca049f2c"

   strings:
      $x1 = "C:\\Users\\pipi-\\source\\repos\\encryptor\\Release\\encryptor.pdb" fullword ascii
      $s2 = "api-ms-win-core-synch-l1-2-0.dll" fullword wide /* reversed goodware string 'lld.0-2-1l-hcnys-eroc-niw-sm-ipa' */
      $s3 = "C:\\Users\\Adm\\vcpkg\\packages\\openssl_x86-windows-static\\bin" fullword ascii
      $s4 = "C:\\Users\\Adm\\vcpkg\\buildtrees\\openssl\\x86-windows-static-rel\\providers\\implementations\\ciphers\\cipher_aes_hw_aesni.inc" ascii
      $s5 = "C:\\Users\\Adm\\vcpkg\\buildtrees\\openssl\\x86-windows-static-rel\\providers\\implementations\\ciphers\\cipher_aes_cts.inc" fullword ascii
      $s6 = "C:\\Users\\Adm\\vcpkg\\buildtrees\\openssl\\x86-windows-static-rel\\providers\\implementations\\macs\\blake2_mac_impl.c" fullword ascii
      $s7 = "get_payload_private_key" fullword ascii
      $s8 = "C:\\Users\\Adm\\vcpkg\\packages\\openssl_x86-windows-static\\lib\\engines-3" fullword ascii
      $s9 = "C:\\Users\\Adm\\vcpkg\\packages\\openssl_x86-windows-static" fullword ascii
      $s10 = "get_payload_public_key" fullword ascii
      $s11 = "C:\\Users\\Adm\\vcpkg\\buildtrees\\openssl\\x86-windows-static-rel\\crypto\\err\\err_local.h" fullword ascii
      $s12 = "C:\\Users\\Adm\\vcpkg\\buildtrees\\openssl\\x86-windows-static-rel\\providers\\implementations\\ciphers\\cipher_camellia_cts.inc" ascii
      $s13 = "C:\\Windows\\Sysnative\\bcdedit.exe" fullword wide
      $s14 = "C:\\Windows\\Sysnative\\vssadmin.exe" fullword wide
      $s15 = "error processing message" fullword ascii
      $s16 = "C:\\Users\\Adm\\vcpkg\\buildtrees\\openssl\\x86-windows-static-rel\\engines\\e_capi_err.c" fullword ascii
      $s17 = "AppPolicyGetProcessTerminationMethod" fullword ascii
      $s18 = "get_dh_dsa_payload_p" fullword ascii
      $s19 = "loader incomplete" fullword ascii
      $s20 = "get_payload_group_name" fullword ascii
   condition:
      uint16(0) == 0x5a4d and filesize < 7000KB and
      1 of ($x*) and 4 of them
}

8. Відредагувати файл C:\Program Files (x86)\ossec-agent\ossec.conf і додати наведену нижче конфігурацію в блоці <syscheck> для моніторингу папок Downloads всіх користувачів в режимі реального часу за допомогою модуля Wazuh FIM:

<directories realtime="yes">C:\Users\*\Downloads</directories>

Примітка: У цьому дописі відстежуються теки Downloads усіх користувачів. Однак ви можете налаштувати інші теки, які ви хочете відстежувати, залежно від ваших конкретних потреб.

9. Створити командний файл yara.bat у папці C:\Program Files (x86)\ossec-agent\active-response\bin.

10. Скопіювати наведений нижче скрипт у файл yara.bat. Модуль Wazuh Active Response автоматично запускає цей файл для виконання сканування YARA для виявлення та видалення шкідливого програмного забезпечення:

:: This script deletes BlackSuit ransomware as well as other malicious files matched by the YARA Rules
 
@echo off
setlocal enableDelayedExpansion
reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > NUL && SET OS=32BIT || SET OS=64BIT
if %OS%==32BIT (
    SET log_file_path="%programfiles%\ossec-agent\active-response\active-responses.log"
)
if %OS%==64BIT (
    SET log_file_path="%programfiles(x86)%\ossec-agent\active-response\active-responses.log"
)
set input=
for /f "delims=" %%a in ('PowerShell -command "$logInput = Read-Host; Write-Output $logInput"') do (
    set input=%%a
)
set json_file_path="C:\Program Files (x86)\ossec-agent\active-response\stdin.txt"
set syscheck_file_path=
echo %input% > %json_file_path%
FOR /F "tokens=* USEBACKQ" %%F IN (`Powershell -Nop -C "(Get-Content 'C:\Program Files (x86)\ossec-agent\active-response\stdin.txt'|ConvertFrom-Json).parameters.alert.syscheck.path"`) DO (
SET syscheck_file_path=%%F
)
set yara_exe_path="C:\Program Files (x86)\ossec-agent\active-response\bin\yara\yara64.exe"
set yara_rules_path="C:\Program Files (x86)\ossec-agent\active-response\bin\yara\rules\yara_rules.yar"
echo %syscheck_file_path% >> %log_file_path%
for /f "delims=" %%a in ('powershell -command "& \"%yara_exe_path%\" \"%yara_rules_path%\" \"%syscheck_file_path%\""') do (
    echo wazuh-yara: INFO - Scan result: %%a >> %log_file_path%
    :: Deleting the scanned file.
    del /f "%syscheck_file_path%" >nul 2>&1
if exist "%syscheck_file_path%" (
    echo wazuh-yara: INFO - Error removing threat: %%a >> %log_file_path%
) else (
    echo wazuh-yara: INFO - Successfully deleted: %%a >> %log_file_path%
)
 )
exit /b

11. Перезапустити агент Wazuh, щоб зміни набули чинності:

> Restart-Service -Name wazuh

Сервер Wazuh

Для того, щоб налаштувати правила, кастомні декодери та активну відповідь, необхідно виконати наведені нижче кроки.

1. Створити власні правила у файлі /var/ossec/etc/rules/local_rules.xml. Ці правила викликатимуть сповіщення для будь-яких файлів, доданих або змінених у папці Downloads на контрольованій кінцевій точці.

<group name= "syscheck,">
  <rule id="100024" level="7">
    <if_sid>550</if_sid>
    <field name="file" type="pcre2">(?i)C:\\Users.+Downloads</field>
    <description>File modified in the Downloads folder.</description>
  </rule>

  <rule id="100025" level="7">
    <if_sid>554</if_sid>
    <field name="file" type="pcre2">(?i)C:\\Users.+Downloads</field>
    <description>File added to the Downloads folder.</description>
  </rule>
</group>

Де:

  • Правило з ID 100024 спрацьовує, коли файл змінюється в теці Downloads.
  • Правило з ID 100025 спрацьовує, коли файл додається до теки Downloads.

2. Додати наступну конфігурацію до файлу /var/ossec/etc/ossec.conf в блоці <ossec_config>:

<command>
  <name>yara</name>
  <executable>yara.bat</executable>
  <timeout_allowed>no</timeout_allowed>
</command>
<active-response>
  <command>yara</command>
  <location>local</location>
  <rules_id>100024,100025</rules_id>
</active-response>

Модуль Wazuh Active Response виконує скрипт yara.bat, коли файл додається або змінюється в папці Downloads.

Де:

  • <name> вказує назву команди, яка викликається в розділі активної відповіді.
  • <executable> вказує виконуваний файл для запуску.
  • <command> вказує команду, яку буде використано в активній відповіді.
  • Блок <active response> викликає блок <command>, коли спрацьовує правило з ID 100024 або 100025.
  • <location> вказує, де виконується сценарій активної відповіді.

3. Додати наступні декодери до файлу /var/ossec/etc/decoders/local_decoder.xml для декодування журналів, згенерованих сценарієм активної відповіді:

<decoder name="yara_decoder">
    <prematch>wazuh-yara:</prematch>
</decoder>
<decoder name="yara_decoder1">
    <parent>yara_decoder</parent>
    <regex>wazuh-yara: (\S+) - Scan result: (\S+) (\S+)</regex>
    <order>log_type, yara_rule, yara_scanned_file</order>
</decoder>

<decoder name="yara_decoder1">
    <parent>yara_decoder</parent>
    <regex>wazuh-yara: (\S+) - Successfully deleted: (\S+) (\S+)</regex>
    <order>log_type, yara_rule, yara_scanned_file</order>
</decoder>

<decoder name="yara_decoder1">
    <parent>yara_decoder</parent>
    <regex>wazuh-yara: (\S+) - Error removing threat: (\S+) (\S+)</regex>
    <order>log_type, yara_rule, yara_scanned_file</order>
</decoder>

4. Створити власні правила у файлі /var/ossec/etc/rules/local_rules.xml, щоб генерувати сповіщення про активні дії YARA:

<!--  Rule for the decoder (yara_decoder) -->
<group name="yara,">
  <rule id="100026" level="0">
    <decoded_as>yara_decoder</decoded_as>
    <description>Yara grouping rule</description>
  </rule>

<!--  YARA scan detects a positive match -->
  <rule id="100027" level="12">
    <if_sid>100026</if_sid>
    <match type="pcre2">wazuh-yara: INFO - Scan result: </match>
    <description>File "$(yara_scanned_file)" is a positive match. Yara rule: $(yara_rule)</description>
  </rule>

<!--  Wazuh successfully deletes malware with a positive match -->
  <rule id="100028" level="12">
    <if_sid>100026</if_sid>
    <match type="pcre2">wazuh-yara: INFO - Successfully deleted: </match>
    <description>Successfully removed "$(yara_scanned_file)" by active response due to YARA rule $(yara_rule) positive match</description>
  </rule>

<!--  Wazuh encounters an error when deleting malware with a positive match -->
  <rule id="100029" level="12">
    <if_sid>100026</if_sid>
    <match type="pcre2">wazuh-yara: INFO - Error removing threat: </match>
    <description>Error removing "$(yara_scanned_file)". YARA rule: $(yara_rule)</description>
  </rule>
</group>

Де:

  • Правило з ID 100026 є базовим правилом для виявлення подій, пов’язаних з YARA.
  • Правило з ID 100027 спрацьовує, коли YARA сканує і виявляє шкідливий файл.
  • Правило з ID 100028 спрацьовує, коли виявлений файл було успішно видалено модулем активного реагування Wazuh.
  • Правило з ID 100029 спрацьовує, якщо виявлений файл не був успішно видалений модулем активного реагування Wazuh.

5. Перезапустити менеджер Wazuh, щоб зміни набули чинності:

$ sudo systemctl restart wazuh-manager

Результати виявлення

Сповіщення генеруються на інформаційній панелі, коли виконуваний файл програми-вимагача BlackSuit додається до контрольованої папки, в цьому випадку до папки Downloads комп’ютері користувача. Щоб переглянути ці сповіщення на інформаційній панелі Wazuh необхідно виконати такі дії:

  1. Перейти до Threat intelligence > Threat Hunting.
  2. Натиснути + Add filter. Потім відфільтрувати за rule.id.
  3. У полі Operator вибрати is one of.
  4. Знайти й вибрати правила з ID 100025, 100027 і 100028 у полі Values.
  5. Натиснути кнопку Save.
blacksuit-detection-rules

Висновок

BlackSuit демонструє постійну еволюцію програм-вимагачів, де зловмисники продовжують вдосконалювати свої методи, щоб максимізувати шкоду та прибуток. Організації повинні зберігати пильність, використовуючи ефективні плани реагування на інциденти і впроваджуючи передові заходи безпеки, щоб виявляти і захищатися від атак зловмисників. Раннє виявлення та проактивні заходи безпеки є ключем до пом’якшення впливу таких складних загроз.

У цьому блозі було продемонстровано, як організації можуть використовувати Wazuh для виявлення та видалення програми-вимагача BlackSuit на кінцевих точках з ОС Windows. Було використано Sysmon для розширення журналів з комп’ютера користувача та створено правила виявлення для ідентифікації зловмисної поведінки, пов’язаної з програмою-вимагачем BlackSuit. Крім того, за допомогою YARA з модулем Wazuh Active Response вдалося виявити та автоматично видалити програму-вимагача після її завантаження на контрольовану кінцеву точку.

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