AWS Pentesting
기본 정보
AWS 환경을 펜테스팅하기 전에 AWS가 작동하는 방식에 대해 알아야 할 몇 가지 기본 사항이 있습니다. 이를 통해 무엇을 해야 하는지, 구성 오류를 어떻게 찾아내고 어떻게 악용해야 하는지 이해하는 데 도움이 됩니다.
조직 계층 구조, IAM 및 기타 기본 개념과 같은 개념은 다음에서 설명됩니다:
pageAWS - Basic Information학습을 위한 랩
공격을 시뮬레이션하기 위한 도구:
AWS 펜테스터/레드팀 방법론
AWS 환경을 감사하기 위해서는 사용 중인 서비스, 노출된 것, 누가 무엇에 액세스하는지, 내부 AWS 서비스와 외부 서비스가 어떻게 연결되어 있는지를 알아야 합니다.
레드팀 관점에서 AWS 환경을 침해하는 첫 번째 단계는 일부 자격 증명을 획들하는 것입니다. 다음은 그것을 하는 몇 가지 아이디어입니다:
깃허브(또는 유사한 곳)에서의 누설 - OSINT
사회 공학
비밀번호 재사용 (비밀번호 누설)
AWS-호스팅 애플리케이션의 취약점
서버 측 요청 위조(SSRF)와 메타데이터 엔드포인트 액세스
로컬 파일 읽기
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
3rd 파티 침해
내부 직원
Cognito 자격 증명
또는 미인증 서비스를 침해함으로써 노출된 서비스를 침해할 수 있습니다:
pageAWS - Unauthenticated Enum & Access또는 검토 중이라면 다음 역할을 가진 자격 증명을 요청할 수 있습니다:
pageAWS - Permissions for a Pentest자격 증명을 획득한 후에는 해당 자격 증명이 누구에게 속해 있는지와 그들이 무엇에 액세스 권한을 가지고 있는지를 알아야 하므로 몇 가지 기본 열거를 수행해야 합니다:
기본 열거
SSRF
AWS 내부의 머신에서 SSRF를 발견했다면 다음 페이지에서 팁을 확인하세요:
Whoami
알아야 할 첫 번째 사항 중 하나는 누구인지(어떤 계정에 속해 있는지 및 AWS 환경에 대한 기타 정보):
기업들은 canary tokens를 사용하여 토큰이 도용되고 사용되는 것을 식별할 수 있습니다. 토큰을 사용하기 전에 해당 토큰이 canary token인지 확인하는 것이 권장됩니다. 자세한 정보는 이 페이지를 확인하세요.
조직 열거
pageAWS - Organizations EnumIAM 열거
충분한 권한이 있다면 AWS 계정 내의 각 엔티티의 권한을 확인하여 본인 및 다른 신원이 무엇을 할 수 있는지 및 권한 상승 방법을 이해하는 데 도움이 됩니다.
IAM을 열거할 충분한 권한이 없는 경우 bruteforce하여 그것들을 파악할 수 있습니다. 열거 및 브루트포싱을 수행하는 방법은 다음에서 확인할 수 있습니다:
pageAWS - IAM, Identity Center & SSO Enum이제 자격 증명에 대한 일부 정보를 가지고 있습니다(그리고 레드팀이라면 감지되지 않았기를 희망합니다). 환경에서 사용되는 서비스를 확인하는 시간입니다. 다음 섹션에서 일부 일반적인 서비스를 열거하는 방법을 확인할 수 있습니다.
서비스 열거, 사후 침투 및 지속성
AWS에는 놀라운 양의 서비스가 있습니다. 다음 페이지에서는 기본 정보, 열거 치트시트, 검출 방지, 지속성 획득 및 기타 사후 침투 트릭에 대해 일부 서비스에 대한 정보를 찾을 수 있습니다:
pageAWS - Services수동으로 모든 작업을 수행할 필요는 없다는 점을 유의하십시오. 이 게시물 아래에서 자동화 도구에 대한 섹션을 찾을 수 있습니다.
또한, 이 단계에서 인증되지 않은 사용자에게 노출된 더 많은 서비스를 발견할 수 있습니다. 이를 악용할 수 있습니다:
pageAWS - Unauthenticated Enum & Access권한 상승
최소한 자신의 다른 리소스에 대한 권한을 확인할 수 있다면, 추가 권한을 획득할 수 있는지 확인할 수 있습니다. 적어도 다음에서 지시된 권한에 중점을 두어야 합니다:
pageAWS - Privilege Escalation공개적으로 노출된 서비스
AWS 서비스를 열거하는 동안 인터넷에 요소를 노출하는 일부 서비스를 발견할 수 있습니다(VM/컨테이너 포트, 데이터베이스 또는 큐 서비스, 스냅샷 또는 버킷...). 펜테스터/레드팀 멤버로서 항상 민감한 정보/취약점을 찾을 수 있는지 확인해야 합니다. 이는 AWS 계정으로의 추가 액세스를 제공할 수 있습니다.
이 책에서는 노출된 AWS 서비스를 찾고 확인하는 방법에 대한 정보를 찾을 수 있습니다. 노출된 네트워크 서비스의 취약점을 찾는 방법에 대해서는 특정 서비스를 검색하는 것을 권장합니다:
조직 침해
루트/관리 계정에서
조직에서 새 계정을 생성할 때, 새로운 계정에는 기본적으로 **OrganizationAccountAccessRole
**이라는 이름의 새 역할이 생성되며, 관리 계정에게 AdministratorAccess 정책을 부여하여 새 계정에 액세스할 수 있습니다.
따라서, 자식 계정으로 관리자로 액세스하려면 다음이 필요합니다:
관리 계정을 침해하고 자식 계정의 ID 및 역할의 이름(기본적으로 OrganizationAccountAccessRole)을 찾아야 합니다.
자식 계정을 찾으려면 AWS 콘솔의 조직 섹션으로 이동하거나
aws organizations list-accounts
를 실행하십시오.역할의 이름을 직접 찾을 수 없으므로 이전에 발견한 자식 계정에 대해
sts:AssumeRole
을 허용하는 사용자 정의 IAM 정책을 모두 확인하고 검색하십시오.관리 계정의
sts:AssumeRole
권한을 가진 주체를 침해하여 자식 계정의 역할에 대한sts:AssumeRole
권한을 얻습니다(관리 계정에서 누구든지 표현할 수 있도록 허용되는 경우에도, 외부 계정이므로 특정sts:AssumeRole
권한이 필요합니다).
자동화 도구
Recon
aws-recon: 루비로 작성된 멀티 스레드 AWS 보안 중심 인벤토리 수집 도구입니다.
cloudlist: Cloudlist은 클라우드 제공업체로부터 자산(호스트명, IP 주소)을 가져오는 다중 클라우드 도구입니다.
cloudmapper: CloudMapper는 Amazon Web Services (AWS) 환경을 분석하는 데 도움을 줍니다. 이제 보안 문제에 대한 감사를 포함한 훨씬 더 많은 기능을 포함하고 있습니다.
cartography: Cartography는 인프라 자산과 그들 간의 관계를 직관적인 그래프 뷰로 통합하는 파이썬 도구로, Neo4j 데이터베이스를 기반으로 합니다.
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입니다. 열거, 구성 오류 찾기 및 악용할 수 있습니다.
user_escalation_methods
dict 내에서 https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134에서 특권 권한의 정의를 찾을 수 있습니다.pacu는 자체 권한 상승 경로만 확인합니다 (계정 전체가 아님).
PMapper: 주요 매핑 도구 (PMapper)는 AWS 계정 또는 AWS 조직의 AWS Identity and Access Management (IAM) 구성에서 위험을 식별하기 위한 스크립트 및 라이브러리입니다. 이는 계정 내의 다양한 IAM 사용자 및 역할을 방향 그래프로 모델링하여 권한 상승 및 공격자가 AWS에서 리소스 또는 작업에 액세스하려는 대체 경로를 확인할 수 있습니다. https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing의
_edges.py
로 끝나는 파일 이름에서 권한 상승 경로를 찾기 위해 사용된 권한을 확인할 수 있습니다.
cloudsplaining: Cloudsplaining은 최소 권한을 위반하는 사항을 식별하고 위험을 우선 순위로 지정하는 AWS IAM 보안 평가 도구입니다. 이 도구는 잠재적으로 과도하게 권한이 부여된 고객, 인라인 및 aws 정책 및 해당 원칙이 액세스 권한을 가지고 있는지를 보여줍니다. (특권 상승 뿐만 아니라 다른 유형의 흥미로운 권한도 확인하며 사용을 권장합니다).
cloudjack: CloudJack은 Route53과 CloudFront 구성의 분리로 인한 하위 도메인 탈취 취약점을 평가합니다.
ccat: ECR 저장소 목록 -> ECR 저장소 가져오기 -> 백도어 삽입 -> 백도어가 삽입된 이미지 푸시
Dufflebag: Dufflebag은 공개 Elastic Block Storage (EBS) 스냅샷을 검색하여 실수로 남겨진 비밀을 찾는 도구입니다.
감사
cloudsploit: Aqua의 CloudSploit은 Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) 및 GitHub을 포함한 클라우드 인프라 계정의 보안 위험을 감지하기 위해 설계된 오픈 소스 프로젝트입니다 (ShadowAdmins를 찾지는 않음).
Prowler: Prowler는 AWS 보안 모베스트 프랙티스 평가, 감사, 사고 대응, 지속적 모니터링, 경직화 및 포렌식 준비를 수행하는 오픈 소스 보안 도구입니다.
CloudFox: CloudFox는 생소한 클라우드 환경에서 상황 인식을 돕습니다. 이는 클라우드 인프라에서 취약한 공격 경로를 찾는 데 도움을 주기 위해 만들어진 오픈 소스 명령 줄 도구입니다.
ScoutSuite: Scout Suite는 클라우드 환경의 보안 포지션 평가를 가능하게 하는 오픈 소스 멀티 클라우드 보안 감사 도구입니다.
cs-suite: 클라우드 보안 스위트 (python2.7을 사용하며 유지보수되지 않는 것으로 보임)
Zeus: Zeus는 AWS EC2 / S3 / CloudTrail / CloudWatch / KMS의 최상의 강화 관행을 위한 강력한 도구입니다 (유지보수되지 않는 것으로 보임). 시스템 내에서 기본 구성 자격 증명만 확인합니다.
지속적인 감사
cloud-custodian: Cloud Custodian은 공개 클라우드 계정 및 리소스를 관리하기 위한 규칙 엔진입니다. 사용자가 안전하고 비용을 최적화한 잘 관리된 클라우드 인프라를 활성화하기 위한 정책을 정의할 수 있습니다. 이는 조직이 가지고 있는 많은 임시 스크립트를 통합된 메트릭 및 보고서를 갖춘 가벼우며 유연한 도구로 통합합니다.
pacbot**: 정책을 코드로 구현하는 Bot (PacBot)**은 클라우드를 위한 지속적인 준수 모니터링, 준수 보고 및 보안 자동화 플랫폼입니다. PacBot에서 보안 및 준수 정책은 코드로 구현됩니다. PacBot에 의해 발견된 모든 리소스는 이러한 정책에 대한 준수 여부를 측정하기 위해 평가됩니다. PacBot의 자동 수정 프레임워크는 미리 정의된 조치를 취하여 정책 위반에 자동으로 응답할 수 있는 기능을 제공합니다.
streamalert: StreamAlert는 서버리스, 실시간 데이터 분석 프레임워크로, 사용자가 정의한 데이터 소스 및 경보 논리를 사용하여 어떤 환경에서든 데이터를 수집, 분석 및 경보할 수 있습니다. 컴퓨터 보안 팀은 StreamAlert를 사용하여 매일 수 테라바이트의 로그 데이터를 검사하여 사건 감지 및 대응을 수행합니다.
DEBUG: AWS CLI 요청 캡처
참고 자료
最終更新