AWS - CloudTrail Enum
CloudTrail
AWS CloudTrail registra e monitora l'attività all'interno del tuo ambiente AWS. Cattura dettagliati log degli eventi, inclusi chi ha fatto cosa, quando e da dove, per tutte le interazioni con le risorse AWS. Questo fornisce una traccia di audit delle modifiche e delle azioni, aiutando nell'analisi della sicurezza, nell'audit di conformità e nel tracciamento delle modifiche alle risorse. CloudTrail è essenziale per comprendere il comportamento degli utenti e delle risorse, migliorare le posture di sicurezza e garantire la conformità normativa.
Ogni evento registrato contiene:
Il nome dell'API chiamata:
eventName
Il servizio chiamato:
eventSource
L'ora:
eventTime
L'indirizzo IP:
SourceIPAddress
Il metodo dell'agente:
userAgent
. Esempi:Signing.amazonaws.com - Dalla AWS Management Console
console.amazonaws.com - Utente root dell'account
lambda.amazonaws.com - AWS Lambda
I parametri della richiesta:
requestParameters
Gli elementi della risposta:
responseElements
Gli eventi vengono scritti in un nuovo file di log circa ogni 5 minuti in un file JSON, sono mantenuti da CloudTrail e infine, i file di log sono consegnati a S3 circa 15 minuti dopo. I log di CloudTrail possono essere aggregati tra account e tra regioni. CloudTrail consente di utilizzare l'integrità dei file di log per poter verificare che i tuoi file di log non siano stati modificati da quando CloudTrail te li ha consegnati. Crea un hash SHA-256 dei log all'interno di un file di digest. Un hash sha-256 dei nuovi log viene creato ogni ora. Quando si crea un Trail, i selettori di eventi ti permetteranno di indicare al trail di registrare: eventi di gestione, dati o insights.
I log sono salvati in un bucket S3. Di default viene utilizzata la crittografia lato server (SSE-S3) quindi AWS decritterà il contenuto per le persone che hanno accesso, ma per una sicurezza aggiuntiva puoi utilizzare SSE con KMS e le tue chiavi.
I log sono memorizzati in un bucket S3 con questo formato di nome:
BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD
Essendo il BucketName:
aws-cloudtrail-logs-<accountid>-<random>
Esempio:
aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/
All'interno di ogni cartella ogni log avrà un nome che segue questo formato: AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz
Convenzione di denominazione dei file di log
Inoltre, i file di digest (per controllare l'integrità dei file) saranno all'interno dello stesso bucket in:
Aggregare i Log da Più Account
Crea un Trial nell'account AWS dove vuoi che i file di log vengano consegnati
Applica i permessi al bucket S3 di destinazione consentendo l'accesso cross-account per CloudTrail e consenti a ciascun account AWS che necessita di accesso
Crea un nuovo Trail negli altri account AWS e seleziona di utilizzare il bucket creato nel passaggio 1
Tuttavia, anche se puoi salvare tutti i log nello stesso bucket S3, non puoi aggregare i log di CloudTrail da più account in un CloudWatch Logs appartenente a un singolo account AWS.
Ricorda che un account può avere diversi Trails da CloudTrail abilitati che memorizzano gli stessi (o diversi) log in bucket diversi.
Cloudtrail da tutti gli account org in 1
Quando crei un CloudTrail, è possibile indicare di attivare cloudtrail per tutti gli account nell'org e ottenere i log in un solo bucket:
In questo modo puoi configurare facilmente CloudTrail in tutte le regioni di tutti gli account e centralizzare i log in un account (che dovresti proteggere).
Controllo dei File di Log
Puoi verificare che i log non siano stati alterati eseguendo
Logs to CloudWatch
CloudTrail può inviare automaticamente i log a CloudWatch in modo da poter impostare avvisi che ti avvisano quando vengono eseguite attività sospette. Nota che per consentire a CloudTrail di inviare i log a CloudWatch è necessario creare un ruolo che consenta tale azione. Se possibile, è consigliato utilizzare il ruolo predefinito di AWS per eseguire queste azioni. Questo ruolo permetterà a CloudTrail di:
CreateLogStream: Questo consente di creare flussi di log di CloudWatch Logs
PutLogEvents: Consegnare i log di CloudTrail al flusso di log di CloudWatch Logs
Event History
CloudTrail Event History ti permette di ispezionare in una tabella i log che sono stati registrati:
Insights
CloudTrail Insights analizza automaticamente gli eventi di gestione di scrittura dai trail di CloudTrail e ti avvisa di attività insolite. Ad esempio, se c'è un aumento degli eventi TerminateInstance
che differisce dalle basi stabilite, lo vedrai come un evento Insight. Questi eventi rendono più facile trovare e rispondere ad attività API insolite che mai.
Gli insights sono memorizzati nello stesso bucket dei log di CloudTrail in: BucketName/AWSLogs/AccountID/CloudTrail-Insight
Security
Integrità del File di Log di CloudTrail |
|
Fermare l'accesso non autorizzato |
|
Prevenire l'eliminazione dei file di log |
|
Access Advisor
AWS Access Advisor si basa sugli ultimi 400 giorni di log di AWS CloudTrail per raccogliere i suoi insights. CloudTrail cattura una cronologia delle chiamate API di AWS e degli eventi correlati effettuati in un account AWS. Access Advisor utilizza questi dati per mostrare quando i servizi sono stati acceduti l'ultima volta. Analizzando i log di CloudTrail, Access Advisor può determinare quali servizi AWS un utente IAM o un ruolo ha accesso e quando tale accesso è avvenuto. Questo aiuta gli amministratori AWS a prendere decisioni informate su raffinare i permessi, poiché possono identificare i servizi che non sono stati acceduti per periodi prolungati e potenzialmente ridurre i permessi eccessivamente ampi basati su modelli di utilizzo reale.
Pertanto, Access Advisor informa sui permessi non necessari concessi agli utenti in modo che l'amministratore possa rimuoverli
Actions
Enumeration
CSV Injection
È possibile eseguire un'iniezione CSV all'interno di CloudTrail che eseguirà codice arbitrario se i log vengono esportati in CSV e aperti con Excel. Il seguente codice genererà una voce di log con un nome di Trail errato contenente il payload:
Per ulteriori informazioni sulle CSV Injections controlla la pagina:
Per ulteriori informazioni su questa tecnica specifica controlla https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/
Bypass Detection
HoneyTokens bypass
I Honeytokens sono creati per rilevare l'esfiltrazione di informazioni sensibili. Nel caso di AWS, sono chiavi AWS il cui utilizzo è monitorato, se qualcosa innesca un'azione con quella chiave, allora qualcuno deve aver rubato quella chiave.
Tuttavia, Honeytokens come quelli creati da Canarytokens, SpaceCrab, SpaceSiren utilizzano o un nome account riconoscibile o lo stesso ID account AWS per tutti i loro clienti. Pertanto, se riesci a ottenere il nome dell'account e/o l'ID dell'account senza far creare alcun log a Cloudtrail, potresti sapere se la chiave è un honeytoken o no.
Pacu ha alcune regole per rilevare se una chiave appartiene a Canarytokens, SpaceCrab, SpaceSiren:
Se
canarytokens.org
appare nel nome del ruolo o l'ID account534261010715
appare nel messaggio di errore.Testandoli più recentemente, stanno usando l'account
717712589309
e ha ancora la stringacanarytokens.com
nel nome.Se
SpaceCrab
appare nel nome del ruolo nel messaggio di errore.SpaceSiren utilizza uuids per generare nomi utente:
[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}
Se il nome sembra generato casualmente, ci sono alte probabilità che sia un HoneyToken.
Ottenere l'ID account dall'ID chiave
Puoi ottenere l'ID account dall'encoded all'interno della access key come spiegato qui e controllare l'ID account con la tua lista di account Honeytokens AWS:
Check more information in the orginal research.
Non generare un log
La tecnica più efficace per questo è in realtà una semplice. Basta usare la chiave che hai appena trovato per accedere a qualche servizio all'interno del tuo account di attaccante. Questo farà sì che CloudTrail generi un log all'interno del TUO account AWS e non all'interno di quello della vittima.
La cosa è che l'output ti mostrerà un errore indicando l'ID dell'account e il nome dell'account, quindi sarai in grado di vedere se è un Honeytoken.
Servizi AWS senza log
In passato c'erano alcuni servizi AWS che non inviavano log a CloudTrail (trova una lista qui). Alcuni di questi servizi risponderanno con un errore contenente l'ARN del ruolo della chiave se qualcuno non autorizzato (la chiave honeytoken) tenta di accedervi.
In questo modo, un attaccante può ottenere l'ARN della chiave senza attivare alcun log. Nell'ARN l'attaccante può vedere l'ID dell'account AWS e il nome, è facile conoscere gli ID e i nomi degli account delle aziende di HoneyToken, quindi in questo modo un attaccante può identificare se il token è un HoneyToken.
Nota che tutte le API pubbliche scoperte che non creavano log di CloudTrail sono ora risolte, quindi forse devi trovare le tue...
Per maggiori informazioni consulta la ricerca originale.
Accesso a Infrastrutture Terze
Certi servizi AWS genereranno alcune infrastrutture come Database o cluster Kubernetes (EKS). Un utente che parla direttamente con questi servizi (come l'API di Kubernetes) non utilizzerà l'API AWS, quindi CloudTrail non sarà in grado di vedere questa comunicazione.
Pertanto, un utente con accesso a EKS che ha scoperto l'URL dell'API EKS potrebbe generare un token localmente e parlare direttamente con il servizio API senza essere rilevato da CloudTrail.
Maggiori informazioni in:
AWS - EKS Post ExploitationModifica della Configurazione di CloudTrail
Eliminare i trails
Interrompere i trails
Elencare i trails
Elencare i trails con logging disabilitato
Elencare i trails con logging abilitato
Elencare i trails con logging abilitato in tutte le regioni
Elencare i trails con logging disabilitato in tutte le regioni
Elencare i trails con logging abilitato in una regione specifica
Elencare i trails con logging disabilitato in una regione specifica
Elencare i trails con logging abilitato in una regione specifica e in tutte le regioni
Elencare i trails con logging disabilitato in una regione specifica e in tutte le regioni
Disabilita il logging multi-regione
Disabilita il Logging tramite Event Selectors
Nel primo esempio, un singolo event selector è fornito come un array JSON con un singolo oggetto. Il "ReadWriteType": "ReadOnly"
indica che il event selector dovrebbe catturare solo eventi di sola lettura (quindi CloudTrail insights non controllerà gli eventi di scrittura per esempio).
Puoi personalizzare il event selector in base alle tue esigenze specifiche.
Cancellazione dei log tramite politica di ciclo di vita S3
Modifica della Configurazione del Bucket
Elimina il bucket S3
Modifica la policy del bucket per negare qualsiasi scrittura dal servizio CloudTrail
Aggiungi una policy di ciclo di vita al bucket S3 per eliminare gli oggetti
Disabilita la chiave kms utilizzata per crittografare i log di CloudTrail
Cloudtrail ransomware
S3 ransomware
Potresti generare una chiave asimmetrica e fare in modo che CloudTrail crittografi i dati con quella chiave e cancellare la chiave privata in modo che i contenuti di CloudTrail non possano essere recuperati. Questo è fondamentalmente un S3-KMS ransomware spiegato in:
AWS - S3 Post ExploitationKMS ransomware
Questo è un modo più semplice per eseguire l'attacco precedente con diversi requisiti di permessi:
AWS - KMS Post ExploitationRiferimenti
Last updated