[Education]/[AWS] Cloud Hacking

[AWS] Chapter7. 클라우드 취약점 진단 심화

starterr 2024. 5. 25. 23:59
반응형

1. 클라우드 인증 정보


01. AWS 자격증명
IAM
- AWS 리소스에 대한 액세스를 제어할 수 있는 서비스
- 인증 및 권한 부여된 대상을 제어

액세스 키(Access Key)
- IAM 사용자, Root 사용자에 대한 자격 증명
- CLI 또는 API에 대한 요청 및 서명
- 액세스 키 ID(AWS_ACCESS_KEY)와 보안 액세스 키(AWS_SECRET_KEY)로 구성

IAM 임시 보안 자격 증명(SESSION TOKEN)
- STS(Security Token Service)
- 리소스에 대한 액세스를 제어할 수 있는 임시 보안 자격 증명
- 지정 기간 후에 만료됨

IAM - Access Key
- Access key는 사용자 별 최대 2개
- 발급 시에만 Secret 키 쌍 제공
- 사용하지 않는 key는 비활성화, 삭제
- Key 분실 시 복구 불가, 제거 후 재발급

IAM - Access Key
IAM - Access Key

 


02. 인증 정보 획득 경로

 

다음 진단 항목 및 경로를 통해 인증정보 획득 가능
AWS 특화 진단 항목
- Lambda(SSRF)
- Lambda(운영체제 명령 실행)
- Lambda(XXE)
- S3: 불필요한 Public 설정

AWS 인증정보 노출 경로
- 화면 노출(스크린 샷)
- 코드 형상관리(GitHub, CodeCommit)
- AWS 에러 메시지(access denied 포함)
- 공용 EBS 스냅샷(EC2 -> Snapshots -> Public Snapshots)
- 공용 AMI(EC2 -> AMIs -> Public Images)
- RDS 공용 스냅샷(RDS -> Snapshots -> All Public Snapshots)
- 사용자의 일반적인 실수(하드코딩된 중요정보 노출, 인터넷상 문의글 작성 시 노출)

반응형


2. 진단도구 소개


01. 진단 도구
클라우드 진단을 위해 필요한 도구 소개
- 웹, 네트워크 진단도구
-> 스캐너 : AppScan, Nmap, Netcat...
-> 프록시 : Burp Suite, Fiddler, Paros ...
-> 네트워크 : Wireshark, Telnet, SSH ...
-> 스크립트 언어 : Python, Shell Script ...

AWS CLI(명령줄 인터페이스)
- AWS에서 공식 제공하는 AWS 서비스를 관리하는 통합 도구
- 명령줄에서 ㅈ어하고 스크립트를 통해 자동화
- AWS 관리 페이지에서 제공하는 것과 동일한 기능 명령 실행

기존 웹 취약성 진단 도구 + AWS 특화 진단 도구

 

02. AWS CLI 설치
CLI version 1 vs 2
- version 1.x : 초기 AWS 호환성을 위해 유지된 CLI 도구
- version 2.x : 현재 버전, 하위 버전에 대해 일부 호환성 제공(권장)
- 복수설치 시 선행 등록된 환경변수 버전으로 동작

AWS CLI 설치 (예시)
AWS CLI 설치

 

 

03. AWS CLI 사용방법

Cli 설정 및 설정파일
Cli 설정 및 설정파일


04. 실습

CLI 이용한 EC2 인스턴스 조회
CLI 이용한 EC2 인스턴스 조회

반응형



3. IAM 권한 상승


01 개요
IAM
- 선행조건 : AWS 인증정보 필요, IAM 권한 필요
- AWS 인증정보를 이용하여 AWS 계정 ID와 IAM username 획득 가능
-> aws sts get-caller-identity --profile [alias]

IAM 예시
IAM 예시


- IAM user가 가지고 있는 권한 조회
-> aws iam list-user-policies --user-name [IAM username] --profile [alisas]

IAM user가 가지고 있는 권한 조회
IAM user가 가지고 있는 권한 조회


IAM: list-attached-*
- list-user-policies
-> user(사용자)에 직접 선언된 정책
- list-attached-role-policies
-> role(역할)에 의해 간접 선언된 정책
- list-attached-group-policies
-> group(그룹)에 의해 간접 선언된 정책

IAM: list-attached-*
IAM: list-attached-*



02. 취약성 발생 원리 1

취약성 발생 원리
취약성 발생 원리

권한 설정 미흡
- 사용자 권한에 S3 ReadOnlyAccess 권한 설정
- 그룹 권한에 S3 FullAccess 권한 설정
- 상위 권한인 S3 FullAccess로 계정 권한 동작


03. 취약성 발생 원리 2
IAM 정책 버전 관리
- AWS에서 관리형 정책을 변경할 때, 변경된 정책은 기존 정책을 덮어쓰지 않음
- 변경 시, 정책의 새 버전을 생성

취약성 발생 원리
취약성 발생 원리

- 공격자는 관리형 정책의 버전을 변경하여 권한 상승
- 정책의 기본 버전(Default version)을 설정할 수 있는 권한
-> iam:SetDefaultPolicyVersion
-> iam:CreatePolicyVersion
-> iam:*

취약성 발생 원리
취약성 발생 원리

IAM 정책 버전 관리
- 최초 권한 생성 시 단일 권한으로 동작
- 둘 이상일 경우 기본 권한 선택 필요
- 버전은 최대 5개까지 유지

기본 정책 버전 변경
- 해당하는 버전의 권한으로 변경
- (예시) v4. S3 관련 일부 권한 허용
- (예시) v3. AWS 전체 권한 허용
- (예시) v3.으로 변경하여 권한 상승

IAM 정책 버전 관리
IAM 정책 버전 관리


05. 보안대책
대응 방안
- 과도 부여된 정책 버전 삭제
- 정책의 기본 버전을 설정할 수 있는 권한 제거

보안대책
보안대책
보안대책
보안대책




4. 부적절한 API 호출 권한 설정


01 개요
부적절한 API 호출 권한 설정

부적절한 API 호출 권한 설정
부적절한 API 호출 권한 설정


- 다양한 API 호출 경로 존재
-> Lambda, EC2, AWS 서비스, 클라우드 외부 등
- 사용자 검증 및 액세스 제어, 모니터링, 버전관리 지원
- 각 서비스는 IAM 권한이 할당되어 있으며 권한 설정 미흡으로 인한 취약성 발생
- 민감 정보가 응답 값으로 반환될 수 있는 API가 존재

API Gateway 접근 제어
- 권한 부여자(Authorization)
-> Lambda 함수를 사용하여 API 메서드에 대한 액세스를 제어
-> Oauth 또는 SAML과 같은 토큰 인증자 사용 가능
-> 호출자의 자격 증명을 확인하는 사용자 지정 인증 체계 구현

- API 키 검증(API Key Required)
-> API 요청 시마다 API Key 검증
-> 요청 헤더에 X-API-Key 값으로 API 키 전달

API 키 검증(API Key Required)
API 키 검증(API Key Required)


02. 시나리오
부적절한 API 호출 권한 설정 취약성
- 권한부여자의 IAM 권한 설정 미흡 + AWS SDK를 통한 내부 API 호출 가능
-> 민감 정보 유출 취약성 발생 가능
-> 자원 정책 설정 미흡으로 AWS 계정을 가진 사용자의 권한으로 API 호출 가능

부적절한 API 호출 권한 설정 취약성
부적절한 API 호출 권한 설정 취약성

 

- 아키텍처 구성에 따라 취약성 발생 시나리오 다양


-> S3 파일 업로드 Lambda 함수에서 파일 목록 노출 취약성 발생
-> EC2 포함된 인증 정보 이용하여 백업 볼륨 생성 및 공격자의 인스턴스에 로드
-> AWS CodeCommit에 포함된 인증 정보 이용하여 DB 접속 정보 및 데이터 유출

 

반응형


04. 보안대책


API 호출 시 권한 검증
- API Gateway - Resources - Method - Settings
-> Authorization : AWS IAM 또는 인증자 설정
-> API Key Requred : true

API 호출 시 권한 검증
API 호출 시 권한 검증

 

IAM 권한 설정
- IAM 권한 설정
-> 접근 가능한 기능과 리소스 정의
-> 서비스에 할당된 IAM 역할 관리 정책 관리
ex) S3 업로드 작업을 하는 Lambda함수의 경우 ARN을 통해 해당 버킷만 접근 권한 지정
- 권한 설정 시, 호출자(리소스) 기반 정책, 역할 기반 정책에서의 권한 충돌 주의
-> 최소 권한 액세스 구현
-> 로깅 구현

 

[AWS] Network - ELB(Elastic Load Balancing)

 

[AWS] Network - ELB(Elastic Load Balancing)

A. 고가용성VPC 내 단일 서버를 통한 서비스 구성하여 사용자가 접근하는 환경에서 단일 서버가 장애가 발생 되면 서비스를 받을 수 없습니다.지속적인 서비스 제공을 위해 서버를 다중화 구성하

infoofit.tistory.com

 

[AWS] AWS 인프라 개요

 

[AWS] AWS 인프라 개요

A. AWS 글로벌 인프라 AWS 글로벌 인프라는 리전(엣지), 가용 영역, 데이터 센터로 이루어져 있습니다. 각각의 리전은 이중화된 100GbE 케이블로 연결되어 있으며 암호화되어 전달되고 있습니다. 1.

infoofit.tistory.com

 

반응형