AWS Pentesting
기본 정보
AWS 환경에서 펜테스팅을 시작하기 전에, AWS가 어떻게 작동하는지에 대한 몇 가지 기본 사항을 알아야 합니다. 이는 잘못된 구성 요소를 찾고 이를 악용하는 방법을 이해하는 데 도움이 됩니다.
조직 계층 구조, IAM 및 기타 기본 개념과 같은 개념은 다음에서 설명됩니다:
AWS - Basic Information학습을 위한 실습
공격 시뮬레이션 도구:
AWS 펜테스터/레드 팀 방법론
AWS 환경을 감사하려면 어떤 서비스가 사용되고 있는지, 무엇이 노출되고 있는지, 누가 무엇에 접근할 수 있는지, 내부 AWS 서비스와 외부 서비스가 어떻게 연결되어 있는지를 아는 것이 매우 중요합니다.
레드 팀 관점에서 AWS 환경을 손상시키는 첫 번째 단계는 자격 증명을 얻는 것입니다. 다음은 그 방법에 대한 몇 가지 아이디어입니다:
github (또는 유사한 곳)에서의 유출 - OSINT
사회 공학
비밀번호 재사용 (비밀번호 유출)
AWS에 호스팅된 애플리케이션의 취약점
메타데이터 엔드포인트에 접근할 수 있는 서버 사이드 요청 위조
로컬 파일 읽기
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
3자 침해
내부 직원
Cognito 자격 증명
또는 노출된 인증되지 않은 서비스를 손상시켜서:
AWS - Unauthenticated Enum & Access또는 리뷰를 수행하는 경우 다음 역할로 자격 증명을 요청할 수 있습니다:
AWS - Permissions for a Pentest자격 증명을 얻은 후에는 그 자격 증명이 누구의 것인지와 그들이 무엇에 접근할 수 있는지를 알아야 하므로 기본적인 열거 작업을 수행해야 합니다:
기본 열거
SSRF
AWS 내부의 머신에서 SSRF를 발견한 경우 이 페이지에서 트릭을 확인하세요:
Whoami
가장 먼저 알아야 할 것 중 하나는 자신이 누구인지 (어떤 계정에 있는지 및 AWS 환경에 대한 기타 정보)입니다:
회사가 canary tokens을 사용하여 토큰이 도난당하고 사용되는지 식별할 수 있다는 점에 유의하십시오. 토큰을 사용하기 전에 canary token인지 아닌지 확인하는 것이 좋습니다. 자세한 정보는 이 페이지를 참조하십시오.
Org Enumeration
AWS - Organizations EnumIAM Enumeration
충분한 권한이 있다면 AWS 계정 내 각 엔터티의 권한을 확인하는 것이 당신과 다른 아이덴티티가 무엇을 할 수 있는지 이해하고 권한을 상승시키는 데 도움이 됩니다.
IAM을 열거할 충분한 권한이 없다면, bruteforce를 통해 탈취하여 알아낼 수 있습니다. 열거 및 brute-forcing 방법은 다음을 참조하십시오:
AWS - IAM, Identity Center & SSO Enum이제 자격 증명에 대한 정보를 얻었으므로 (그리고 레드 팀이라면 탐지되지 않았기를 바랍니다). 환경에서 사용 중인 서비스를 파악할 시간입니다. 다음 섹션에서는 일반적인 서비스를 열거하는 몇 가지 방법을 확인할 수 있습니다.
Services Enumeration, Post-Exploitation & Persistence
AWS에는 놀라운 양의 서비스가 있으며, 다음 페이지에서 기본 정보, 열거 치트 시트**,** 탐지를 피하는 방법, 지속성을 얻는 방법 및 기타 포스트 익스플로잇 트릭에 대한 정보를 찾을 수 있습니다:
AWS - Services모든 작업을 수동으로 수행할 필요는 없다는 점에 유의하십시오. 이 게시물 아래에서 자동화 도구에 대한 섹션을 찾을 수 있습니다.
또한, 이 단계에서 인증되지 않은 사용자에게 노출된 더 많은 서비스를 발견했을 수 있으며, 이를 악용할 수 있습니다:
AWS - Unauthenticated Enum & AccessPrivilege Escalation
적어도 자신의 권한을 확인할 수 있다면 다양한 리소스에 대해 추가 권한을 얻을 수 있는지 확인할 수 있습니다. 다음에 표시된 권한에 최소한 집중해야 합니다:
AWS - Privilege EscalationPublicly Exposed Services
AWS 서비스를 열거하는 동안 인터넷에 요소를 노출하는 일부 서비스를 발견했을 수 있습니다 (VM/컨테이너 포트, 데이터베이스 또는 큐 서비스, 스냅샷 또는 버킷 등). 펜테스터/레드 팀원으로서 민감한 정보/취약점을 찾을 수 있는지 항상 확인해야 하며, 이는 AWS 계정에 대한 추가 접근을 제공할 수 있습니다.
이 책에서는 노출된 AWS 서비스를 찾는 방법과 이를 확인하는 방법에 대한 정보를 찾을 수 있습니다. 노출된 네트워크 서비스의 취약점을 찾는 방법에 대해서는 다음에서 특정 서비스를 검색하는 것을 권장합니다:
Compromising the Organization
From the root/management account
관리 계정이 조직에서 새 계정을 생성할 때, 새 계정에 새 역할이 생성되며, 기본적으로 **OrganizationAccountAccessRole
**이라는 이름이 지정되고 관리 계정이 새 계정에 접근할 수 있도록 AdministratorAccess 정책이 부여됩니다.
따라서 하위 계정에 관리자 권한으로 접근하려면 다음이 필요합니다:
관리 계정을 탈취하고 하위 계정의 ID와 역할 이름(기본적으로 OrganizationAccountAccessRole)을 찾아 관리 계정이 관리자 권한으로 접근할 수 있도록 합니다.
하위 계정을 찾으려면 aws 콘솔의 조직 섹션으로 이동하거나
aws organizations list-accounts
를 실행하십시오.역할 이름을 직접 찾을 수 없으므로 모든 사용자 정의 IAM 정책을 확인하고 이전에 발견된 하위 계정에 대해
sts:AssumeRole
을 허용하는지 검색하십시오.관리 계정에서 하위 계정의 역할에 대해
sts:AssumeRole
권한을 가진 주체를 탈취하십시오 (계정이 관리 계정의 누구에게나 가장할 수 있도록 허용하더라도, 외부 계정이므로 특정sts:AssumeRole
권한이 필요합니다).
Automated Tools
Recon
aws-recon: Ruby로 작성된 멀티스레드 AWS 보안 중심 인벤토리 수집 도구.
cloudlist: Cloudlist는 클라우드 제공업체로부터 자산(호스트 이름, IP 주소)을 가져오는 멀티 클라우드 도구입니다.
cloudmapper: CloudMapper는 Amazon Web Services (AWS) 환경을 분석하는 데 도움을 줍니다. 이제 보안 문제에 대한 감사 기능을 포함하여 훨씬 더 많은 기능을 포함하고 있습니다.
cartography: Cartography는 Neo4j 데이터베이스로 구동되는 직관적인 그래프 뷰에서 인프라 자산과 그들 간의 관계를 통합하는 Python 도구입니다.
starbase: Starbase는 클라우드 인프라, SaaS 애플리케이션, 보안 제어 등을 포함한 서비스와 시스템에서 자산과 관계를 수집하여 Neo4j 데이터베이스로 지원되는 직관적인 그래프 뷰로 제공합니다.
aws-inventory: (python2 사용) 이 도구는 계정에 생성된 모든 AWS 리소스를 발견하려고 합니다.
aws_public_ips: AWS 계정과 연관된 모든 공용 IP 주소(IPv4/IPv6)를 가져오는 도구입니다.
Privesc & Exploiting
SkyArk: 스캔된 AWS 환경에서 가장 권한이 높은 사용자, 포함하여 AWS Shadow Admins를 발견합니다. powershell을 사용합니다. 권한 있는 정책의 정의는 https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1에서
Check-PrivilegedPolicy
함수에서 찾을 수 있습니다.pacu: Pacu는 클라우드 환경에 대한 공격적 보안 테스트를 위해 설계된 오픈 소스 AWS exploitation framework입니다. 열거, 잘못된 구성을 찾아 악용할 수 있습니다. 권한 있는 권한의 정의는 https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134에서
user_escalation_methods
dict 안에서 찾을 수 있습니다.pacu는 자신의 privescs 경로만 확인한다는 점에 유의하세요 (계정 전체가 아님).
PMapper: Principal Mapper (PMapper)는 AWS 계정 또는 AWS 조직의 AWS Identity and Access Management (IAM) 구성에서 위험을 식별하기 위한 스크립트 및 라이브러리입니다. 계정 내의 다양한 IAM 사용자와 역할을 방향성 그래프로 모델링하여 privilege escalation 및 공격자가 AWS에서 리소스나 작업에 접근하기 위해 사용할 수 있는 대체 경로를 확인할 수 있습니다. permissions used to find privesc 경로를 확인하려면 https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing에서
_edges.py
로 끝나는 파일명을 확인할 수 있습니다.
cloudsplaining: Cloudsplaining은 최소 권한 위반을 식별하고 위험 우선 HTML 보고서를 생성하는 AWS IAM 보안 평가 도구입니다. 이 도구는 잠재적으로 과도한 권한을 가진 고객, 인라인 및 aws 정책과 해당 정책에 접근할 수 있는 주체를 보여줍니다. (privesc뿐만 아니라 다른 종류의 흥미로운 권한도 확인하므로 사용을 권장합니다).
cloudjack: CloudJack은 분리된 Route53 및 CloudFront 구성으로 인해 발생하는 서브도메인 하이재킹 취약성에 대해 AWS 계정을 평가합니다.
ccat: ECR 레포 목록 -> ECR 레포 풀 -> 백도어 설치 -> 백도어 이미지 푸시
Dufflebag: Dufflebag은 비밀이 실수로 남겨졌을 수 있는 공개 Elastic Block Storage (EBS) 스냅샷을 검색하는 도구입니다.
Audit
cloudsploit: CloudSploit by Aqua는 Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI), GitHub 계정의 클라우드 인프라 보안 위험을 감지할 수 있도록 설계된 오픈 소스 프로젝트입니다 (ShadowAdmins는 검색하지 않습니다).
Prowler: Prowler는 AWS 보안 모범 사례 평가, 감사, incident response, 지속적인 모니터링, hardening 및 forensics readiness를 수행하는 오픈 소스 보안 도구입니다.
CloudFox: CloudFox는 익숙하지 않은 클라우드 환경에서 상황 인식을 돕습니다. 이는 클라우드 인프라에서 악용 가능한 공격 경로를 찾기 위해 침투 테스터 및 기타 공격 보안 전문가를 돕기 위해 만들어진 오픈 소스 명령줄 도구입니다.
ScoutSuite: Scout Suite는 클라우드 환경의 보안 상태 평가를 가능하게 하는 오픈 소스 멀티 클라우드 보안 감사 도구입니다.
cs-suite: Cloud Security Suite (uses python2.7 and looks unmaintained)
Zeus: Zeus is a powerful tool for AWS EC2 / S3 / CloudTrail / CloudWatch / KMS best hardening practices (looks unmaintained). It checks only default configured creds inside the system.
Constant Audit
cloud-custodian: Cloud Custodian은 퍼블릭 클라우드 계정 및 리소스를 관리하기 위한 규칙 엔진입니다. 사용자가 안전하고 비용 최적화된 클라우드 인프라를 가능하게 하는 정책을 정의할 수 있게 합니다. 조직의 많은 임시 스크립트를 통합하여 통합된 메트릭 및 보고 기능을 갖춘 가볍고 유연한 도구로 만듭니다.
pacbot**: Policy as Code Bot (PacBot)**은 클라우드에 대한 지속적인 컴플라이언스 모니터링, 컴플라이언스 보고 및 보안 자동화를 위한 플랫폼입니다. PacBot에서는 보안 및 컴플라이언스 정책이 코드로 구현됩니다. PacBot이 발견한 모든 리소스는 이러한 정책에 따라 평가되어 정책 준수 여부를 측정합니다. PacBot auto-fix 프레임워크는 정책 위반에 대해 사전 정의된 조치를 취하여 자동으로 대응할 수 있는 기능을 제공합니다.
streamalert: StreamAlert는 서버리스, 실시간 데이터 분석 프레임워크로, 정의한 데이터 소스 및 경고 로직을 사용하여 모든 환경에서 데이터를 수집, 분석 및 경고할 수 있게 합니다. 컴퓨터 보안 팀은 StreamAlert를 사용하여 매일 수 테라바이트의 로그 데이터를 스캔하여 사건 감지 및 대응을 수행합니다.
DEBUG: Capture AWS cli requests
참고 자료
Last updated