<summary><strong>Impara l'hacking AWS da zero a eroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
Ci sono stati diversi casi di **escalation dei privilegi** in cui un **processo privilegiato** con **handle aperti e ereditabili** ha **eseguito** un **processo non privilegiato** concedendogli **accesso a tutti quegli handle**.
Ad esempio, 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 bassi privilegi ma ereditando tutti gli handle aperti del processo principale**.\
Quindi, se hai **accesso completo al processo a bassi privilegi**, puoi acquisire l'**handle aperto al processo privilegiato creato** con `OpenProcess()` e **iniettare un codice shell**.
Come hai letto nell'esempio iniziale se un **processo non privilegiato eredita un handle di processo** di un **processo privilegiato** con abbastanza autorizzazioni sarà in grado di eseguire **codice arbitrario su di esso**.
In [**questo eccellente articolo**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/) puoi vedere come sfruttare qualsiasi handle di processo che abbia una delle seguenti autorizzazioni:
Similmente agli handle dei processi, se un **processo non privilegiato eredita un handle di thread** di un **processo privilegiato** con abbastanza autorizzazioni sarà in grado di eseguire **codice arbitrario su di esso**.
In [**questo eccellente articolo**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/) puoi anche vedere come sfruttare qualsiasi handle di thread che abbia una delle seguenti autorizzazioni:
Se un **processo non privilegiato eredita** un **handle** con **autorizzazioni di scrittura** equivalenti su un **file o registro privilegiato**, sarà in grado di **sovrascrivere** il file/registro (e con un po' di **fortuna**, **escalare i privilegi**).
Gli **handle di sezione** sono simili agli handle dei file, il nome comune di questo tipo di [oggetti è **"File Mapping"**](https://docs.microsoft.com/en-us/windows/win32/memory/file-mapping). Sono utilizzati per lavorare con **file di grandi dimensioni senza mantenere l'intero** file in memoria. Ciò rende lo sfruttamento un po' "simile" allo sfruttamento di un Handle di File.
[**Process Hacker**](https://github.com/processhacker/processhacker) è uno strumento che puoi scaricare gratuitamente. Ha diverse opzioni incredibili per ispezionare i processi e una di esse è la **possibilità di vedere gli handle di ciascun processo**.
Nota che per **vedere tutti gli handle di tutti i processi è necessario il SeDebugPrivilege** (quindi è necessario eseguire Process Hacker come amministratore).
Il [**binario Handles** ](https://docs.microsoft.com/en-us/sysinternals/downloads/handle) di Sysinternals elencherà anche gli handle per processo nella console:
[**Questo strumento**](https://github.com/lab52io/LeakedHandlesFinder) ti consente di **monitorare** gli **handle trapelati** e persino **sfruttarli automaticamente** per escalare i privilegi.
Ora che sai come trovare gli handle dei processi, devi verificare se qualche **processo non privilegiato ha accesso agli handle privilegiati**. In tal caso, l'utente del processo potrebbe essere in grado di ottenere l'handle e abusarlo per escalare i privilegi.
È stato menzionato in precedenza che è necessario il SeDebugPrivilege per accedere a tutti gli handle. Ma un **utente può comunque accedere agli handle dei suoi processi**, quindi potrebbe essere utile se desideri fare privesc solo da quell'utente per **eseguire gli strumenti con le autorizzazioni regolari dell'utente**.
Ad esempio, il seguente codice appartiene a un **servizio Windows** che sarebbe vulnerabile. Il codice vulnerabile di questo binario di servizio si trova all'interno della funzione **`Exploit`**. Questa funzione inizia **creando un nuovo processo handle con accesso completo**. Successivamente, viene **creato un processo a bassi privilegi** (copiando il token a basso privilegio di _explorer.exe_) che esegue _C:\users\nomeutente\desktop\client.exe_. La **vulnerabilità risiede nel fatto che viene creato il processo a bassi privilegi con `bInheritHandles` impostato su `TRUE`**.
Pertanto, questo processo a bassi privilegi è in grado di acquisire l'handle del processo ad alto privilegio creato per primo e iniettare ed eseguire un shellcode (vedi prossima sezione).
In uno scenario reale probabilmente **non sarai in grado di controllare il binario** che verrà eseguito dal codice vulnerabile (_C:\users\username\desktop\client.exe_ in questo caso). Probabilmente **comprometterai un processo e dovrai verificare se puoi accedere a un qualsiasi handle vulnerabile di un processo privilegiato**.
La parte più interessante di questo codice si trova in `GetVulnProcHandle`. Questa funzione **inizia a recuperare tutti gli handle**, quindi **verifica se qualcuno di essi appartiene allo stesso PID** e se l'handle appartiene a un **processo**. Se tutti questi requisiti sono soddisfatti (viene trovato un handle di processo aperto accessibile), si cerca di **iniettare ed eseguire un shellcode abusando dell'handle del processo**.\
L'iniezione del shellcode viene eseguita all'interno della funzione **`Inject`** e semplicemente **scrive il shellcode all'interno del processo privilegiato e crea un thread all'interno dello stesso processo** per eseguire il shellcode.
In uno scenario reale probabilmente **non sarai in grado di controllare il binario** che verrà eseguito dal codice vulnerabile (_C:\users\nomeutente\desktop\client.exe_ in questo caso). Probabilmente **comprometterai un processo e dovrai verificare se puoi accedere a un qualsiasi handle vulnerabile di un processo privilegiato**.
In questo esempio, **anziché abusare dell'handle aperto per iniettare** ed eseguire un shellcode, verrà **utilizzato il token del processo con l'handle aperto privilegiato per crearne uno nuovo**. Questo avviene dalle righe 138 alla 148.
Nota come la **funzione `UpdateProcThreadAttribute`** viene utilizzata con l'**attributo `PROC_THREAD_ATTRIBUTE_PARENT_PROCESS` e l'handle del processo privilegiato aperto**. Ciò significa che il **thread del processo creato che esegue \_cmd.exe** avrà lo stesso privilegio del token del processo con l'handle aperto**.
Questo strumento ti permette di monitorare i handle trapelati per trovare quelli vulnerabili e persino sfruttarli automaticamente. Ha anche uno strumento per far trapelare un handle.
<summary><strong>Impara l'hacking su AWS da zero a esperto con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di Github.