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 inaandika na kufuatilia shughuli ndani ya mazingira yako ya AWS. Inakamata kumbukumbu za matukio za kina, ikiwa ni pamoja na nani alifanya nini, lini, na kutoka wapi, kwa mwingiliano wote na rasilimali za AWS. Hii inatoa njia ya ukaguzi wa mabadiliko na vitendo, kusaidia katika uchambuzi wa usalama, ukaguzi wa kufuata, na kufuatilia mabadiliko ya rasilimali. CloudTrail ni muhimu kwa kuelewa tabia ya mtumiaji na rasilimali, kuboresha hali za usalama, na kuhakikisha kufuata kanuni.
Kila tukio lililosajiliwa lina:
Jina la API iliyotumika: eventName
Huduma iliyotumika: eventSource
Wakati: eventTime
Anwani ya IP: SourceIPAddress
Njia ya wakala: userAgent
. Mifano:
Signing.amazonaws.com - Kutoka AWS Management Console
console.amazonaws.com - Mtumiaji wa root wa akaunti
lambda.amazonaws.com - AWS Lambda
Parameta za ombi: requestParameters
Vipengele vya majibu: responseElements
Matukio yanaandikwa kwenye faili mpya ya kumbukumbu karibu kila dakika 5 katika faili la JSON, yanashikiliwa na CloudTrail na hatimaye, faili za kumbukumbu zinasambazwa kwa S3 karibu dakika 15 baada. Kumbukumbu za CloudTrail zinaweza kuunganishwa kati ya akaunti na kati ya mikoa. CloudTrail inaruhusu kutumia uaminifu wa faili za kumbukumbu ili uweze kuthibitisha kwamba faili zako za kumbukumbu hazijabadilika tangu CloudTrail ilipokuletea. Inaunda hash ya SHA-256 ya kumbukumbu ndani ya faili ya digest. Hash ya sha-256 ya kumbukumbu mpya inaundwa kila saa. Wakati wa kuunda Trail, wachaguzi wa matukio watakuruhusu kuashiria trail ya kuandika: Usimamizi, data au matukio ya maarifa.
Kumbukumbu zinaokolewa katika bakuli la S3. Kwa kawaida, Usimbaji wa Upande wa Server unatumika (SSE-S3) hivyo AWS itachambua yaliyomo kwa watu walio na ufikiaji, lakini kwa usalama wa ziada unaweza kutumia SSE na KMS na funguo zako mwenyewe.
Kumbukumbu zinahifadhiwa katika bakuli la S3 lenye muundo huu wa jina:
BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD
Ikiwa ni jina la Bakuli: aws-cloudtrail-logs-<accountid>-<random>
Mfano: aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/
Ndani ya kila folda, kila kumbukumbu itakuwa na jina linalofuata muundo huu: AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz
Mkataba wa Kutoa Jina la Faili za Kumbukumbu
Zaidi ya hayo, faili za digest (kuangalia uaminifu wa faili) zitakuwa ndani ya bakuli moja katika:
Unda Trail katika akaunti ya AWS ambapo unataka faili za kumbukumbu zipelekwe
Weka ruhusa kwa bakuli la S3 la marudio kuruhusu ufikiaji wa akaunti tofauti kwa CloudTrail na ruhusu kila akaunti ya AWS inayohitaji ufikiaji
Unda Trail mpya katika akaunti nyingine za AWS na chagua kutumia bakuli iliyoundwa katika hatua ya 1
Hata hivyo, hata kama unaweza kuhifadhi kumbukumbu zote katika bakuli moja ya S3, huwezi kuunganisha kumbukumbu za CloudTrail kutoka akaunti nyingi katika Kumbukumbu za CloudWatch zinazomilikiwa na akaunti moja ya AWS.
Kumbuka kwamba akaunti inaweza kuwa na Trail tofauti kutoka CloudTrail iliyowezeshwa ikihifadhi kumbukumbu sawa (au tofauti) katika bakuli tofauti.
Wakati wa kuunda CloudTrail, inawezekana kuashiria kuanzisha cloudtrail kwa akaunti zote katika org na kupata kumbukumbu katika bakuli 1 tu:
Kwa njia hii unaweza kwa urahisi kuunda CloudTrail katika mikoa yote ya akaunti zote na kuunganisha kumbukumbu katika akaunti 1 (ambayo unapaswa kulinda).
Unaweza kuangalia kwamba kumbukumbu hazijabadilishwa kwa kukimbia
CloudTrail inaweza kutuma moja kwa moja logi kwa CloudWatch ili uweze kuweka arifa zinazokujulisha unapofanya shughuli za kushangaza. Kumbuka kwamba ili kuruhusu CloudTrail kutuma logi kwa CloudWatch, jukumu linapaswa kuundwa ambalo linaruhusu kitendo hicho. Ikiwezekana, inapendekezwa kutumia jukumu la AWS la kawaida kufanya vitendo hivi. Jukumu hili litaruhusu CloudTrail:
CreateLogStream: Hii inaruhusu kuunda mtiririko wa logi za CloudWatch
PutLogEvents: Toa logi za CloudTrail kwa mtiririko wa logi za CloudWatch
Historia ya Matukio ya CloudTrail inakuruhusu kukagua katika jedwali logi ambazo zimeandikwa:
CloudTrail Insights moja kwa moja inafanya uchambuzi wa matukio ya usimamizi wa kuandika kutoka kwa CloudTrail trails na inakujulisha kuhusu shughuli zisizo za kawaida. Kwa mfano, ikiwa kuna ongezeko la matukio ya TerminateInstance
ambayo yanatofautiana na viwango vilivyowekwa, utaona kama tukio la Insight. Matukio haya yanafanya kugundua na kujibu shughuli zisizo za kawaida za API kuwa rahisi kuliko hapo awali.
Insights zinahifadhiwa katika ndoo ile ile kama logi za CloudTrail katika: BucketName/AWSLogs/AccountID/CloudTrail-Insight
AWS Access Advisor inategemea siku 400 za mwisho za logi za AWS CloudTrail ili kukusanya maarifa yake. CloudTrail inakamata historia ya wito wa API za AWS na matukio yanayohusiana yaliyofanywa katika akaunti ya AWS. Access Advisor inatumia data hii kuonyesha wakati huduma zilipofikiwa kwa mara ya mwisho. Kwa kuchambua logi za CloudTrail, Access Advisor inaweza kubaini ni huduma zipi za AWS ambazo mtumiaji wa IAM au jukumu limefikiwa na wakati ufikiaji huo ulifanyika. Hii inasaidia wasimamizi wa AWS kufanya maamuzi sahihi kuhusu kuboresha ruhusa, kwani wanaweza kubaini huduma ambazo hazijafikiwa kwa muda mrefu na kwa hivyo kupunguza ruhusa zisizo na mipaka kulingana na mifumo halisi ya matumizi.
Kwa hivyo, Access Advisor inatoa taarifa kuhusu ruhusa zisizo za lazima zinazotolewa kwa watumiaji ili admin aweze kuziondoa
Inawezekana kufanya CVS injection ndani ya CloudTrail ambayo itatekeleza msimbo wowote ikiwa kumbukumbu zitaundwa katika CSV na kufunguliwa na Excel. Msimbo ufuatao utaunda kiingilio cha kumbukumbu chenye jina mbaya la Trail kinachojumuisha payload:
Kwa maelezo zaidi kuhusu CSV Injections angalia ukurasa:
Kwa maelezo zaidi kuhusu mbinu hii maalum angalia https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/
Honeytokens zinaundwa ili kubaini uhamishaji wa taarifa nyeti. Katika kesi ya AWS, ni funguo za AWS ambazo matumizi yake yanakaguliwa, ikiwa kitu kinachochea kitendo na funguo hiyo, basi mtu lazima awe ameiba funguo hiyo.
Hata hivyo, Honeytokens kama zile zinazoundwa na Canarytokens, SpaceCrab, SpaceSiren zinatumia jina la akaunti linalotambulika au kutumia ID ya akaunti ya AWS sawa kwa wateja wao wote. Hivyo basi, ikiwa unaweza kupata jina la akaunti na/au ID ya akaunti bila kufanya Cloudtrail kuunda logi yoyote, unaweza kujua kama funguo ni honeytoken au la.
Pacu ina sheria kadhaa za kubaini kama funguo inamhusu Canarytokens, SpaceCrab, SpaceSiren:
Ikiwa canarytokens.org
inaonekana katika jina la jukumu au ID ya akaunti 534261010715
inaonekana katika ujumbe wa kosa.
Kuziangalia hivi karibuni, wanatumia akaunti 717712589309
na bado ina canarytokens.com
katika jina.
Ikiwa SpaceCrab
inaonekana katika jina la jukumu katika ujumbe wa kosa
SpaceSiren inatumia uuids kuunda majina ya watumiaji: [a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}
Ikiwa jina linaonekana kama lililotengenezwa kwa bahati, kuna uwezekano mkubwa kwamba ni HoneyToken.
Unaweza kupata ID ya Akaunti kutoka kwa encoded ndani ya funguo ya ufikiaji kama ilivyoelezwa hapa na kuangalia ID ya akaunti na orodha yako ya Honeytokens AWS:
Check more information in the orginal research.
Mbinu bora zaidi kwa hili ni rahisi. Tumia tu funguo uliyopata kuingia kwenye huduma ndani ya akaunti yako ya washambuliaji. Hii itafanya CloudTrail kuunda log ndani ya AKAUNTI YAKO YA AWS na si ndani ya wahanga.
Jambo ni kwamba matokeo yataonyesha kosa linaloashiria ID ya akaunti na jina la akaunti hivyo utaweza kuona kama ni Honeytoken.
Katika siku za nyuma kulikuwa na baadhi ya huduma za AWS ambazo hazitumi logs kwa CloudTrail (pata orodha hapa). Baadhi ya huduma hizo zitajibu kwa kosa lililo na ARN ya funguo ikiwa mtu asiyeidhinishwa (funguo ya honeytoken) atajaribu kuingia.
Kwa njia hii, mshambuliaji anaweza kupata ARN ya funguo bila kuanzisha log yoyote. Katika ARN mshambuliaji anaweza kuona AWS account ID na jina, ni rahisi kujua ID na majina ya akaunti za kampuni za HoneyToken, hivyo kwa njia hii mshambuliaji anaweza kubaini kama token ni HoneyToken.
Kumbuka kwamba APIs zote za umma zilizogundulika kutokuwa na CloudTrail logs sasa zimerekebishwa, hivyo labda unahitaji kutafuta zako mwenyewe...
Kwa maelezo zaidi angalia original research.
Huduma fulani za AWS zitaunda miundombinu fulani kama vile Databases au Kubernetes clusters (EKS). Mtumiaji akizungumza moja kwa moja na huduma hizo (kama API ya Kubernetes) hataitumia AWS API, hivyo CloudTrail haitakuwa na uwezo wa kuona mawasiliano haya.
Hivyo, mtumiaji mwenye ufikiaji wa EKS ambaye amegundua URL ya API ya EKS anaweza kuunda token kwa ndani na kuzungumza na huduma ya API moja kwa moja bila kugunduliwa na Cloudtrail.
Maelezo zaidi katika:
Katika mfano wa kwanza, mteule wa tukio mmoja unapatikana kama array ya JSON yenye kitu kimoja. "ReadWriteType": "ReadOnly"
inaonyesha kwamba mteule wa tukio unapaswa kunasa matukio ya kusoma tu (hivyo maarifa ya CloudTrail hayataangalia matukio ya kuandika kwa mfano).
Unaweza kubinafsisha mteule wa tukio kulingana na mahitaji yako maalum.
Futa bucket ya S3
Badilisha sera ya bucket kukataa maandiko yoyote kutoka kwa huduma ya CloudTrail
Ongeza sera ya maisha kwa bucket ya S3 kufuta vitu
Zima funguo za kms zinazotumika kuandika kumbukumbu za CloudTrail
Unaweza kuunda funguo zisizo sawa na kufanya CloudTrail kuandika data kwa funguo hiyo na kufuta funguo ya kibinafsi ili maudhui ya CloudTrail hayawezi kurejeshwa. Hii ni kimsingi S3-KMS ransomware iliyoelezwa katika:
KMS ransomware
Hii ni njia rahisi zaidi ya kutekeleza shambulio la awali na mahitaji tofauti ya ruhusa:
Jifunze & fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze & fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
CloudTrail Log File Integrity
Thibitisha ikiwa logi zimeingiliwa (kubadilishwa au kufutwa)
Tumia faili za digest (unda hash kwa kila faili)
SHA-256 hashing
SHA-256 na RSA kwa saini ya kidijitali
funguo ya faragha inayomilikiwa na Amazon
Inachukua saa 1 kuunda faili ya digest (kufanywa kila saa)
Stop unauthorized access
Tumia sera za IAM na sera za ndoo za S3
timu ya usalama —> ufikiaji wa admin
waakifuatilia —> ufikiaji wa kusoma tu
Tumia SSE-S3/SSE-KMS kuandika logi
Prevent log files from being deleted
Zuia ufikiaji wa kufuta kwa kutumia sera za IAM na ndoo
Sanidi S3 MFA delete
Thibitisha kwa kutumia Uthibitishaji wa Faili za Logi