
Инструмент для повышения привилегий в Windows, использующий привилегии SeImpersonate через олицетворение именованного канала, поддерживающий несколько методов выполнения (CreateProcessWithTokenW, CreateProcessAsUserW, CreateUser, BindShell) для получения доступа SYSTEM.
Прежде всего - благодарность @splinter_code и @decoder_it за RoguePotato, так как этот код во многом основан на нём.
Это очередная картошка для получения SYSTEM через привилегии SeImpersonate. Но эта отличается в следующем:
CreateProcessWithTokenW для запуска нового процесса. Вместо этого вы можете выбирать между CreateProcessWithTokenW, CreateProcessAsUserW, CreateUser и BindShell.Итак, этот проект способен открыть NamedPipe сервер, олицетворять любого пользователя, подключающегося к нему, и затем выполнять один из упомянутых выше вариантов. Если в будущем будут опубликованы новые триггеры аутентификации SYSTEM, этот инструмент всё ещё можно будет использовать для повышения привилегий — вам просто нужно будет использовать другое имя канала в этом случае.
Примеры:
c:\temp\MultiPotato> MultiPotato.exe -t CreateUser
По умолчанию у вас есть 60 секунд (изменяется через THEAD_TIMEOUT) для того, чтобы дать учётной записи SYSTEM или любой другой учётной записи пройти аутентификацию. Это можно сделать, например, с помощью незапатченной функции MS-EFSRPC. По умолчанию MultiPotato слушает на имени канала \\.\pipe\pwned/pipe/srvsvc, которое предназначено для использования в сочетании с MS-EFSRPC. Для других триггеров аутентификации SYSTEM вы можете изменить это значение с помощью параметра -p.
c:\temp\MultiPotato> PetitPotamModified.exe localhost/pipe/pwned localhost
Использование PetitPotam.py в качестве триггера из удаленной системы с действующим низко-привилегированным пользователем, конечно, также возможно.
c:\temp\MultiPotato> MultiPotato.exe -t CreateProcessAsUserW -p "pwned\pipe\spoolss" -e "C:\temp\stage2.exe"
И запустите его через
c:\temp\MultiPotato>MS-RPRN.exe \\192.168.100.150 \\192.168.100.150/pipe/pwned
Важно: При моих тестах MS-RPRN я не мог использовать localhost или 127.0.0.1 в качестве цели, это должен быть сетевой IP-адрес или полное доменное имя (FQDN). Кроме того, для работы этой функции должна быть включена служба печати.
c:\temp\MultiPotato> MultiPotato.exe -t BindShell -p "pwned\pipe\spoolss"
Недавно у меня был тест на проникновение, где мне удалось взломать MSSQL сервер через SQL-инъекцию и XP_CMDShell. Но все публичные картошки (Potatoes) не смогли на этой целевой системе повысить привилегии с сервисной учётной записи до SYSTEM. Триггер аутентификации SYSTEM не был проблемой — вместо этого CreateProcessWithTokenW постоянно завершался с кодом NTSTATUS 5 — доступ запрещён. Для меня это не имело особого смысла, и, возможно, это крайний случай. Одной из причин может быть локальная защита конечной точки, которая могла заблокировать создание процесса после олицетворения SYSTEM.
Поэтому я искал альтернативы — и спросил некоторых людей в Twitter об этом. Снова благодарность @splinter_code за объяснение, как сделать это через CreateProcessAsUserW, что отлично сработало на взломанном MSSQL сервере для получения C2-обратного вызова с правами SYSTEM.