AWS - GuardDuty 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)
Secondo la documentazione: GuardDuty combina apprendimento automatico, rilevamento di anomalie, monitoraggio della rete e scoperta di file dannosi, utilizzando sia AWS che fonti di terze parti leader del settore per aiutare a proteggere i carichi di lavoro e i dati su AWS. GuardDuty è in grado di analizzare decine di miliardi di eventi provenienti da più fonti di dati AWS, come i log degli eventi di AWS CloudTrail, i log di flusso di Amazon Virtual Private Cloud (VPC), i log di audit e di sistema di Amazon Elastic Kubernetes Service (EKS) e i log delle query DNS.
Amazon GuardDuty identifica attività insolite all'interno dei tuoi account, analizza la rilevanza di sicurezza dell'attività e fornisce il contesto in cui è stata invocata. Questo consente a un risponditore di determinare se deve dedicare tempo a ulteriori indagini.
Gli avvisi appaiono nella console di GuardDuty (90 giorni) e negli eventi di CloudWatch.
Quando un utente disabilita GuardDuty, smetterà di monitorare il tuo ambiente AWS e non genererà più alcun nuovo riscontro, e i riscontri esistenti andranno persi. Se lo fermi semplicemente, i riscontri esistenti rimarranno.
Riconoscimento: Attività che suggerisce riconoscimento da parte di un attaccante, come attività API insolite, tentativi di accesso al database sospetti, scansione delle porte intra-VPC, modelli insoliti di richieste di accesso fallite o probing di porte non bloccate da un IP noto come malevolo.
Compromissione dell'istanza: Attività che indica una compromissione dell'istanza, come mining di criptovalute, attività di comando e controllo (C&C) di backdoor, malware che utilizza algoritmi di generazione di domini (DGA), attività di negazione del servizio in uscita, volume di traffico di rete insolitamente alto, protocolli di rete insoliti, comunicazione dell'istanza in uscita con un IP noto come malevolo, credenziali temporanee di Amazon EC2 utilizzate da un indirizzo IP esterno e esfiltrazione di dati tramite DNS.
Compromissione dell'account: Modelli comuni indicativi di compromissione dell'account includono chiamate API da una geolocalizzazione insolita o da un proxy di anonimizzazione, tentativi di disabilitare il logging di AWS CloudTrail, modifiche che indeboliscono la politica della password dell'account, lanci di istanze o infrastrutture insolite, distribuzioni di infrastruttura in una regione insolita, furto di credenziali, attività di accesso al database sospette e chiamate API da indirizzi IP noti come malevoli.
Compromissione del bucket: Attività che indica una compromissione del bucket, come modelli di accesso ai dati sospetti che indicano un uso improprio delle credenziali, attività API di Amazon S3 insolite da un host remoto, accesso non autorizzato a S3 da indirizzi IP noti come malevoli e chiamate API per recuperare dati nei bucket S3 da un utente senza una storia precedente di accesso al bucket o invocato da una posizione insolita. Amazon GuardDuty monitora e analizza continuamente gli eventi di dati S3 di AWS CloudTrail (ad es. GetObject, ListObjects, DeleteObject) per rilevare attività sospette in tutti i tuoi bucket Amazon S3.
Accedi a un elenco di tutti i riscontri di GuardDuty in: https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html
Puoi invitare altri account a un diverso account AWS GuardDuty in modo che ogni account sia monitorato dallo stesso GuardDuty. L'account master deve invitare gli account membri e poi il rappresentante dell'account membro deve accettare l'invito.
Puoi designare qualsiasi account all'interno dell'organizzazione come amministratore delegato di GuardDuty. Solo l'account di gestione dell'organizzazione può designare un amministratore delegato.
Un account che viene designato come amministratore delegato diventa un account amministratore di GuardDuty, ha GuardDuty abilitato automaticamente nella regione AWS designata e ha anche il permesso di abilitare e gestire GuardDuty per tutti gli account nell'organizzazione all'interno di quella regione. Gli altri account nell'organizzazione possono essere visualizzati e aggiunti come account membri di GuardDuty associati a questo account amministratore delegato.
Cerca di scoprire il maggior numero possibile di informazioni sul comportamento delle credenziali che intendi utilizzare:
Orari in cui viene utilizzato
Località
User Agents / Servizi (Potrebbe essere utilizzato da awscli, webconsole, lambda...)
Permessi utilizzati regolarmente
Con queste informazioni, ricrea il maggior numero possibile dello stesso scenario per utilizzare l'accesso:
Se è un utente o un ruolo accessibile da un utente, cerca di utilizzarlo nelle stesse ore, dalla stessa geolocalizzazione (anche lo stesso ISP e IP se possibile)
Se è un ruolo utilizzato da un servizio, crea lo stesso servizio nella stessa regione e utilizzalo da lì negli stessi intervalli di tempo
Cerca sempre di utilizzare gli stessi permessi che questo principale ha utilizzato
Se hai bisogno di utilizzare altri permessi o abusare di un permesso (ad esempio, scaricare 1.000.000 di file di log di cloudtrail) fallo lentamente e con il minimo numero di interazioni con AWS (awscli a volte chiama diverse API di lettura prima di quella di scrittura)
guardduty:UpdateDetector
Con questo permesso potresti disabilitare GuardDuty per evitare di attivare avvisi.
guardduty:CreateFilter
Gli attaccanti con questo permesso hanno la capacità di utilizzare filtri per l'archiviazione automatica delle scoperte:
iam:PutRolePolicy
, (guardduty:CreateIPSet
|guardduty:UpdateIPSet
)Gli attaccanti con i privilegi precedenti potrebbero modificare la lista IP fidata di GuardDuty aggiungendo il proprio indirizzo IP e evitando di generare avvisi.
guardduty:DeletePublishingDestination
Gli attaccanti potrebbero rimuovere la destinazione per prevenire gli avvisi:
Eliminare questa destinazione di pubblicazione non influenzerà la generazione o la visibilità dei risultati all'interno della console di GuardDuty. GuardDuty continuerà ad analizzare gli eventi nel tuo ambiente AWS, identificare comportamenti sospetti o inaspettati e generare risultati.
Nota che ci sono decine di risultati di GuardDuty, tuttavia, come Red Teamer non tutti influenzeranno te, e ciò che è meglio, hai la full documentation di ciascuno di essi in https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html quindi dai un'occhiata prima di intraprendere qualsiasi azione per non essere scoperto.
Ecco un paio di esempi di bypass di risultati specifici di GuardDuty:
GuardDuty rileva le richieste API AWS da strumenti comuni di penetration testing e attiva un PenTest Finding. È rilevato dal nome dell'agente utente che viene passato nella richiesta API. Pertanto, modificando l'agente utente è possibile impedire a GuardDuty di rilevare l'attacco.
Per prevenire questo puoi cercare nello script session.py
nel pacchetto botocore
e modificare l'agente utente, oppure impostare Burp Suite come proxy AWS CLI e cambiare l'agente utente con il MitM o semplicemente utilizzare un OS come Ubuntu, Mac o Windows per prevenire l'attivazione di questo avviso.
Estrarre le credenziali EC2 dal servizio di metadata e utilizzarle all'esterno dell'ambiente AWS attiva l'avviso UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS
. Al contrario, utilizzare queste credenziali dalla tua istanza EC2 attiva l'avviso UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS
. Tuttavia, utilizzare le credenziali su un'altra istanza EC2 compromessa all'interno dello stesso account rimane non rilevato, senza sollevare alcun avviso.
Pertanto, usa le credenziali esfiltrate dall'interno della macchina in cui le hai trovate per non attivare questo avviso.
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)