hhkb.dev

BLOG

2025-12-24 / 레드팀풀체인 · 02

초기 침투

1. 초기 침투(Initial Access) 개요

초기 침투는 외부 정찰에서 찾은 취약점이나 자격 증명을 이용해 내부 네트워크로 들어가는 첫 단계다.

  • 주요 기법: 피싱(Phishing), 외부 노출 서비스 악용(Exploit Public-Facing Application), 유출 계정 사용(Valid Accounts)
  • 최근 흐름: 예전에는 이메일 피싱이 중심이었지만, 요즘은 AWS, Azure 설정 미흡이나 VPN 취약점을 노리는 경우가 빠르게 늘고 있다.

2. 초기 침투 실습 시나리오: Grafana 취약점을 통한 AWS 내부망 진입

본 실습은 외부 웹 서비스(Grafana)의 취약점을 이용해 클라우드 인스턴스 권한을 탈취하고, 이를 통해 내부 서버(Bastion Host)에 접근하는 과정을 다룬다.

2.1. 취약점 식별(Reconnaissance)

  • 외부 포트 스캔에서 80/tcp, 443/tcp 외에 3000/tcp가 열려 있는 것을 확인한다.
  • 접속해 보면 Grafana 로그인 페이지가 나온다.
  • 버전을 확인하면 특정 CVE, 예를 들어 디렉터리 트래버설이나 SSRF에 취약한 버전인지 판단할 수 있다.

2.2. SSRF를 통한 AWS 메타데이터 탈취

  • SSRF(Server-Side Request Forgery) 취약점을 이용해 서버가 내부 요청을 보내게 만든다.
  • AWS EC2는 http://169.254.169.254/latest/meta-data/ 주소로 메타데이터 서비스(IMDS)에 접근할 수 있다.
  • 이 경로를 이용하면 IAM 역할(Role)에 묶인 임시 자격 증명(AccessKey, SecretKey, Token)을 뽑아낼 수 있다.
# 메타데이터 조회 예시(취약한 파라미터를 통해 요청)
GET /api/plugins/../../../../../../../../etc/passwd  # LFI 확인
GET /.../http://169.254.169.254/latest/meta-data/iam/security-credentials/  # Role 이름 확인

2.3. AWS IAM 자격 증명 탈취 및 설정

추출한 자격 증명은 공격자 로컬의 AWS CLI에 등록해 사용한다.

  1. ~/.aws/credentials에 직접 넣거나 aws configure를 사용한다.
  2. aws sts get-caller-identity로 세션이 살아 있는지 확인한다.

2.4. SSM(Session Manager)을 이용한 쉘 획득

탈취한 IAM 역할에 AmazonSSMManagedInstanceCore 같은 정책이 붙어 있다면, SSM으로 원격 쉘을 열 수 있다. SSH 같은 포트가 막혀 있어도 접근이 가능하다.

장점은 분명하다. 22번 포트를 열지 않아도 되고, 클라우드 네이티브 방식이라 상대적으로 덜 눈에 띈다.

# 인스턴스 ID 확인
aws ec2 describe-instances --region <Region>

# SSM 세션 연결
aws ssm start-session --target <Instance-ID>

2.5. 내부 정보 수집(Discovery)

Bastion Host에 들어간 뒤에는 다음 단계, 즉 권한 상승과 내부 이동을 위해 시스템 정보를 먼저 모은다.

  • /etc/sssd/sssd.conf 같은 파일을 보면, 현재 서버가 AD(Active Directory) 환경(us.rt.local)에 연결돼 있는지 확인할 수 있다.
  • 이 정보는 해당 서버가 단순 단독 인스턴스가 아니라, 온프레미스나 하이브리드 AD 환경으로 이어지는 접점이라는 뜻이기도 하다.