AWS - CloudTrail Enum
CloudTrail
AWS CloudTrail beleži i prati aktivnosti unutar vašeg AWS okruženja. Snima detaljne dnevničke događaje, uključujući ko je šta uradio, kada i odakle, za sve interakcije sa AWS resursima. Ovo pruža evidenciju promena i akcija, pomaže u analizi bezbednosti, reviziji usaglašenosti i praćenju promena resursa. CloudTrail je esencijalan za razumevanje ponašanja korisnika i resursa, unapređenje bezbednosnih postavki i osiguravanje regulatorne usaglašenosti.
Svaki zabeleženi događaj sadrži:
Naziv pozvane API funkcije:
eventName
Pozvani servis:
eventSource
Vreme:
eventTime
IP adresa:
SourceIPAddress
Metod 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
Dogadjaji se upisuju u novu datoteku zapisa oko svakih 5 minuta u JSON datoteku, čuvaju se u CloudTrail-u i na kraju, datoteke zapisa se isporučuju u S3 oko 15 minuta nakon toga. CloudTrail zapisi mogu biti agregirani preko naloga i preko regiona. CloudTrail omogućava korišćenje celovitosti datoteka zapisa kako bi se moglo proveriti da li su vaše datoteke zapisa ostale nepromenjene od trenutka kada ih je CloudTrail isporučio vama. Stvara se SHA-256 heš zapisa unutar datoteke sa digestom. SHA-256 heš novih zapisa se kreira svakog sata. Prilikom kreiranja Traga, selektori događaja će vam omogućiti da naznačite trag za beleženje: Upravljanje, podaci ili događaji uvidi.
Zapisi se čuvaju u S3 kanti. Podrazumevano se koristi enkripcija na strani servera (SSE-S3) tako da će AWS dešifrovati sadržaj za osobe koje imaju pristup, ali radi dodatne bezbednosti možete koristiti SSE sa KMS i svoje ključeve.
Zapisi 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 zapis će imati ime koje prati ovaj format: AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz
Konvencija imenovanja datoteka zapisa
Osim toga, digest fajlovi (za proveru celovitosti datoteka) će biti unutar iste kante u:
Agregiranje Zapisa iz Više Naloga
Kreirajte Trag u AWS nalogu gde želite da se datoteke zapisa isporuče
Primenite dozvole na odredišnoj S3 kanti koje omogućavaju pristup preko naloga za CloudTrail i dozvolite svakom AWS nalogu koji treba pristup
Kreirajte novi Trag u drugim AWS nalozima i izaberite da koristite kreiranu kantu u koraku 1
Međutim, čak i ako možete sačuvati sve zapise u istoj S3 kanti, ne možete agregirati CloudTrail zapise iz više naloga u CloudWatch zapise koji pripadaju jednom AWS nalogu.
Zapamtite da nalog može imati različite Tragove od CloudTrail-a omogućene čuvajući iste (ili različite) zapise u različitim kantama.
Cloudtrail iz svih org naloga u 1
Prilikom kreiranja CloudTrail-a, moguće je naznačiti da se aktivira cloudtrail za sve naloge u organizaciji i da se zapisi dobiju u samo 1 kanti:
Na ovaj način možete lako konfigurisati CloudTrail u svim regionima svih naloga i centralizovati zapise u 1 nalogu (koji biste trebali da zaštitite).
Provera Datoteka Zapisa
Možete proveriti da li su zapisi izmenjeni pokretanjem
Dnevnici u CloudWatch-u
CloudTrail automatski može slati dnevnike u CloudWatch tako da možete postaviti upozorenja koja će vas obavestiti kada se izvrše sumnjive aktivnosti. Imajte na umu da je potrebno kreirati ulogu koja omogućava CloudTrail-u slanje dnevnika u CloudWatch. Preporučuje se korišćenje AWS podrazumevane uloge za obavljanje ovih akcija. Ova uloga će omogućiti CloudTrail-u da:
CreateLogStream: Ovo omogućava kreiranje CloudWatch Logs log tokova
PutLogEvents: Isporučuje CloudTrail dnevnike u CloudWatch Logs log tok
Istorija događaja
CloudTrail Istorija događaja vam omogućava da pregledate u tabeli dnevnike koji su zabeleženi:
Uvidi
CloudTrail Uvidi automatski analiziraju upravljačke događaje pisanja iz CloudTrail tragova i obaveštavaju vas o neobičnoj aktivnosti. Na primer, ako postoji povećanje događaja TerminateInstance
koji se razlikuje od uspostavljenih osnova, videćete ga kao događaj Uvida. Ovi događaji olakšavaju pronalaženje i reagovanje na neobičnu API aktivnost više nego ikad.
Uvidi se čuvaju u istoj kanti kao i CloudTrail dnevnici u: BucketName/AWSLogs/AccountID/CloudTrail-Insight
Bezbednost
Integritet datoteka dnevnika CloudTrail |
|
Zaustaviti neovlašćen pristup |
|
Spriječiti brisanje datoteka dnevnika |
|
Pristupni savetnik
AWS Pristupni savetnik se oslanja na poslednjih 400 dana AWS CloudTrail dnevnika kako bi prikupio svoje uvide. CloudTrail beleži istoriju AWS API poziva i povezane događaje napravljene u AWS nalogu. Pristupni savetnik koristi ove podatke da pokaže kada su usluge poslednji put korišćene. Analizom CloudTrail dnevnika, Pristupni savetnik može odrediti koje AWS usluge je IAM korisnik ili uloga pristupila i kada se taj pristup dogodio. Ovo pomaže AWS administratorima da donesu informisane odluke o usavršavanju dozvola, jer mogu identifikovati usluge koje nisu korišćene tokom dužeg vremenskog perioda i potencijalno smanjiti preširoke dozvole na osnovu stvarnih uzoraka korišćenja.
Stoga, Pristupni savetnik obaveštava o nepotrebnim dozvolama koje su dodeljene korisnicima tako da administrator može da ih ukloni
Akcije
Enumeracija
CSV Injection
Moguće je izvršiti CVS ubacivanje unutar CloudTrail-a koje će izvršiti proizvoljni kod ako se zapisi izvezu u CSV formatu i otvore u Excelu. Sledeći kod će generisati unos zapisa sa lošim imenom Trail-a koje sadrži payload:
Za više informacija o CSV ubacivanjima proverite stranicu:
Za više informacija o ovoj specifičnoj tehnici proverite https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/
Bypass Detekcije
HoneyTokens bypass
Honeytokensi su kreirani da detektuju iznošenje osetljivih informacija. U slučaju AWS-a, to su AWS ključevi čije se korišćenje prati, ako nešto pokrene akciju s tim ključem, onda je neko morao ukrasti taj ključ.
Međutim, Honeytokensi poput onih kreiranih od strane Canarytokens, SpaceCrab, SpaceSiren ili koriste 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 stvaranja bilo kakvog loga u Cloudtrail-u, mogli biste 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
pojavi u imenu uloge ili ID naloga534261010715
se pojavi u poruci o grešci.Testirajući ih nedavno, koriste nalog
717712589309
i još uvek imaju niskucanarytokens.com
u imenu.Ako se
SpaceCrab
pojavi u imenu uloge u poruci o grešciSpaceSiren 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 slučajno generisano, postoji visoka verovatnoća da je u pitanju HoneyToken.
Dobijanje ID naloga iz ID ključa
Možete dobiti ID naloga iz enkodiranog unutar pristupnog ključa kao što je objašnjeno ovde i proveriti ID naloga sa svojom listom AWS naloga za Honeytokens:
Proverite više informacija u originalnom istraživanju.
Ne generišite zapisnik
Najefikasnija tehnika za ovo zapravo je vrlo jednostavna. Samo koristite ključ koji ste upravo pronašli da pristupite nekoj usluzi unutar svog napadačkog naloga. Ovo će naterati CloudTrail da generiše zapisnik unutar VAŠEG VLASTITOG AWS naloga, a ne unutar žrtvinog.
Stvar je u tome da će izlaz pokazati grešku koja ukazuje na ID naloga i naziv naloga tako da ćete moći da vidite da li je to Honeytoken.
AWS usluge bez zapisa
Ranije su postojale neke AWS usluge koje ne šalju zapise CloudTrail-u (pronađite ovde listu). Neke od tih usluga će odgovoriti sa greškom koja sadrži ARN uloge ključa ako neovlašćena osoba (honeytoken ključ) pokuša da joj pristupi.
Na ovaj način, napadač može da dobije ARN ključa bez pokretanja bilo kakvog zapisa. U ARN-u napadač može videti AWS ID naloga i naziv, lako je znati ID i nazive kompanija HoneyToken-a, tako da na ovaj način napadač može identifikovati da li je token HoneyToken.
Imajte na umu da su svi javni API-ji koji su otkriveni da ne stvaraju CloudTrail zapise sada ispravljeni, tako da možda trebate pronaći svoje...
Za više informacija pogledajte originalno istraživanje.
Pristupanje trećoj infrastrukturi
Određene AWS usluge će pokrenuti neku infrastrukturu poput Baza podataka ili Kubernetes klastera (EKS). Korisnik koji direktno komunicira sa tim uslugama (poput Kubernetes API-ja) 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 može generisati token lokalno i komunicirati direktno sa API uslugom bez otkrivanja od strane CloudTrail-a.
Više informacija na:
AWS - EKS Post ExploitationModifikovanje CloudTrail konfiguracije
Brisanje tragova
Zaustavite staze
Onemogući višeregionalno beleženje
Onemogući beleženje pomoću selektora događaja
U prvom primeru, jedan događajni selektor je dat kao JSON niz sa jednim objektom. "ReadWriteType": "ReadOnly"
ukazuje da selektor događaja treba da zabeleži samo događaje samo za čitanje (tako da CloudTrail uvidi neće proveravati događaje za pisanje, na primer).
Možete prilagoditi selektor događaja prema vašim specifičnim zahtevima.
Brisanje zapisa putem S3 lifecycle politike
Modifikovanje konfiguracije kante
Obriši S3 kantu
Promeni politiku kante da odbije sve upise iz CloudTrail servisa
Dodaj politiku životnog ciklusa za S3 kantu da obriše objekte
Onemogući ključ kms koji se koristi za šifrovanje CloudTrail logova
Cloudtrail ransomware
S3 ransomware
Možete generisati asimetrični ključ i naterati CloudTrail da šifruje podatke tim ključem i obrišete privatni ključ tako da se sadržaj CloudTrail-a ne može povratiti. Ovo je u osnovi S3-KMS ransomware objašnjen u:
AWS - S3 Post ExploitationKMS ransomware
Ovo je najlakši način da se izvede prethodni napad sa različitim zahtevima dozvola:
AWS - KMS Post ExploitationReference
Last updated