AWS - Lambda Persistence

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Lambda

Za više informacija pogledajte:

AWS - Lambda Enum

Lambda Layer Persistence

Moguće je introduce/backdoor a layer to execute arbitrary code kada se Lambda izvršava na prikriven način:

AWS - Lambda Layers Persistence

Lambda Extension Persistence

Zloupotrebom Lambda Layers moguće je i zloupotrebiti extensions i persist u Lambda, a takođe i steal i modify requests.

AWS - Abusing Lambda Extensions

Via resource policies

Moguće je dodeliti pristup različitim lambda actions (kao što su invoke ili update code) eksternim nalozima:

Versions, Aliases & Weights

A Lambda can have different versions (with different code each version).
Zatim, možete kreirati different aliases with different versions of the Lambda i postaviti različite weights za svaki.
Na ovaj način napadač može napraviti backdoored version 1 i version 2 with only the legit code i samo izvršavati version 1 u 1% zahteva da bi ostao neprimetan.

Version Backdoor + API Gateway

  1. Kopirajte originalni kod Lambda-e
  2. Create a new version backdooring originalni kod (ili jednostavno ubacite malicious code). Publish i deploy that version na $LATEST
  3. Pozovite API gateway povezan sa Lambda-om da izvršite kod
  4. Create a new version with the original code, Publish i deploy-ujte tu version na $LATEST.
  5. Ovo će sakriti backdoored kod u prethodnoj verziji
  6. Idite na API Gateway i create a new POST method (ili izaberite neki drugi method) koji će izvršiti backdoored verziju Lambda-e: arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1
  7. Obratite pažnju na final :1 u arn-u koji ukazuje na version funkcije (version 1 će u ovom scenariju biti backdoored).
  8. Izaberite kreirani POST method i u Actions izaberite Deploy API
  9. Sada, kada call the function via POST your Backdoor će biti invoked

Cron/Event actuator

Fakt da možete naterati lambda functions run when something happen or when some time pass čini Lambda-ove pogodnim i čestim načinom za obezbeđivanje persistence i izbegavanje detekcije.
Evo nekoliko ideja kako da vaša presence in AWS bude stealth kreiranjem Lambdas.

  • Svaki put kada se kreira novi user, Lambda generiše novi user key i šalje ga napadaču.
  • Svaki put kada se kreira nova role, Lambda daje assume role permissions kompromitovanim korisnicima.
  • Svaki put kada se generišu novi CloudTrail logs, obrišite/izmenite ih

RCE abusing AWS_LAMBDA_EXEC_WRAPPER + Lambda Layers

Iskoristite environment variable AWS_LAMBDA_EXEC_WRAPPER da izvršite wrapper script pod kontrolom napadača pre nego što runtime/handler počne. Dostavite wrapper preko Lambda Layer-a na /opt/bin/htwrap, postavite AWS_LAMBDA_EXEC_WRAPPER=/opt/bin/htwrap, i potom invoke-ujte funkciju. Wrapper se izvršava unutar procesa funkcijskog runtime-a, nasleđuje function execution role, i na kraju exec-uje pravi runtime tako da originalni handler i dalje normalno radi.

AWS - Lambda Exec Wrapper Persistence

AWS - Lambda Function URL Public Exposure

Iskoristite Lambda asynchronous destinations zajedno sa Recursion konfiguracijom da biste naterali funkciju da se kontinuirano ponovo invoke-uje bez eksternog scheduler-a (bez EventBridge, cron, itd.). Po defaultu, Lambda terminira recursive loops, ali podešavanjem recursion config na Allow ponovo omogućavate iste. Destinations isporučuju na nivou servisa za async invokes, tako da jedan seed invoke kreira stealthy, code-free heartbeat/backdoor channel. Opcionalno throttle-ujte sa reserved concurrency da biste držali noise nizak.

AWS - Lambda Async Self Loop Persistence

AWS - Lambda Alias-Scoped Resource Policy Backdoor

Kreirajte skriveni Lambda version sa attacker logic i scope-ujte resource-based policy na tu specifičnu version (ili alias) koristeći --qualifier parametar u lambda add-permission. Dodelite samo lambda:InvokeFunction na arn:aws:lambda:REGION:ACCT:function:FN:VERSION attacker principal-u. Normalna invokacija putem imena funkcije ili primarnog alias-a ostaje nepromenjena, dok napadač može direktno invoke-ovati backdoored version ARN.

Ovo je stealthier nego izlaganje Function URL i ne menja primarni traffic alias.

AWS - Lambda Alias Version Policy Backdoor

Freezing AWS Lambda Runtimes

Napadač koji ima lambda:InvokeFunction, logs:FilterLogEvents, lambda:PutRuntimeManagementConfig, i lambda:GetRuntimeManagementConfig permissions može izmeniti runtime management configuration funkcije. Ovaj napad je posebno efikasan kada je cilj zadržati Lambda funkciju na vulnerable runtime version ili očuvati kompatibilnost sa malicious layers koji možda nisu kompatibilni sa novijim runtime-ovima.

Napadač menja runtime management configuration da bi pin-ovao runtime version:

# Invoke the function to generate runtime logs
aws lambda invoke \
--function-name $TARGET_FN \
--payload '{}' \
--region us-east-1 /tmp/ping.json

sleep 5

# Freeze automatic runtime updates on function update
aws lambda put-runtime-management-config \
--function-name $TARGET_FN \
--update-runtime-on FunctionUpdate \
--region us-east-1

Proverite primenjenu konfiguraciju:

aws lambda get-runtime-management-config \
--function-name $TARGET_FN \
--region us-east-1

Opcionalno: zaključajte na određenu verziju runtime-a

# Extract Runtime Version ARN from INIT_START logs
RUNTIME_ARN=$(aws logs filter-log-events \
--log-group-name /aws/lambda/$TARGET_FN \
--filter-pattern "INIT_START" \
--query 'events[0].message' \
--output text | grep -o 'Runtime Version ARN: [^,]*' | cut -d' ' -f4)

Ograničite na određenu verziju runtime-a:

aws lambda put-runtime-management-config \
--function-name $TARGET_FN \
--update-runtime-on Manual \
--runtime-version-arn $RUNTIME_ARN \
--region us-east-1

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks