AWS - GuardDuty Enum

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

GuardDuty

Secondo la documentazione: GuardDuty combina apprendimento automatico, rilevamento delle anomalie, monitoraggio della rete e scoperta di file dannosi, utilizzando sia AWS che fonti di terze parti leader del settore per proteggere i carichi di lavoro e i dati su AWS. GuardDuty è in grado di analizzare decine di miliardi di eventi provenienti da diverse origini di dati AWS, come i log degli eventi di AWS CloudTrail, i log di flusso di Amazon Virtual Private Cloud (VPC), gli audit di Amazon Elastic Kubernetes Service (EKS) e i log di sistema, e i log delle query DNS.

Amazon GuardDuty identifica attività insolite all'interno dei tuoi account, analizza la rilevanza della sicurezza dell'attività e fornisce il contesto in cui è stata invocata. Ciò consente a un risponditore di determinare se dovrebbe dedicare tempo a ulteriori indagini.

Le segnalazioni 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à nuove segnalazioni, e le segnalazioni esistenti andranno perse. Se lo si ferma semplicemente, le segnalazioni esistenti rimarranno.

Esempio di segnalazioni

  • Ricognizione: Attività che suggerisce una ricognizione da parte di un attaccante, come attività API insolite, tentativi di accesso sospetti al database, scansione delle porte intra-VPC, modelli insoliti di richieste di accesso non riuscite o sondaggio delle porte non bloccato da un IP noto come malevolo.

  • Compromissione dell'istanza: Attività che indica una compromissione dell'istanza, come mining di criptovalute, attività di command and control (C&C) di backdoor, malware che utilizza algoritmi di generazione di domini (DGA), attività di denial of service in uscita, volume di traffico di rete insolitamente elevato, protocolli di rete insoliti, comunicazione dell'istanza in uscita con un IP malevolo noto, 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 la registrazione di AWS CloudTrail, modifiche che indeboliscono la politica della password dell'account, lanci di istanze o infrastrutture insolite, distribuzioni di infrastrutture in una regione insolita, furto di credenziali, attività di accesso al database sospette e chiamate API da indirizzi IP malevoli noti.

  • 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 Amazon S3 insolite da un host remoto, accesso S3 non autorizzato da indirizzi IP malevoli noti e chiamate API per recuperare dati nei bucket S3 da un utente senza precedenti accessi al bucket o invocato da una posizione insolita. Amazon GuardDuty monitora e analizza continuamente gli eventi dei dati AWS CloudTrail S3 (ad esempio, GetObject, ListObjects, DeleteObject) per rilevare attività sospette in tutti i tuoi bucket Amazon S3.

Informazioni sulla segnalazione

Sommario della segnalazione:

  • Tipo di segnalazione

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

  • Regione

  • ID account

  • ID risorsa

  • Ora di rilevamento

  • Quali elenchi di minacce sono stati utilizzati

Il corpo contiene queste informazioni:

  • Risorsa interessata

  • Azione

  • Attore: indirizzo IP, porta e dominio

  • Informazioni aggiuntive

Tutte le segnalazioni

Accedi a un elenco di tutte le segnalazioni di GuardDuty su: 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 venga monitorato dalla stessa GuardDuty. L'account principale deve invitare gli account membri e quindi il rappresentante dell'account membro deve accettare l'invito.

Tramite 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 in 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>

Bypass di GuardDuty

Guida generale

Cerca di scoprire il più possibile sul comportamento delle credenziali che stai per utilizzare:

  • Orari in cui vengono utilizzate

  • Posizioni

  • User Agent / Servizi (Potrebbe essere utilizzato da awscli, webconsole, lambda...)

  • Autorizzazioni utilizzate regolarmente

Con queste informazioni, cerca di ricreare il più possibile lo stesso scenario per utilizzare l'accesso:

  • Se si tratta di un utente o di un ruolo utilizzato da un utente, cerca di utilizzarlo nelle stesse ore, dalla stessa geolocalizzazione (anche lo stesso ISP e IP se possibile)

  • Se si tratta di 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 le stesse autorizzazioni che questo principale ha utilizzato

  • Se hai bisogno di utilizzare altre autorizzazioni o abusare di un'autorizzazione (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)

Violazione di GuardDuty

guardduty:UpdateDetector

Con questa autorizzazione è possibile disabilitare GuardDuty per evitare di attivare gli allarmi.

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 questa autorizzazione hanno la capacità di utilizzare filtri per l'archiviazione automatica delle rilevazioni:

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 attendibili di GuardDuty aggiungendo il proprio indirizzo IP e evitando di generare allarmi.

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 evitare l'allerta:

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

L'eliminazione di questa destinazione di pubblicazione non influirà sulla generazione o visibilità delle rilevazioni all'interno della console di GuardDuty. GuardDuty continuerà ad analizzare gli eventi nel tuo ambiente AWS, identificare comportamenti sospetti o inaspettati e generare rilevazioni.

Esempi di bypass delle rilevazioni specifiche

Si noti che ci sono decine di rilevazioni di GuardDuty, tuttavia, come Red Teamer non tutte ti riguarderanno, e cosa ancora migliore, hai la documentazione completa di ognuna di esse in https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html quindi dai un'occhiata prima di agire per non farti scoprire.

Ecco un paio di esempi di bypass delle rilevazioni specifiche di GuardDuty:

GuardDuty rileva le richieste API di AWS da comuni strumenti di penetration testing e attiva una rilevazione PenTest. Viene rilevato dal nome dell'agente utente che viene passato nella richiesta API. Pertanto, modificando l'agente utente è possibile evitare che GuardDuty rilevi l'attacco.

Per prevenire ciò, puoi cercare lo script session.py nel pacchetto botocore e modificare l'agente utente, o impostare Burp Suite come proxy AWS CLI e cambiare l'agente utente con MitM o semplicemente utilizzare un sistema operativo come Ubuntu, Mac o Windows per evitare che scatti questo avviso.

UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration

L'estrazione delle credenziali EC2 dal servizio di metadati e l'utilizzo di esse al di fuori dell'ambiente AWS attiva l'allerta UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS. Al contrario, l'utilizzo di queste credenziali dalla tua istanza EC2 attiva l'allerta UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS. Tuttavia, l'utilizzo delle credenziali su un'altra istanza EC2 compromessa all'interno dello stesso account passa inosservato, senza generare alcun avviso.

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

Riferimenti

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated