AWS - CloudTrail Enum

Support HackTricks

CloudTrail

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 mkao wa usalama, na kuhakikisha kufuata kanuni.

Kila tukio lililosajiliwa lina:

  • Jina la API iliyotumika: eventName

  • Huduma iliyotumika: eventSource

  • Wakati: eventTime

  • Anuani 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 takriban kila dakika 5 katika faili la JSON, yanashikiliwa na CloudTrail na hatimaye, faili za kumbukumbu zinasambazwa kwa S3 takriban 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, wachaguaji 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 zinawekwa katika bakuli la S3 lenye muundo huu wa jina:

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

  • 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:

Unganisha Kumbukumbu kutoka Akaunti Mbalimbali

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

  • Weka ruhusa kwa bakuli la S3 la marudio linaloruhusu 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 Trails tofauti kutoka CloudTrail zilizowekwa zikihifadhi kumbukumbu sawa (au tofauti) katika bakuli tofauti.

Cloudtrail kutoka akaunti zote za shirika hadi 1

Wakati wa kuunda CloudTrail, inawezekana kuashiria kuanzisha cloudtrail kwa akaunti zote katika shirika na kupata kumbukumbu katika bakuli moja tu:

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

Kuangalia 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]

Logs to CloudWatch

CloudTrail inaweza kutuma moja kwa moja logi kwa CloudWatch ili uweze kuweka arifa zinazokujulisha unapofanya shughuli za kutatanisha. 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

Event History

Historia ya Matukio ya CloudTrail inakuruhusu kukagua katika jedwali logi ambazo zimeandikwa:

Insights

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

Security

Access Advisor

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

Actions

Enumeration

# 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>

CSV Injection

Inawezekana kufanya CVS injection ndani ya CloudTrail ambayo itatekeleza msimbo wowote ikiwa logi zinasafirishwa kwa CSV na kufunguliwa na Excel. Msimbo ufuatao utaunda kiingilio cha logi chenye jina mbaya la Trail kinachojumuisha payload:

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

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/

Kupita Ugunduzi

HoneyTokens kupita

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 amepora 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, 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.

Pata ID ya akaunti kutoka kwa Key ID

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:

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")))

Check more information in the orginal research.

Usizalishwe log

Mbinu bora zaidi kwa hili ni rahisi. Tumia tu funguo uliyopata kuingia kwenye huduma fulani 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.

Huduma za AWS bila logs

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 log za CloudTrail sasa zimerekebishwa, hivyo labda unahitaji kutafuta zako mwenyewe...

Kwa maelezo zaidi angalia original research.

Kufikia Miundombinu ya Tatu

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:

Kubadilisha Mipangilio ya CloudTrail

Futa trails

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

Stop trails

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

Zima ufuatiliaji wa mikoa mingi

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

Zima Kurekodi kwa Wateule wa 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, mchaguzi wa tukio mmoja unapatikana kama array ya JSON yenye kitu kimoja. "ReadWriteType": "ReadOnly" inaonyesha kwamba mchaguzi wa tukio unapaswa kunasa matukio ya kusoma tu (hivyo maarifa ya CloudTrail hayataangalia matukio ya kuandika kwa mfano).

Unaweza kubinafsisha mchaguzi wa 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 Mipangilio ya Bucket

  • Futa S3 bucket

  • Badilisha sera ya bucket kukataa maandiko yoyote kutoka kwa huduma ya CloudTrail

  • Ongeza sera ya mzunguko kwa S3 bucket kufuta vitu

  • Zima ufunguo wa kms unaotumika kuandika kumbukumbu za CloudTrail

Cloudtrail ransomware

S3 ransomware

Unaweza kuunda ufunguo wa asimetriki na kufanya CloudTrail kuandika data kwa ufunguo huo na kufuta ufunguo wa 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:

Marejeo

Support HackTricks

Last updated