1. AWS 침투 테스트 정책
01. 침투 테스트 허용/금지 서비스
침투 테스트 허용 서비스
- EC2, NAT Gateway 및 Elastic Load Balancer
- RDS
- CloudFront
- Aurora
- API Gateway
- Lambda 및 Lambda Edge 기능
- Lightsail 리소스
- Elastic Beanstalk 환경
침투 테스트 금지 서비스
- Route 53 Hosted Zones를 통한 DNS zone walking
- 서비스 거부(Dos), 분산 서비스 거부(DDoS)
- 포트 플러딩
- 프로토콜 플러딩
- 요청 플러딩(로그인 요청, API 요청)
02. AWS 침투 테스트 도구 정책
침투 테스트 도구
-> AWS는 다양한 침투 테스트 도구의 존재 및 사용 가능성을 인정
-> 보안 평가를 위한 도구 또는 서비스선택에 제약은 없음
-> 알려진 취약점 버전을 찾기 위한 배너그래빙 및 쿼리 주입은 허용
-> 그러나, 서비스 거부(DoS) 공격 또는 플러딩 공격은 제한
의무
-> 침투 테스트를 위한 도구가 DoS 등 제한을 두는 공격을 수행하지 않는 지 명확하게 확인
-> 진단자 또는 사용하는 도구가 정책 위반 시 AWS 또는 고객에게 책임을 져야함
2. SSRF
01. EC2 SSRF 개요 및 사례
SSRF(Server-Side Request Forgery)
- Server Side에서 이루어지는 요청을 변조해 공격자가 의도한 대로 서버로 요청을 가게 하는 것
공격 사례
-> 2019년, 미국 은행 Capital One(캐피탈 원)에서 1억 600만 명의 고객 개인정보가 해킹
-> AWS EC2 SSRF 공격 사례 - 이름, 주소, 사회보장번호, 생년월일, 연간 소득 등 유출
-> EC2의 metadata에 SSRF 취약점을 이용하여 S3의 권한 획득 및 데이터 유출
대응
-> AWS는 설계된 대로 기능을 했으며, 해킹은 클라우드 서비스 자체 취약점이 아니라
WAF 설정을 잘못했기 때문에 발생한 것으로 결론
-> 추후 AWS는 토큰을 포함하여 metadata를 요청할 수 있도록 옵션 추가
02. EC2 SSRF 시나리오
SSRF를 이용한 AWS EC2 메다테이터 탈취
- 원격 사용자 대신 서버가 명령어를 실행하도록 하여 자신의 요청에 대한 프록시로 취급하도록 함
- 내부망에 위치한 비공개 엔드포인트에 접근 가능
- AWS EC2 VM 만의 메타데이터 서비스(http://169.254.169.254)에 액세스 가능
- 메타데이터 URL은 VM IP주소, AWS 네트워크 내 배치, 호스트명을 HTTP API로 제공하여 클라우드 개발자에게 유용
03. EC2 SSRF 진단방법
SSRF를 이용한 AWS 자격증명 접근
- SSRF와 EC2 metadata 엔드포인트의 액세스 권한을 결합하여 서버가 다음 URL을 요청
- http://169.254.169.254/iam/security-credentials
- http://169.254.169.254/latest/meta-data/iam/security-credentials/ISRM-WAF-Role
-> 인증 정보와 토큰이 응답에 포함
-> AWS CLI에 인증정보 등록 후 계정권한 획득
-> 선언된 IAM 정책만큼 AWS 권한 사용 가능
04. Lambda SSRF 개요 및 시나리오
Lambda Runtime SSRF
-> Lambda 함수가 동작할 때 런타임으로 가상환경에서 컨테이너 구성 후 동작
-> 환경 변수로 IAM 자격 증명과 설정 값이 적용됨
05. Lambda SSRF 진단방법
- file:// 스키마를 통해 접근 시 파일 내용 유출 여부 확인
구 분 | 내 용 |
설 명 | Lambda에 자원 요청을 보내 메타데이터를 읽을 수 있는 취약점 |
판단 기준 | [취약] 내부 자원 접근 시도 시 파일의 내용이 출력 [양호] 내부 자원 접근 시도 시 에러가 반환 |
영 향 | 취약점을 통해 획득한 인증 정보의 권한으로 접근이 불가능한 클라우드 서비스의 악용 가능 |
06. 보안대책
1) EC2 인스턴스 메타데이터 보안 설정
- 비공개 VPC에서 동작 중인 EC2 인스턴스에 대해 공개 IP를 설정하지 않도록 함
- 인스턴스 메타데이터에 접근하는 옵션 비활성화
->"aws ec2 modify-instance-metadata-options -instance-id [id] -http-endpoint disabled"
-인스턴스 메타데이터 서비스 액세스 제한 설정
-> Iptabels를 이용한 제한(169.254.169.254 ip에 대한 접근 제어 설정)
-> PF 또는 IPFW를 사용하여 액세스 제한 Black List 검증
2) 사용자 입력 값 검증
- Whitelist 방식의 Filtering
-> 입력한 데이터에 대해 허용할 List(URL, Scheme)에 속하는 경우에만 처리
-> 지정된 목록에 속하지 않는 경우 에러페이지 응답
- Blacklist 방식의 Filtering
-> 지정된 목록에 속하는 입력값 요청 시 에러페이지 응답
ex) Private IP, Lookback 주소, 불필요한 schema(sftp://, file://), 불필요 특수문자(%0a)
[AWS] Chapter4. 서버&서버리스 진단 - 3
[AWS] Network - ELB(Elastic Load Balancing)