AWS - Nitro Enum
Informazioni di Base
AWS Nitro è una suite di tecnologie innovative che costituiscono 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 ipervisore leggero. Astrae gran parte della funzionalità di virtualizzazione tradizionale verso hardware e software dedicati, minimizzando la superficie di attacco e migliorando l'efficienza delle risorse. Scaricando le funzioni di virtualizzazione, Nitro consente alle istanze EC2 di offrire prestazioni quasi bare-metal, rendendolo particolarmente vantaggioso per le applicazioni ad alta intensità di risorse. Inoltre, il Chip di Sicurezza Nitro garantisce specificamente la sicurezza dell'hardware e del firmware, consolidando ulteriormente la sua architettura robusta.
Nitro Enclavi
AWS Nitro Enclavi 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, queste enclavi garantiscono un'isolamento e una sicurezza robusti, ideali per gestire informazioni confidenziali come PII o registri finanziari. Presentano un ambiente minimalista, riducendo significativamente il rischio di esposizione dei dati. Inoltre, le Nitro Enclavi supportano l'attestazione crittografica, consentendo agli utenti di verificare che sia in esecuzione solo codice autorizzato, fondamentale per mantenere rigorosi standard di conformità e protezione dei dati.
Le immagini delle Nitro Enclavi vengono eseguite da dentro le istanze EC2 e non è possibile vedere dalla console web AWS se un'istanza EC2 sta eseguendo immagini in Nitro Enclave o meno.
Installazione della CLI delle Nitro Enclavi
Segui tutte le istruzioni dalla documentazione. Tuttavia, queste sono le più importanti:
Immagini di Nitro Enclave
Le immagini che puoi eseguire in Nitro Enclave sono basate su immagini docker, quindi puoi creare le tue immagini di Nitro Enclave da immagini docker come:
Come puoi vedere, le immagini Nitro Enclave utilizzano l'estensione eif
(Enclave Image File).
L'output sarà simile a:
Esegui un'Immagine
Secondo la documentazione, per eseguire un'immagine di enclave è necessario assegnare ad essa una memoria di almeno 4 volte la dimensione del file eif
. È possibile configurare le risorse predefinite da assegnare ad essa nel file
Ricorda sempre che è necessario riservare alcune risorse anche per l'istanza EC2 genitore!
Dopo aver individuato le risorse da assegnare a un'immagine e aver modificato il file di configurazione, è possibile eseguire un'immagine enclave con:
Enumerare Enclavi
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 si utilizza il parametro --debug-mode
, è possibile ottenere il stdout di essa con:
Terminare Enclavi
Se un attaccante compromette un'istanza EC2, di default non sarà in grado di ottenere una shell all'interno di essa, ma sarà in grado di terminarla con:
Vsock
L'unico modo per comunicare con un'enclave in esecuzione è utilizzare vsocks.
Virtual Socket (vsock) è una famiglia di socket in Linux progettata specificamente per facilitare la comunicazione tra macchine virtuali (VM) e i loro hypervisor, o tra le VM stesse. Vsock consente una comunicazione bidirezionale efficiente senza dover fare affidamento sullo stack di rete dell'host. Ciò consente alle VM di 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 tipi di socket di flusso che di datagrammi, simili 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 in esecuzione nell'enclave è sufficiente eseguire il seguente comando e ottenere il EnclaveCID
:
Si noti che dall'host non c'è modo di sapere se un CID sta esponendo una porta! A meno che non si utilizzi uno scanner di porte vsock come https://github.com/carlospolop/Vsock-scanner.
Server/Listener Vsock
Qui trovi un paio di esempi:
Last updated