AWS Pentesting
Informazioni di Base
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 configurazioni errate e come sfruttarle.
Concetti come gerarchia dell'organizzazione, IAM e altri concetti di base sono spiegati in:
pageAWS - Basic InformationLaboratori per imparare
Strumenti per simulare attacchi:
Metodologia del Pentester/Red Team di AWS
Per auditare un ambiente AWS è molto importante sapere: quali servizi vengono utilizzati, cosa viene esposto, chi ha accesso a cosa, e come sono collegati i servizi interni di AWS a servizi esterni.
Dal punto di vista del Red Team, il primo passo per compromettere un ambiente AWS è riuscire a ottenere delle credenziali. Ecco alcune idee su come farlo:
Leak in github (o simili) - OSINT
Ingegneria Sociale
Riutilizzo di password (leak di password)
Vulnerabilità nelle Applicazioni ospitate su AWS
Server Side Request Forgery con accesso al metadata endpoint
Lettura di File Locali
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
3rd parties violati
Dipendente Interno
Cognito credenziali
O compromettendo un servizio non autenticato esposto:
pageAWS - Unauthenticated Enum & AccessOppure se stai facendo una revisione potresti semplicemente chiedere le credenziali con questi ruoli:
pageAWS - Permissions for a PentestDopo aver ottenuto le credenziali, devi sapere a chi appartengono quelle credenziali, e a cosa hanno accesso, quindi devi eseguire una enumerazione di base:
Enumerazione di Base
SSRF
Se hai trovato un SSRF in una macchina all'interno di AWS controlla questa pagina per trucchi:
Whoami
Una delle prime cose che devi sapere è chi sei (in quale account sei e altre informazioni sull'ambiente AWS):
Si noti che le aziende potrebbero utilizzare canary tokens per identificare quando i token vengono rubati e utilizzati. È consigliabile verificare se un token è un canary token prima di utilizzarlo. Per ulteriori informazioni controlla questa pagina.
Enumerazione dell'Organizzazione
pageAWS - Organizations EnumEnumerazione IAM
Se hai abbastanza autorizzazioni controllare i privilegi di ogni 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 autorizzazioni per enumerare IAM, puoi rubarle forzatamente per capirle. Controlla come fare l'enumerazione e il brute-forcing in:
pageAWS - IAM, Identity Center & SSO EnumOra che hai alcune informazioni sui tuoi credenziali (e se sei un red team sperabilmente non sei stato rilevato). È ora di capire quali servizi vengono utilizzati nell'ambiente. Nella sezione seguente puoi controllare alcuni modi per enumerare alcuni servizi comuni.
Enumerazione dei Servizi, Post-Esploitation & Persistenza
AWS ha un'enorme quantità di servizi, nella pagina seguente troverai informazioni di base, cheatsheets di enumerazione, come evitare la rilevazione, ottenere persistenza, e altri trucchi di post-esploitation su alcuni di essi:
pageAWS - ServicesNota che non è necessario eseguire tutto il lavoro manualmente, qui in questo post puoi trovare una sezione su strumenti automatici.
Inoltre, in questa fase potresti aver scoperto altri servizi esposti a utenti non autenticati, potresti essere in grado di sfruttarli:
pageAWS - Unauthenticated Enum & AccessEscalation dei Privilegi
Se puoi controllare almeno le tue autorizzazioni su risorse diverse potresti verificare se sei in grado di ottenere ulteriori autorizzazioni. Dovresti concentrarti almeno sulle autorizzazioni indicate in:
pageAWS - Privilege EscalationServizi Esposti Pubblicamente
Mentre stai enumerando i servizi AWS potresti averne trovati alcuni che espongono elementi su Internet (porte VM/Containers, database o servizi di coda, snapshot o bucket...). Come pentester/red teamer dovresti sempre verificare se puoi 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. Riguardo a come trovare vulnerabilità nei servizi di rete esposti ti consiglierei di cercare il servizio specifico in:
Compromissione dell'Organizzazione
Dall'account root/account di gestione
Quando l'account di gestione crea nuovi account nell'organizzazione, viene creato un nuovo ruolo nel nuovo account, di default chiamato OrganizationAccountAccessRole
e dà la politica AdministratorAccess all'account di gestione per accedere al nuovo account.
Quindi, per accedere come amministratore a un account figlio hai bisogno di:
Compromettere l'account di gestione e trovare l'ID dei account figli e i nomi del ruolo (di default OrganizationAccountAccessRole) che permette all'account di gestione di accedere come amministratore.
Per trovare gli account figli vai alla sezione organizzazioni nella console aws o esegui
aws organizations list-accounts
Non puoi trovare direttamente il nome dei ruoli, quindi controlla tutte le policy IAM personalizzate e cerca quelle che permettono
sts:AssumeRole
sui account figli precedentemente scoperti.Compromettere un principale nell'account di gestione con permesso
sts:AssumeRole
sul ruolo negli account figli (anche se l'account permette a chiunque dall'account di gestione di impersonare, poiché è un account esterno, sono necessari permessi specificists:AssumeRole
).
Strumenti Automatici
Recon
aws-recon: Uno strumento di raccolta inventario multi-threaded focalizzato sulla sicurezza AWS scritto in Ruby.
cloudlist: Cloudlist è uno strumento multi-cloud per ottenere Risorse (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'auditing per problemi di sicurezza.
cartography: Cartography è uno strumento Python che consolida gli asset dell'infrastruttura e le relazioni tra di essi in una visualizzazione grafica intuitiva alimentata da un database Neo4j.
starbase: Starbase raccoglie asset e relazioni da servizi e sistemi, inclusa l'infrastruttura cloud, le applicazioni SaaS, i controlli di sicurezza e altro ancora in una visualizzazione grafica intuitiva supportata dal database Neo4j.
aws-inventory: (Utilizza 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 (IPv4/IPv6) associati a un account AWS.
Privesc & Sfruttamento
SkyArk: Scopri gli utenti più privilegiati nell'ambiente AWS scansionato, inclusi gli amministratori ombra AWS. Utilizza powershell. Puoi trovare la definizione delle policy 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 testare la sicurezza offensiva contro gli 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 IAM e Ruoli in un account come un grafo diretto, che consente di controllare l'elevazione dei privilegi e i percorsi alternativi che un attaccante potrebbe intraprendere per ottenere accesso a una risorsa o azione in AWS. È possibile controllare le autorizzazioni utilizzate per trovare i percorsi di privesc nei file il cui nome termina in
_edges.py
in https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing
cloudsplaining: Cloudsplaining è uno strumento di valutazione della sicurezza IAM di AWS che identifica violazioni del principio del privilegio minimo e genera un rapporto HTML con priorità dei rischi. Mostrerà potenzialmente un cliente con privilegi eccessivi, inline e policy aws e a quali principali hanno accesso. (Non controlla solo le privesc ma anche altri tipi di autorizzazioni interessanti, consigliato l'uso).
cloudjack: CloudJack valuta gli account AWS per vulnerabilità di dirottamento di sottodomini a seguito di configurazioni disaccoppiate di Route53 e CloudFront.
ccat: Elenca i repository ECR -> Scarica il repository ECR -> Introduce un backdoor -> Carica l'immagine con backdoor
Dufflebag: Dufflebag è uno strumento che ricerca tra gli snapshot pubblici di Elastic Block Storage (EBS) per individuare segreti che potrebbero essere stati accidentalmente lasciati.
Audit
cloudsploit: CloudSploit di Aqua è un progetto open-source progettato per consentire la rilevazione di rischi di sicurezza negli account di infrastrutture cloud, 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 della situazione 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 audit della sicurezza multi-cloud, che consente la valutazione della postura di sicurezza degli ambienti cloud.
cs-suite: Cloud Security Suite (utilizza python2.7 e sembra non essere mantenuto)
Zeus: Zeus è un potente strumento per le migliori pratiche di sicurezza di AWS EC2 / S3 / CloudTrail / CloudWatch / KMS (sembra non essere mantenuto). Controlla solo le credenziali configurate per impostazione predefinita all'interno del sistema.
Audit Costante
cloud-custodian: Cloud Custodian è un motore di regole per la gestione di account e risorse cloud pubblici. Consente agli utenti di definire politiche per abilitare un'infrastruttura cloud ben gestita, che sia sicura e ottimizzata in termini di costi. Consolida molti degli script ad hoc delle organizzazioni in uno strumento leggero e flessibile, con metriche e report unificati.
pacbot: Policy as Code Bot (PacBot) è una piattaforma per il monitoraggio continuo della conformità, la generazione di report sulla conformità e l'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 valutare la conformità alle politiche. Il framework auto-fix di PacBot fornisce la capacità di rispondere automaticamente alle violazioni delle politiche mediante l'adozione di azioni predefinite.
streamalert: StreamAlert è un framework di analisi dati in tempo reale senza server che ti consente di acquisire, analizzare e avvisare sui dati provenienti da qualsiasi ambiente, utilizzando le fonti di dati e la logica di avviso che definisci. I team di sicurezza informatica utilizzano StreamAlert per analizzare terabyte di dati di log ogni giorno per la rilevazione e la risposta agli incidenti.
DEBUG: Cattura delle richieste del cli AWS
Riferimenti
Last updated