Введение
Расширение привилегий практически всегда сводится к правильному подсчету. Но для того чтобы выполнить правильный подсчет вам необходимо знать, что нужно искать и проверять. Это предполагает знакомство с различными системами и понимание принципа их работы, которое, как правило, приходит с опытом. Вначале эскалация привилегий может показаться довольно таки сложной задачей, но через некоторое время вы понемногу начинаете понимать, что является нормальным, а что нет. В конце концов, становится легче понимать, что необходимо найти, и это, безусловно, намного лучше, чем хаотично копаться абсолютно во всем, что вы видите в надежде найти эту проклятую иголку в стоге сена. Надеемся, что это руководство послужит хорошей опорой и основой для вашего дальнейшего развития и начала работы.
Данное руководство опирается на
Примечание: я не являюсь экспертом в этой области и все еще продолжаю обучаться.
Структура руководства
В каждом разделе я сначала предоставлю вам старые добрые CMD команды, а затем также укажу их эквиваленты в Powershell. Всегда намного лучше знать, как пользоваться несколькими инструментами, к тому же Powershell является более универсальным для написание скрипта, чем традиционный CMD. Тем не менее, не существует эквивалентов в Powershell абсолютно для всего (или же CMD все еще остается более простым/лучшим для некоторых вещей), так что некоторые разделы будут содержать только стандартные CMD команды.
Операционная система
Что за операционная система, и какая у нее архитектура? Установлены ли на ней все необходимые патчи?
Есть ли что-то интересное в переменных среды? Контроллер домена в LOGONSERVER?
Есть ли другие подключенные приводы?
Пользователи
Кто вы такой?
Есть ли какие-либо интересные пользовательские привилегии?
Примечание: графа The State не подразумевает, что пользователь имеет или не имеет доступа к данной привилегии. Если привилегия указана, значит, пользователь обладает ею.
Какие пользователи находятся в системе? Возможно, есть какие-либо старые профили пользователей, которые не были удалены?
Кто-нибудь еще вошел в систему?
Какие группы находятся в системе?
Состоит ли кто-нибудь из пользователей в администраторской группе?
Есть ли что-нибудь в реестре для пользовательского автовхода?
Возможно есть что-нибудь интересное в Credential Manager?
Можем ли мы получить доступ к файлам SAM и SYSTEM?
Программы, Процессы, и Службы
Какое программное обеспечение установлено?
Есть ли неполные права доступа к папке или файлу?
Есть ли полные права доступа для всех пользователей к Program Folders?
Изменить права доступа к Program Folders для всех пользователей?
Вы также можете закачать accesschk из Sysinternals для того, чтобы проверить файлы и папки, доступные для записи.
Какие процессы или службы сейчас работают в системе? Есть ли скрытая внутренняя служба? Если да, можем ли мы ее открыть? См. «Переадресация портов» в приложении.
Get-Process имеет опцию -IncludeUserName, которая позволяет увидеть владельца процесса, однако, для её выполнения вы должны обладать правами администратора.
Эта одна строка возвращает владельца процесса без всяких прав администратора, если же под владельцем есть, что-то пустое, оно возможно запущено как СИСТЕМА (SYSTEM), СЕТЕВАЯ СЛУЖБА (NETWORK SERVICE) или ЛОКАЛЬНАЯ СЛУЖБА (LOCAL SERVICE).
Есть ли какие-нибудь слабые права доступа службы? Можем ли мы перенастроить что-либо? И снова, загрузите accesschk.
Существуют ли какие-нибудь unquoted service paths?
Какие назначенные задания существуют? Реализовано ли что-то пользовательское?
Расширение привилегий практически всегда сводится к правильному подсчету. Но для того чтобы выполнить правильный подсчет вам необходимо знать, что нужно искать и проверять. Это предполагает знакомство с различными системами и понимание принципа их работы, которое, как правило, приходит с опытом. Вначале эскалация привилегий может показаться довольно таки сложной задачей, но через некоторое время вы понемногу начинаете понимать, что является нормальным, а что нет. В конце концов, становится легче понимать, что необходимо найти, и это, безусловно, намного лучше, чем хаотично копаться абсолютно во всем, что вы видите в надежде найти эту проклятую иголку в стоге сена. Надеемся, что это руководство послужит хорошей опорой и основой для вашего дальнейшего развития и начала работы.
Данное руководство опирается на
Ссылка скрыта от гостей
(Основное расширение привилегий Linux от g0tm1lk), с которым вы, возможно уже ознакомились, а возможно даже и использовали. Я попытался создать аналогичное руководство, только для Windows. Таким образом, это руководство будет в основном сосредоточено на аспекте подсчета (enumeration).Примечание: я не являюсь экспертом в этой области и все еще продолжаю обучаться.
Структура руководства
В каждом разделе я сначала предоставлю вам старые добрые CMD команды, а затем также укажу их эквиваленты в Powershell. Всегда намного лучше знать, как пользоваться несколькими инструментами, к тому же Powershell является более универсальным для написание скрипта, чем традиционный CMD. Тем не менее, не существует эквивалентов в Powershell абсолютно для всего (или же CMD все еще остается более простым/лучшим для некоторых вещей), так что некоторые разделы будут содержать только стандартные CMD команды.
Операционная система
Что за операционная система, и какая у нее архитектура? Установлены ли на ней все необходимые патчи?
Код:
systeminfo
wmic qfe
Есть ли что-то интересное в переменных среды? Контроллер домена в LOGONSERVER?
Код:
set
Код:
Get-ChildItem Env: | ft Key,Value
Есть ли другие подключенные приводы?
Код:
net use
wmic logicaldisk get caption,description,providername
Код:
Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ft Name,Root
Пользователи
Кто вы такой?
Код:
whoami
echo %USERNAME%
Код:
$env:UserName
Есть ли какие-либо интересные пользовательские привилегии?
Примечание: графа The State не подразумевает, что пользователь имеет или не имеет доступа к данной привилегии. Если привилегия указана, значит, пользователь обладает ею.
Код:
whoami /priv
Какие пользователи находятся в системе? Возможно, есть какие-либо старые профили пользователей, которые не были удалены?
Код:
net users
dir /b /ad "C:\Users\"
dir /b /ad "C:\Documents and Settings\" # Windows XP and below
Код:
Get-LocalUser | ft Name,Enabled,LastLogon
Get-ChildItem C:\Users -Force | select Name
Кто-нибудь еще вошел в систему?
Код:
qwinsta
Какие группы находятся в системе?
Код:
net localgroup
Код:
Get-LocalGroup | ft Name
Состоит ли кто-нибудь из пользователей в администраторской группе?
Код:
net localgroup Administrators
Код:
Get-LocalGroupMember Administrators | ft Name, PrincipalSource
Есть ли что-нибудь в реестре для пользовательского автовхода?
Код:
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" 2>nul | findstr "DefaultUserName DefaultDomainName DefaultPassword"
Код:
Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon' | select "Default*"
Возможно есть что-нибудь интересное в Credential Manager?
Код:
cmdkey /list
Можем ли мы получить доступ к файлам SAM и SYSTEM?
Код:
%SYSTEMROOT%\repair\SAM
%SYSTEMROOT%\System32\config\RegBack\SAM
%SYSTEMROOT%\System32\config\SAM
%SYSTEMROOT%\repair\system
%SYSTEMROOT%\System32\config\SYSTEM
icacls "C:\Program Files\*" 2>nul | findstr "(F)" | findstr "Everyone"
icacls "C:\Program Files (x86)\*" 2>nul | findstr "(F)" | findstr "Everyone"
icacls "C:\Program Files\*" 2>nul | findstr "(F)" | findstr "BUILTIN\Users"
icacls "C:\Program Files (x86)\*" 2>nul | findstr "(F)" | findstr "BUILTIN\Users"
%SYSTEMROOT%\System32\config\RegBack\system
Программы, Процессы, и Службы
Какое программное обеспечение установлено?
Код:
dir /a "C:\Program Files"
dir /a "C:\Program Files (x86)"
reg query HKEY_LOCAL_MACHINE\SOFTWARE
Код:
Get-ChildItem 'C:\Program Files', 'C:\Program Files (x86)' | ft Parent,Name,LastWriteTime
Get-ChildItem -path Registry::HKEY_LOCAL_MACHINE\SOFTWARE | ft Name
Есть ли неполные права доступа к папке или файлу?
Есть ли полные права доступа для всех пользователей к Program Folders?
Код:
icacls "C:\Program Files\*" 2>nul | findstr "(F)" | findstr "Everyone"
icacls "C:\Program Files (x86)\*" 2>nul | findstr "(F)" | findstr "Everyone"
icacls "C:\Program Files\*" 2>nul | findstr "(F)" | findstr "BUILTIN\Users"
icacls "C:\Program Files (x86)\*" 2>nul | findstr "(F)" | findstr "BUILTIN\Users"
Изменить права доступа к Program Folders для всех пользователей?
Код:
icacls "C:\Program Files\*" 2>nul | findstr "(M)" | findstr "Everyone"
icacls "C:\Program Files (x86)\*" 2>nul | findstr "(M)" | findstr "Everyone"
icacls "C:\Program Files\*" 2>nul | findstr "(M)" | findstr "BUILTIN\Users"
icacls "C:\Program Files (x86)\*" 2>nul | findstr "(M)" | findstr "BUILTIN\Users"
Код:
Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Acl $_ -EA SilentlyContinue | Where {($_.Access|select -ExpandProperty IdentityReference) -match 'Everyone'} } catch {}}
Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Acl $_ -EA SilentlyContinue | Where {($_.Access|select -ExpandProperty IdentityReference) -match 'BUILTIN\Users'} } catch {}}
Вы также можете закачать accesschk из Sysinternals для того, чтобы проверить файлы и папки, доступные для записи.
Код:
accesschk.exe -qwsu "Everyone" *
accesschk.exe -qwsu "Authenticated Users" *
accesschk.exe -qwsu "Users" *
Какие процессы или службы сейчас работают в системе? Есть ли скрытая внутренняя служба? Если да, можем ли мы ее открыть? См. «Переадресация портов» в приложении.
Код:
tasklist /svc
tasklist /v
net start
sc query
Get-Process имеет опцию -IncludeUserName, которая позволяет увидеть владельца процесса, однако, для её выполнения вы должны обладать правами администратора.
Код:
Get-Process | where {$_.ProcessName -notlike "svchost*"} | ft ProcessName, Id
Get-Service
Эта одна строка возвращает владельца процесса без всяких прав администратора, если же под владельцем есть, что-то пустое, оно возможно запущено как СИСТЕМА (SYSTEM), СЕТЕВАЯ СЛУЖБА (NETWORK SERVICE) или ЛОКАЛЬНАЯ СЛУЖБА (LOCAL SERVICE).
Код:
Get-WmiObject -Query "Select * from Win32_Process" | where {$_.Name -notlike "svchost*"} | Select Name, Handle, @{Label="Owner";Expression={$_.GetOwner().User}} | ft -AutoSize
Есть ли какие-нибудь слабые права доступа службы? Можем ли мы перенастроить что-либо? И снова, загрузите accesschk.
Код:
accesschk.exe -uwcqv "Everyone" *
accesschk.exe -uwcqv "Authenticated Users" *
accesschk.exe -uwcqv "Users" *
Существуют ли какие-нибудь unquoted service paths?
Код:
wmic service get name,displayname,pathname,startmode 2>nul |findstr /i "Auto" 2>nul |findstr /i /v "C:\Windows\\" 2>nul |findstr /i /v """
Код:
gwmi -class Win32_Service -Property Name, DisplayName, PathName, StartMode | Where {$_.StartMode -eq "Auto" -and $_.PathName -notlike "C:\Windows*" -and $_.PathName -notlike '"*'} | select PathName,DisplayName,Name
Какие назначенные задания существуют? Реализовано ли что-то пользовательское?
Код:
schtasks /query /fo LIST 2>nul | findstr TaskName
dir C:\windows\tasks
Код:
Get-ScheduledTask | where {$_.TaskPath -notlike "\Microsoft*"} | ft TaskName,TaskPath,State