AWS - Nitro Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
AWS Nitro è una suite di tecnologie innovative che formano la piattaforma sottostante per le istanze AWS EC2. Introdotto da Amazon per migliorare la sicurezza, le prestazioni e l'affidabilità, Nitro sfrutta componenti hardware personalizzati e un hypervisor leggero. Astrae gran parte della funzionalità di virtualizzazione tradizionale su hardware e software dedicati, minimizzando la superficie di attacco e migliorando l'efficienza delle risorse. Offloadando le funzioni di virtualizzazione, Nitro consente alle istanze EC2 di offrire prestazioni quasi bare-metal, rendendolo particolarmente vantaggioso per applicazioni ad alta intensità di risorse. Inoltre, il Nitro Security Chip garantisce specificamente la sicurezza dell'hardware e del firmware, consolidando ulteriormente la sua architettura robusta.
AWS Nitro Enclaves fornisce un ambiente di calcolo sicuro e isolato all'interno delle istanze Amazon EC2, progettato specificamente per elaborare dati altamente sensibili. Sfruttando il sistema AWS Nitro, questi enclavi garantiscono una robusta isolamento e sicurezza, ideali per gestire informazioni riservate come PII o registri finanziari. Presentano un ambiente minimalista, riducendo significativamente il rischio di esposizione dei dati. Inoltre, Nitro Enclaves supporta l'attestazione crittografica, consentendo agli utenti di verificare che solo il codice autorizzato sia in esecuzione, fondamentale per mantenere rigorosi standard di conformità e protezione dei dati.
Le immagini di Nitro Enclave sono eseguite all'interno delle istanze EC2 e non puoi vedere dalla console web AWS se un'istanza EC2 sta eseguendo immagini in Nitro Enclave o meno.
Segui tutte le istruzioni dalla documentazione. Tuttavia, queste sono le più importanti:
Le immagini che puoi eseguire in Nitro Enclave sono basate su immagini docker, quindi puoi creare le tue immagini Nitro Enclave da immagini docker come:
Come puoi vedere, le immagini Nitro Enclave utilizzano l'estensione eif
(Enclave Image File).
L'output apparirà simile a:
Come indicato nella documentazione, per eseguire un'immagine di enclave è necessario assegnarle una memoria di almeno 4 volte la dimensione del file eif
. È possibile configurare le risorse predefinite da assegnarle nel file.
Ricorda sempre che devi riservare alcune risorse per l'istanza EC2 genitore!
Dopo aver conosciuto le risorse da assegnare a un'immagine e aver persino modificato il file di configurazione, è possibile eseguire un'immagine enclave con:
Se comprometti un host EC2, è possibile ottenere un elenco delle immagini di enclave in esecuzione con:
Non è possibile ottenere una shell all'interno di un'immagine enclave in esecuzione perché questo è lo scopo principale dell'enclave, tuttavia, se hai utilizzato il parametro --debug-mode
, è possibile ottenere il stdout con:
Se un attaccante compromette un'istanza EC2, per impostazione predefinita non sarà in grado di ottenere una shell all'interno di esse, ma sarà in grado di terminarle con:
L'unico modo per comunicare con un enclave in esecuzione è utilizzare vsocks.
Virtual Socket (vsock) è una famiglia di socket in Linux specificamente progettata per facilitare la comunicazione tra macchine virtuali (VMs) e i loro hypervisor, o tra le VMs stesse. Vsock consente una comunicazione efficiente e bi-direzionale senza fare affidamento sullo stack di rete dell'host. Questo rende possibile per le VMs comunicare anche senza configurazioni di rete, utilizzando un ID di contesto a 32 bit (CID) e numeri di porta per identificare e gestire le connessioni. L'API vsock supporta sia i tipi di socket a flusso che a datagramma, simile a TCP e UDP, fornendo uno strumento versatile per le applicazioni a livello utente in ambienti virtuali.
Pertanto, un indirizzo vsock appare così: <CID>:<Port>
Per trovare i CID delle immagini enclave in esecuzione, puoi semplicemente eseguire il seguente comando e ottenere il EnclaveCID
:
Nota che dall'host non c'è modo di sapere se un CID sta esponendo qualche porta! A meno di utilizzare qualche scanner di porte vsock come https://github.com/carlospolop/Vsock-scanner.
Trova qui un paio di esempi: