Статья Секретная техника LotL: Как легитимные инструменты Windows используют в атаках

1785162117520.png

Введение​

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

Такой подход называется Living off the Land, или сокращённо LotL — «жизнь за счёт ресурсов системы».
Для исследования подобных техник существует проект LOLBAS — Living Off The Land Binaries, Scripts and Libraries:

Цель LOLBAS — каталогизировать подписанные Microsoft исполняемые файлы, библиотеки и сценарии, обладающие неожиданными функциями, которые могут быть полезны специалистам Red Team, исследователям безопасности и реальным злоумышленникам. В проект включаются возможности запуска кода, загрузки файлов, компиляции, обхода контроля приложений, закрепления, обхода UAC, доступа к учётным данным, создания дампов памяти и сокрытия активности.

Эта статья показывает:
  • как устроен каталог LOLBAS;
  • как пользоваться карточками проекта;
  • почему подписанный системный файл не всегда безопасен;
  • как выглядят типичные атаки с LOLBins;
  • как безопасно воспроизводить техники в лаборатории;
  • какие события Windows и Sysmon собирать;
  • как создавать правила обнаружения;
  • как уменьшить поверхность атаки с помощью App Control, AppLocker и ASR.
Важно: все эксперименты следует проводить только на собственных компьютерах, тестовых виртуальных машинах или в инфраструктуре, на проверку которой получено разрешение.

Что такое LOLBin​

LOLBin — это легитимный исполняемый файл, который можно использовать не только по прямому назначению, но и для выполнения действий, полезных атакующему.
Например, системная программа может уметь:
  • скачивать файлы по HTTP или HTTPS;
  • загружать DLL;
  • запускать JavaScript или VBScript;
  • выполнять другой процесс;
  • компилировать исходный код;
  • декодировать Base64;
  • работать с Alternate Data Streams;
  • создавать задания для фонового выполнения;
  • обращаться к памяти другого процесса;
  • обходить неудачно настроенные правила разрешения приложений.
Подобные файлы обычно уже присутствуют в Windows либо устанавливаются вместе с компонентами Microsoft. Они могут иметь корректную цифровую подпись и находиться в системном каталоге.
MITRE ATT&CK выделяет отдельную технику T1218 — System Binary Proxy Execution. Она описывает использование доверенных и подписанных программ для косвенного запуска подозрительного или вредоносного содержимого. Среди её подтехник находятся mshta.exe, msiexec.exe, regsvr32.exe, rundll32.exe, InstallUtil.exe, odbcconf.exe и другие системные компоненты.

Почему это представляет проблему​

Многие упрощённые модели защиты строятся на следующих предположениях:
  1. подписанный Microsoft файл является безопасным;
  2. системным программам можно разрешить запуск без ограничений;
  3. процессы из C:\Windows\System32 не требуют дополнительного анализа;
  4. антивирус должен обнаружить вредоносный EXE-файл;
  5. блокировка PowerShell остановит выполнение сценариев.
LOLBAS показывает, почему такие предположения опасны.
Подписанный файл может быть безопасным сам по себе, но получить опасные аргументы командной строки, загрузить неподписанную библиотеку или запустить сценарий с удалённого сервера.
Поэтому анализировать необходимо не только имя и подпись процесса, но и:
  • командную строку;
  • родительский процесс;
  • дочерние процессы;
  • сетевые подключения;
  • загруженные библиотеки;
  • созданные файлы;
  • изменения реестра;
  • учётную запись пользователя;
  • время и контекст выполнения.

Как пользоваться сайтом LOLBAS​

1. Поиск по имени файла​

Если в журнале обнаружен необычный процесс, например:
Код:
mshta.exe
certutil.exe
rundll32.exe
regsvr32.exe
bitsadmin.exe
csc.exe
необходимо ввести его имя в строку поиска LOLBAS.
Если файл присутствует в каталоге, откроется его карточка с описанием известных способов злоупотребления.
Наличие программы в LOLBAS не означает, что любой её запуск является атакой. Каталог показывает потенциально опасные возможности, а не выносит вердикт по конкретному событию.

2. Поиск по функции​

LOLBAS позволяет искать объекты по выполняемой функции. В проекте используются, в частности, следующие категории:
КатегорияВозможность
ExecuteЗапуск кода или другого процесса
DownloadЗагрузка файлов
UploadПередача файлов
EncodeКодирование данных
DecodeДекодирование данных
Alternate data streamsРабота с NTFS ADS
CopyКопирование файлов
CredentialsДоступ к информации об учётных данных
CompileКомпиляция исходного кода
AWL bypassОбход контроля разрешённых приложений
UAC bypassОбход контроля учётных записей
ReconnaissanceСбор информации о системе
DumpСоздание дампов памяти
TamperИзменение файлов, процессов или настроек
ConcealСокрытие активности
Один бинарный файл может относиться сразу к нескольким категориям. Например, certutil.exe способен загружать файлы, кодировать их и декодировать, а bitsadmin.exe — скачивать, копировать и косвенно запускать файлы.

3. Структура карточки LOLBAS​

Карточка обычно содержит следующие поля.

Description​

Нормальное назначение программы.

Paths​

Стандартные пути, по которым располагается файл:
Код:
C:\Windows\System32\
C:\Windows\SysWOW64\
C:\Windows\Microsoft.NET\Framework\
Следует учитывать, что копирование системного файла в пользовательский каталог само по себе может быть подозрительным.

Commands​

Примеры команд, демонстрирующих неожиданную функцию.
Вместо реальных адресов и файлов LOLBAS обычно использует шаблоны:
Код:
{REMOTEURL}
{PATH}
{PATH_ABSOLUTE}
{CMD}

Use case​

Объяснение того, зачем атакующему может понадобиться эта функция.

Privileges required​

Необходимый уровень привилегий:
Код:
User
Administrator
Local Admin
Многие техники LOLBAS работают от имени обычного пользователя.

Operating systems​

Версии Windows, на которых проверена техника.
Необходимо учитывать, что поведение может изменяться после обновлений Windows. Отдельные команды работают только на старых версиях системы или при наличии определённых компонентов.

ATT&CK technique​

Идентификатор соответствующей техники MITRE ATT&CK, например:
Код:
T1105
T1218.005
T1218.011
T1564.004

Detections​

Рекомендации по обнаружению:
  • Sigma-правила;
  • IOC;
  • подозрительные аргументы;
  • необычные дочерние процессы;
  • сетевые подключения;
  • изменения реестра;
  • создание файлов.

Resources​

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

Программный доступ к базе LOLBAS​

Проект предоставляет базу в форматах JSON и CSV. JSON содержит все записи в структуре, близкой к исходным YAML-файлам, а CSV разбит по отдельным файлам и командам.

Загрузка JSON​

Код:
curl -L \
  https://lolbas-project.github.io/api/lolbas.json \
  -o lolbas.json

Поиск всех программ с функцией Download​

Для Linux, WSL или Git Bash:
Код:
jq -r '
  .[] as $item
  | $item.Commands[]?
  | select(.Category == "Download")
  | [$item.Name, .MitreID, .Command]
  | @tsv
' lolbas.json

Поиск техник обхода контроля приложений​

Код:
jq -r '
  .[] as $item
  | $item.Commands[]?
  | select(.Category == "AWL Bypass")
  | [$item.Name, .Privileges, .MitreID]
  | @tsv
' lolbas.json

Поиск по имени через PowerShell​

Код:
$data = Invoke-RestMethod `
    -Uri "https://lolbas-project.github.io/api/lolbas.json"

$data |
    Where-Object Name -Like "*certutil*" |
    Select-Object Name, Description, Full_Path, Commands

Формирование списка потенциально опасных бинарных файлов​

Код:
$data = Invoke-RestMethod `
    -Uri "https://lolbas-project.github.io/api/lolbas.json"

$data |
    Where-Object {
        $_.Commands.Category -contains "Execute" -or
        $_.Commands.Category -contains "Download" -or
        $_.Commands.Category -contains "UAC Bypass"
    } |
    Select-Object -ExpandProperty Name |
    Sort-Object -Unique
Полученный список можно использовать:
  • для проверки журналов;
  • для создания словаря в SIEM;
  • для обогащения событий EDR;
  • для аудита AppLocker или App Control;
  • для поиска редких процессов;
  • для сопоставления с MITRE ATT&CK.
Не следует автоматически блокировать все найденные файлы: некоторые из них необходимы операционной системе или корпоративным приложениям.

Безопасная лаборатория для изучения LOLBAS​

Рекомендуется использовать отдельную виртуальную машину:
Код:
Windows 10 или Windows 11
Sysmon
Microsoft Defender
Снимок виртуальной машины
Сеть Host-only или NAT
Тестовая учётная запись без прав администратора
Для большей наглядности можно использовать две виртуальные машины:
Код:
[Исследовательская VM] ---- изолированная сеть ---- [Windows VM]
Но для приведённых ниже примеров достаточно одной Windows-машины и локального адреса 127.0.0.1.

Подготовка каталога​

Запустите PowerShell:
Код:
New-Item -ItemType Directory -Path C:\Lab -Force
Set-Content -Path C:\Lab\marker.txt -Value "LOLBAS LAB MARKER"

Запуск локального HTTP-сервера​

Если установлен Python:
Код:
py -m http.server 8000 `
    --directory C:\Lab `
    --bind 127.0.0.1
Оставьте сервер запущенным и откройте второй терминал.
Проверка:
Код:
Invoke-WebRequest http://127.0.0.1:8000/marker.txt

Пример атаки №1: загрузка файла через Certutil​

Нормальное назначение​

certutil.exe предназначен для работы с сертификатами и инфраструктурой открытых ключей Windows.
Однако программа также способна:
  • обращаться к URL;
  • сохранять полученные данные;
  • кодировать файлы в Base64;
  • декодировать Base64;
  • декодировать шестнадцатеричные данные.
LOLBAS связывает загрузку через Certutil с техникой MITRE ATT&CK T1105 — Ingress Tool Transfer.

Типичный сценарий атаки​

Код:
Фишинг или эксплуатация уязвимости
             ↓
Первоначальное выполнение команды
             ↓
certutil.exe загружает следующий компонент
             ↓
Загруженный файл запускается другим LOLBin
Преимущество для атакующего заключается в том, что ему не требуется заранее доставлять curl.exe, wget.exe или собственный загрузчик.

Безопасная демонстрация​

Код:
certutil.exe -urlcache -f ^
  http://127.0.0.1:8000/marker.txt ^
  C:\Lab\certutil-marker.txt
Проверка:
Код:
type C:\Lab\certutil-marker.txt
Удаление созданного кэша и файла:
Код:
certutil.exe -urlcache * delete
del C:\Lab\certutil-marker.txt

Что должно попасть в журналы​

При правильно настроенном мониторинге можно увидеть:
Код:
Process:        certutil.exe
CommandLine:    certutil.exe -urlcache -f http://127.0.0.1...
Network:        127.0.0.1:8000
Created file:   C:\Lab\certutil-marker.txt
Parent process: cmd.exe или powershell.exe

Признаки подозрительной активности​

Особого внимания требуют аргументы:
Код:
-urlcache
-verifyctl
-decode
-decodehex
-encode
Дополнительные признаки:
  • URL в командной строке;
  • создание EXE, DLL, PS1, JS, VBS или HTA;
  • запуск Certutil из Office, браузера или архиватора;
  • запись в %TEMP%, %APPDATA%, %PUBLIC%;
  • немедленный запуск созданного файла;
  • подключение к неизвестному внешнему домену.
Само по себе использование certutil.exe не является доказательством атаки. Администраторы действительно используют эту программу для работы с сертификатами.

Пример атаки №2: выполнение сценария через Mshta​

Нормальное назначение​

mshta.exe запускает приложения формата HTA — HTML Application.
HTA-файл может содержать:
  • HTML;
  • JavaScript;
  • JScript;
  • VBScript;
  • COM-объекты Windows.
Именно поэтому mshta.exe может использоваться как доверенный посредник для выполнения сценария. MITRE относит эту технику к T1218.005. LOLBAS также отмечает возможность запуска локального HTA, сценария из аргументов и удалённого содержимого.

Типичный сценарий атаки​

Код:
Пользователь открывает документ или ярлык
                 ↓
Документ запускает mshta.exe
                 ↓
mshta.exe получает HTA или сценарий
                 ↓
Сценарий запускает следующий этап атаки
mshta.exe особенно подозрителен, если его родительским процессом является:
Код:
winword.exe
excel.exe
outlook.exe
acrord32.exe
chrome.exe
msedge.exe
7zFM.exe
explorer.exe после открытия LNK-файла

Безопасная демонстрация​

Создадим HTA, который не запускает оболочку, а только записывает маркерный файл.
Файл C:\Lab\demo.hta:
Код:
<html>
<head>
    <title>LOLBAS Laboratory</title>

    <hta:application
        applicationname="LOLBAS-LAB"
        border="thin"
        showintaskbar="no"
        singleinstance="yes"
        windowstate="minimize"
    />
</head>

<script language="VBScript">
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set file = fso.CreateTextFile("C:\Lab\mshta-marker.txt", True)

    file.WriteLine "Executed through mshta.exe"
    file.Close

    window.close
</script>
</html>
Запуск:
Код:
mshta.exe C:\Lab\demo.hta
Проверка:
Код:
type C:\Lab\mshta-marker.txt

Что искать в журналах​

Код:
Image:       C:\Windows\System32\mshta.exe
CommandLine: mshta.exe C:\Lab\demo.hta
FileCreate:  C:\Lab\mshta-marker.txt
Более опасными являются случаи, когда командная строка содержит:
Код:
http://
https://
javascript:
vbscript:
script:
.sct
.hta
LOLBAS рекомендует обращать внимание на выполнение встроенного или обфусцированного сценария, сетевые подключения mshta.exe, использование HTA и загрузку CLR-библиотек этим процессом.

Пример атаки №3: выполнение DLL через Rundll32​

Нормальное назначение​

rundll32.exe используется для вызова экспортируемых функций из DLL.
Пример легитимного запуска панели управления:
Код:
rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl
Проблема заключается в том, что rundll32.exe может получить путь к сторонней библиотеке и вызвать содержащуюся в ней функцию.

Схема злоупотребления​

Код:
Атакующий доставляет DLL
          ↓
rundll32.exe загружает DLL
          ↓
Вызывается экспортируемая функция
          ↓
Код работает внутри доверенного процесса
LOLBAS описывает выполнение DLL с локального диска, SMB-ресурса, через COM и из Alternate Data Stream. MITRE относит злоупотребление rundll32.exe к T1218.011.
В лаборатории синтаксис может выглядеть так:
Код:
rundll32.exe C:\Lab\TelemetryTest.dll,Run
Здесь TelemetryTest.dll должна быть специально созданной безвредной тестовой библиотекой, которая, например, записывает маркерный файл.
В этой статье не приводится код DLL, чтобы пример нельзя было непосредственно превратить в скрытую полезную нагрузку.

Основные признаки обнаружения​

Следует анализировать:
  • путь к загружаемой DLL;
  • цифровую подпись DLL;
  • хеш DLL;
  • каталог, из которого она загружена;
  • имя экспортируемой функции;
  • родительский процесс;
  • сетевое подключение;
  • дочерние процессы rundll32.exe.
Подозрительные каталоги:
Код:
C:\Users\Public\
C:\Users\<user>\AppData\
C:\Windows\Temp\
C:\ProgramData\
сетевой UNC-путь
подключённый WebDAV-ресурс
Высокий приоритет следует назначать случаям, когда:
Код:
rundll32.exe → cmd.exe
rundll32.exe → powershell.exe
rundll32.exe → wscript.exe
rundll32.exe → mshta.exe

Пример атаки №4: передача файлов через Bitsadmin​

Нормальное назначение​

bitsadmin.exe управляет Background Intelligent Transfer Service — службой фоновой передачи данных.
BITS может продолжать передачу после разрыва соединения и выполнять её в фоновом режиме. Это делает технологию удобной для обновлений, но одновременно привлекательной для злоумышленников.
LOLBAS отмечает у bitsadmin.exe возможности:
  • скачивания;
  • копирования;
  • запуска файла;
  • работы с ADS;
  • использования задания для закрепления.

Безопасная демонстрация загрузки​

Создание задания:
Код:
bitsadmin /create LOLBAS-LAB
Добавление безвредного файла:
Код:
bitsadmin /addfile LOLBAS-LAB ^
  http://127.0.0.1:8000/marker.txt ^
  C:\Lab\bits-marker.txt
Запуск передачи:
Код:
bitsadmin /resume LOLBAS-LAB
Просмотр состояния:
Код:
bitsadmin /info LOLBAS-LAB /verbose
Завершение:
Код:
bitsadmin /complete LOLBAS-LAB
Проверка:
Код:
type C:\Lab\bits-marker.txt

Как это используется в реальной атаке​

Вместо текстового файла атакующий может передавать:
Код:
DLL
EXE
HTA
JavaScript
VBScript
PowerShell-сценарий
архив
зашифрованный контейнер
Особенно опасно сочетание фоновой передачи с настройкой команды уведомления. Оно позволяет запускать процесс после изменения состояния BITS-задания.
Полная команда закрепления здесь намеренно не приводится.

Индикаторы​

Код:
bitsadmin.exe /create
bitsadmin.exe /addfile
bitsadmin.exe /SetNotifyCmdLine
bitsadmin.exe /resume
Дополнительные признаки:
  • нестандартное имя задания;
  • внешний URL;
  • сохранение файла в пользовательском каталоге;
  • дочерний процесс от bitsadmin.exe;
  • задание, созданное интерактивным пользователем;
  • передача файла с исполняемым расширением.

Пример атаки №5: компиляция кода через Csc.exe​

Нормальное назначение​

csc.exe — компилятор C#, входящий в состав .NET Framework.
Если компилятор присутствует на целевой машине, атакующему не требуется доставлять заранее скомпилированный EXE-файл. Он может передать небольшой исходный код и собрать программу непосредственно на компьютере жертвы.
LOLBAS классифицирует это как функцию Compile и сопоставляет с MITRE ATT&CK T1127.

Безопасная демонстрация​

Создадим файл C:\Lab\Marker.cs:
Код:
using System;
using System.IO;

internal static class Program
{
    private static void Main()
    {
        File.WriteAllText(
            @"C:\Lab\csc-marker.txt",
            "Compiled and executed in LOLBAS laboratory"
        );

        Console.WriteLine("Laboratory marker created.");
    }
}
Компиляция:
Код:
%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\csc.exe ^
  /nologo ^
  /out:C:\Lab\Marker.exe ^
  C:\Lab\Marker.cs
Запуск:
Код:
C:\Lab\Marker.exe
Проверка:
Код:
type C:\Lab\csc-marker.txt

Что искать​

Код:
csc.exe /out:
csc.exe /target:
csc.exe /reference:
Подозрительным является сочетание:
Код:
Office или браузер
        ↓
cmd.exe / powershell.exe
        ↓
csc.exe
        ↓
новый EXE в Temp или AppData
        ↓
запуск созданного EXE
Следует учитывать, что разработчики и системы сборки легитимно используют csc.exe. Поэтому правило необходимо настраивать с учётом:
  • рабочей станции;
  • пользователя;
  • каталога исходного кода;
  • родительского процесса;
  • пути выходного файла;
  • времени выполнения.

Опасные техники, которые лучше исследовать только на уровне обнаружения​

Некоторые записи LOLBAS имеют повышенный риск и не должны без необходимости воспроизводиться даже в корпоративной тестовой сети.

Обход UAC через ComputerDefaults.exe​

ComputerDefaults.exe может участвовать в сценарии, при котором значения в пользовательской ветке реестра приводят к выполнению команды с повышенным уровнем привилегий без обычного диалога UAC.
LOLBAS рекомендует контролировать:
Код:
HKCU\Software\Classes\ms-settings\Shell\open\command
а также дочерние процессы ComputerDefaults.exe.
Полная последовательность изменения реестра намеренно не приводится.

Полезное правило обнаружения​

Код:
Событие изменения реестра
        +
путь HKCU\Software\Classes\ms-settings
        +
запуск ComputerDefaults.exe
        +
необычный дочерний процесс

Создание дампа процесса через RdrLeakDiag.exe​

Некоторые системные диагностические программы способны создавать дампы памяти процессов. В определённых условиях это может использоваться для извлечения чувствительной информации.
LOLBAS указывает, что rdrleakdiag.exe может создавать полный дамп процесса, а при наличии административных прав — использоваться против процесса LSASS.
Команды для создания дампа LSASS в статье не приводятся.
Следует контролировать:
  • запуск rdrleakdiag.exe;
  • обращение к lsass.exe;
  • создание файлов minidump_*.dmp;
  • событие Sysmon Process Access;
  • запуск диагностического инструмента обычным пользователем;
  • последующее архивирование или передачу дампа.

Как обнаруживать LOLBins​

Почему нельзя просто искать имя процесса​

Следующее правило создаст слишком много ложных срабатываний:
Код:
Если запущен rundll32.exe — это атака.
rundll32.exe, certutil.exe, msiexec.exe и другие системные программы имеют легитимные применения.
Более правильный подход:
Код:
Подозрительный бинарный файл
        +
опасные аргументы
        +
необычный родитель
        +
сеть или созданный файл
        +
редкий контекст выполнения
MITRE рекомендует выявлять доверенные подписанные программы, которые запускают внешнее, неподписанное или подозрительное содержимое. Основными источниками данных выступают создание процессов, сетевые подключения и загрузка модулей.

Полезные события Sysmon​

Event ID 1 — Process Create​

Содержит:
  • полный путь процесса;
  • командную строку;
  • родительский процесс;
  • хеш;
  • Process GUID.
Это основное событие для обнаружения LOLBins.

Event ID 3 — Network Connect​

Показывает сетевые соединения, инициированные процессом:
  • адрес назначения;
  • порт;
  • протокол;
  • Process GUID.
Сетевой мониторинг может быть шумным, поэтому его желательно включать избирательно для потенциально опасных системных программ.

Event ID 7 — Image Load​

Показывает загрузку DLL или исполняемого образа в процесс.
Полезен для:
  • обнаружения неподписанной DLL в rundll32.exe;
  • анализа side-loading;
  • поиска необычных модулей;
  • контроля загрузки CLR в нетипичный процесс.
Событие может создавать большое количество записей и требует фильтрации.

Event ID 10 — Process Access​

Показывает, что один процесс открыл другой.
Особенно полезен для обнаружения:
  • доступа к LSASS;
  • чтения памяти;
  • внедрения кода;
  • работы инструментов создания дампа.

Event ID 11 — File Create​

Показывает создание или перезапись файла.
Полезен для сопоставления последовательности:
Код:
certutil.exe
     ↓
сетевое подключение
     ↓
создание файла
     ↓
запуск созданного файла

Event ID 15 — File Create Stream Hash​

Позволяет наблюдать создание Alternate Data Streams, включая Zone.Identifier.
ADS часто используется для сокрытия данных или кода.

Event ID 22 — DNS Query​

Показывает DNS-запросы, связанные с процессом.
Особенно полезно искать DNS-запросы от:
Код:
mshta.exe
rundll32.exe
regsvr32.exe
certutil.exe
bitsadmin.exe
msiexec.exe

Event ID 12–14 — Registry Events​

Используются для контроля:
  • создания ключей;
  • изменения значений;
  • удаления значений;
  • настройки закрепления;
  • подготовки обхода UAC.
Sysmon предназначен для регистрации выполнения процессов, сетевой активности, создания файлов и других низкоуровневых событий, однако сам по себе не выполняет анализ — события необходимо отправлять в SIEM, EDR или обрабатывать собственными правилами.

Пример Sigma-правила для Certutil​

Код:
title: Suspicious Certutil File Download
id: 26ed2b58-49aa-44c0-a73e-9862f7e3a001
status: experimental

description: >
  Detects certutil.exe with arguments commonly associated
  with downloading files.

author: Zer0Kernel Research
date: 2026-07-27

logsource:
  category: process_creation
  product: windows

detection:
  selection_image:
    Image|endswith: '\certutil.exe'

  selection_arguments:
    CommandLine|contains:
      - '-urlcache'
      - '-verifyctl'
      - 'http://'
      - 'https://'

  condition: selection_image and selection_arguments

falsepositives:
  - Certificate administration
  - PKI maintenance scripts
  - Software deployment systems

level: medium

tags:
  - attack.command-and-control
  - attack.t1105
Это правило следует дополнить проверками:
Код:
родительского процесса;
каталога назначения;
расширения файла;
домена назначения;
учётной записи;
последующего запуска файла.

Пример общего Sigma-правила для сетевой активности LOLBins​

Код:
title: Suspicious Network Connection From Windows LOLBin
id: b220fa7c-67e7-4a73-a947-470271627002
status: experimental

description: >
  Detects network activity from Windows binaries that
  generally should not access arbitrary external resources.

author: Zer0Kernel Research
date: 2026-07-27

logsource:
  category: network_connection
  product: windows

detection:
  selection:
    Image|endswith:
      - '\mshta.exe'
      - '\rundll32.exe'
      - '\regsvr32.exe'
      - '\certutil.exe'
      - '\bitsadmin.exe'
      - '\odbcconf.exe'
      - '\installutil.exe'

  filter_local:
    DestinationIp:
      - '127.0.0.1'
      - '::1'

  condition: selection and not filter_local

falsepositives:
  - Enterprise software deployment
  - Certificate infrastructure
  - Legitimate administration
  - Vendor update mechanisms

level: medium

tags:
  - attack.defense-evasion
  - attack.t1218
  - attack.command-and-control
  - attack.t1105
В реальной среде потребуется добавить разрешённые:
  • корпоративные домены;
  • прокси-серверы;
  • серверы обновлений;
  • PKI-серверы;
  • системы управления рабочими станциями.

Пример поиска в Microsoft Defender for Endpoint​

Код:
DeviceProcessEvents
| where FileName in~ (
    "mshta.exe",
    "rundll32.exe",
    "regsvr32.exe",
    "certutil.exe",
    "bitsadmin.exe",
    "csc.exe",
    "installutil.exe",
    "odbcconf.exe"
)
| where ProcessCommandLine has_any (
    "http://",
    "https://",
    "javascript:",
    "vbscript:",
    "-urlcache",
    "-verifyctl",
    "-decode",
    "SetNotifyCmdLine"
)
| project
    Timestamp,
    DeviceName,
    AccountName,
    InitiatingProcessFileName,
    FileName,
    ProcessCommandLine,
    FolderPath,
    SHA256
| order by Timestamp desc

Поиск необычных дочерних процессов​

Код:
DeviceProcessEvents
| where InitiatingProcessFileName in~ (
    "mshta.exe",
    "rundll32.exe",
    "regsvr32.exe",
    "bitsadmin.exe",
    "computerdefaults.exe"
)
| where FileName in~ (
    "cmd.exe",
    "powershell.exe",
    "pwsh.exe",
    "wscript.exe",
    "cscript.exe",
    "mshta.exe"
)
| project
    Timestamp,
    DeviceName,
    AccountName,
    InitiatingProcessFileName,
    InitiatingProcessCommandLine,
    FileName,
    ProcessCommandLine

Корреляция вместо одиночных индикаторов​

Наиболее эффективные правила строятся не на одном событии, а на цепочке.

Цепочка загрузки​

Код:
Event ID 1:
certutil.exe с URL
        ↓
Event ID 3 или 22:
сетевое подключение или DNS
        ↓
Event ID 11:
создание EXE/DLL/PS1
        ↓
Event ID 1:
запуск созданного файла

Цепочка Mshta​

Код:
Office или браузер
        ↓
mshta.exe
        ↓
внешнее соединение
        ↓
создание файла или дочернего процесса

Цепочка Rundll32​

Код:
rundll32.exe
        ↓
DLL из пользовательского каталога
        ↓
Image Load неподписанной DLL
        ↓
сеть или дочерняя оболочка

Цепочка обхода UAC​

Код:
изменение HKCU\Software\Classes
        ↓
запуск ComputerDefaults.exe
        ↓
дочерний процесс с High Integrity
Такие цепочки значительно уменьшают количество ложных срабатываний.

Оценка риска LOLBin​

Для каждого системного файла можно рассчитать условный уровень риска.

Низкий риск​

Код:
Файл находится в System32
+
аргументы соответствуют нормальной функции
+
родитель ожидаемый
+
нет внешней сети
+
нет подозрительных дочерних процессов

Средний риск​

Код:
Системный файл
+
редкие аргументы
+
запуск обычным пользователем
+
создание файла в Temp

Высокий риск​

Код:
Системный подписанный файл
+
URL или удалённый путь
+
неподписанная DLL или сценарий
+
необычный родитель
+
создание дочерней оболочки
+
последующее закрепление
Пример условной системы баллов:

СобытиеБаллы
Редкий LOLBin+10
URL в командной строке+20
Запуск из Office+30
Создание EXE или DLL+25
Неподписанный загруженный модуль+30
Дочерний cmd.exe или powershell.exe+30
Внешнее сетевое подключение+20
Запуск из AppData или Temp+15
Изменение ключа закрепления+35

Событие с суммой выше определённого порога можно направлять на расследование.

Как защищаться от LOLBAS​

1. Не считать подпись достаточным признаком доверия​

Цифровая подпись отвечает на вопрос:
Кто подписал файл и был ли он изменён после подписания?
Она не отвечает на вопрос:
Безопасны ли полученные процессом аргументы?
Поэтому разрешение всех подписанных Microsoft файлов без анализа их функций создаёт серьёзный пробел в защите.

2. Использовать App Control for Business​

App Control позволяет контролировать, какие приложения и драйверы могут запускаться. Правила могут учитывать:
  • сертификат;
  • издателя;
  • имя и версию файла;
  • хеш;
  • репутацию;
  • путь;
  • управляемый установщик;
  • процесс, инициировавший запуск.
Microsoft рекомендует по возможности использовать App Control вместо AppLocker, поскольку App Control продолжает развиваться как полноценная функция безопасности.
Важно не создавать слишком широкое правило:
Код:
Разрешить всё, что подписано Microsoft.
Некоторые подписанные Microsoft программы как раз и входят в LOLBAS.
Более безопасная модель:
Код:
Разрешать только необходимые приложения
+
ограничивать редко используемые системные инструменты
+
контролировать пути и дочерние процессы
+
вести аудит перед включением блокировки

3. Использовать AppLocker​

AppLocker может разрешать или запрещать запуск приложений на основании:
  • издателя;
  • хеша;
  • пути;
  • пользователя;
  • группы пользователей.
AppLocker полезен в смешанных средах и в случаях, когда различным пользователям нужны разные правила. Однако Microsoft рассматривает App Control как предпочтительное решение для организаций, способных его внедрить.
Перед блокировкой необходимо включить режим аудита и собрать статистику:
Код:
Какие приложения запускаются?
Кем они запускаются?
Из каких каталогов?
Какие процессы их вызывают?
Какие бизнес-системы от них зависят?

4. Включить правила ASR​

Attack Surface Reduction Rules блокируют рискованные модели поведения, часто используемые вредоносными программами:
  • запуск загруженного содержимого из JavaScript или VBScript;
  • выполнение обфусцированных сценариев;
  • создание дочерних процессов приложениями Office;
  • создание исполняемого содержимого приложениями Office;
  • внедрение кода из Office;
  • кражу учётных данных из LSASS;
  • закрепление через WMI;
  • запуск процессов через PSExec и WMI;
  • использование скопированных или подменённых системных инструментов.
Microsoft рекомендует сначала тестировать потенциально несовместимые правила в режиме Audit, а затем переводить их в Warn или Block.

5. Ограничивать исходящие соединения​

Рабочей станции обычно не требуется, чтобы следующие процессы подключались к произвольным интернет-адресам:
Код:
mshta.exe
rundll32.exe
regsvr32.exe
installutil.exe
odbcconf.exe
csc.exe
Можно применять:
  • Windows Defender Firewall;
  • корпоративный прокси;
  • DNS-фильтрацию;
  • сетевой EDR;
  • фильтрацию по процессу;
  • разрешённый список доменов.
MITRE указывает фильтрацию сетевого трафика как одну из мер снижения риска злоупотребления доверенными бинарными файлами.

6. Удалять или отключать ненужные компоненты​

Если определённый компонент не используется, следует рассмотреть:
  • удаление дополнительной функции Windows;
  • запрет запуска для обычных пользователей;
  • блокировку через App Control;
  • переименование или удаление только при официальной поддержке такого сценария;
  • ограничение доступа средствами ACL.
Нельзя бессистемно удалять файлы из System32: это может нарушить работу Windows и механизм обслуживания компонентов.

7. Контролировать пользовательские каталоги​

Полезные каталоги для мониторинга:
Код:
%TEMP%
%APPDATA%
%LOCALAPPDATA%
C:\Users\Public
C:\ProgramData
Downloads
Desktop
Особенно подозрительны:
Код:
DLL в AppData, загруженная rundll32.exe;
HTA в Temp, открытая mshta.exe;
EXE, созданный certutil.exe;
исходный C# и результат csc.exe;
системная программа, скопированная в пользовательский каталог.

8. Проверять родительско-дочерние связи​

Примеры нетипичных цепочек:
Код:
winword.exe
└── mshta.exe

outlook.exe
└── rundll32.exe

chrome.exe
└── certutil.exe

acrord32.exe
└── csc.exe

bitsadmin.exe
└── cmd.exe

computerdefaults.exe
└── powershell.exe
Даже если каждый отдельный файл подписан, вся цепочка может указывать на атаку.

План расследования обнаруженного LOLBin​

Если SIEM или EDR обнаружил потенциально опасный запуск, необходимо выполнить следующие действия.

Шаг 1. Сохранить исходное событие​

Зафиксировать:
Код:
время;
имя компьютера;
пользователя;
полную командную строку;
родительский процесс;
хеш;
путь;
Process GUID;
уровень целостности.

Шаг 2. Построить дерево процессов​

Определить:
Код:
кто запустил LOLBin;
какие процессы он создал;
что происходило до запуска;
что происходило после него.

Шаг 3. Проверить сеть​

Установить:
Код:
домен;
IP-адрес;
порт;
объём переданных данных;
репутацию адреса;
использовался ли корпоративный прокси.

Шаг 4. Проверить созданные файлы​

Для каждого файла получить:
Код:
Get-FileHash C:\Path\file.exe -Algorithm SHA256
Get-AuthenticodeSignature C:\Path\file.exe
Следует определить:
  • MIME-тип;
  • расширение;
  • цифровую подпись;
  • время создания;
  • источник;
  • наличие Mark of the Web;
  • был ли файл запущен.

Шаг 5. Проверить закрепление​

Изучить:
Код:
Run и RunOnce;
планировщик заданий;
службы;
WMI subscriptions;
BITS jobs;
Startup;
Winlogon;
COM hijacking;
пользовательские ассоциации файлов.

Шаг 6. Проверить учётную запись​

Выяснить:
Код:
входил ли пользователь интерактивно;
запускал ли он команду самостоятельно;
является ли он администратором;
наблюдались ли необычные входы;
использовались ли украденные токены.

Шаг 7. Изолировать узел при подтверждении атаки​

Далее необходимо:
  • изолировать компьютер от сети;
  • сохранить журналы;
  • собрать volatile-данные;
  • проверить соседние узлы;
  • сбросить скомпрометированные учётные данные;
  • удалить закрепление;
  • восстановить систему из доверенного состояния.

Главный вывод​

LOLBAS — это не сборник «магических команд для обхода антивируса», а база знаний о том, как легитимные компоненты Windows могут использоваться за пределами их ожидаемого назначения.
Проект полезен сразу нескольким группам специалистов:

Red Team​

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

Blue Team и SOC​

Позволяет создавать правила для SIEM и EDR, изучать подозрительные аргументы, источники телеметрии и соответствующие техники MITRE ATT&CK.

Системные администраторы​

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

Исследователи вредоносного ПО​

Позволяет распознавать цепочки, в которых вредоносная программа передаёт выполнение доверенному бинарному файлу.
Главная идея защиты от Living off the Land заключается в следующем:
Нельзя оценивать процесс только по имени файла, каталогу и цифровой подписи. Необходимо анализировать его поведение, аргументы, происхождение, сетевую активность и место в общем дереве процессов.
Даже полностью легитимный и подписанный Microsoft файл становится частью атаки, если он:
  • получает подозрительные аргументы;
  • загружает данные с неизвестного сервера;
  • выполняет неподписанный код;
  • создаёт необычный дочерний процесс;
  • обращается к памяти чувствительного процесса;
  • изменяет настройки закрепления;
  • используется не тем пользователем и не в том контексте.
Именно поэтому LOLBAS следует использовать не как статический список запрещённых программ, а как основу для поведенческого анализа Windows.

Основные источники​

  1. Официальный проект LOLBAS и его база бинарных файлов, сценариев и библиотек.
  2. API проекта LOLBAS в форматах JSON и CSV.
  3. MITRE ATT&CK T1218 — System Binary Proxy Execution.
  4. MITRE ATT&CK DET0081 — обнаружение прокси-выполнения через доверенные бинарные файлы.
  5. Документация Microsoft по событиям Sysmon.
  6. Документация Microsoft по App Control и AppLocker.
  7. Справочник Microsoft по правилам Attack Surface Reduction.
 
Назад
Верх Низ