<summary><strong>Impara l'hacking di 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 [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
* **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).
Ci sono già stati diversi casi di **escalation dei privilegi** in cui un **processo privilegiato** con **handle aperte e ereditabili** ha **eseguito** un **processo non privilegiato** dandogli **accesso a tutte quelle 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 privilegi bassi ma ereditando tutte le handle aperte del processo principale**.\
Quindi, se hai **accesso completo al processo a privilegi bassi**, puoi ottenere la **handle aperta al processo privilegiato creato** con `OpenProcess()` e **iniettare uno shellcode**.
Come hai letto nell'esempio iniziale, se un **processo non privilegiato eredita una handle di processo** di un **processo privilegiato** con le autorizzazioni sufficienti, 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 ha una delle seguenti autorizzazioni:
Similmente alle handle di processo, se un **processo non privilegiato eredita una handle di thread** di un **processo privilegiato** con le autorizzazioni sufficienti, 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 processo che ha una delle seguenti autorizzazioni:
Se un **processo non privilegiato eredita** una **handle** con **autorizzazioni di scrittura** equivalenti su un **file o registro privilegiato**, sarà in grado di **sovrascrivere** il file/registro (e con molta **fortuna**, **aumentare i privilegi**).
Le **handle di sezione** sono simili alle handle di file, il nome comune di questo tipo di [oggetti è **"File Mapping"**](https://docs.microsoft.com/en-us/windows/win32/memory/file-mapping). Vengono utilizzate per lavorare con **file di grandi dimensioni senza mantenere l'intero** file in memoria. Ciò rende lo sfruttamento "simile" allo sfruttamento di una handle di file.
[**Process Hacker**](https://github.com/processhacker/processhacker) è un tool che puoi scaricare gratuitamente. Ha diverse opzioni incredibili per ispezionare i processi e una di queste è la **possibilità di visualizzare le handle di ogni processo**.
Nota che per **visualizzare tutte le handle di tutti i processi, è necessario il SeDebugPrivilege** (quindi devi eseguire Process Hacker come amministratore).
Il binario [**Handles** ](https://docs.microsoft.com/en-us/sysinternals/downloads/handle)di Sysinternals elencherà anche le handle per processo nella console:
[**Questo strumento**](https://github.com/lab52io/LeakedHandlesFinder) ti consente di **monitorare** le handle **trapelate** e persino **sfruttarle automaticamente** per aumentare i privilegi.
Ora che sai come trovare le handle dei processi, devi verificare se qualche **processo non privilegiato ha accesso a handle privilegiate**. In tal caso, l'utente del processo potrebbe essere in grado di ottenere la handle e sfruttarla per aumentare i privilegi.
È stato menzionato in precedenza che è necessario il SeDebugPrivilege per accedere a tutte le handle. Ma un **utente può comunque accedere alle handle dei suoi processi**, quindi potrebbe essere utile se si desidera eseguire l'escalation dei privilegi 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 servizio binario 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 bassi privilegi 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 uno shellcode (vedi sezione successiva).
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 qualche handle vulnerabile di un processo privilegiato.
In questo esempio puoi trovare il codice di un possibile exploit per _C:\users\username\desktop\client.exe_.\
La parte più interessante di questo codice si trova in `GetVulnProcHandle`. Questa funzione **inizia a recuperare tutti gli handle**, quindi **verifica se uno di essi appartiene allo stesso PID** e se l'handle appartiene a un **processo**. Se tutti questi requisiti vengono soddisfatti (viene trovato un handle di processo aperto accessibile), prova ad **iniettare ed eseguire uno shellcode sfruttando l'handle del processo**.\
L'iniezione dello shellcode viene eseguita all'interno della funzione **`Inject`** e semplicemente **scrive lo shellcode all'interno del processo privilegiato e crea un thread all'interno dello stesso processo** per eseguire lo 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é sfruttare l'handle aperto per iniettare** ed eseguire uno shellcode, verrà **utilizzato il token del processo con l'handle aperto privilegiato per crearne uno nuovo**. Questo viene fatto nelle righe da 138 a 148.
Nota come la **funzione `UpdateProcThreadAttribute`** viene utilizzata con l'**attributo `PROC_THREAD_ATTRIBUTE_PARENT_PROCESS` e l'handle del processo aperto privilegiato**. 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 consente di monitorare gli handle trapelati per trovare quelli vulnerabili e persino sfruttarli automaticamente. Ha anche uno strumento per trapelare un handle.
<summary><strong>Impara l'hacking di AWS da zero a eroe 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 [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](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 repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).