1. 환경설정
1) Python : 3.6 이상
2) Terraform : 0.14 이상
$ sudo apt-get update
$ sudo apt-get install -y gnupg software-properties-common
$ wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor
$ sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
$ sudo tee /etc/apt/sources.list.d/hashicorp.list
$ sudo apt update
$ wget https://releases.hashicorp.com/terraform/1.4.5/terraform_1.4.5_linux_amd64.zip
$ unzip terraform_1.4.5_linux_amd64.zip
$ sudo mv terraform /usr/local/bin/
3) AWS CLI
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install
4) jq
$ sudo apt-get install jq
5) cloudgoat
$ git clone https://github.com/RhinoSecurityLabs/cloudgoat.git
$ cd cloudgoat
$ pip3 install -r ./core/python/requirements.txt
$ chmod u+x cloudgoat.py
$ ./cloudgoat.py config profile # AWS profile : cloudgoat
$ ./cloudgoat.py config whitelist --auto
6) IAM 사용자 추가
위와 같이 IAM 사용자 추가한 후 보안 자격 증명에서 액세스 키 만들기 (CLI)
$ aws configure --profile cloudgoat
# 위에서 발급받은 Access Key, Secret Access Key 입력
$ ./cloudgoat.py config profile
$ ./cloudgoat.py config whitelist --auto
2. iam_privesc_by_rollback
[시나리오]
- IAM 사용자 "Raynor"은 제한된 권한을 가짐
- 공격자는 "Raynor"의 권한을 분석하고 SetDefaultPolicyVersion 권한을 확인
- 정책 버전 검토 결과 한 버전이 전체 관리 권한을 제공함을 발견
- 전체 관리자 권한을 얻어 Raynor 외의 임의 계정 생성하는 등 악의적 작업 수행 가능
1) iam_priversc_by_rollback 실습 환경 구성
먼저, cloudgoat 폴더에서 iam_priversc_by_rollback을 생성했고, 명령이 잘 실행되면 Apply Complete가 출력된다.
AWS 콘솔 확인해보면 raynor-iam_priversc_by_rollback- 이 잘 생성된 것을 확인할 수 있다.
2) raynor 계정 등록
해당 폴더에서 ls로 조회해보면 관련 config 파일들을 확인할 수 있다.
그 중 start.txt 파일을 확인해보면 raynor의 AWS Key 값을 획득할 수 있다.
위에서 획득한 Key 값을 이용하여 raynor 계정 등록을 진행해주었다.
$ aws iam get-user --profile 계정명
위와 같이 get-user 명령을 사용하여 raynor 계정의 프로파일을 확인할 수 있다.
Arn 정보를 통해 aws의 iam 정책을 사용 중인 것을 알 수 있다.
3) 정책과 버전 확인
$ aws iam list-attached-user-policies --username 사용자명 --profile 계정명
list-attached-user-policies를 통해 raynor 계정의 정책명과 정책Arn을 확인할 수 있다.
$ aws iam list-policy-version --policy-arn 정책arn --profile 계정명
위 명령어를 통해 IAM의 정책 버전을 확인할 수 있다.
5개의 정책 버전 중 v1의 IsDefaultVersion이 true로 취약점이 발견되었다.
4) 취약한 버전 확인
$ aws iam get-policy-version --policy-arn 정책arn --version-id v1 --profile 계정명
get-policy-version 명령으로 v1 정책을 확인해보면 iam:SetDefaultPolicyVersion이 모든 리소스에 대해 허용되어 있는 것을 확인할 수 있다.
IAM JSON 정책은 특정 작업의 허용 또는 거부의 값을 지정하는데, v2의 경우 Deny로 지정되어 있었다.
v5의 경우 Allow로 지정되어 있었고, 즉 모든 리소스에 대한 접근을 허용하고 있다.
5) 공격 수행
$ aws iam set-default-policy-version --policy-arn 정책arn --version-id 버전 --profile 계정명
raynor 계정에서 모든 정책을 허용하고 있는 v5 정책을 사용하기 위해 set-default-policy-version 명령을 수행하여 v5 정책을 지정해준 후
create-user 명령을 이용하여 iamtest라는 계정 생성을 시도했다.
AWS 콘솔에서 확인해보면 위와 같이 iamtest라는 계정이 생성되어 있는 것을 확인할 수 있다.
'CLOUD CLUB > CloudGoat' 카테고리의 다른 글
vulnerable_lambda (0) | 2024.03.21 |
---|---|
lambda_privesc (0) | 2024.03.14 |
CloudGoat (0) | 2024.03.11 |