AWS - GuardDuty Enum

Support HackTricks

GuardDuty

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à nuovi risultati, e i risultati esistenti andranno persi. Se lo fermi semplicemente, i risultati esistenti rimarranno.

Esempio di Risultati

  • 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 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 S3 non autorizzato 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.

Informazioni sui Risultati

Riepilogo dei risultati:

  • Tipo di risultato

  • Gravità: 7-8.9 Alta, 4-6.9 Media, 01-3.9 Bassa

  • Regione

  • ID Account

  • ID Risorsa

  • Tempo di rilevamento

  • Quale lista di minacce è stata utilizzata

Il corpo ha queste informazioni:

  • Risorsa interessata

  • Azione

  • Attore: Indirizzo IP, porta e dominio

  • Informazioni aggiuntive

Tutti i Risultati

Accedi a un elenco di tutti i risultati di GuardDuty in: https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html

Multi Account

Per Invito

Puoi invitare altri account a un diverso account AWS GuardDuty in modo che ogni account sia monitorato dallo stesso GuardDuty. L'account principale deve invitare gli account membri e poi il rappresentante dell'account membro deve accettare l'invito.

Via Organizzazione

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.

Enumerazione

# Get Org config
aws guardduty list-organization-admin-accounts #Get Delegated Administrator
aws guardduty describe-organization-configuration --detector-id <id>

# Check external invitations
aws guardduty list-invitations
aws guardduty get-invitations-count

# Detector Information
aws guardduty list-detectors # 1 detector per account with GuardDuty
aws guardduty get-detector --detector-id <id> # Get detector info
aws guardduty get-master-account --detector-id <id>

# Get filters
aws guardduty list-filters --detector-id <id> # Check filters
aws guardduty get-filter --detector-id <id> --filter-name <name>

# Findings
aws guardduty list-findings --detector-id <id> # List findings
aws guardduty get-findings --detector-id <id> --finding-ids <id> # Get details about the finding
aws guardduty get-findings-statistics --detector-id <id> --finding-statistic-types <types>

# Get trusted IP addresses
aws guardduty list-ip-sets --detector-id <id>
aws guardduty get-ip-set --detector-id <id>

# Member accounts of the current AWS GuardDuty master account
aws guardduty list-members --detector-id <id>
aws guardduty get-members --detector-id <id> --account-ids <id>
aws guardduty get-member-detectors --detector-id <id> --account-ids <id>

# Continuously export its findings to an Amazon S3 bucket
aws guardduty list-publishing-destinations --detector-id <id>

# Intelligence sets that you have uploaded to GuardDuty
aws guardduty list-threat-intel-sets --detector-id <id>
aws guardduty get-threat-intel-set --detector-id <id> --threat-intel-set-id <id>

GuardDuty Bypass

General Guidance

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 più possibile lo 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 i 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)

Breaking GuardDuty

guardduty:UpdateDetector

Con questo permesso potresti disabilitare GuardDuty per evitare di attivare avvisi.

aws guardduty update-detector --detector-id <detector-id> --no-enable
aws guardduty update-detector --detector-id <detector-id> --data-sources S3Logs={Enable=false}

guardduty:CreateFilter

Gli attaccanti con questo permesso hanno la capacità di utilizzare filtri per l'archiviazione automatica delle scoperte:

aws guardduty create-filter  --detector-id <detector-id> --name <filter-name> --finding-criteria file:///tmp/criteria.json --action ARCHIVE

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.

aws guardduty update-ip-set --detector-id <detector-id> --activate --ip-set-id <ip-set-id> --location https://some-bucket.s3-eu-west-1.amazonaws.com/attacker.csv

guardduty:DeletePublishingDestination

Gli attaccanti potrebbero rimuovere la destinazione per prevenire avvisi:

aws guardduty delete-publishing-destination --detector-id <detector-id> --destination-id <dest-id>

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.

Esempi di bypass di risultati specifici

Nota che ci sono decine di risultati di GuardDuty, tuttavia, come Red Teamer non tutti influenzeranno te, e cosa migliore, hai la documentazione completa 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.

UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration

Estrarre le credenziali EC2 dal servizio di metadati e utilizzarle all'esterno dell'ambiente AWS attiva l'allerta UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS. Al contrario, utilizzare queste credenziali dalla tua istanza EC2 attiva l'allerta UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS. Tuttavia, utilizzare le credenziali su un'altra istanza EC2 compromessa all'interno dello stesso account rimane non rilevato, senza attivare alcun avviso.

Pertanto, usa le credenziali esfiltrate dall'interno della macchina in cui le hai trovate per non attivare questo avviso.

Riferimenti

Supporta HackTricks

Last updated