AWS - CloudTrail 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)
AWS CloudTrail beleži i prati aktivnost unutar vašeg AWS okruženja. Zapisuje detaljne logove događaja, uključujući ko je šta uradio, kada i odakle, za sve interakcije sa AWS resursima. Ovo pruža audit trag promena i akcija, pomažući u analizi bezbednosti, reviziji usklađenosti i praćenju promena resursa. CloudTrail je ključan za razumevanje ponašanja korisnika i resursa, poboljšanje bezbednosnih postura i osiguranje usklađenosti sa propisima.
Svaki zabeleženi događaj sadrži:
Ime pozvane API: eventName
Pozvana usluga: eventSource
Vreme: eventTime
IP adresa: SourceIPAddress
Metoda agenta: userAgent
. Primeri:
Signing.amazonaws.com - Iz AWS Management Console
console.amazonaws.com - Root korisnik naloga
lambda.amazonaws.com - AWS Lambda
Parametri zahteva: requestParameters
Elementi odgovora: responseElements
Događaji se zapisuju u novu log datoteku otprilike svake 5 minuta u JSON datoteci, drže ih CloudTrail i na kraju, log datoteke se isporučuju u S3 otprilike 15 minuta nakon. CloudTrail logovi se mogu agregirati preko naloga i regiona. CloudTrail omogućava korišćenje integriteta log datoteka kako bi se moglo verifikovati da su vaše log datoteke ostale nepromenjene od trenutka kada ih je CloudTrail isporučio. Kreira SHA-256 hash logova unutar datoteke sa sažetkom. SHA-256 hash novih logova se kreira svake sat vremena. Kada kreirate Trail, selektori događaja će vam omogućiti da označite trail za logovanje: upravljanje, podaci ili uvidi.
Logovi se čuvaju u S3 kanti. Po defaultu se koristi enkripcija sa servera (SSE-S3) tako da AWS dekriptuje sadržaj za ljude koji imaju pristup, ali za dodatnu bezbednost možete koristiti SSE sa KMS i svojim ključevima.
Logovi se čuvaju u S3 kanti sa ovim formatom imena:
BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD
Gde je BucketName: aws-cloudtrail-logs-<accountid>-<random>
Primer: aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/
Unutar svake fascikle svaki log će imati ime koje prati ovaj format: AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz
Konvencija imenovanja log datoteka
Pored toga, datoteke sa sažetkom (za proveru integriteta datoteka) će biti unutar iste kante u:
Kreirajte Trail u AWS nalogu u koji želite da se log datoteke isporuče
Primijenite dozvole na odredišnu S3 kantu omogućavajući pristup između naloga za CloudTrail i dozvolite svakom AWS nalogu koji treba pristup
Kreirajte novi Trail u drugim AWS nalozima i izaberite da koristite kreiranu kantu u koraku 1
Međutim, čak i ako možete sačuvati sve logove u istoj S3 kanti, ne možete agregirati CloudTrail logove iz više naloga u CloudWatch logove koji pripadaju jednom AWS nalogu.
Zapamtite da nalog može imati različite Trails iz CloudTrail omogućene koje čuvaju iste (ili različite) logove u različitim kantama.
Kada kreirate CloudTrail, moguće je naznačiti da se aktivira cloudtrail za sve naloge u organizaciji i da se logovi dobiju u samo 1 kantu:
Na ovaj način možete lako konfigurisati CloudTrail u svim regionima svih naloga i centralizovati logove u 1 nalog (koji treba da zaštitite).
Možete proveriti da logovi nisu izmenjeni pokretanjem
CloudTrail može automatski slati logove u CloudWatch kako biste mogli postaviti upozorenja koja vas obaveštavaju kada se izvrše sumnjive aktivnosti. Imajte na umu da je za omogućavanje CloudTrail-u da šalje logove u CloudWatch potrebno kreirati ulogu koja to omogućava. Ako je moguće, preporučuje se korišćenje AWS podrazumevane uloge za izvršavanje ovih akcija. Ova uloga će omogućiti CloudTrail-u da:
CreateLogStream: Ovo omogućava kreiranje CloudWatch Logs log stream-ova
PutLogEvents: Dostavlja CloudTrail logove u CloudWatch Logs log stream
CloudTrail Event History vam omogućava da pregledate u tabeli logove koji su zabeleženi:
CloudTrail Insights automatski analizira write management događaje iz CloudTrail tragova i upozorava vas na neobične aktivnosti. Na primer, ako dođe do povećanja TerminateInstance
događaja koji se razlikuje od utvrđenih osnovica, videćete to kao Insight događaj. Ovi događaji olakšavaju pronalazak i reagovanje na neobične API aktivnosti kao nikada pre.
Uvidi se čuvaju u istom bucket-u kao CloudTrail logovi u: BucketName/AWSLogs/AccountID/CloudTrail-Insight
CloudTrail Log File Integrity
Proverite da li su logovi menjani (modifikovani ili obrisani)
Koristi digest fajlove (kreira hash za svaki fajl)
SHA-256 hashing
SHA-256 sa RSA za digitalno potpisivanje
privatni ključ u vlasništvu Amazona
Traje 1 sat da se kreira digest fajl (radi se svake pune sate)
Stop unauthorized access
Koristite IAM politike i S3 bucket politike
bezbednosni tim —> admin pristup
auditori —> samo za čitanje
Koristite SSE-S3/SSE-KMS za enkripciju logova
Prevent log files from being deleted
Ograničite pristup brisanju sa IAM i bucket politikama
Konfigurišite S3 MFA brisanje
Proverite sa Log File Validation
AWS Access Advisor se oslanja na poslednjih 400 dana AWS CloudTrail logova da prikupi svoje uvide. CloudTrail beleži istoriju AWS API poziva i povezanih događaja izvršenih u AWS nalogu. Access Advisor koristi ove podatke da prikaže kada su usluge poslednji put korišćene. Analizom CloudTrail logova, Access Advisor može odrediti koje AWS usluge je IAM korisnik ili uloga koristila i kada je taj pristup izvršen. Ovo pomaže AWS administratorima da donesu informisane odluke o usavršavanju dozvola, jer mogu identifikovati usluge koje nisu korišćene duži period i potencijalno smanjiti preširoke dozvole na osnovu stvarnih obrazaca korišćenja.
Stoga, Access Advisor obaveštava o nepotrebnim dozvolama koje se daju korisnicima kako bi administrator mogao da ih ukloni
Moguće je izvršiti CVS injekciju unutar CloudTrail-a koja će izvršiti proizvoljan kod ako se logovi eksportuju u CSV i otvore u Excel-u. Sledeći kod će generisati log unos sa lošim imenom Trail koje sadrži payload:
Za više informacija o CSV injekcijama, pogledajte stranicu:
Za više informacija o ovoj specifičnoj tehnici, pogledajte https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/
Honeytokens su kreirani da otkriju eksfiltraciju osetljivih informacija. U slučaju AWS-a, to su AWS ključevi čija se upotreba prati, ako nešto pokrene akciju sa tim ključem, onda je neko morao ukrasti taj ključ.
Međutim, Honeytokens poput onih koje kreiraju Canarytokens, SpaceCrab, SpaceSiren koriste ili prepoznatljivo ime naloga ili koriste isti AWS ID naloga za sve svoje korisnike. Stoga, ako možete dobiti ime naloga i/ili ID naloga bez da Cloudtrail kreira bilo kakav log, možete znati da li je ključ honeytoken ili ne.
Pacu ima neka pravila za detekciju da li ključ pripada Canarytokens, SpaceCrab, SpaceSiren:
Ako se canarytokens.org
pojavljuje u imenu uloge ili se ID naloga 534261010715
pojavljuje u poruci o grešci.
Testirajući ih nedavno, koriste nalog 717712589309
i još uvek ima string canarytokens.com
u imenu.
Ako se SpaceCrab
pojavljuje u imenu uloge u poruci o grešci
SpaceSiren koristi uuids za generisanje korisničkih imena: [a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}
Ako ime izgleda kao nasumično generisano, postoji velika verovatnoća da je to HoneyToken.
Možete dobiti ID naloga iz kodiranog unutar pristupnog ključa kao objašnjeno ovde i proveriti ID naloga sa vašom listom Honeytokens AWS naloga:
Check more information in the orginal research.
Najefikasnija tehnika za ovo je zapravo jednostavna. Samo koristi ključ koji si upravo pronašao da pristupiš nekoj usluzi unutar svog napadačkog naloga. Ovo će CloudTrail generisati log unutar TVOG AWS naloga, a ne unutar žrtve.
Stvar je u tome da će izlaz prikazati grešku koja ukazuje na ID naloga i ime naloga, tako da ćeš moći da vidiš da li je to Honeytoken.
U prošlosti je bilo nekih AWS usluga koje ne šalju logove u CloudTrail (pronađi listu ovde). Neke od tih usluga će odgovoriti sa greškom koja sadrži ARN ključne uloge ako neko neovlašćeno (honeytoken ključ) pokuša da pristupi.
Na ovaj način, napadač može dobiti ARN ključa bez aktiviranja bilo kakvog loga. U ARN-u napadač može videti AWS ID naloga i ime, lako je znati ID i imena kompanija HoneyToken-a, tako da na ovaj način napadač može identifikovati da li je token HoneyToken.
Napomena da su sve javne API koje su otkrivene da ne kreiraju CloudTrail logove sada ispravljene, tako da možda treba da pronađeš svoje...
Za više informacija proveri original research.
Određene AWS usluge će stvoriti neku infrastrukturu kao što su Baze podataka ili Kubernetes klasteri (EKS). Korisnik komunicira direktno sa tim uslugama (kao što je Kubernetes API) neće koristiti AWS API, tako da CloudTrail neće moći da vidi ovu komunikaciju.
Stoga, korisnik sa pristupom EKS-u koji je otkrio URL EKS API-ja mogao bi generisati token lokalno i direktno komunicirati sa API uslugom bez da bude otkriven od strane Cloudtrail-a.
Više informacija u:
U prvom primeru, jedan selektor događaja je dat kao JSON niz sa jednim objektom. "ReadWriteType": "ReadOnly"
označava da selektor događaja treba da hvata samo događaje koji su samo za čitanje (tako da CloudTrail uvidi neće proveravati write događaje, na primer).
Možete prilagoditi selektor događaja na osnovu vaših specifičnih zahteva.
Obrišite S3 bucket
Promenite politiku bucket-a da odbije bilo kakve upise iz CloudTrail servisa
Dodajte politiku životnog ciklusa S3 bucket-u da obriše objekte
Onemogućite kms ključ koji se koristi za enkripciju CloudTrail logova
Možete generisati asimetrični ključ i naterati CloudTrail da enkriptuje podatke tim ključem i obrisati privatni ključ tako da se sadržaj CloudTrail-a ne može povratiti. Ovo je u suštini S3-KMS ransomware objašnjeno u:
KMS ransomware
Ovo je najlakši način da se izvede prethodni napad sa različitim zahtevima za dozvole:
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)