Translated ['src/windows-hardening/windows-local-privilege-escalation/RE

This commit is contained in:
Translator 2025-01-22 12:23:01 +00:00
parent 142650093c
commit 4516c13c27

View File

@ -16,7 +16,7 @@ access-tokens.md
### ACL - DACL/SACL/ACE ### ACL - DACL/SACL/ACE
**Controlla la seguente pagina per ulteriori informazioni su ACL - DACL/SACL/ACE:** **Controlla la seguente pagina per ulteriori informazioni sulle ACL - DACL/SACL/ACE:**
{{#ref}} {{#ref}}
acls-dacls-sacls-aces.md acls-dacls-sacls-aces.md
@ -57,21 +57,21 @@ Get-Hotfix -description "Security update" #List only "Security Update" patches
``` ```
### Version Exploits ### Version Exploits
Questo [sito](https://msrc.microsoft.com/update-guide/vulnerability) è utile per cercare informazioni dettagliate sulle vulnerabilità di sicurezza di Microsoft. Questo database ha più di 4.700 vulnerabilità di sicurezza, mostrando la **massiccia superficie di attacco** che un ambiente Windows presenta. Questo [sito](https://msrc.microsoft.com/update-guide/vulnerability) è utile per cercare informazioni dettagliate sulle vulnerabilità di sicurezza di Microsoft. Questo database ha più di 4.700 vulnerabilità di sicurezza, mostrando la **massive attack surface** che un ambiente Windows presenta.
**Sul sistema** **On the system**
- _post/windows/gather/enum_patches_ - _post/windows/gather/enum_patches_
- _post/multi/recon/local_exploit_suggester_ - _post/multi/recon/local_exploit_suggester_
- [_watson_](https://github.com/rasta-mouse/Watson) - [_watson_](https://github.com/rasta-mouse/Watson)
- [_winpeas_](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) _(Winpeas ha watson integrato)_ - [_winpeas_](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) _(Winpeas ha watson integrato)_
**Localmente con informazioni di sistema** **Locally with system information**
- [https://github.com/AonCyberLabs/Windows-Exploit-Suggester](https://github.com/AonCyberLabs/Windows-Exploit-Suggester) - [https://github.com/AonCyberLabs/Windows-Exploit-Suggester](https://github.com/AonCyberLabs/Windows-Exploit-Suggester)
- [https://github.com/bitsadmin/wesng](https://github.com/bitsadmin/wesng) - [https://github.com/bitsadmin/wesng](https://github.com/bitsadmin/wesng)
**Repo Github di exploit:** **Github repos of exploits:**
- [https://github.com/nomi-sec/PoC-in-GitHub](https://github.com/nomi-sec/PoC-in-GitHub) - [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/abatchy17/WindowsExploits](https://github.com/abatchy17/WindowsExploits)
@ -79,7 +79,7 @@ Questo [sito](https://msrc.microsoft.com/update-guide/vulnerability) è utile pe
### Environment ### Environment
Qualsiasi informazione di credenziali/juicy salvata nelle variabili di ambiente? Qualsiasi credenziale/informazione sensibile salvata nelle variabili di ambiente?
```bash ```bash
set set
dir env: dir env:
@ -135,7 +135,7 @@ reg query HKCU\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\Script
reg query HKLM\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging reg query HKLM\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
``` ```
Gli eventi di registrazione per il Script Block possono essere trovati all'interno di Windows Event Viewer al percorso: **Application and Services Logs > Microsoft > Windows > PowerShell > Operational**.\ Gli eventi di registrazione per il Script Block possono essere trovati all'interno di Windows Event Viewer al percorso: **Application and Services Logs > Microsoft > Windows > PowerShell > Operational**.\
Per visualizzare gli ultimi 20 eventi puoi usare: Per visualizzare gli ultimi 20 eventi, puoi usare:
```bash ```bash
Get-WinEvent -LogName "Microsoft-Windows-Powershell/Operational" | select -first 20 | Out-Gridview Get-WinEvent -LogName "Microsoft-Windows-Powershell/Operational" | select -first 20 | Out-Gridview
``` ```
@ -154,18 +154,31 @@ Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}|
Puoi compromettere il sistema se gli aggiornamenti non vengono richiesti utilizzando http**S** ma http. Puoi compromettere il sistema se gli aggiornamenti non vengono richiesti utilizzando http**S** ma http.
Inizi controllando se la rete utilizza un aggiornamento WSUS non SSL eseguendo il seguente: Inizi controllando 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 reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v WUServer
``` ```
Se ricevi una risposta come: O il seguente in PowerShell:
```
Get-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate -Name "WUServer"
```
Se ricevi una risposta come una di queste:
```bash ```bash
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate
WUServer REG_SZ http://xxxx-updxx.corp.internal.com:8535 WUServer REG_SZ http://xxxx-updxx.corp.internal.com:8535
``` ```
E se `HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer` è uguale a `1`.
Allora, **è sfruttabile.** Se l'ultimo registro è uguale a 0, l'entry WSUS sarà ignorata. ```bash
WUServer : http://xxxx-updxx.corp.internal.com:8530
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\software\policies\microsoft\windows\windowsupdate
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\software\policies\microsoft\windows
PSChildName : windowsupdate
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
```
E se `HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer` o `Get-ItemProperty -Path hklm:\software\policies\microsoft\windows\windowsupdate\au -name "usewuserver"` è uguale a `1`.
Allora, **è sfruttabile.** Se l'ultimo registro è uguale a 0, allora, l'entry WSUS sarà ignorata.
Per sfruttare queste vulnerabilità puoi usare strumenti come: [Wsuxploit](https://github.com/pimps/wsuxploit), [pyWSUS ](https://github.com/GoSecure/pywsus)- Questi sono script di exploit MiTM armati per iniettare aggiornamenti 'falsi' nel traffico WSUS non SSL. Per sfruttare queste vulnerabilità puoi usare strumenti come: [Wsuxploit](https://github.com/pimps/wsuxploit), [pyWSUS ](https://github.com/GoSecure/pywsus)- Questi sono script di exploit MiTM armati per iniettare aggiornamenti 'falsi' nel traffico WSUS non SSL.
@ -184,7 +197,7 @@ Fondamentalmente, questo è il difetto che questo bug sfrutta:
> >
> Inoltre, poiché il servizio WSUS utilizza le impostazioni dell'utente corrente, utilizzerà anche il suo archivio certificati. Se generiamo un certificato autofirmato per il nome host WSUS e aggiungiamo questo certificato nell'archivio certificati dell'utente corrente, saremo in grado di intercettare sia il traffico WSUS HTTP che HTTPS. WSUS non utilizza meccanismi simili a HSTS per implementare una validazione di tipo trust-on-first-use sul certificato. Se il certificato presentato è fidato dall'utente e ha il nome host 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 autofirmato per il nome host WSUS e aggiungiamo questo certificato nell'archivio certificati dell'utente corrente, saremo in grado di intercettare sia il traffico WSUS HTTP che HTTPS. WSUS non utilizza meccanismi simili a HSTS per implementare una validazione di tipo trust-on-first-use sul certificato. Se il certificato presentato è fidato dall'utente e ha il nome host corretto, sarà accettato dal servizio.
Puoi sfruttare questa vulnerabilità utilizzando lo strumento [**WSUSpicious**](https://github.com/GoSecure/wsuspicious) (una volta che è stato liberato). Puoi sfruttare questa vulnerabilità utilizzando lo strumento [**WSUSpicious**](https://github.com/GoSecure/wsuspicious) (una volta liberato).
## KrbRelayUp ## KrbRelayUp
@ -234,15 +247,15 @@ create-msi-with-wix.md
- **Genera** con Cobalt Strike o Metasploit un **nuovo payload TCP EXE Windows** in `C:\privesc\beacon.exe` - **Genera** con Cobalt Strike o Metasploit un **nuovo payload TCP EXE Windows** in `C:\privesc\beacon.exe`
- Apri **Visual Studio**, seleziona **Crea un nuovo progetto** e digita "installer" nella casella di ricerca. Seleziona il progetto **Setup Wizard** e clicca su **Avanti**. - Apri **Visual Studio**, seleziona **Crea un nuovo progetto** e digita "installer" nella casella di ricerca. Seleziona il progetto **Setup Wizard** e clicca su **Avanti**.
- Dai al progetto un nome, come **AlwaysPrivesc**, usa **`C:\privesc`** per la posizione, seleziona **posiziona soluzione e progetto nella stessa directory**, e clicca su **Crea**. - Dai un nome al progetto, come **AlwaysPrivesc**, usa **`C:\privesc`** per la posizione, seleziona **posiziona soluzione e progetto nella stessa directory**, e clicca su **Crea**.
- Continua a cliccare su **Avanti** fino a raggiungere il passo 3 di 4 (scegli i file da includere). Clicca su **Aggiungi** e seleziona il payload Beacon che hai appena generato. Poi clicca su **Fine**. - Continua a cliccare su **Avanti** fino a raggiungere il passo 3 di 4 (scegli i file da includere). Clicca su **Aggiungi** e seleziona il payload Beacon che hai appena generato. Poi clicca su **Fine**.
- Evidenzia il progetto **AlwaysPrivesc** nell'**Esplora Soluzioni** e nelle **Proprietà**, cambia **TargetPlatform** da **x86** a **x64**. - Evidenzia il progetto **AlwaysPrivesc** nell'**Esplora soluzioni** e nelle **Proprietà**, cambia **TargetPlatform** da **x86** a **x64**.
- Ci sono altre proprietà che puoi cambiare, come **Autore** e **Produttore** che possono far sembrare l'app installata più legittima. - Ci sono altre proprietà che puoi cambiare, come **Autore** e **Produttore** che possono far sembrare l'app installata più legittima.
- Fai clic destro sul progetto e seleziona **Visualizza > Azioni personalizzate**. - Fai clic destro sul progetto e seleziona **Visualizza > Azioni personalizzate**.
- Fai clic destro su **Installa** e seleziona **Aggiungi azione personalizzata**. - Fai clic destro su **Installa** e seleziona **Aggiungi azione personalizzata**.
- Fai doppio clic su **Cartella dell'applicazione**, seleziona il tuo file **beacon.exe** e clicca su **OK**. Questo garantirà che il payload beacon venga eseguito non appena l'installer viene avviato. - Fai doppio clic su **Cartella dell'applicazione**, seleziona il tuo file **beacon.exe** e clicca su **OK**. Questo garantirà che il payload beacon venga eseguito non appena l'installer viene avviato.
- Sotto le **Proprietà dell'azione personalizzata**, cambia **Run64Bit** in **True**. - Sotto le **Proprietà dell'azione personalizzata**, cambia **Run64Bit** in **True**.
- Infine, **compilalo**. - Infine, **compila**.
- 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. - 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.
### Installazione MSI ### Installazione MSI
@ -291,7 +304,7 @@ reg query 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA' /v RunAsPPL
``` ```
### Credentials Guard ### Credentials Guard
**Credential Guard** è stato introdotto in **Windows 10**. Il suo scopo è proteggere le credenziali memorizzate su un dispositivo contro minacce come gli attacchi pass-the-hash.| [**Maggiore info 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 gli attacchi pass-the-hash.| [**More info about Credentials Guard here.**](../stealing-credentials/credentials-protections.md#credential-guard)
```bash ```bash
reg query 'HKLM\System\CurrentControlSet\Control\LSA' /v LsaCfgFlags reg query 'HKLM\System\CurrentControlSet\Control\LSA' /v LsaCfgFlags
``` ```
@ -332,7 +345,7 @@ Se **appartieni a un gruppo privilegiato, potresti essere in grado di elevare i
### Manipolazione dei token ### Manipolazione dei token
**Scopri di più** su cosa sia un **token** in questa pagina: [**Windows Tokens**](../authentication-credentials-uac-and-efs/index.html#access-tokens).\ **Scopri di più** su cosa sia un **token** in questa pagina: [**Windows Tokens**](../authentication-credentials-uac-and-efs/index.html#access-tokens).\
Controlla la seguente pagina per **scoprire token interessanti** e come abusarne: Controlla la pagina seguente per **scoprire token interessanti** e come abusarne:
{{#ref}} {{#ref}}
privilege-escalation-abusing-tokens.md privilege-escalation-abusing-tokens.md
@ -393,15 +406,15 @@ todos %username%" && echo.
``` ```
### Estrazione password dalla memoria ### Estrazione password dalla memoria
Puoi creare un dump della memoria di un processo in esecuzione utilizzando **procdump** di sysinternals. Servizi come FTP hanno le **credenziali in chiaro nella memoria**, prova a eseguire il dump della memoria e leggere le credenziali. Puoi creare un dump della memoria di un processo in esecuzione utilizzando **procdump** di sysinternals. Servizi come FTP hanno le **credenziali in chiaro nella memoria**, prova a dumpare la memoria e leggere le credenziali.
```bash ```bash
procdump.exe -accepteula -ma <proc_name_tasklist> procdump.exe -accepteula -ma <proc_name_tasklist>
``` ```
### Insecure GUI apps ### Insecure GUI apps
**Le applicazioni che girano come SYSTEM possono consentire a un utente di avviare un CMD o navigare tra le directory.** **Le applicazioni in esecuzione come SYSTEM possono consentire a un utente di avviare un CMD o navigare tra le directory.**
Esempio: "Windows Help and Support" (Windows + F1), cerca "command prompt", clicca su "Click to open Command Prompt" Esempio: "Windows Help and Support" (Windows + F1), cerca "command prompt", fai clic su "Click to open Command Prompt"
## Services ## Services
@ -472,7 +485,7 @@ I privilegi possono essere elevati attraverso vari permessi:
- **GENERIC_WRITE**: Eredita anche la capacità di modificare le configurazioni del servizio. - **GENERIC_WRITE**: Eredita anche la capacità di modificare le configurazioni del servizio.
- **GENERIC_ALL**: Eredita anch'essa la capacità di modificare le configurazioni del servizio. - **GENERIC_ALL**: Eredita anch'essa la capacità di modificare le configurazioni del servizio.
Per la rilevazione e lo sfruttamento di questa vulnerabilità, si può utilizzare _exploit/windows/local/service_permissions_. Per la rilevazione e lo sfruttamento di questa vulnerabilità, si può utilizzare il _exploit/windows/local/service_permissions_.
### Permessi deboli dei binari dei servizi ### Permessi deboli dei binari dei servizi
@ -489,10 +502,10 @@ sc query state= all | findstr "SERVICE_NAME:" >> C:\Temp\Servicenames.txt
FOR /F "tokens=2 delims= " %i in (C:\Temp\Servicenames.txt) DO @echo %i >> C:\Temp\services.txt FOR /F "tokens=2 delims= " %i in (C:\Temp\Servicenames.txt) DO @echo %i >> C:\Temp\services.txt
FOR /F %i in (C:\Temp\services.txt) DO @sc qc %i | findstr "BINARY_PATH_NAME" >> C:\Temp\path.txt FOR /F %i in (C:\Temp\services.txt) DO @sc qc %i | findstr "BINARY_PATH_NAME" >> C:\Temp\path.txt
``` ```
### Modifica delle autorizzazioni del registro dei servizi ### Servizi modifica permessi del registro
Dovresti controllare se puoi modificare qualche registro di servizio.\ Dovresti controllare se puoi modificare qualche registro di servizio.\
Puoi **controllare** le tue **autorizzazioni** su un **registro** di servizio eseguendo: Puoi **controllare** i tuoi **permessi** su un **registro** di servizio facendo:
```bash ```bash
reg query hklm\System\CurrentControlSet\Services /s /v imagepath #Get the binary paths of the services reg query hklm\System\CurrentControlSet\Services /s /v imagepath #Get the binary paths of the services
@ -595,7 +608,7 @@ Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Ac
``` ```
### Esegui all'avvio ### Esegui all'avvio
**Controlla se puoi sovrascrivere qualche registro o binario che verrà eseguito da un utente diverso.**\ **Controlla se puoi sovrascrivere qualche registro o binario che verrà eseguito da un altro utente.**\
**Leggi** la **seguente pagina** per saperne di più su interessanti **posizioni di autorun per escalare i privilegi**: **Leggi** la **seguente pagina** per saperne di più su interessanti **posizioni di autorun per escalare i privilegi**:
{{#ref}} {{#ref}}
@ -604,7 +617,7 @@ privilege-escalation-with-autorun-binaries.md
### Driver ### Driver
Cerca possibili driver **di terze parti strani/vulnerabili**. Cerca possibili driver **di terze parti strani/vulnerabili**
```bash ```bash
driverquery driverquery
driverquery.exe /fo table driverquery.exe /fo table
@ -640,7 +653,7 @@ Controlla altri computer noti hardcoded nel file hosts
``` ```
type C:\Windows\System32\drivers\etc\hosts type C:\Windows\System32\drivers\etc\hosts
``` ```
### Interfacce di Rete & DNS ### Interfacce di rete e DNS
``` ```
ipconfig /all ipconfig /all
Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address
@ -662,7 +675,7 @@ Get-NetRoute -AddressFamily IPv4 | ft DestinationPrefix,NextHop,RouteMetric,ifIn
arp -A arp -A
Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,L Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,L
``` ```
### Firewall Rules ### Regole del Firewall
[**Controlla questa pagina per i comandi relativi al Firewall**](../basic-cmd-for-pentesters.md#firewall) **(elenca regole, crea regole, disattiva, disattiva...)** [**Controlla questa pagina per i comandi relativi al Firewall**](../basic-cmd-for-pentesters.md#firewall) **(elenca regole, crea regole, disattiva, disattiva...)**
@ -709,7 +722,7 @@ Il Vault di Windows memorizza le credenziali che Windows può utilizzare per acc
A meno che le applicazioni non interagiscano con il Gestore delle credenziali, non penso sia possibile per loro utilizzare le credenziali per una data risorsa. Quindi, se la tua applicazione desidera utilizzare il vault, dovrebbe in qualche modo **comunicare con il gestore delle credenziali e richiedere le credenziali per quella risorsa** dal vault di archiviazione predefinito. A meno che le applicazioni non interagiscano con il Gestore delle credenziali, non penso sia possibile per loro utilizzare le credenziali per una data risorsa. Quindi, se la tua applicazione desidera utilizzare il vault, dovrebbe in qualche modo **comunicare con il gestore delle credenziali e richiedere le credenziali per quella risorsa** dal vault di archiviazione predefinito.
Usa il `cmdkey` per elencare le credenziali memorizzate sulla macchina. Usa `cmdkey` per elencare le credenziali memorizzate sulla macchina.
```bash ```bash
cmdkey /list cmdkey /list
Currently stored credentials: Currently stored credentials:
@ -740,7 +753,7 @@ Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect\
``` ```
Puoi usare il **modulo mimikatz** `dpapi::masterkey` con gli argomenti appropriati (`/pvk` o `/rpc`) per decrittarlo. Puoi usare il **modulo mimikatz** `dpapi::masterkey` con gli argomenti appropriati (`/pvk` o `/rpc`) per decrittarlo.
I **file delle credenziali protetti dalla password principale** si trovano solitamente in: I **file di credenziali protetti dalla password principale** si trovano solitamente in:
```powershell ```powershell
dir C:\Users\username\AppData\Local\Microsoft\Credentials\ dir C:\Users\username\AppData\Local\Microsoft\Credentials\
dir C:\Users\username\AppData\Roaming\Microsoft\Credentials\ dir C:\Users\username\AppData\Roaming\Microsoft\Credentials\
@ -756,9 +769,9 @@ dpapi-extracting-passwords.md
### Credenziali PowerShell ### Credenziali PowerShell
Le **credenziali PowerShell** sono spesso utilizzate per **scripting** e compiti di automazione come un modo per memorizzare comodamente credenziali criptate. Le credenziali sono protette usando **DPAPI**, il che significa tipicamente che possono essere decriptate solo dallo stesso utente sullo stesso computer su cui sono state create. Le **credenziali PowerShell** sono spesso utilizzate per **scripting** e compiti di automazione come un modo per memorizzare comodamente credenziali criptate. Le credenziali sono protette usando **DPAPI**, il che significa che possono essere decriptate solo dallo stesso utente sullo stesso computer su cui sono state create.
Per **decriptare** una credenziale PS dal file che la contiene puoi fare: Per **decriptare** una credenziale PS dal file che la contiene, puoi fare:
```powershell ```powershell
PS C:\> $credential = Import-Clixml -Path 'C:\pass.xml' PS C:\> $credential = Import-Clixml -Path 'C:\pass.xml'
PS C:\> $credential.GetNetworkCredential().username PS C:\> $credential.GetNetworkCredential().username
@ -788,7 +801,7 @@ e in `HKCU\Software\Microsoft\Terminal Server Client\Servers\`
HCU\<SID>\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU HCU\<SID>\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
HKCU\<SID>\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU HKCU\<SID>\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
``` ```
### **Gestore delle credenziali di Desktop Remoto** ### **Gestore delle credenziali di Desktop remoto**
``` ```
%localappdata%\Microsoft\Remote Desktop Connection Manager\RDCMan.settings %localappdata%\Microsoft\Remote Desktop Connection Manager\RDCMan.settings
``` ```
@ -886,13 +899,13 @@ $ErrorActionPreference = $OrigError
### SCClient / SCCM ### SCClient / SCCM
Controlla se `C:\Windows\CCM\SCClient.exe` esiste .\ Controlla se `C:\Windows\CCM\SCClient.exe` esiste .\
Gli installer vengono **eseguiti con privilegi di SYSTEM**, molti sono vulnerabili a **DLL Sideloading (Info da** [**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 ```bash
$result = Get-WmiObject -Namespace "root\ccm\clientSDK" -Class CCM_Application -Property * | select Name,SoftwareVersion $result = Get-WmiObject -Namespace "root\ccm\clientSDK" -Class CCM_Application -Property * | select Name,SoftwareVersion
if ($result) { $result } if ($result) { $result }
else { Write "Not Installed." } else { Write "Not Installed." }
``` ```
## Files and Registry (Credenziali) ## File e Registro (Credenziali)
### Credenziali Putty ### Credenziali Putty
```bash ```bash
@ -1000,7 +1013,7 @@ Utilizzando crackmapexec per ottenere le password:
```bash ```bash
crackmapexec smb 10.10.10.10 -u username -p pwd -M gpp_autologin crackmapexec smb 10.10.10.10 -u username -p pwd -M gpp_autologin
``` ```
### Configurazione Web IIS ### IIS Web Config
```powershell ```powershell
Get-Childitem Path C:\inetpub\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue Get-Childitem Path C:\inetpub\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue
``` ```
@ -1052,7 +1065,7 @@ C:\inetpub\logs\LogFiles\*
#Apache #Apache
Get-Childitem Path C:\ -Include access.log,error.log -File -Recurse -ErrorAction SilentlyContinue Get-Childitem Path C:\ -Include access.log,error.log -File -Recurse -ErrorAction SilentlyContinue
``` ```
### Chiedere le credenziali ### Chiedere credenziali
Puoi sempre **chiedere all'utente di inserire le sue credenziali o anche le credenziali di un altro utente** se pensi che possa conoscerle (nota che **chiedere** direttamente al cliente le **credenziali** è davvero **rischioso**): Puoi sempre **chiedere all'utente di inserire le sue credenziali o anche le credenziali di un altro utente** se pensi che possa conoscerle (nota che **chiedere** direttamente al cliente le **credenziali** è davvero **rischioso**):
```bash ```bash
@ -1064,7 +1077,7 @@ $cred.GetNetworkCredential() | fl
``` ```
### **Possibili nomi di file contenenti credenziali** ### **Possibili nomi di file contenenti credenziali**
File noti che qualche tempo fa contenevano **password** in **chiaro** o **Base64** File noti che tempo fa contenevano **password** in **chiaro** o **Base64**
```bash ```bash
$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history
vnc.ini, ultravnc.ini, *vnc* vnc.ini, ultravnc.ini, *vnc*
@ -1198,7 +1211,7 @@ dir /S /B *pass*.txt == *pass*.xml == *pass*.ini == *cred* == *vnc* == *.config*
where /R C:\ user.txt where /R C:\ user.txt
where /R C:\ *.ini where /R C:\ *.ini
``` ```
**Cerca nel registro i nomi delle chiavi e le password** **Cerca nel registro chiavi e nomi utente**
```bash ```bash
REG QUERY HKLM /F "password" /t REG_SZ /S /K REG QUERY HKLM /F "password" /t REG_SZ /S /K
REG QUERY HKCU /F "password" /t REG_SZ /S /K REG QUERY HKCU /F "password" /t REG_SZ /S /K
@ -1220,8 +1233,8 @@ Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss
``` ```
## Leaked Handlers ## Leaked Handlers
Immagina che **un processo in esecuzione come SYSTEM apra un nuovo processo** (`OpenProcess()`) con **accesso completo**. Lo stesso processo **crea anche un nuovo processo** (`CreateProcess()`) **con privilegi bassi ma ereditando tutti i gestori aperti del processo principale**.\ Immagina che **un processo in esecuzione come SYSTEM apra un nuovo processo** (`OpenProcess()`) con **accesso completo**. Lo stesso processo **crea anche un nuovo processo** (`CreateProcess()`) **con privilegi bassi ma ereditando tutti i handle aperti del processo principale**.\
Quindi, se hai **accesso completo al processo con privilegi bassi**, puoi afferrare il **gestore aperto al processo privilegiato creato** con `OpenProcess()` e **iniettare un shellcode**.\ Quindi, se hai **accesso completo al processo con privilegi bassi**, puoi afferrare l'**handle aperto al processo privilegiato creato** con `OpenProcess()` e **iniettare un shellcode**.\
[Read this example for more information about **how to detect and exploit this vulnerability**.](leaked-handle-exploitation.md)\ [Read this example for more information about **how to detect and exploit this vulnerability**.](leaked-handle-exploitation.md)\
[Read this **other post for a more complete explanation on how to test and abuse more open handlers of processes and threads inherited with different levels of permissions (not only full access)**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/). [Read this **other post for a more complete explanation on how to test and abuse more open handlers of processes and threads inherited with different levels of permissions (not only full access)**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/).
@ -1231,7 +1244,7 @@ I segmenti di memoria condivisa, noti come **pipe**, consentono la comunicazione
Windows fornisce una funzionalità chiamata **Named Pipes**, che consente a processi non correlati di condividere dati, anche su reti diverse. Questo assomiglia a un'architettura client/server, con ruoli definiti come **named pipe server** e **named pipe client**. Windows fornisce una funzionalità chiamata **Named Pipes**, che consente a processi non correlati di condividere dati, anche su reti diverse. Questo assomiglia a un'architettura client/server, con ruoli definiti come **named pipe server** e **named pipe client**.
Quando i dati vengono inviati attraverso una pipe da un **client**, il **server** che ha impostato la pipe ha la possibilità di **assumere l'identità** del **client**, a condizione che abbia i diritti necessari **SeImpersonate**. Identificare un **processo privilegiato** che comunica tramite una pipe che puoi imitare offre l'opportunità di **ottenere privilegi più elevati** adottando l'identità di quel processo una volta che interagisce con la pipe che hai stabilito. Per istruzioni su come eseguire un attacco del genere, puoi trovare guide utili [**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 impostato la pipe ha la possibilità di **assumere l'identità** del **client**, a condizione che abbia i necessari diritti **SeImpersonate**. Identificare un **processo privilegiato** che comunica tramite una pipe che puoi imitare offre l'opportunità di **ottenere privilegi più elevati** adottando l'identità di quel processo una volta che interagisce con la pipe che hai stabilito. Per istruzioni su come eseguire un attacco del genere, puoi trovare guide utili [**qui**](named-pipe-client-impersonation.md) e [**qui**](#from-high-integrity-to-system).
Inoltre, il seguente strumento consente di **intercettare una comunicazione di named pipe con uno strumento come burp:** [**https://github.com/gabriel-sztejnworcel/pipe-intercept**](https://github.com/gabriel-sztejnworcel/pipe-intercept) **e questo strumento consente di elencare e vedere tutte le pipe per trovare privescs** [**https://github.com/cyberark/PipeViewer**](https://github.com/cyberark/PipeViewer) Inoltre, il seguente strumento consente di **intercettare una comunicazione di named pipe con uno strumento come burp:** [**https://github.com/gabriel-sztejnworcel/pipe-intercept**](https://github.com/gabriel-sztejnworcel/pipe-intercept) **e questo strumento consente di elencare e vedere tutte le pipe per trovare privescs** [**https://github.com/cyberark/PipeViewer**](https://github.com/cyberark/PipeViewer)