Host Discovery dengan Nmap#
Sebelum melakukan port scanning secara masif, lakukan dulu host discovery. Tujuannya sederhana: mencari tahu host mana yang hidup dan mana yang tidak. Scanning ke host yang tidak aktif hanya akan membuang waktu, resource, dan menimbulkan noise yang tidak perlu di level jaringan.
Metode paling dasar memang ping, tetapi Nmap juga mendukung ARP, ICMP, TCP, dan UDP untuk host discovery.
Dasar Nmap#
Basic usage:
nmap [target]
nmap [target1] [target2] ...
nmap 10.10.10.10-20
nmap 10.10.10.10/29
nmap 10.10.0-255.101-125
nmap -iL addresslist.txt
nmap -sL [target]ARP Scan#
ARP scanning mengirim ARP request ke setiap device dalam satu subnet. Range target didapat dari hasil AND antara IP address dan network mask host. ARP scanning tidak bisa dilakukan antar subnet karena ARP adalah link-layer protocol dan tidak dirutekan ke subnet lain.
Spesifik untuk ARP scan host discovery:
nmap -PR -sn [target]Traffic yang digenerate oleh host ketika melakukan ARP scan, dicapture menggunakan Wireshark:

Ada tools yang spesifik untuk melakukan ARP scan, yaitu arp-scan. Info lengkapnya bisa dibaca di arp-scan User Guide.
Tools yang berbeda, meskipun memiliki tujuan yang sama, kadang menghasilkan output yang berbeda. Contoh perbedaan scan dengan arp-scan dan Nmap:
Secara default, ketika host discovery dengan Nmap dijalankan dengan root atau sudoers, Nmap akan menggunakan ARP request. Jika target berada di luar subnet, Nmap akan menggunakan TCP dan ICMP. Jika dijalankan oleh non-sudoers, Nmap akan menggunakan TCP handshake. Ini terjadi karena root memiliki izin untuk membuat raw socket dan menyusun paket Ethernet sendiri, sehingga bisa memakai protokol layer 2 seperti ARP secara langsung. User biasa hanya punya system call yang lebih terbatas. Perbedaan metode ini berdampak pada output yang didapatkan.

ICMP Scanning#
Secara konsep, ini sesederhana melakukan ping (echo / ICMP type 8) dan menunggu respon dengan ICMP type 0 dari target. Namun, banyak firewall memblokir ICMP echo.
Gunakan -PE untuk ICMP scanning, dan -sn untuk menghindari port scanning ke target.
nmap -PE -sn [target]ICMP scanning tidak menghasilkan MAC address host target jika target berada di subnet yang berbeda.
Karena ICMP echo type 8 banyak diblokir firewall, Nmap juga menyediakan penggunaan ICMP type 13 (timestamp request), kemudian menunggu ICMP timestamp reply (type 14). Ada juga ICMP type 17 (address mask query), kemudian menunggu ICMP address mask reply (type 18).
Gunakan -PP untuk memakai metode timestamp request.
nmap -PP -sn [target]Gunakan -PM untuk memakai metode address mask query.
nmap -PM -sn [target]TCP dan UDP Scanning#
Koneksi TCP terbentuk setelah 3-way handshake. Pada SYN scan, host hanya akan berhenti pada SYN/ACK. Itu sudah cukup untuk mengetahui apakah hostnya hidup atau tidak tanpa tercatat di log aplikasi.
Untuk melakukan SYN scan, gunakan -PS diikuti port number-nya.
nmap -PS21 -sn [target]
nmap -PS21-25 -sn [target]
nmap -PS80,443,8080,8443 -sn [target]ACK scan konsepnya mirip SYN scan, tetapi menggunakan ACK. Jika target reply, biasanya dengan RST, maka target dinyatakan live.
Gunakan -PA untuk ACK scan.
sudo nmap -PA21 -sn [target]
sudo nmap -PA21-25 -sn [target]
sudo nmap -PA80,443,8080,8443 -sn [target]ACK scan hanya bisa dilakukan oleh sudoers. -PS masih bisa digunakan tanpa sudo, tetapi akan menyelesaikan 3-way handshake. Tanpa hak khusus, prosesnya tetap akan mengikuti alur TCP normal.
UDP Ping#
UDP ping tidak mengharapkan reply dari target, tetapi jika port tujuan tertutup, diharapkan mendapatkan ICMP port unreachable dari host target. Itu menjadi indikasi bahwa target live.
Untuk UDP scan, gunakan -PU.
nmap -PU -sn [target]Masscan#
Tools scanning lain ada masscan. Tool ini lebih berfokus ke kecepatan daripada jumlah dan akurasi informasi yang didapat. Contoh usage:
masscan [target] -p443
masscan 10.10.10.10/24 -p443
