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 un registro delle modifiche e delle azioni, aiutando nell'analisi della sicurezza, nell'audit della conformità e nel tracciamento delle modifiche delle 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 Console di Gestione AWS
console.amazonaws.com - Utente principale dell'account
lambda.amazonaws.com - AWS Lambda
I parametri della richiesta:
requestParameters
Gli elementi di 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 vengono 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à del file di log per poter verificare che i file di log siano rimasti invariati da quando CloudTrail li ha consegnati a te. Crea un hash SHA-256 dei log all'interno di un file di digest. Viene creato un hash sha-256 dei nuovi log ogni ora. Nel creare un Trail, i selettori degli eventi ti permetteranno di indicare il trail da registrare: eventi di gestione, dati o di insight.
I log sono salvati in un bucket S3. Per impostazione predefinita viene utilizzata la crittografia lato server (SSE-S3) in modo che AWS decifri il contenuto per le persone che vi hanno accesso, ma per una sicurezza aggiuntiva è possibile utilizzare SSE con KMS e le proprie 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 ciascuna cartella, ciascun log avrà un nome seguendo 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à del file) saranno all'interno dello stesso bucket in:
Aggregare Log da Più Account
Crea un Trail nell'account AWS dove desideri che i file di log vengano consegnati
Applica le autorizzazioni al bucket S3 di destinazione consentendo l'accesso tra account per CloudTrail e consenti l'accesso a ciascun account AWS che ne ha bisogno
Crea un nuovo Trail negli altri account AWS e seleziona di utilizzare il bucket creato nello step 1
Tuttavia, anche se è possibile salvare tutti i log nello stesso bucket S3, non è possibile 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 dell'organizzazione in 1
Nel creare un CloudTrail, è possibile indicare di attivare CloudTrail per tutti gli account nell'organizzazione e ottenere i log in un solo bucket:
In questo modo è possibile configurare facilmente CloudTrail in tutte le regioni di tutti gli account e centralizzare i log in 1 account (che dovresti proteggere).
Verifica dei File di Log
È possibile verificare che i log non siano stati alterati eseguendo
Registri su CloudWatch
CloudTrail può inviare automaticamente i registri 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 registri a CloudWatch è necessario creare un ruolo che consenta tale azione. Se possibile, è consigliabile utilizzare il ruolo predefinito di AWS per eseguire queste azioni. Questo ruolo consentirà a CloudTrail di:
CreateLogStream: Questo consente di creare flussi di log di CloudWatch Logs
PutLogEvents: Consegnare i registri di CloudTrail al flusso di log di CloudWatch Logs
Cronologia degli eventi
La Cronologia degli eventi di CloudTrail ti consente di ispezionare in una tabella i registri che sono stati registrati:
Insight
CloudTrail Insights analizza automaticamente gli eventi di gestione della scrittura dai percorsi di CloudTrail e ti avvisa di attività insolite. Ad esempio, se c'è un aumento degli eventi TerminateInstance
che differisce dai baselines stabiliti, lo vedrai come un evento Insight. Questi eventi rendono più facile che mai trovare e rispondere a attività API insolite.
Gli insight sono memorizzati nello stesso bucket dei registri di CloudTrail in: BucketName/AWSLogs/AccountID/CloudTrail-Insight
Sicurezza
Integrità del file di log di CloudTrail |
|
Fermare l'accesso non autorizzato |
|
Impedire l'eliminazione dei file di log |
|
Consigli sull'accesso
Il Consigliere sull'accesso di AWS si basa sui registri di CloudTrail degli ultimi 400 giorni per raccogliere le sue informazioni. CloudTrail cattura la cronologia delle chiamate API di AWS e degli eventi correlati effettuati in un account AWS. Il Consigliere sull'accesso utilizza questi dati per mostrare quando i servizi sono stati accessati per l'ultima volta. Analizzando i registri di CloudTrail, il Consigliere sull'accesso può determinare quali servizi AWS un utente IAM o un ruolo ha accessato e quando è avvenuto tale accesso. Questo aiuta gli amministratori AWS a prendere decisioni informate sulla raffinazione delle autorizzazioni, in quanto possono identificare i servizi che non sono stati accessati per periodi prolungati e potenzialmente ridurre le autorizzazioni troppo ampie basate sui veri modelli di utilizzo.
Pertanto, il Consigliere sull'accesso informa riguardo alle autorizzazioni non necessarie fornite agli utenti in modo che l'amministratore possa rimuoverle
Azioni
Enumerazione
Iniezione di CSV
È possibile eseguire un'iniezione di CSV all'interno di CloudTrail che eseguirà codice arbitrario se i log vengono esportati in CSV e aperti con Excel. Il seguente codice genererà un'entrata di log con un nome di Trail dannoso contenente il payload:
Per ulteriori informazioni sulle Iniezioni CSV consulta la pagina:
Per ulteriori informazioni su questa tecnica specifica consulta https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/
Eludere la Rilevazione
HoneyTokens eludere
I HoneyTokens sono creati per rilevare l'esfiltrazione di informazioni sensibili. Nel caso di AWS, sono chiavi AWS il cui utilizzo è monitorato, se qualcosa attiva un'azione con quella chiave, allora qualcuno deve aver rubato quella chiave.
Tuttavia, questa monitorizzazione viene effettuata tramite CloudTrail, e ci sono alcuni servizi AWS che non inviano log a CloudTrail (trova l'elenco qui). Alcuni di questi servizi risponderanno con un errore contenente l'ARN del ruolo chiave se qualcuno non autorizzato (la chiave honeytoken) cerca di accedervi.
In questo modo, un attaccante può ottenere l'ARN della chiave senza attivare alcun log. Nell'ARN l'attaccante può vedere il ID dell'account AWS e il nome, è facile conoscere gli ID e i nomi degli account delle aziende HoneyToken, in questo modo un attaccante può identificare se il token è un HoneyToken.
Rilevamento HoneyTokens
Pacu rileva se una chiave appartiene a Canarytokens, SpaceCrab, SpaceSiren:
Se
canarytokens.org
appare nel nome del ruolo o l'ID dell'account534261010715
appare nel messaggio di errore.Testandoli più di recente, stanno utilizzando l'account
717712589309
e ha ancora la stringacanarytokens.com
nel nome.Se
SpaceCrab
appare nel nome del ruolo nel messaggio di erroreSpaceSiren 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.
Nota che tutte le API pubbliche scoperte che non creano log di CloudTrail sono state ora corrette, quindi potresti aver bisogno di trovarne una tua...
Oppure puoi ottenere l'ID dell'account dall'encoded all'interno della chiave di accesso come spiegato qui e controllare l'ID dell'account con il tuo elenco di account AWS Honeytokens:
Per ulteriori informazioni consulta la ricerca originale.
Accesso a Infrastrutture di Terze Parti
Alcuni servizi AWS creeranno un'infrastruttura come Database o cluster Kubernetes (EKS). Un utente che comunica direttamente con questi servizi (come l'API Kubernetes) non utilizzerà l'API AWS, quindi CloudTrail non potrà vedere questa comunicazione.
Pertanto, un utente con accesso a EKS che ha scoperto l'URL dell'API di EKS potrebbe generare un token localmente e comunicare direttamente con il servizio API senza essere rilevato da CloudTrail.
Ulteriori informazioni in:
pageAWS - EKS Post ExploitationModifica della Configurazione di CloudTrail
Eliminare i trail
Interrompere i trail
Disabilita il logging multi-regionale
Disabilita il Logging tramite Selettori di Eventi
Nel primo esempio, viene fornito un singolo selettore di eventi come un array JSON con un singolo oggetto. Il "ReadWriteType": "ReadOnly"
indica che il selettore di eventi dovrebbe catturare solo eventi in sola lettura (quindi CloudTrail insights non controllerà gli eventi di scrittura, per esempio).
Puoi personalizzare il selettore di eventi in base ai tuoi requisiti specifici.
Cancellazione dei log tramite la policy del ciclo di vita di 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
Ransomware CloudTrail
Ransomware S3
Potresti generare una chiave asimmetrica e fare in modo che CloudTrail crittografi i dati con quella chiave e eliminare la chiave privata in modo che i contenuti di CloudTrail non possano essere recuperati. Questo è essenzialmente un ransomware S3-KMS spiegato in:
pageAWS - S3 Post ExploitationRansomware KMS
Questo è il modo più semplice per eseguire l'attacco precedente con requisiti di autorizzazioni diversi:
pageAWS - KMS Post ExploitationRiferimenti
Last updated