Cara Port Scanning dengan Nmap: Basic Sampai Advanced
Salah satu momen paling membekas dalam karir bug bounty saya terjadi sekitar tahun 2019. Waktu itu saya lagi ngerjain program private bounty buat sebuah e-commerce lokal. Targetnya: subdomain API mereka. Standar aja, saya mulai dengan nmap scan — honestly, saya bahkan nggak expect nemu sesuatu yang serius karena target ini udah di-scan sama ratusan hunter lain sebelumnya. Tapi tiba-tiba nmap nunjukin satu port aneh: 8443, tapi dengan service fingerprint yang nggak match. Bukan HTTPS biasa — ini Jenkins dengan default credential admin:admin. That single nmap scan gave me remote code execution on their staging server, dan bounty-nya lumayan besar. Dari situ saya sadar bahwa cara port scanning dengan nmap yang bener, teliti, dan metodis itu yang membedakan hunter biasa dengan hunter yang konsisten dapet critical bugs.
Nah, setelah pengalaman itu saya jadi obsessed dengan nmap. Bukan cuma SYN scan doang, tapi semua jenis scan, timing optimization, NSE scripts, sampai evasion techniques. Di artikel ini saya mau share semua yang saya pelajari — dari basic yang bisa kamu jalanin dalam 5 menit, sampai teknik advanced yang saya pakai sehari-hari di bug bounty dan pentest.
Kenapa Port Scanning Itu Langkah Pertama yang Kritis?
Sebelum ngomongin teknis, kita perlu ngerti dulu kenapa port scanning itu pondasi dari semua aktivitas security assessment. Sederhananya: kamu nggak bisa nyerang sesuatu yang kamu nggak tahu ada. Port scanning itu ibarat kamu ngetok-ngetok semua pintu dan jendela di sebuah gedung buat lihat mana yang kebuka.
Setiap service yang jalan di server — web server, database, SSH, FTP, apapun — pasti listen di port tertentu. Dengan mengetahui port apa aja yang terbuka, kamu bisa:
- Identifikasi service yang running — Port 80/443 biasanya web server, 22 SSH, 3306 MySQL, 5432 PostgreSQL, 6379 Redis, dst.
- Deteksi versi software — Versi lama sering punya CVE known yang bisa langsung dieksploitasi.
- Temuin service nggak lazim — Service aneh di port nggak standar sering jadi indikasi misconfiguration atau backdoor.
- Mapping network topology — Di internal network, port scanning bisa bantu bikin peta jaringan.
Dalam konteks bug bounty, port scanning itu yang sering bikin saya nemu target yang overlooked. Banyak hunter cuma nge-test web app di port 80/443, tapi nggak pernah nge-scan full port. Padahal di port 8080, 8443, atau 9000 sering ada admin panel, staging environment, atau internal tools yang security-nya lebih lemah. Nah, di sinilah cara port scanning dengan nmap jadi skill yang membedakan hunter biasa sama hunter yang konsisten dapet bounty.
Install Nmap di Berbagai Platform
Nmap itu tool yang udah jadi standar industri dan tersedia di hampir semua platform. Cara install-nya:
Linux (Debian/Ubuntu):
sudo apt update && sudo apt install nmap
macOS:
brew install nmap
Windows: Download installer dari nmap.org — udah termasuk GUI (Zenmap) kalau kamu kurang nyaman sama CLI.
Kali Linux / Parrot: Udah pre-installed. Nggak perlu ngapa-ngapain.
Tips dari saya: kalau kamu serius di security, pakai Linux. Nmap di Linux lebih stabil dan fitur-fitur advanced kayak raw socket (buat SYN scan) lebih gampang diakses. Di Windows kadang perlu administrator privilege dan driver khusus.
Basic Scan Types yang Wajib Kamu Kuasai
Nah, ini bagian yang paling sering saya pakai sehari-hari. Ada beberapa jenis scan dasar yang masing-masing punya kelebihan dan kekurangan. Saya akan jelasin plus contoh praktisnya.
TCP SYN Scan (-sS) — The Default and Best
Ini default scan nmap dan yang paling sering saya pakai. Cara kerjanya: nmap kirim paket TCP SYN ke port target. Kalau port terbuka, target balas dengan SYN-ACK. Tapi nmap nggak lanjutin ke full handshake — dia langsung kirim RST buat nutup koneksi. Makanya disebut “half-open” atau “stealth” scan.
Keuntungannya: cepat, relatif nggak berisik (nggak bikin log di aplikasi), dan nggak perlu root (meskipun dengan root lebih optimal).
sudo nmap -sS 192.168.1.1
Output khasnya:
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
3306/tcp filtered mysql
Perhatikan state “filtered” di port 3306 — artinya ada sesuatu (mungkin firewall) yang nge-drop probe kita. Ini juga informasi berharga.
TCP Connect Scan (-sT) — Saat Nggak Punya Root
Scan ini melakukan full TCP three-way handshake. Lebih berisik karena aplikasi target bisa nge-log koneksi, tapi nggak perlu root access. Saya pakai ini kalau lagi di mesin yang nggak bisa sudo.
nmap -sT 192.168.1.1
UDP Scan (-sU) — Jangan Lupakan UDP
Ini salah satu kesalahan pemula: cuma scan TCP dan lupa UDP. Padahal banyak service critical yang jalan di UDP — DNS (53), SNMP (161), NTP (123), bahkan beberapa VPN protokol. UDP scan lebih lambat karena sifat UDP yang connectionless, tapi output-nya sering bikin surprise.
sudo nmap -sU 192.168.1.1
Pernah suatu kali saya nemu SNMP service dengan community string public di salah satu target bug bounty lewat UDP scan. Dari situ saya bisa enumerate internal network mereka. Lagi-lagi, port yang diabaikan hunter lain.
Version Detection (-sV) — Kenali Service-nya
Setelah tahu port mana yang terbuka, langkah berikutnya: cari tahu aplikasi apa yang listen di port itu berikut versinya. Nmap punya database service fingerprint yang lumayan lengkap.
nmap -sV 192.168.1.1
Outputnya bakal kasih service name, versi, dan kadang OS info:
22/tcp open ssh OpenSSH 7.4
80/tcp open http Apache httpd 2.4.6
3306/tcp open mysql MySQL 5.5.68
Nah, dari sini kita tahu:
- SSH OpenSSH 7.4 — cek CVE database, ada beberapa vulnerability
- Apache 2.4.6 — lumayan lawas, mungkin ada beberapa vuln
- MySQL 5.5.68 — ini versi lama banget, potensi tinggi
OS Detection (-O) — Tebak Sistem Operasi
Nmap bisa nge-tebak OS target lewat analisis TCP/IP fingerprint. Caranya dengan ngirim serangkaian probe TCP dan UDP lalu menganalisis response pattern-nya.
sudo nmap -O 192.168.1.1
Akurasi-nya lumayan tinggi buat OS mainstream. Berguna banget buat profiling target.
Aggressive Scan (-A) — All-in-One
Flag -A itu shortcut buat nyalain version detection, OS detection, script scanning, dan traceroute sekaligus.
sudo nmap -A 192.168.1.1
Tapi hati-hati: scan ini berisik banget dan lumayan lama. Saya biasanya cuma pakai ini kalau udah di tahap deep reconnaissance, bukan buat initial scan.
Memahami Output Nmap dengan Bener
Salah satu hal yang bikin pemula frustrasi: output nmap itu informatif tapi bisa overwhelming. Saya akan jelasin gimana cara bacanya.
Port States
Nmap punya 6 state port:
- Open: Port terbuka, ada service yang listen. Ini target utama kita.
- Closed: Port nggak listen, tapi host-nya reachable dan nggak ada firewall yang blok. Bisa jadi indikasi nggak ada service di situ.
- Filtered: Nmap nggak bisa tentuin apakah port open atau closed karena ada yang nge-blok probe (biasanya firewall). Ini informasi penting: berarti target punya firewall.
- Unfiltered: Port accessible tapi nmap nggak bisa tentuin open atau closed. Jarang terjadi, biasanya di ACK scan.
- Open|Filtered: Nmap nggak bisa bedain open atau filtered. Umum di UDP scan.
- Closed|Filtered: Nmap nggak bisa bedain closed atau filtered.
Time Optimization
Default timing nmap kadang terlalu lambat atau terlalu agresif. Ada template timing dari T0 (paranoid) sampai T5 (insane):
- T0 — Paranoid: Sangat lambat, satu port dalam 5 menit. Buat evade IDS.
- T1 — Sneaky: Lumayan lambat, 15 detik per port.
- T2 — Polite: Lebih lambat dari normal, lebih sopan ke target.
- T3 — Normal: Default, balance antara speed dan reliability.
- T4 — Aggressive: Cepat, asumsi network latency rendah.
- T5 — Insane: Sangat cepat, bisa bikin target overwhelm atau IDS triggered.
Saya biasanya pakai T4 buat scan di environment yang saya kontrol atau tahu network-nya stabil. Buat target bug bounty di internet, T3 lebih aman.
nmap -T4 -sS 192.168.1.1
Scan Seluruh Port Range — Jangan Cuma Well-Known
Default nmap cuma scan 1000 most common ports. Ini jebakan buat pemula — termasuk saya dulu. Banyak service critical yang jalan di high ports (di atas 1024).
Buat scan semua 65535 port:
nmap -p- 192.168.1.1
Scan ini butuh waktu lama, bisa 20-30 menit per host. Solusi: scan common ports dulu untuk quick win, baru full scan kalau ada waktu.
Trik yang saya suka: scan 1000 most common dulu pake T4, terus full scan dengan T3 di background sambil saya manual test hasil quick scan.
# Quick scan
sudo nmap -sS -T4 --top-ports 1000 target.com -oN quick.txt
# Full scan di background
sudo nmap -sS -T3 -p- target.com -oN full.txt &
Output Formats — Simpan Hasil Scan
Nmap bisa output dalam berbagai format yang berguna buat dokumentasi dan parsing:
- -oN: Normal output (human readable)
- -oX: XML output (bisa di-parse tool lain)
- -oG: Grepable output (buat grep/awk)
- -oA: All formats sekaligus
nmap -sS -sV -oA scan_result 192.168.1.1
Ini akan generate 3 file: scan_result.nmap, scan_result.xml, scan_result.gnmap.
Saya selalu simpan hasil scan untuk dokumentasi. XML format berguna banget kalau mau di-convert ke HTML report pake tool tambahan.
Nmap Scripting Engine (NSE) — Power Level Berikutnya
Ini fitur nmap yang paling powerful menurut saya. NSE itu engine yang memungkinkan kita ngejalanin script otomatis buat berbagai tugas: vulnerability detection, brute force, service discovery, malware detection, dan masih banyak lagi.
Kategori Script NSE
Nmap punya ratusan script yang dikelompokkan dalam kategori:
- safe: Script yang nggak intrusive
- intrusive: Script yang berpotensi nge-crash service atau bikin banyak log
- vuln: Script untuk deteksi vulnerability spesifik
- exploit: Script untuk actively mengeksploitasi vulnerability
- auth: Script untuk testing authentication
- brute: Script brute force credential
- discovery: Script untuk menemukan informasi tambahan
- default: Script yang dijalankan dengan flag -sC
Contoh NSE yang Berguna
Deteksi vulnerability spesifik:
nmap --script vuln 192.168.1.1
Ini menjalankan semua script kategori vuln. Bisa nemu CVE known kayak Heartbleed, Shellshock, SMBv1 vulnerability, dll.
HTTP enumeration:
nmap --script http-enum,http-headers,http-methods 192.168.1.1
Script http-enum itu favorit saya — dia nyari directory dan file umum (kayak /admin, /backup, /phpmyadmin, .git, dll). Hasilnya sering jadi entry point bug bounty.
SMB enumeration (Windows network):
nmap --script smb-enum-shares,smb-os-discovery 192.168.1.1
Di internal pentest, script ini golden banget — bisa nemu network shares yang bisa diakses anonymous.
SSL/TLS analysis:
nmap --script ssl-enum-ciphers 192.168.1.1
Cek cipher suite yang disupport — buat nemuin weak ciphers yang rentan downgrade attack.
HTTP vulnerability scanning:
nmap --script http-vuln-* 192.168.1.1
Jalanin semua script HTTP vulnerability detection. Lumayan buat quick check.
Teknik Advanced: Evasion dan Firewall Bypass
Nah, ini bagian yang seru. Kadang target punya firewall atau IDS yang bikin scan kita ke-detect atau hasilnya nggak akurat. Beberapa teknik evasion yang sering saya pakai:
Fragmentasi Paket (-f)
Nmap memecah probe jadi fragmen kecil-kecil, jadi lebih susah dideteksi firewall:
nmap -f 192.168.1.1
Decoy Scan (-D)
Nmap ngirim scan dari banyak IP palsu sekaligus, jadi IP asli kita ketutupan:
nmap -D RND:10 192.168.1.1
Spoof Source Port (–source-port)
Kadang firewall cuma allow traffic dari port tertentu (kayak 53 untuk DNS, atau 80 untuk HTTP). Kita bisa spoof source port:
nmap --source-port 53 192.168.1.1
Random Data Length (–data-length)
Nambahin random data ke paket biar nggak match signature IDS:
nmap --data-length 100 192.168.1.1
Penting: Teknik evasion ini cuma boleh dipakai di environment yang kamu punya izin atau lab sendiri. Jangan dipake sembarangan di bug bounty tanpa baca aturan program dulu — beberapa program ngelarang active evasion techniques.
Pengalaman Lapangan: Nmap dalam Bug Bounty
Saya mau sharing rutinitas nmap yang biasa saya jalanin pas mulai ngerjain target baru di bug bounty:
Fase 1 — Quick Discovery (5 menit):
nmap -sS -T4 --top-ports 100 target.com -oN phase1.txt
Cari low-hanging fruit: web server di port nggak standar, SSH, FTP, database yang exposed.
Fase 2 — Service Fingerprinting (15 menit):
nmap -sV -sC -p [ports dari fase 1] target.com -oN phase2.txt
Deteksi versi dan jalanin default scripts.
Fase 3 — Deep Dive NSE (30+ menit):
nmap --script "safe,default,vuln" -p [ports] target.com -oN phase3.txt
NSE script buat nemu vulnerability known.
Fase 4 — Full Port (background, 30-60 menit):
nmap -sS -T3 -p- target.com -oN phase4.txt
Full port scan sambil manual testing hasil fase 1-3.
Dari rutinitas ini, saya udah nemu:
- Redis tanpa authentication di port 6379 (langsung bisa write SSH key)
- MongoDB tanpa auth di port 27017
- Jenkins admin:admin di port 8080
- phpMyAdmin exposed di port aneh
- Elasticsearch tanpa auth (bisa baca indeks database)
- Debug endpoint Django dengan stack trace yang leak secret key
Semua itu ketemu gara-gara nmap. Bukan tools mahal, bukan zero-day exploit. Cuma port scanning yang teliti dan metodis.
Ethical Reminder: Scan dengan Tanggung Jawab
Saya perlu ingetin ini dengan tegas: nmap itu powerful, dan dengan power besar datang tanggung jawab besar. Beberapa aturan yang harus kamu pegang:
- Cuma scan yang kamu punya atau punya izin tertulis. Scan sembarangan itu ilegal di banyak negara, termasuk Indonesia (UU ITE).
- Di bug bounty, baca scope program. Beberapa program cuma allow testing di subdomain tertentu dan ngelarang full port scan.
- Jangan DoS target. Aggressive scan (T5, full port dengan rate tinggi) bisa bikin service down. Pakai timing yang reasonable.
- Jangan scan critical infrastructure. Rumah sakit, sistem kelistrikan, jaringan pemerintahan tanpa izin — jangan pernah.
- Simpan hasil scan dengan aman. Hasil scan berisi informasi sensitif tentang target. Jangan di-upload sembarangan.
Saya pribadi punya dedicated VPS khusus buat bug bounty. Semua aktivitas scanning dari sana, dengan log yang jelas. Jadi kalau ada complain, saya bisa trace dan buktiin bahwa aktivitas saya legitimate.
Memperdalam Skill Nmap
Nmap itu tool yang dalam — semakin kamu gali, semakin banyak yang bisa kamu lakuin. Buat yang mau lanjut belajar:
- Baca man page:
man nmapitu lengkap banget. Serius, baca semuanya. - Buku “Nmap Network Scanning” oleh Gordon Lyon (Fyodor), pembuat nmap. Ini kitab sucinya nmap.
- Nmap official docs: https://nmap.org/book/
- Practice di lab sendiri: Setup VM vulnerable (Metasploitable, DVWA, VulnHub machines) dan practice scan.
- Ikutan CTF: Banyak Capture The Flag yang nguji skill nmap dan network recon.
Cara port scanning dengan nmap itu bukan cuma skill teknis — ini adalah mindset. Mindset bahwa kamu harus tahu medan sebelum bertindak. Bahwa informasi adalah senjata. Dan bahwa kadang perbedaan antara hunter yang dapet bounty sama yang nggak adalah satu port yang discan dengan teliti.