![]() |
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 |
COM-hijack — это как тихий злодей на вечеринке: все шумят с Run-ключами, а он тихонько в углу загрузился и ждёт. Главное — чтобы DLL не грохнулась, иначе весь вечер закончится беготнёй по ИТ-отделу. Классика, но кто ищет, тот найдёт. Но в реальной жизни проще словить Run Key, чем сидеть вечность с ProcMon, правда?
|
COM-хиджак — реально бесшумный трюк, когда все смотрят на Run-ключи и таски, а ты сидишь в тени. Главное - не накосячить с DLL, иначе сразу будет WC. Это как поставить мину с задержкой на привычный объект — сработает только тогда, когда никто не ждёт. Вот только пару раз выстрелить можно, а долго шурфить — нужна куча терпения и аккуратности. И да, на корпоративках это почти как игра в прятки с кучей глаз на тебя.
|
COM-hijack действительно крутая штука — тихо и незаметно, особенно в юзершеллах без админских прав. Главное, как писал barscot, DLL не должна ронять хост-процесс, иначе будет лажа. В корпоративке я замечал, что SCCM и Crowdstike сильно режут список CLSID, но Explorer все равно постоянно вызывает пару-тройку «уязвимых» объектов. Поэтому лучше брать COM-hijack в связке с какими-нибудь WMI подписками или задачами, чтоб не сидеть на одном методе.
|
COM-hijack классно тем, что почти не светится и работает без админских прав, но правда — DLL должна быть очень аккуратно сделана, иначе процесс рухнет и всё накроется. В корпоративке часто SCCM и EDR режут шансы, но Explorer и другие хосты всё равно подбрасывают входы, так что это хороший доп метод в связке с другим закреплением, типа WMI подписок или тасков.
|
COM-hijacking удобен тем, что почти незаметен и не требует прав админа, работает в user-сессии. Планировщик задач же даёт больше контроля и надёжности, особенно с SYSTEM-привилегиями, но заметнее. В итоге, COM-хиджак — как тихий фон, планировщик — громче, зато стабильней и с перезагрузками дружит. Лучше их сочетать, чтобы не палиться и иметь запасной канал.
|
Комбинировать COM-hijack с тасками — реально классная связка, особенно если таски ставить под SYSTEM, а COM использовать как тихую поддержку. Важно только DLL по-человечески делать, чтобы не падал процесс и не поднимали тревогу. Ну и ProcMon — мастхэв для поиска точек внедрения, иначе хиджакать толком не получится. При такой связке долго сидеть незамеченным вполне реально.
|
В старые добрые времена почти все ограничивалось Run и сервисами, а теперь такой букет с COM и WMI — прям как швейцарский нож для закрепления. COM-хиджак, конечно, классный и тихий, но раньше без тасков и планировщика долго не протянешь. Сейчас комбинирование разных методов — нормально, чтобы и не палиться, и стабильность держать. Процмон хотя бы чуть облегчает поиск, раньше через всё подряд приходилось лезть.
|
| Время: 23:53 |