AWS - Lambda Персистентність
Reading time: 6 minutes
tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
Lambda
Для додаткової інформації див.:
Персистентність Lambda Layer
Можна впровадити/backdoor layer для виконання довільного коду під час виконання Lambda у прихований спосіб:
AWS - Lambda Layers Persistence
Персистентність Lambda Extension
Зловживаючи Lambda Layers, також можна зловживати extensions для персистенції в Lambda, а також викрадення й модифікації запитів.
AWS - Abusing Lambda Extensions
Через resource policies
Можна надати доступ до різних дій Lambda (наприклад invoke або update code) зовнішнім акаунтам:
.png)
Версії, Aliases & Ваги
Lambda може мати різні версії (кожна версія з різним кодом).
Потім ви можете створити різні aliases, що вказують на різні версії Lambda і призначити різні weights для кожного.
Таким чином атакуючий може створити backdoored версію 1 і версію 2 лише з легітимним кодом, і виконувати версію 1 лише в 1% запитів, щоб залишатися непомітним.
.png)
Version Backdoor + API Gateway
- Copy the original code of the Lambda
- Create a new version backdooring the original code (or just with malicious code). Publish and deploy that version to $LATEST
- Call the API gateway related to the lambda to execute the code
- Create a new version with the original code, Publish and deploy that version to $LATEST.
- This will hide the backdoored code in a previous version
- Go to the API Gateway and create a new POST method (or choose any other method) that will execute the backdoored version of the lambda:
arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1 - Note the final :1 of the arn indicating the version of the function (version 1 will be the backdoored one in this scenario).
- Select the POST method created and in Actions select
Deploy API - Now, when you call the function via POST your Backdoor will be invoked
Cron/Event actuator
Факт того, що ви можете змусити Lambda functions запускатися при певних подіях або через певний інтервал часу, робить Lambda популярним способом для отримання персистентності і уникнення виявлення.
Ось кілька ідей, щоб зробити вашу присутність в AWS більш непомітною шляхом створення Lambdas.
- Кожного разу при створенні нового користувача Lambda генерує новий user key і надсилає його атакуючому.
- Кожного разу при створенні нової ролі Lambda надає права assume role скомпрометованим користувачам.
- Кожного разу при створенні нових CloudTrail логів — видаляти/змінювати їх
RCE abusing AWS_LAMBDA_EXEC_WRAPPER + Lambda Layers
Зловживайте змінною середовища AWS_LAMBDA_EXEC_WRAPPER, щоб виконати скрипт-обгортку, контрольований атакуючим, перед стартом runtime/handler. Доставте обгортку через Lambda Layer у /opt/bin/htwrap, встановіть AWS_LAMBDA_EXEC_WRAPPER=/opt/bin/htwrap, а потім викличте функцію. Обгортка запускається всередині процесу runtime функції, успадковує роль виконання функції і нарешті exec-ує реальний runtime, тому оригінальний handler все ще виконується нормально.
AWS - Lambda Exec Wrapper Persistence
AWS - Lambda Function URL: публічний доступ
Зловживайте асинхронними destinations Lambda разом з конфігурацією Recursion, щоб змусити функцію постійно перевикликати саму себе без зовнішнього планувальника (без EventBridge, cron тощо). За замовчуванням Lambda припиняє рекурсивні цикли, але встановлення recursion config в Allow знову їх дозволяє. Destinations доставляють на стороні сервісу для async invokes, тож один seed invoke створює прихований, безкодовий heartbeat/backdoor канал. Опційно обмежте через reserved concurrency, щоб знизити шум.
AWS - Lambda Async Self Loop Persistence
AWS - Lambda Alias-Scoped Resource Policy Backdoor
Створіть приховану версію Lambda з логікою атакуючого і застосуйте resource-based policy до цієї конкретної версії (або alias) за допомогою параметра --qualifier в lambda add-permission. Наділіть лише lambda:InvokeFunction на arn:aws:lambda:REGION:ACCT:function:FN:VERSION для принципалу атакуючого. Звичайні виклики через ім'я функції або головний alias залишаються без змін, тоді як атакуючий може безпосередньо викликати backdoored версію за ARN.
Це більш приховано, ніж відкривати Function URL, і не змінює основний alias трафіку.
AWS - Lambda Alias Version Policy Backdoor
Заморожування AWS Lambda Runtimes
Атакуючий, який має дозволи lambda:InvokeFunction, logs:FilterLogEvents, lambda:PutRuntimeManagementConfig та lambda:GetRuntimeManagementConfig, може змінити конфігурацію runtime management функції. Ця атака особливо ефективна, коли метою є утримати Lambda функцію на вразливій версії runtime або зберегти сумісність зі шкідливими layers, які можуть бути несумісні з новішими runtimes.
Атакуючий змінює конфігурацію runtime management, щоб зафіксувати версію 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
Перевірте застосовану конфігурацію:
aws lambda get-runtime-management-config \
--function-name $TARGET_FN \
--region us-east-1
Необов'язково: зафіксувати конкретну версію 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)
Прив'язати до конкретної версії runtime:
aws lambda put-runtime-management-config \
--function-name $TARGET_FN \
--update-runtime-on Manual \
--runtime-version-arn $RUNTIME_ARN \
--region us-east-1
tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
HackTricks Cloud