Введение
Современная атака на 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;
- создавать задания для фонового выполнения;
- обращаться к памяти другого процесса;
- обходить неудачно настроенные правила разрешения приложений.
MITRE ATT&CK выделяет отдельную технику T1218 — System Binary Proxy Execution. Она описывает использование доверенных и подписанных программ для косвенного запуска подозрительного или вредоносного содержимого. Среди её подтехник находятся
mshta.exe, msiexec.exe, regsvr32.exe, rundll32.exe, InstallUtil.exe, odbcconf.exe и другие системные компоненты.Почему это представляет проблему
Многие упрощённые модели защиты строятся на следующих предположениях:- подписанный Microsoft файл является безопасным;
- системным программам можно разрешить запуск без ограничений;
- процессы из
C:\Windows\System32не требуют дополнительного анализа; - антивирус должен обнаружить вредоносный EXE-файл;
- блокировка PowerShell остановит выполнение сценариев.
Подписанный файл может быть безопасным сам по себе, но получить опасные аргументы командной строки, загрузить неподписанную библиотеку или запустить сценарий с удалённого сервера.
Поэтому анализировать необходимо не только имя и подпись процесса, но и:
- командную строку;
- родительский процесс;
- дочерние процессы;
- сетевые подключения;
- загруженные библиотеки;
- созданные файлы;
- изменения реестра;
- учётную запись пользователя;
- время и контекст выполнения.
Как пользоваться сайтом LOLBAS
1. Поиск по имени файла
Если в журнале обнаружен необычный процесс, например:
Код:
mshta.exe
certutil.exe
rundll32.exe
regsvr32.exe
bitsadmin.exe
csc.exe
Если файл присутствует в каталоге, откроется его карточка с описанием известных способов злоупотребления.
Наличие программы в 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
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]
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;
- декодировать шестнадцатеричные данные.
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
mshta.exe, использование HTA и загрузку CLR-библиотек этим процессом.Пример атаки №3: выполнение DLL через Rundll32
Нормальное назначение
rundll32.exe используется для вызова экспортируемых функций из DLL.Пример легитимного запуска панели управления:
Код:
rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl
rundll32.exe может получить путь к сторонней библиотеке и вызвать содержащуюся в ней функцию.Схема злоупотребления
Код:
Атакующий доставляет DLL
↓
rundll32.exe загружает DLL
↓
Вызывается экспортируемая функция
↓
Код работает внутри доверенного процесса
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-сценарий
архив
зашифрованный контейнер
Полная команда закрепления здесь намеренно не приводится.
Индикаторы
Код:
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 и другие системные программы имеют легитимные применения.Более правильный подход:
Код:
Подозрительный бинарный файл
+
опасные аргументы
+
необычный родитель
+
сеть или созданный файл
+
редкий контекст выполнения
Полезные события Sysmon
Event ID 1 — Process Create
Содержит:- полный путь процесса;
- командную строку;
- родительский процесс;
- хеш;
- Process GUID.
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.
Пример 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.
Более безопасная модель:
Код:
Разрешать только необходимые приложения
+
ограничивать редко используемые системные инструменты
+
контролировать пути и дочерние процессы
+
вести аудит перед включением блокировки
3. Использовать AppLocker
AppLocker может разрешать или запрещать запуск приложений на основании:- издателя;
- хеша;
- пути;
- пользователя;
- группы пользователей.
Перед блокировкой необходимо включить режим аудита и собрать статистику:
Код:
Какие приложения запускаются?
Кем они запускаются?
Из каких каталогов?
Какие процессы их вызывают?
Какие бизнес-системы от них зависят?
4. Включить правила ASR
Attack Surface Reduction Rules блокируют рискованные модели поведения, часто используемые вредоносными программами:- запуск загруженного содержимого из JavaScript или VBScript;
- выполнение обфусцированных сценариев;
- создание дочерних процессов приложениями Office;
- создание исполняемого содержимого приложениями Office;
- внедрение кода из Office;
- кражу учётных данных из LSASS;
- закрепление через WMI;
- запуск процессов через PSExec и WMI;
- использование скопированных или подменённых системных инструментов.
5. Ограничивать исходящие соединения
Рабочей станции обычно не требуется, чтобы следующие процессы подключались к произвольным интернет-адресам:
Код:
mshta.exe
rundll32.exe
regsvr32.exe
installutil.exe
odbcconf.exe
csc.exe
- Windows Defender Firewall;
- корпоративный прокси;
- DNS-фильтрацию;
- сетевой EDR;
- фильтрацию по процессу;
- разрешённый список доменов.
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 и его база бинарных файлов, сценариев и библиотек.
- API проекта LOLBAS в форматах JSON и CSV.
- MITRE ATT&CK T1218 — System Binary Proxy Execution.
- MITRE ATT&CK DET0081 — обнаружение прокси-выполнения через доверенные бинарные файлы.
- Документация Microsoft по событиям Sysmon.
- Документация Microsoft по App Control и AppLocker.
- Справочник Microsoft по правилам Attack Surface Reduction.
