![]() |
https://forum.antichat.xyz/attachmen...0ce5f00cfd.png
Ты получил initial access. Beacon живой, сессия стабильная. Но стоит пользователю перезагрузиться, IT-отделу прилететь с патчем или EDR убить процесс - и ты начинаешь всё сначала. Initial access - это разведка, социалка, обход периметра. Повторить весь цикл просто потому, что не позаботился о foothold, непрофессионально. Точка. Persistence - разница между одноразовым попаданием и месяцами устойчивого доступа Windows. В MITRE ATT&CK тактика Persistence (TA0003) объединяет 19 техник с десятками подтехник. Все серьёзные APT - от Volt Typhoon (больше пяти лет необнаруженного доступа к критической инфраструктуре, если верить публичным отчётам) до Salt Typhoon - вкладываются именно в многослойное закрепление в системе Windows. https://forum.antichat.xyz/attachmen...7113937687.png На практике это выглядит так: даже в 2025–2026 году самые часто используемые техники — это банальные Run Keys и Scheduled Tasks. Здесь разберу четыре persistence механизма для пентеста, которые я использую на engagement'ах (многие из них опираются на встроенные возможности системы - общий обзор этого подхода собран в руководстве по living off the land атакам Windows): реестровые ключи автозапуска, планировщик задач (включая Ghost Tasks - ни один русскоязычный источник их толком не покрывает), WMI-подписки и COM-hijacking. Для каждой техники - конкретные команды, OPSEC-соображения и артефакты, по которым blue team будет вас искать. Требования к окружению Прежде чем лезть в практику, зафиксирую контекст. Все техники закрепления в Windows ниже предполагают:
Реестр Windows - база данных, которую система читает при каждой загрузке, каждом входе пользователя, каждом запуске процесса. Десятки ключей триггерят выполнение кода автоматически, и это делает реестр Windows persistence самым обширным семейством техник автозапуска Windows. Пойдём от очевидного к скрытному. Run и RunOnce - точка входа и её пределы Registry Run Keys / Startup Folder (T1547.001, Persistence / Privilege Escalation) - самый задокументированный метод. Ключи Код:
HKCU\Software\Microsoft\Windows\CurrentVersion\RunКод:
HKLM\...\RunДобавление записи от текущего пользователя без повышения привилегий: Код:
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "OneDriveSync" /t REG_SZ /d "C:\Users\Public\updater.exe" /fКод:
SharPersist -t reg -c "C:\Users\Public\updater.exe" -a add -k "hkcurun" -v "OneDriveSync"HKCU-ключ работает только для текущего пользователя - залогинится другой, payload не запустится. HKLM-вариант работает для всех, но требует прав администратора. RunOnce удаляет запись после первого выполнения - для одноразового действия сойдёт, для устойчивого доступа - нет. Главная проблема Run-ключей в 2025 году: каждый EDR на планете мониторит эти ключи. Windows Defender, CrowdStrike Falcon, SentinelOne - все алертят на новые записи, особенно если путь ведёт в Код:
TempКод:
AppDataКод:
PublicWinlogon Helper, IFEO и менее очевидные ключи реестра За пределами Run/RunOnce живут реестровые техники, которые мониторятся значительно слабее, а исполнение кода дают в привилегированных контекстах. Winlogon Helper DLL (T1547.004) работает через ключ Код:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\WinlogonКод:
UserinitКод:
userinit.exeКод:
ShellКод:
explorer.exeImage File Execution Options Injection (T1546.012) - ключ Код:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\Код:
DebuggerКод:
DebuggerКод:
notepad.exeКод:
cmd.exeКод:
GlobalFlag=0x100Код:
VerifierDllsКод:
verifier.dllAccessibility Features (T1546.008) - утилиты специальных возможностей ( Код:
sethc.exeКод:
utilman.exeКод:
osk.exeКод:
narrator.exeКод:
sethc.exeМенее мониторируемые ключи для опытного оператора:
Имя ключа определяет, насколько быстро вас найдут. Значения Код:
backdoorКод:
shellКод:
reverseКод:
AdobeARMКод:
MicrosoftEdgeAutoUpdateКод:
TeamsAutoUpdateКод:
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*" | Select DisplayNameКод:
payload.exeОбщее правило: чем глубже ключ и чем реже его мониторит EDR, тем дольше вы останетесь незамеченным. Run-ключи - шум; Port Monitors, Time Providers и VerifierDlls - тишина. ТехникаПривилегииКонтекст выполненияМониторинг EDRRun/RunOnce (T1547.001)Пользователь / АдминПользовательВысокийWi nlogon Helper (T1547.004)АдминSYSTEMСреднийIFEO Debugger (T1546.012)АдминЗависит от целиСреднийIFEO VerifierDllsАдминЦелевой процессНизкийPort Monitors (T1547.010)АдминSYSTEM (spoolsv)НизкийTime Providers (T1547.003)АдминSYSTEM (W32Time)НизкийActive Setup (T1547.014)АдминПользовательНи кий Планировщик задач Windows - атака от schtasks до Ghost Task Scheduled Task (T1053.005, Execution / Persistence / Privilege Escalation) - легитимный системный механизм, который атакующие используют для запуска payload'ов по расписанию, при логоне или по событию. По данным Red Canary Threat Detection Report, большинство вредоносных scheduled tasks настроены на выполнение от SYSTEM - максимальные привилегии без интерактивной сессии. Создание задач через schtasks и PowerShell Базовая команда: Код:
schtasks /create /tn "Microsoft\Windows\Maintenance\HealthCheck" /tr "C:\Windows\Temp\updater.exe" /sc onlogon /ru SYSTEM /fКод:
Microsoft\Windows\Maintenance\Код:
/fДля тонкого управления триггерами - PowerShell с Код:
Register-ScheduledTaskКод:
Invoke-CimMethodКод:
PS_ScheduledTaskКод:
schtasksКод:
HiddenЗадача под системное обслуживание с выполнением каждые 15 минут: Код:
schtasks /create /tn "Microsoft\Windows\Maintenance\HealthCheck" /tr "C:\Windows\Temp\svc.exe" /sc minute /mo 15 /ru SYSTEM /fАртефакты: создание задачи через Код:
schtasks.exeКод:
Microsoft-Windows-TaskScheduler/OperationalКод:
schtasks.exeКод:
/createКод:
cmd.exeКод:
powershell.exeКод:
rundll32.exeКод:
mshta.exeGhost Task - невидимая задача без Event ID 4698 Эту технику я не встречал ни в одном русскоязычном материале, хотя она активно используется в реальных атаках - Microsoft описывала её в контексте malware Tarrask. 📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше Получить доступ просто — достаточно проявить активность на форуме COM Hijacking - техника перехвата через HKCU COM Hijacking (T1546.015, Event Triggered Execution: Component Object Model Hijacking - Persistence / Privilege Escalation) - техника, при которой атакующий регистрирует свою DLL в HKCU для CLSID легитимного COM-объекта. Когда приложение запрашивает этот объект, Windows проверяет HKCU раньше HKLM и грузит подставную DLL вместо оригинальной. COM hijacking техника хороша тем, что не создаёт нового autorun-механизма. Payload срабатывает, когда легитимное приложение естественным образом обращается к своему COM-объекту - пользователь открывает Explorer, запускает MMC или что угодно, использующее целевой CLSID. Привилегии администратора не нужны: запись в HKCU доступна обычному пользователю. Поиск целей через ProcMon Обнаружение пригодных COM-объектов - ручной процесс, и тут незаменим Process Monitor от Sysinternals. Алгоритм, который я гоняю на каждом engagement'е:
Практика перехвата и OPSEC Для автоматизации поиска подверженных перехвату CLSID без многочасового наблюдения в ProcMon: Код: Код:
$hklm = Get-ChildItem "HKLM:\SOFTWARE\Classes\CLSID" -EA SilentlyContinue |Код:
NAME NOT FOUNDКод:
InprocServer32OPSEC COM-hijacking: техника почти невидима для базовых EDR. Запись идёт в HKCU - UAC не нужен. DLL грузится легитимным процессом - нового подозрительного процесса нет. Нет scheduled tasks, нет сервисов, нет Run-ключей. Sysinternals Autoruns показывает COM-объекты на вкладке «COM Hijacks», но многие аналитики её пропускают при беглом осмотре. Основной операционный риск: если ваша DLL вызовет исключение, упадёт host-приложение, и пользователь побежит в поддержку. DLL должна корректно проксировать вызовы к оригинальной библиотеке - иначе вместо persistence получите incident response. Сравнение техник закрепления в Windows Для выбора persistence-механизма на engagement'е я ориентируюсь на четыре параметра: необходимые привилегии, надёжность (переживёт ли reboot и credential reset), частоту триггера и обнаруживаемость. ТехникаПривилегииRebootCredential resetДетектируемостьRun Key HKCU (T1547.001)ПользовательДаНет (привязан к пользователю)ВысокаяScheduled Task (T1053.005)Админ для SYSTEMДаДаСредняяGhost TaskSYSTEMДаДаНизкаяWMI SubscriptionАдминДаДаСредняяCOM Hijacking (T1546.015)ПользовательДаНет (привязан к HKCU)НизкаяPort Monitors (T1547.010)АдминДаДаНизкая Золотое правило post-exploitation закрепления: никогда не полагайтесь на один механизм. Зрелая стратегия - layered persistence. Ставите Run-ключ как «громкий» decoy, WMI-подписку как основной канал и COM-hijack как спящий запасной. Blue team находит Run-ключ, удаляет, закрывает тикет - а вы работаете через два оставшихся канала. Позже обнаружат WMI-подписку - COM-hijack всё ещё даёт сессию. MITRE ATT&CK persistence Windows разбивает эти техники по подтактикам, но на практике границы размыты: WMI-подписка одновременно даёт и persistence, и execution, а Ghost Task сочетает persistence с defense evasion. Планируйте закрепление как систему, а не как одиночную технику. Вопрос к читателям При COM Hijacking через ProcMon на чистой Windows 10 22H2 я обычно нахожу 30–40 CLSID с Код:
NAME NOT FOUNDКод:
HKCU\...\InprocServer32Код:
NAME NOT FOUNDКод:
explorer.exeКод:
svchost.exe |
| Время: 22:51 |