AWS Pentesting
Last updated
Last updated
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Prima di iniziare il pentesting di un ambiente AWS, ci sono alcune cose di base che devi sapere su come funziona AWS per aiutarti a capire cosa devi fare, come trovare misconfigurazioni e come sfruttarle.
Concetti come gerarchia organizzativa, IAM e altri concetti di base sono spiegati in:
AWS - Basic InformationStrumenti per simulare attacchi:
Per auditare un ambiente AWS è molto importante sapere: quali servizi vengono utilizzati, cosa è esposto, chi ha accesso a cosa e come sono connessi i servizi AWS interni e i servizi esterni.
Dal punto di vista di un Red Team, il primo passo per compromettere un ambiente AWS è riuscire a ottenere alcune credenziali. Ecco alcune idee su come farlo:
Leak in github (o simili) - OSINT
Ingegneria Sociale
Riutilizzo della Password (leak di password)
Vulnerabilità nelle Applicazioni Ospitate su AWS
Server Side Request Forgery con accesso all'endpoint dei metadati
Lettura di File Locali
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
breach di terze parti
Dipendente Interno
Cognito credenziali
Oppure compromettendo un servizio non autenticato esposto:
AWS - Unauthenticated Enum & AccessO se stai facendo una revisione potresti semplicemente chiedere le credenziali con questi ruoli:
AWS - Permissions for a PentestDopo aver ottenuto le credenziali, devi sapere a chi appartengono queste credenziali, e a cosa hanno accesso, quindi devi eseguire alcune enumerazioni di base:
Se hai trovato un SSRF in una macchina all'interno di AWS controlla questa pagina per trucchi:
Una delle prime cose che devi sapere è chi sei (in quale account ti trovi e altre informazioni sull'ambiente AWS):
Nota che le aziende potrebbero utilizzare canary tokens per identificare quando i token vengono rubati e utilizzati. Si consiglia di controllare se un token è un canary token o meno prima di utilizzarlo. Per ulteriori informazioni controlla questa pagina.
Se hai abbastanza permessi, controllare i privilegi di ciascuna entità all'interno dell'account AWS ti aiuterà a capire cosa puoi fare tu e altre identità e come escalare i privilegi.
Se non hai abbastanza permessi per enumerare IAM, puoi rubare e forzare per scoprirli. Controlla come fare l'enumerazione e il brute-forcing in:
AWS - IAM, Identity Center & SSO EnumOra che hai alcune informazioni sulle tue credenziali (e se sei un red team, speriamo che tu non sia stato rilevato). È tempo di scoprire quali servizi vengono utilizzati nell'ambiente. Nella sezione seguente puoi controllare alcuni modi per enumerare alcuni servizi comuni.
AWS ha un numero straordinario di servizi, nella pagina seguente troverai informazioni di base, cheatsheets di enumerazione, come evitare il rilevamento, ottenere persistenza e altri trucchi di post-exploitation su alcuni di essi:
AWS - ServicesNota che non è necessario eseguire tutto il lavoro manualmente, qui sotto in questo post puoi trovare una sezione su strumenti automatici.
Inoltre, in questa fase potresti aver scoperto più servizi esposti a utenti non autenticati, potresti essere in grado di sfruttarli:
AWS - Unauthenticated Enum & AccessSe puoi controllare almeno i tuoi permessi su diverse risorse, potresti controllare se sei in grado di ottenere ulteriori permessi. Dovresti concentrarti almeno sui permessi indicati in:
AWS - Privilege EscalationDurante l'enumerazione dei servizi AWS potresti aver trovato alcuni di essi che espongono elementi a Internet (porte VM/Container, database o servizi di coda, snapshot o bucket...). Come pentester/red teamer dovresti sempre controllare se riesci a trovare informazioni sensibili / vulnerabilità su di essi poiché potrebbero fornirti ulteriore accesso all'account AWS.
In questo libro dovresti trovare informazioni su come trovare servizi AWS esposti e come controllarli. Per quanto riguarda come trovare vulnerabilità nei servizi di rete esposti, ti consiglio di cercare il servizio specifico in:
Quando l'account di gestione crea nuovi account nell'organizzazione, viene creata una nuova role nel nuovo account, chiamata per impostazione predefinita OrganizationAccountAccessRole
e viene fornita la policy AdministratorAccess all'account di gestione per accedere al nuovo account.
Quindi, per accedere come amministratore a un account secondario, devi:
Compromettere l'account di gestione e trovare l'ID degli account secondari e i nomi della role (OrganizationAccountAccessRole per impostazione predefinita) che consente all'account di gestione di accedere come admin.
Per trovare gli account secondari, vai alla sezione organizzazioni nella console aws o esegui aws organizations list-accounts
Non puoi trovare il nome delle role direttamente, quindi controlla tutte le policy IAM personalizzate e cerca qualsiasi cosa che consenta sts:AssumeRole
sugli account secondari precedentemente scoperti.
Compromettere un principale nell'account di gestione con permesso sts:AssumeRole
sulla role negli account secondari (anche se l'account consente a chiunque dell'account di gestione di impersonare, poiché è un account esterno, sono necessari permessi specifici sts:AssumeRole
).
aws-recon: Uno strumento di raccolta inventario focalizzato sulla sicurezza AWS multi-threaded scritto in Ruby.
cloudlist: Cloudlist è uno strumento multi-cloud per ottenere Asset (Nomi host, Indirizzi IP) dai fornitori di cloud.
cloudmapper: CloudMapper ti aiuta ad analizzare i tuoi ambienti Amazon Web Services (AWS). Ora contiene molte più funzionalità, inclusa l'audit per problemi di sicurezza.
cartography: Cartography è uno strumento Python che consolida le risorse infrastrutturali e le relazioni tra di esse in una vista grafica intuitiva alimentata da un database Neo4j.
starbase: Starbase raccoglie asset e relazioni da servizi e sistemi, inclusa l'infrastruttura cloud, applicazioni SaaS, controlli di sicurezza e altro, in una vista grafica intuitiva supportata dal database Neo4j.
aws-inventory: (Usa python2) Questo è uno strumento che cerca di scoprire tutti le risorse AWS create in un account.
aws_public_ips: È uno strumento per recuperare tutti gli indirizzi IP pubblici (sia IPv4 che IPv6) associati a un account AWS.
SkyArk: Scopri gli utenti più privilegiati nell'ambiente AWS scansionato, inclusi gli AWS Shadow Admins. Utilizza PowerShell. Puoi trovare la definizione delle politiche privilegiate nella funzione Check-PrivilegedPolicy
in https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1.
pacu: Pacu è un framework di sfruttamento AWS open-source, progettato per test di sicurezza offensivi contro ambienti cloud. Può enumerare, trovare configurazioni errate e sfruttarle. Puoi trovare la definizione delle autorizzazioni privilegiate in https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134 all'interno del dizionario user_escalation_methods
.
Nota che pacu controlla solo i tuoi percorsi di privesc (non a livello di account).
PMapper: Principal Mapper (PMapper) è uno script e una libreria per identificare i rischi nella configurazione di AWS Identity and Access Management (IAM) per un account AWS o un'organizzazione AWS. Modella i diversi utenti e ruoli IAM in un account come un grafo diretto, il che consente controlli per privilege escalation e per percorsi alternativi che un attaccante potrebbe seguire per ottenere accesso a una risorsa o azione in AWS. Puoi controllare i permessi utilizzati per trovare percorsi privesc nei nomi dei file che terminano con _edges.py
in https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing
cloudsplaining: Cloudsplaining è uno strumento di valutazione della sicurezza AWS IAM che identifica le violazioni del principio del minimo privilegio e genera un rapporto HTML prioritizzato per rischio. Mostrerà i clienti eccessivamente privilegiati, le politiche inline e aws e quali principali hanno accesso a esse. (Non controlla solo per privesc ma anche altri tipi di permessi interessanti, si consiglia di usarlo).
cloudjack: CloudJack valuta gli account AWS per vulnerabilità di hijacking dei sottodomini a causa di configurazioni disaccoppiate di Route53 e CloudFront.
ccat: Elenca i repo ECR -> Estrai il repo ECR -> Inserisci un backdoor -> Invia l'immagine con backdoor
Dufflebag: Dufflebag è uno strumento che cerca attraverso gli snapshot pubblici di Elastic Block Storage (EBS) per segreti che potrebbero essere stati accidentalmente lasciati.
cloudsploit: CloudSploit di Aqua è un progetto open-source progettato per consentire la rilevazione di rischi per la sicurezza nelle infrastrutture cloud degli account, inclusi: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) e GitHub (non cerca ShadowAdmins).
Prowler: Prowler è uno strumento di sicurezza Open Source per eseguire valutazioni delle migliori pratiche di sicurezza AWS, audit, risposta agli incidenti, monitoraggio continuo, indurimento e prontezza forense.
CloudFox: CloudFox ti aiuta a ottenere consapevolezza situazionale in ambienti cloud sconosciuti. È uno strumento da riga di comando open source creato per aiutare i penetration tester e altri professionisti della sicurezza offensiva a trovare percorsi di attacco sfruttabili nell'infrastruttura cloud.
ScoutSuite: Scout Suite è uno strumento open source di auditing della sicurezza multi-cloud, che consente la valutazione della postura di sicurezza degli ambienti cloud.
cs-suite: Cloud Security Suite (usa python2.7 e sembra non essere mantenuto)
Zeus: Zeus è uno strumento potente per le migliori pratiche di hardening di AWS EC2 / S3 / CloudTrail / CloudWatch / KMS (sembra non essere mantenuto). Controlla solo le credenziali configurate di default all'interno del sistema.
cloud-custodian: Cloud Custodian è un motore di regole per gestire account e risorse nel cloud pubblico. Permette agli utenti di definire politiche per abilitare un'infrastruttura cloud ben gestita, che sia sia sicura che ottimizzata in termini di costi. Consolida molti degli script ad hoc che le organizzazioni hanno in uno strumento leggero e flessibile, con metriche e report unificati.
pacbot: Policy as Code Bot (PacBot) è una piattaforma per monitoraggio continuo della conformità, reportistica sulla conformità e automazione della sicurezza per il cloud. In PacBot, le politiche di sicurezza e conformità sono implementate come codice. Tutte le risorse scoperte da PacBot vengono valutate rispetto a queste politiche per misurare la conformità alle politiche. Il framework auto-fix di PacBot fornisce la possibilità di rispondere automaticamente alle violazioni delle politiche intraprendendo azioni predefinite.
streamalert: StreamAlert è un framework di analisi dei dati in tempo reale senza server che ti consente di acquisire, analizzare e allertare sui dati provenienti da qualsiasi ambiente, utilizzando fonti di dati e logica di allerta che definisci. I team di sicurezza informatica utilizzano StreamAlert per scansionare terabyte di dati di log ogni giorno per la rilevazione e risposta agli incidenti.
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)