
Pencarian Host (Host Discovery)Salah satu langkah pertama dalam misi network reconnaissance
adalah mengurangi satu rentang IP (biasanya besar) ke sebuah
daftar host yang aktif atau menarik. Memeriksa setiap port
dari setiap alamat IP adalah lambat dan biasanya tidak perlu. Tentu saja
apa yang membuat sebuah host menarik tergantung pada tujuan
pemeriksaan. Administrator jaringan mungkin hanya tertarik pada
host yang menjalankan layanan tertentu, sementara auditor keamanan
ingin mengetahui semua device dalam satu alamat IP. Administrator
mungkin nyaman cukup dengan menggunakan ping ICMP untuk
menemukan host pada jaringan internalnya, sementara
penetration tester eksternal mungkin menggunakan beragam probe
dalam usahanya menghindari pembatasan firewall. Oleh karena kebutuhan pencarian host sangat beragam, Nmap menawarkan
sejumlah opsi untuk kustomisasi teknik yang dibutuhkan. Pencarian host
seringkali disebut ping scan, namun ia lebih daripada sekedar
melakukan pengiriman paket echo request ICMP yang diasosiasikan dengan
tool terkenal ping. Pengguna dapat melewati
langkah ping dengan list scan (-sL) atau dengan
meniadakan ping (-PN), atau melakukan kombinasi
probe multi-port TCP SYN/ACK, UDP, dan ICMP.
Tujuan probe ini adalah memperoleh respon yang menunjukkan bahwa
alamat IP sedang aktif (sedang digunakan oleh host atau device jaringan).
Pada banyak jaringan, hanya sejumlah kecil persentase alamat IP yang aktif
pada satu waktu. Hal ini terutama umum terjadi pada alamat IP privat seperti
10.0.0.0/8. Jaringan tersebut memiliki 16 juta IP, namun saya telah melihatnya
digunakan oleh perusahaan dengan mesin berjumlah kurang dari seribu. Pencarian
host dapat menemukan mesin-mesin dalam lautan alamat IP. Jika tidak diberikan opsi pencarian host, Nmap
mengirimkan sebuah paket TCP ACK
yang ditujukan ke port 80 dan sebuah query ICMP echo request
ke setiap mesin target. Pengecualian atas hal ini adalah scan ARP
digunakan untuk sembarang target yang ada pada jaringan ethernet lokal.
Untuk user shell Unix biasa, sebuah paket SYN dikirimkan
alih-alih paket ACK dengan menggunakan system call
connect.
Nilai-nilai baku ini sama dengan opsi
-PA -PE. Pencarian host ini seringkali
cukup ketika melakukan pemeriksaan jaringan lokal, namun
disarankan untuk melakukan probe pencarian yang lebih komprehensif
ketika melakukan audit keamanan. Opsi-opsi -P* (yang memilih tipe ping)
dapat digabungkan. Anda dapat meningkatkan peluang anda
menyusup firewall yang ketat dengan mengirimkan banyak jenis probe
dengan menggunakan berbagai macam port/flag TCP dan kode ICMP. Perhatikan pula bahwa
pencarian ARP discovery
(-PR)
secara baku dilakukan terhadap target pada jaringan ethernet lokal bahkan
bila anda menspesifikasikan opsi -P* lain,
karena ia selalu lebih cepat dan lebih efektif. Secara baku, Nmap melakukan pencarian host dan lalu melakukan
scan port terhadap setiap host yang ditentukan online. Hal ini benar
bahkan bila anda menspesifikasikan tipe pencarian host yang tidak baku seperti
probe UDP (-PU). Bacalah mengenai opsi
-sP untuk mempelajari bagaimana melakukan
hanya pencarian host, atau gunakan -PN untuk melewati
pencarian host dan melakukan scan port untuk seluruh host.
Opsi-opsi berikut ini mengendalikan pencarian host: -
-sL (List Scan)
Scan daftar (list scan) merupakan sebuah bentuk pencarian host
yang hanya menampilkan setiap host pada jaringan yang dispesifikasikan,
tanpa mengirimkan paket ke host target. Secara baku,
Nmap tetap melakukan resolusi reverse-DNS pada host
untuk mengetahui namanya. Seringkali mengejutkan berapa banyak
informasi berharga yang diberikan nama host. Sebagai contoh,
fw.chi adalah nama firewall satu perusahaan di Chicago.
Nmap juga melaporkan jumlah total alamat IP pada bagian akhir.
Scan daftar merupakan sebuah pemeriksaan untuk memastikan anda
memiliki alamat IP yang tepat untuk target anda.
Jika host menemukan nama domain yang tidak anda kenali,
maka anda perlu melakukan penyelidikan lanjutan untuk mencegah
pemeriksaan jaringan perusahaan yang tidak tepat. Karena gagasannya adalah hanya menampilkan daftar host target,
opsi untuk fungsionalitas lebih tinggi misalnya pemeriksaan port,
deteksi sistem operasi, atau scanning ping tidak dapat dikombinasikan
dengan opsi ini. Jika anda ingin meniadakan pemeriksaan ping namun
masih ingin melakukan fungsionalitas tingkat tinggi, bacalah opsi
-PN. -
-sP (Ping Scan)
Opsi ini memberitahu Nmap untuk hanya melakukan scan ping
(host discovery), lalu menampilkan host yang menanggapi
pemeriksaan. Skrip host traceroute dan NSE juga dijalankan
jika diminta, namun tidak dilakukan pemeriksaan lebih lanjut (seperti scan
port atau deteksi SO). Opsi ini secara baku satu langkah lebih intrusif
daripada list scan, dan seringkali dapat digunakan untuk tujuan yang sama.
Ia memungkinkan reconnaissance ringan atas jaringan target tanpa menarik
banyak perhatian. Mengetahui berapa banyak host yang up lebih bermanfaat
bagi penyerang daripada daftar yang dihasilkan oleh list scan atas
setiap IP dan nama host. Administrator sistem juga sering menganggap opsi ini
bermanfaat. Ia dapat digunakan untuk menghitung mesin-mesin yang tersedia
pada jaringan atau memonitor ketersediaan server. Hal ini seringkali
disebut ping sweep, dan lebih handal daripada mem-ping alamat
broadcast karena banyak host tidak akan melakukan reply
terhadap query broadcast. Opsi -sP secara baku mengirimkan sebuah request ICMP echo
dan sebuah paket TCP ACK ke port 80. Ketika dilakukan oleh
user biasa, hanya sebuah paket SYN yang dikirimkan
(dengan menggunakan call connect) ke port 80 pada
target. Ketika user dengan privilege berusaha memeriksa target pada
jaringan ethernet lokal, request ARP digunakan kecuali dispesifikasikan
--send-ip.
Opsi -sP dapat dikombinasikan dengan tipe
probe pencarian lainnya (opsi-opsi -P*,
kecuali -PN) untuk fleksibilitas yang lebih tinggi.
Jika digunakan sembarang opsi tipe probe dan nomor port,
probe baku (ACK dan echo request) akan di-override.
Ketika terdapat firewall ketat di antara host sumber yang menjalankan
Nmap dan jaringan target, direkomendasikan untuk menggunakan
teknik lanjutan di atas. Jika tidak host dapat luput ketika firewall
men-drop probe atau responnya. -
-PN (No ping)
Opsi ini melompati tahap pencarian Nmap secara utuh.
Secara normal, Nmap menggunakan tahap ini untuk menentukan mesin aktif
untuk pemeriksaan lebih lanjut. Secara baku, Nmap hanya melakukan probe
lanjutan seperti scan port, pemeriksaan versi, atau pemeriksaan SO
terhadap host yang ditemukan up. Peniadaan pencarian host dengan
opsi -PN menyebabkan Nmap melakukan fungsi pemeriksaan yang diminta
terhadap setiap alamat IP target yang dispesifikasikan. Jadi
bila pada perintah baris dispesifikasikan sebuah alamat target kelas B (/16), maka
semua alamat IP yang berjumlah 65.536 akan diperiksa.
Pencarian host yang tepat akan dilewati sebagaimana dengan list scan, namun
alih-alih berhenti dan menampilkan daftar target, Nmap
lalu melakukan fungsi-fungsi yang diminta sebagaimana bila setiap IP target
aktif. Untuk mesin-mesin pada jaringan ethernet lokal, pemeriksaan ARP
akan tetap dilakukan (kecuali diberikan opsi --send-ip)
karena Nmap butuh alamat MAC untuk melakukan pemeriksaan lanjutan atas host target.
Flag opsi ini dulunya adalah P0 (menggunakan nol), namun kemudian diganti
untuk menghindari kerancuan dengan flag protokol ping PO (menggunakan huruf
O). -
-PS <port list> (TCP SYN Ping)
Opsi ini mengirimkan sebuah paket TCP kosong dengan
flag SYN diset. Port tujuan baku adalah 80 (dapat dikonfigurasi
pada waktu kompilasi dengan merubah DEFAULT_TCP_PROBE_PORT_SPEC
dalam nmap.h).
Port-port alternatif dapat dispesifikasikan sebagai parameter.
Sintaksnya sama dengan opsi
-p kecuali specifier jenis port seperti
T: tidak diperbolehkan. Contohnya adalah
-PS22 dan
-PS22-25,80,113,1050,35000. Perhatikan bahwa tidak
boleh ada spasi antara -PS dan daftar port.
Jika dispesifikasikan banyak probe mereka akan dikirim
secara paralel. Flag SYN memberitahu sistem remote bahwa anda
berusaha membuat sebuah koneksi. Normalnya port tujuan
tertutup, dan sebuah paket RST (reset) akan dikirimkan.
Jika port terbuka, target akan melakukan langkah kedua dari
TCP three-way-handshake
dengan mengirimkan paket SYN/ACK TCP. Mesin yang menjalankan Nmap lalu
memutuskan koneksi tersebut dengan mengirimkan sebuah paket RST
alih-alih mengirimkan sebuah paket ACK yang akan melengkapi
three-way-handshake dan membuat koneksi penuh.
Paket RST dikirim oleh kernel mesin yang menjalankan Nmap
sebagai tanggapan atas SYN/ACK yang tidak diharapkan,
bukan oleh Nmap sendiri. Nmap tidak peduli apakah port terbuka atau tertutup.
Tanggapan RST atau SYN/ACK yang didiskusikan di atas
memberitahu Nmap bahwa host tersedia dan menanggapi. Pada mesin Unix, umumnya hanya user privilege
root
yang dapat mengirim dan menerima paket-paket TCP raw.
Untuk user tanpa privilege, secara otomatis sebuah
workaround akan dijalankan
yaitu system call connect akan digunakan untuk
setiap port target. Hal ini mempunyai efek mengirimkan paket SYN ke host target,
dalam usaha membuat koneksi. Jika connect memberikan
sukses cepat atau kegagalan ECONNREFUSED, stack TCP
di bawahnya telah menerima sebuah SYN/ACK atau RST dan
host ditandai sebagai tersedia. Jika usaha koneksi dibiarkan
hingga tercapai timeout, host ditandai sebagai down.
Workaround ini juga digunakan untuk koneksi IPv6,
karena dukungan untuk pembuatan paket raw IPv6 belum
tersedia di Nmap.
-
-PA <port list> (TCP ACK Ping)
Ping TCP ACK hampir serupa dengan ping
SYN yang baru didiskusikan. Perbedaannya adalah, sebagaimana
dapat anda duga, bahwa flag TCP ACK diset alih-alih
flag SYN. Paket ACK tersebut memberitahu data
pada koneksi TCP yang telah tercipta, namun tidak ada
koneksi. Sehingga host remote harus selalu menanggapi dengan
sebuah paket RST, yang akan memberitahukan keberadaan mereka. Opsi -PA menggunakan port baku
yang sama dengan probe SYN (80) dan dapat menerima daftar
port tujuan dalam format yang sama. Jika user tanpa privilege
mencobanya, atau dispesifikasikan target IPv6, workaround
connect yang didiskusikan sebelumnya akan digunakan.
Workaround ini tidak sempurna karena connect sebenarnya
mengirimkan paket SYN dan bukan paket ACK. Alasan menyertakan probe ping SYN dan ACK adalah
memaksimalkan peluang melewati firewall. Banyak administrator
mengkonfigurasi router dan firewall sederhana untuk memblokir
paket SYN incoming kecuali yang ditujukan untuk layanan publik
seperti server website atau mail perusahaan.
Hal ini mencegah koneksi incoming lainnya ke organisasi,
namun tetap membolehkan user melakukan koneksi outgoing
ke Internet. Pendekatan non-stateful ini
membutuhkan sedikit sumber daya pada firewall/router dan
didukung luas oleh filter hardware dan software. Software
firewall Linux Netfilter/iptables
memberikan opsi
--syn untuk mengimplementasikan
pendekatan stateless ini. Ketika rule firewall stateless seperti
ini digunakan, probe ping SYN (-PS)
kemungkinan akan diblokir ketika dikirim ke port target yang tertutup.
Dalam kasus ini, probe ACK akan bersinar karena ia dapat mengatasi
rule tersebut. Jenis firewall umum lainnya menggunakan rule stateful
yang akan men-drop paket tidak diharapkan. Fitur ini mulanya
hanya ditemukan pada firewall high-end, namun sekarang
telah umum digunakan. Sistem Linux
Netfilter/iptables mendukungnya melalui opsi
--state, yang mengkategorikan paket
berdasarkan status koneksi. Probe SYN kemungkinan berfungsi
untuk sistem tersebut, karena paket ACK yang tidak diharapkan
umumnya dikenali sebagai palsu dan di-drop. Solusi untuk masalah ini
adalah dengan mengirimkan probe SYN dan ACK secara bersamaan dengan memberikan opsi
-PS and -PA. -
-PU <port list> (UDP Ping)
Opsi pencarian host lainnya adalah ping UDP, yang
mengirim paket UDP kosong (kecuali --data-length dispesifikasikan)
ke port yang diberikan. Daftar port
menggunakan format yang sama dengan yang telah didiskusikan pada opsi
-PS dan -PA. Jika tidak ada port
yang dispesifikasikanya, bakunya adalah 31338. Port baku ini
dapat dikonfigurasi pada waktu kompilasi dengan merubah
DEFAULT_UDP_PROBE_PORT_SPEC
dalam nmap.h.
Port tinggi yang tidak umum, digunakan secara baku karena mengirim
ke port terbuka seringkali tidak diharapkan untuk jenis pemeriksaan ini. Ketika menemui port tertutup pada mesin target, probe
UDP seharusnya menerima paket ICMP port unreachable.
Hal ini memberitahu Nmap bahwa mesin up dan tersedia.
Banyak jenis kesalahan ICMP lainnya, seperti
host/network unreachables atau TTL exceeded menandakan
host down atau tidak dapat dihubungi. Tidak ada respon
juga termasuk di dalamnya. Jika ditemukan sebuah port terbuka, kebanyakan
layanan akan mengabaikan paket kosong dan gagal mengirim tanggapan.
Inilah alasan mengapa port probe bakunya adalah 31338,
yang kemungkinan tidak digunakan. Beberapa layanan, seperti
protokol Character Generator (chargen), akan menanggapi paket UDP kosong,
dan karenanya memberitahu Nmap bahwa mesin tersedia. Keuntungan utama jenis scan ini adalah ia
melewati firewall dan filter yang hanya memeriksa TCP. Sebagai contoh,
saya pernah memiliki Linksys BEFW11S4 wireless broadband
router. Interface external device ini secara baku memfilter seluruh port
TCP, namun probe UDP tetap memberikan pesan port unreachable
dan karenanya memberitahu mengenai device ini. -
-PE;
-PP;
-PM (ICMP Ping Types)
Selain tipe pencarian host TCP dan UDP yang tidak umum di atas,
Nmap dapat mengirimkan paket dengan menggunakan program
ping. Nmap mengirim sebuah paket ICMP
tipe 8 (echo request) ke alamat IP target,
mengharapkan balasan paket tipe 0 (echo reply) dari host
yang ada.
Sayangnya bagai pengeksplorasi jaringan, saat ini banyak host dan
firewall yang memblokir paket-paket ini, alih-alih menanggapi sebagaimana yang
ditentukan oleh RFC
1122. Karena alasan ini, scan ICMP-only relatif tidak
handal terhadap target tak dikenal pada Internet.
Namun untuk administrator sistem yang memonitor jaringan internal,
mereka mungkin merupakan pendekatan yang praktis dan efisien.
Gunakan opsi -PE untuk menggunakan perilaku echo
request ini. Meski echo request merupakan standar query ping ICMP,
Nmap tidak berhenti di sana. Standar ICMP (RFC
792) juga menspesifikasikan paket timestamp request, information
request, dan address mask request dengan kode 13, 15,
dan 17. Walaupun tujuan query-query ini adalah untuk
memperoleh informasi seperti address masks dan
waktu saat ini, mereka dapat dengan mudah digunakan sebagai
pencarian host. Sistem yang memberi tanggapan adalah up dan tersedia. Nmap
tidak mengimplementasikan paket information request, karena
mereka tidak didukung luas. RFC 1122 berkeras bahwa
“sebuah host TIDAK SEHARUSNYA mengimplementasikan pesan ini”.
Query timestamp dan address mask dapat dikirim dengan opsi
-PP and -PM.
Reply timestamp (ICMP kode 14) atau reply address
mask (kode 18) memberitahukan bahwa host tersedia.
Kedua query ini bermanfaat ketika administrator secara khusus
memblokir paket-paket echo request namun lupa bahwa query ICMP
lainnya dapat digunakan untuk tujuan yang sama. -
-PO <protocol list> (IP Protocol Ping)
Opsi pencarian host terbaru adalah ping protokol IP,
yang mengirimkan paket IP dengan nomor port yang dispesifikasikan
dalam header IP-nya. Daftar protokol menggunakan format yang sama
seperti daftar port dalam opsi pencarian host TCP dan UDP yang
telah didiskusikan sebelumnya. Jika tidak didefinisikan protokol,
secara bakunya adalah mengirimkan banyak paket IP untuk
ICMP (protokol 1), IGMP (protokol 2), dan
IP-in-IP (protokol 4). Protokol baku dapat dikonfigurasi
pada waktu kompilasi dengan merubah
DEFAULT_PROTO_PROBE_PORT_SPEC
dalam nmap.h.
Perhatikan bahwa untuk ICMP, IGMP, TCP (protokol 6), dan UDP
(protokol 17), paket dikirim dengan header protokol yang sesuai
sementara protokol lainnya dikirim tanpa data tambahan
selain header IP (kecuali diberikan opsi
--data-length). Metode pencarian host ini melihat respon yang menggunakan protokol
yang sama dengan probe, atau protokol ICMP unreachable messages
yang memberitahu bahwa protokol dimaksud tidak didukung pada
host tujuan. Kedua jenis respon di atas menandakan bahwa
host target ada. -
-PR (ARP Ping)
Salah satu skenario penggunaan Nmap yang umum adalah
memeriksa LAN ethernet. Pada kebanyakan LAN, terutama yang menggunakan
rentang alamat privat sebagaimana dijelaskan oleh RFC 1918, mayoritas
alamat IP tidak digunakan. Ketika Nmap berusaha mengirim paket IP raw
seperti sebuah ICMP echo request, sistem operasi harus menentukan alamat
hardware tujuan (ARP) yang sesuai dengan IP target sehingga ia dapat
mengirimkan frame ethernet dengan tepat. Hal ini seringkali lambat dan
bermasalah, karena sistem operasi tidak ditulis dengan maksud
mereka akan melakukan jutaan request ARP atas host-host yang tidak ada
dalam waktu yang singkat. Scan ARP menempatkan Nmap dan algoritma teroptimisasinya
untuk menangani request ARP. Dan bila ia memperoleh respon,
Nmap tidak perlu kuatir mengenai paket ping berbasis IP
karena ia telah mengetahui bahwa host up. Hal ini membuat
scan ARP jauh lebih cepat dan handal dibanding scan berbasis IP.
Sehingga ia dilakukan secara baku ketika memeriksa host ethernet yang
dideteksi Nmap berada pada jaringan ethernet lokal. Bahkan bila digunakan
jenis ping (seperti -PE atau
-PS), Nmap menggunakan ARP untuk sembarang target
yang berada dalam LAN yang sama. Jika anda tidak menginginkan scan ARP,
berikan opsi --send-ip. -
--traceroute (Trace path to host)
Traceroute dilakukan setelah scan menggunakan informasi dari hasil sscan untuk menentukan port dan protocol yang berpeluang besar mencapai target. Ia dapat digunakan untuk seluruh jenis scan kecuali scan connect (-sT) dan scan idle (-sI). Seluruh pelacakan menggunakan model pewaktuan dinamis Nmap dan dilakukan secara paralel.
Traceroute bekerja dengan mengirimkan paket dengan TTL (time-to-live) rendah agar tidak memperoleh pesan ICMP Time Exceeded dari hop langsung antara scanner dan host target. Implementasi standar traceroute dimulai dengan TTL 1 dan menaikkan TTL hingga host tujuan tercapai. Traceroute Nmap dimulai dengan TTL tinggi dan kemudian menurunkan TTL hingga nol. Dengan melakukan secara terbalik Nmap menggunakan algoritma caching cerdas untuk mempercepat pelacakan atas banyak host. Secara rata-rata Nmap mengirimkan paket kurang dari 5–10 per host, tergantung pada kondisi jaringan. Jika dilakukan scan atas satu subnet tunggal (misal 192.168.0.0/24) Nmap mungkin hanya perlu mengirim satu paket untuk kebanyakan host tersebut.
-
-n (No DNS resolution)
Memberitahu Nmap untuk tidak melakukan resolusi reverse
DNS
pada alamat IP aktif yang ditemukannya. Karena DNS
dapat lambat meskipun dengan menggunakan resolver paralel built-in Nmap, opsi ini dapat mempercepat waktu pemeriksaan. -
-R (DNS resolution for all targets)
Memberitahu Nmap untuk
selalu melakukan resolusi reverse DNS
pada alamat IP target. Normalnya reverse DNS hanya dilakukan
terhadap host yang online. -
--system-dns (Use system DNS resolver)
Secara baku, Nmap meresolve alamat IP dengan mengirimkan
query secara langsung ke server DNS yang dikonfigurasi pada host anda
dan mendengarkan responnya. Banyak request (seringkali selusin)
dilakukan secara paralel untuk meningkatkan kinerja.
Gunakan opsi ini untuk menggunakan resolver sistem anda (satu IP
pada satu waktu melalui call getnameinfo). Hal ini
lebih lambat dan jarang bermanfaat kecuali anda menemukan bug dalam resolver paralel Nmap
(mohon beritahu kami bila demikian). Resolver sistem selalu digunakan untuk scan IPv6.
-
--dns-servers <server1>[,<server2>[,...]]
(Servers to use for reverse DNS queries)
Secara baku, Nmap menentukan server DNS anda
(untuk resolusi rDNS) dari file resolv.conf anda (Unix) atau
Registry (Win32). Selain itu, anda dapat menggunakan opsi ini
untuk menspesifikasikan server alternatif. Opsi ini tidak diindahkan
bila anda menggunakan --system-dns atau melakukan scan
IPv6. Dengan menggunakan banyak server DNS seringkali lebih cepat,
terutama bila anda memilih server otoritatif untuk ruang IP target anda.
Opsi ini juga dapat meningkatkan kemampuan sembunyi (stealth), karena request
anda dapat diberikan ke sembarang server DNS rekursif di Internet. Opsi ini juga bermanfaat ketika memeriksa jaringan privat.
Terkadang hanya beberapa name server yang memberikan informasi rDNS yang tepat,
dan mungkin anda tidak tahu di mana mereka. Anda dapat memeriksa jaringan untuk
port 53 (mungkin dengan deteksi versi), lalu coba scan list Nmap
(-sL) dengan menspesifikasikan setiap name server pada satu waktu
dengan --dns-servers hingga anda menemukan yang berfungsi.
|
|