
Sebagai seorang pemula yang melakukan perbaikan otomotif, saya dapat berjuang
berjam-jam untuk menyesuaikan alat sederhana saya (palu, duct tape,
dsb.) untuk tugas yang ada. Ketika saya gagal dan menyerahkannya pada
mekanik sebenarnya, ia mencari dalam kotak perangkatnya hingga menemukan
alat yang tepat yang membuat pekerjaan tersebut menjadi mudah. Seni scanning port
juga serupa. Para ahli memahami beragam teknik pemindaian dan memilih
satu (atau kombinasi) yang sesuai untuk tugas yang ada. User tidak berpengalaman dan
script kiddies,
di lain pihak, berusaha menyelesaikan semua masalah dengan scan SYN baku. Oleh karena Nmap
gratis, satu-satunya penghalang menguasai scanning port adalah pengetahuan. Hal itu tentu
saja mengalahkan dunia otomotif, setelah membutuhkan keahlian tinggi untuk menentukan bahwa
anda butuh kompresor pegas strut, lalu anda mesti harus membayar ribuan dolar untuknya. Kebanyakan jenis scan hanya tersedia untuk
user privilege.
Hal ini karena mereka mengirim dan menerima paket raw, yang membutuhkan akses root pada sistem Unix.
Pada sistem Windows, menggunakan akun administrator disarankan, meski
terkadang Nmap dapat bekerja untuk unprivileged users ketika WinPcap telah dimuatkan ke SO. Kebutuhan akan privilege root merupakan sebuah batasan serius ketika Nmap dirilis pada tahun 1997,
karena banyak user hanya mempunyai akses ke shared shell. Saat ini,
hal tersebut berbeda. Komputer telah lebih murah, lebih banyak orang memiliki
akses langsung Internet always-on, dan banyak sistem Unix desktop (termasuk
Linux dan Mac OS X). Versi Nmap Windows kini tersedia, membuatnya
berjalan di lebih banyak desktop. Karena alasan-alasan ini,
user memiliki sedikit alasan untuk menjalankan Nmap dari akun shared shell yang terbatas.
Ini merupakan keberuntungan, karena opsi privilege membuat Nmap lebih
powerful dan fleksibel. Meski Nmap berusaha memberikan hasil yang akurat, namun perlu diperhatikan
bahwa seluruh pandangannya didasarkan pada paket yang dikembalikan oleh mesin target
(atau firewall di depan mereka). Host tersebut mungkin tidak dapat dipercaya
dan responnya bertujuan membingungkan atau mengacaukan Nmap.
Yang lebih umum adalah host yang tidak sesuai dengan RFC yang tidak menanggapi
sebagaimana yang seharusnya atas probe Nmap. Scan FIN, NULL, dan Xmas terutama
rentan terhadap masalah ini. Isu tersebut adalah spesifik untuk jenis scan tertentu
dan didiskusikan dalam entri jenis scan individual. Bagian ini mendokumentasikan selusin atau lebih teknik scan port
yang didukung oleh Nmap. Hanya satu metode yang boleh digunakan di satu waktu,
kecuali scan UDP (-sU) dapat digabungkan dengan sembarang
jenis scan TCP. Sebagai pengingat, opsi jenis scan port adalah
dalam bentuk -s<C>, dengan
<C> merupakan karakter utama dalam nama scan,
biasanya yang pertama. Satu pengecualian untuk ini adalah scan bounce FTP
yang telah kuno (-b). Secara baku, Nmap melakukan
SYN Scan, meski ia menggantinya dengan scan connect bila user tidak memiliki
privilege untuk mengirim paket raw (membutuhkan akses root pada Unix)
atau bila dispesifikasikan target IPv6. Dari semua scan yang ada di bawah ini,
unprivileged user hanya dapat menjalankan scan connect dan FTP bounce. -
-sS (TCP SYN scan)
SYN scan merupakan opsi scan baku dan terpopuler dengan alasan yang baik.
Ia dapat dilakukan dengan cepat, memeriksa ribuan port per detik pada jaringan
yang cepat tidak dihalangi oleh firewall yang membatasi. Scan SYN
relatif tidak mengganggu dan tersembunyi, karena ia tidak pernah melengkapi
koneksi TCP. Ia juga bekerja terhadap stack TCP yang sesuai alih-alih
tergantung pada platform khusus sebagaimana scan FIN/NULL/Xmas, Maimon dan idle.
Ia juga memungkinkan pembedaan yang tegas dan handal antara status open,
closed, dan filtered. Teknik ini seringkali diacu sebagai pemeriksaan setengah terbuka (half-open scanning),
karena anda tidak membuka seluruh koneksi TCP. Anda mengirim sebuah paket SYN,
seperti anda ingin melakukan koneksi sesungguhnya dan kemudian menunggu tanggapan.
SYN/ACK menandakan port sedang mendengarkan (open), RST (reset) menandakan tidak sedang
mendengarkan. Jika tidak ada tanggapan setelah beberapa kali pengiriman ulang, port
ditandai sebagai tersaring (filtered). Port juga ditandai sebagai tersaring bila diterima
kesalahan ICMP unreachable (tipe 3, kode 1, 2, 3, 9, 10, atau 13). -
-sT (TCP connect scan)
Scan TCP connect merupakan jenis scan baku TCP ketika scan SYN
tidak dapat digunakan. Hal ini terjadi ketika user tidak memiliki privilege
untuk paket raw atau ketika melakukan pemeriksaan jaringan IPv6. Alih-alih menulis paket
raw sebagaimana dilakukan jenis scan lainnya, Nmap meminta SO
membuat koneksi dengan mesin target dan port dengan memberikan system call
connect. Ini merupakan system call
yang digunakan oleh web browsers, klien P2P, dan kebanyakan aplikasi jaringan
lainnya untuk membuat koneksi. Ia merupakan bagian dari interface pemrograman
yang dikenal sebagai Berkeley Sockets API. Nmap juga menggunakan API ini untuk
memperoleh informasi status setiap usaha koneksi.
Ketika tersedia SYN scan, ia merupakan pilihan yang lebih baik. Nmap
kurang memiliki kendali atas call connect daripada
paket raw, membuatnya kurang efisien. System call membuat koneksi lengkap
untuk membuka port target daripada membuat reset setengah-terbuka (half-open reset)
yang dilakukan SYN scan. Hal ini tidak saja lebih lambat dan membutuhkan lebih banyak paket
untuk memperoleh informasi yang sama, namun juga mesin target kemungkinan mencatat koneksi.
IDS yang baik akan mendeteksi hal ini, namun kebanyakan mesin tidak memiliki sistem alarm tersebut.
Kebanyakan layanan pada sistem Unix umum akan membuat catatan ke syslog, dan seringkali
pesan kesalahan yang rumit, ketika Nmap membuka dan menutup koneksi tanpa mengirim data.
Layanan yang benar-benar buruk akan crash ketika hal ini terjadi, meskipun tidak umum.
Administrator yang melihat serangkaian usaha koneksi dari sistem tunggal di lognya seharusnya
tahu bahwa ia telah diperiksa dengan metode connect. -
-sU (UDP scan)
Walau kebanyakan layanan populer di Internet menggunakan protokol TCP, layanan
UDP
luas dipergunakan. DNS, SNMP, dan DHCP (port 53, 161/162, dan 67/68) adalah tiga yang paling
umum. Karena pemeriksaan UDP umumnya lebih lambat dan lebih sulit dibanding TCP, beberapa
audit keamanan mengabaikan port ini. Ini merupakan kesalahan, karena eksploitasi layanan UDP
cukup umum dan penyerang tentu saja tidak mengabaikan seluruh protokol. Untungnya, Nmap dapat
membantu inventori port UDP. Scan UDP diaktifkan dengan opsi -sU. Ia dapat digabungkan
dengan jenis scan TCP seperti SYN scan (-sS) untuk memeriksa
kedua buah protokol sekaligus. Scan UDP bekerja dengan mengirimkan header UDP kosong (tanpa data) ke setiap port
yang diinginkan. Jika diperoleh kesalahan ICMP port unreachable (tipe 3, kode 3), port itu closed. Kesalahan ICMP lainnya (tipe 3,
kode 1, 2, 9, 10, atau 13) menandakan port sebagai filtered. Seringkali, sebuah layanan akan menanggapi dengan paket UDP, membuktikan bahwa ia open. Jika tidak ada tanggapan setelah transmisi ulang, port
dianggap open|filtered. Hal ini berarti bahwa port dapat berada dalam keadaan open, atau mungkin packet filter memblokir komunikasi. Deteksi versi
(-sV) dapat digunakan untuk membantu membedakan antara port yang terbuka dengan yang disaring. Tantangan terbesar scanning UDP adalah melakukannya dengan cepat.
Port terbuka dan tersaring jarang mengirimkan tanggapan, membuat Nmap time
out dan kemudian melakukan transmisi ulang bilamana probe atau respon hilang.
Port tertutup seringkali merupakan masalah yang lebih besar.
Mereka umumnya mengirimkan ulang kesalahan ICMP port unreachable. Namun tidak seperti
paket RST yang dikirim oleh port TCP tertutup sebagai respon atas scan SYN atau connect,
banyak host secara baku membatasi pesan ICMP port unreachable.
Linux dan Solaris terutama sangat ketat mengenai hal ini. Sebagai contoh, kernel
Linux 2.4.20 membatasi pesan destination unreachable ke satu per detik
(dalam net/ipv4/icmp.c). Nmap mendeteksi pembatasan ini dan memperlambat kerjanya untuk menghindari
pemenuhan jaringan dengan paket-paket tidak perlu yang akan di-drop oleh mesin target.
Sayangnya, pembatasan ala Linux dengan satu paket per detik membuat pemeriksaan 65.536
membutuhkan waktu lebih 18 jam. Ide untuk mempercepat scan UDP termasuk pemeriksaan
lebih banyak host secara paralel, melakukan pemeriksaan atas port-port populer dulu,
pemeriksaan di belakang firewall, dan menggunakan --host-timeout untuk melewati
host lambat. -
-sN; -sF; -sX (TCP NULL, FIN, dan Xmas scan)
Ketiga jenis scan ini (bahkan kemungkinan lebih dengan adanya opsi
--scanflags yang dijelaskan pada bagian berikutnya)
mengeksploitasi kelemahan dalam RFC TCP untuk membedakan
antara port open dan
closed. Halaman 65 RFC 793 mengatakan bawha “if the
[destination] port state is CLOSED .... an incoming segment not
containing a RST causes a RST to be sent in response.” Lalu halaman berikutnya
mendiskusikan paket yang dikirim ke port terbuka tanpa bit SYN, RST, atau ACK diset,
menyatakan bahwa : “you are unlikely to get here, but if you do, drop the
segment, and return.” Ketika memeriksa sistem yang sesuai dengan teks RFC ini, sembarang paket
yang tidak berisikan bit SYN, RST, atau ACK akan berakibat pengembalian RST bila
port tertutup dan tidak ada respon bila port terbuka. Selama ketiga bit ini tidak disertakan,
sembarang kombinasi ketiga bit lainnya (FIN, PSH, dan URG) adalah OK. Nmap mengeksploitasi
celah ini dengan ketiga jenis scan berikut : - Null scan (
-sN) Tidak mengirimkan bit(header flag TCP adalah 0) - FIN scan (
-sF) Hanya menset bit FIN TCP. - Xmas scan (
-sX) Menset flag FIN, PSH, dan URG, menerangi paket
seperti sebuah pohon Natal.
Ketiga jenis scan ini serupa perilakunya kecuali untuk flag TCP yang diset
dalam paket probe. Jika diterima paket RST,
port dianggap closed, tidak ada respon
berarti ia open|filtered. Port ditandai
filtered bila diterima kesalahan ICMP unreachable (tipe 3, kode
1, 2, 3, 9, 10, atau 13). Keuntungan utama jenis scan ini adalah bahwa mereka dapat
menyusup melalui non-stateful firewall dan router packet filtering
tertentu. Keunggulan lain adalah bahwa ketiga scan ini lebih tersembunyi bahkan
bila dibandingkan dengan SYN scan. Jangan mengandalkan hal ini karena
produk IDS modern dapat dikonfigurasi untuk mendeteksi mereka. Kelemahan utama
adalah tidak semua sistem mematuhi RFC 793 secara tepat. Sejumlah sistem
mengirim respon RST atas probe tanpa perduli apakah port terbuka atau tertutup.
Hal ini membuat seluruh port dianggap sebagai closed.
Sistem operasi utama yang melakukan hal ini adalah Microsoft Windows, banyak device Cisco devices,
BSDI, dan IBM OS/400. Scan ini tidak bekerja terhadap kebanyakan sistem berbasis Unix.
Kekurangan lainnya adalah scan ini tidak dapat membedakan antara
port open dengan port tertentu yang
filtered, memberikan anda tanggapan
open|filtered. -
-sA (TCP ACK scan)
Scan ini berbeda dengan yang telah didiskusikan sejauh ini yaitu ia
tidak pernah menentukan port open (or even
open|filtered). Ia digunakan untuk memetakan
aturan firewall, menentukan apakah mereka stateful atau tidak dan
port mana saja yang disaring. Paket probe scan ACK hanya memiliki flag ACK di-set (kecuali anda menggunakan
--scanflags). Ketika memeriksa sistem yang tidak disaring, port
open dan closed keduanya
akan mengembalikan paket RST. Nmap kemudian menandakan mereka sebagai
unfiltered, yang berarti mereka dapat dicapai oleh paket
ACK, namun belum dapat ditentukan apakah mereka open atau
closed. Port yang tidak menanggapi,
atau mengirim kembali pesan kesalahan ICMP (tipe 3, kode 1, 2, 3, 9, 10,
atau 13), dianggap sebagai filtered. -
-sW (TCP Window scan)
Window scan serupa dengan ACK scan kecuali bahwa ia
mengeksploitasi detil implementasi pada sistem tertentu yang membedakan port terbuka
dengan port tertutup, alih-alih selalu menampilkan
unfiltered ketika dikembalikan RST. Ia melakukan hal ini
dengan memeriksa field TCP Window paket RST yang dikembalikan. Pada beberapa sistem,
port terbuka menggunakan ukuran jendela positif (bahkan untuk paket RST) sementara
port tertutup memiliki jendela nol. Sehingga alih-alih selalu menampilkan
port sebagai unfiltered ketika menerima kembali RST,
Window scan menampilkan port sebagai open atau
closed jika nilai TCP Window dalam reset tersebut
positif atau nol. Scan ini mengandalkan detil implementasi sedikit sistem yang ada di Internet,
sehingga anda tidak dapat selalu mempercayainya. Sistem yang tidak mendukungnya
biasanya akan mengembalikan semua port sebagai closed.
Tentu saja, adalah mungkin mesin benar-benar tidak memiliki port terbuka.
Jika kebanyakan port yang diperiksa adalah closed namun beberapa angka port umum (seperti 22, 25, 53) adalah filtered, informasi
ini kemungkinan benar. Seringkali, sistem akan memberitahukan perilaku sebaliknya.
Jika scan anda menunjukkan bahwa 1000 port terbuka dan tiga port tertutup atau disaring,
maka ketiga port tersebut mungkin saja adalah port yang terbuka. -
-sM (TCP Maimon scan)
Scan Maimon dinamakan dengan nama penemunya,
Uriel Maimon.
Ia menjelaskan teknik ini dalam
Phrack Magazine issue #49 (November 1996).
Nmap, yang menyertakan teknik ini, dirilis dua isu kemudian.
Teknik ini sama persis dengan scan NULL, FIN, dan Xmas, kecuali
probenya adalah FIN/ACK. Menurut RFC 793 (TCP), paket RST
seharusnya dihasilkan sebagai tanggapan atas probe tersebut entah port terbuka atau
tertutup. Namun demikian, Uriel memperhatikan bahwa banyak sistem berbasis BSD
men-drop paket jika port terbuka. -
--scanflags (Custom TCP scan)
User Nmap mahir tidak perlu membatasi dirinya pada jenis scan yang tersedia secara baku. Opsi --scanflags memungkinkan anda merancang scan anda sendiri
dengan menspesifikasikan sembarang flag TCP..
Biarkan cairan kreatif anda mengalir, sementara mengakali
intrusion detection system
yang vendornya sekedar membaca man page Nmap menambahkan aturan khusus! Argumen --scanflags dapat berupa nilai flag numerik
seperti 9 (PSH dan FIN), namun menggunakan nama simbolik lebih
mudah. Gabungkan saja sembarang kombinasi URG,
ACK, PSH,
RST, SYN, dan
FIN. Sebagai contoh, --scanflags
URGACKPSHRSTSYNFIN menset semuanya, meskipun ia tidak terlalu
bermanfaat untuk pemeriksaan. Urutan spesifikasi tidaklah relevan. Selain dengan menspesifikasikan flag yang diinginkan, anda dapat pula
memberikan jenis scan TCP (seperti -sA atau -sF).
Jenis dasar tersebut memberitahu Nmap bagaimana menginterpretasikan respon. Sebagai
contoh, SYN scan menganggap no-response sebagai indikasi port
filtered, sementara FIN scan mengganggapnya sebagai
open|filtered. Nmap akan berperilaku sama
dengan jenis scan dasar, kecuali ia akan menggunakan flag TCP yang anda spesifikasikan
Jika anda tidak menspesifikasikan tipe dasar, akan digunakan SYN scan. -
-sI <zombie host>[:<probeport>] (idle scan)
Metode scan tingkat tinggi ini memungkinkan scan port TCP secara
tersembunyi (artinya tidak ada paket dikirim ke target dari alamat IP
anda yang sebenarnya). Alih-alih, serangan side-channel mengeksploitasi
pembuatan urutan ID fragmentasi IP yang mudah ditebak pada host zombi
untuk memperoleh informasi tentang port terbuka pada target.
Sistem IDS akan menampilkan scan berasal dari mesin zombi yang anda
spesifikasikan (yang harus up dan memenuhi beberapa kriteria).
Jenis scan menarik ini terlalu kompleks untuk dijelaskan dalam panduan
referensi ini, sehingga saya menulis dan menaruh paper informal dengan
detil penuh di http://nmap.org/book/idlescan.html.
Selain sangat tersembunyi (karena sifat
blind-nya), jenis scan ini mengijinkan pemetaan
relasi kepercayaan berbasis IP antar mesin. Daftar port
menampilkan port terbuka dari perspektif host zombi.
Sehingga anda dapat berusaha memeriksa target dengan menggunakan
beragam zombi yang anda anggap terpercaya
(melalui aturan router/packet filter).
Anda dapat menambah tanda titik dua diikuti nomor port
pada host zombi jika anda ingin memeriksa port tertentu pada zombi
untuk perubahan ID IP. Jika tidak Nmap akan menggunakan port
baku yang digunakan untuk ping TCP (80). -
-sO (IP protocol scan)
Scan protokol IP memungkinkan anda menentukan protokol IP mana
(TCP, ICMP, IGMP, dsb.) yang didukung oleh mesin target. Secara teknis
ini bukanlah scan port, karena ia menggunakan nomor protokol IP
alih-alih nomor port TCP atau UDP. Namun ia tetap menggunakan opsi
-p untuk memilih nomor protokol yang diperiksa, melaporkan
hasilnya dalam format tabel port normal, dan bahkan menggunakan
mesin scan yang sama dengan metode scanning port sebenarnya. Ia
cukup dekat dengan scan port sehingga berada di sini. Selain memiliki fungsi tertentu, scan protokol
mendemonstrasikan kekuatan software open-source. Meskipun ide dasarnya
cukup sederhana, saya tidak berpikir atau menerima permintaan untuk
menambah fungsionalitas semacam itu. Lalu pada musim panas tahun 2000,
Gerhard Rieger
menerima ide tersebut, menulis patch yang bagus untuk mengimplementasikannya,
dan mengirimnya ke milis
nmap-hackers.
Saya menggabungkan patch tersebut ke Nmap dan merilis versi baru
di hari berikutnya. Sedikit software komersial memiliki user yang cukup antusias
untuk merancang dan memberikan kontribusi perbaikan! Scan protocol bekerja dalam cara yang sama dengan scan UDP. Alih-alih
beriterasi atas field nomor port paket UDP, ia mengirim header paket IP
dan beriterasi pada field protokol IP delapan-bit.
Header biasanya kosong, tidak berisi data dan bahkan tiada header yang sesuai
untuk protokol yang diklaim. Tiga pengecualian adalah TCP,
UDP, dan ICMP. Header protokol yang sesuai untuk mereka disertakan
karena beberapa sistem tidak akan mengirimnya dan karena Nmap telah memiliki
fungsi untuk membuatnya. Alih-alih mengamati pesan ICMP port unreachable,
scan protocol mencari pesan ICMP protocol unreachable.
Bila Nmap menerima respon dalam sembarang protokol dari host target, Nmap menandai
protokol tersebut sebagai open. Kesalahan ICMP protocol unreachable (tipe 3, kode 2) menyebabkan protokol ditandai sebagai
closed. Kesalahan ICMP unreachable lainnya (tipe 3, kode
1, 3, 9, 10, atau 13) menyebabkan protokol ditandai
filtered (meskipun mereka membuktikan bahwa ICMP
open di waktu yang sama). Jika tidak menerima respon
setelah transmisi ulang, protokol ditandai sebagai
open|filtered -
-b <FTP relay host> (FTP bounce scan)
Satu fitur menarik protokol FTP (RFC 959) mendukung
koneksi FTP proxy. Hal ini memungkinkan user untuk koneksi ke satu server FTP,
lalu meminta file dikirimkan ke server pihak ketiga.
Fitur tersebut rentan terhadap penyalahgunaan di banyak tingkat,
sehingga banyak server berhenti mendukungnya. Salah satu penyalahgunaan
yang dibolehkan fitur ini adalah membuat server FTP melakukan scan port ke host lain.
Cukup minta server FTP mengirim sebuah file ke setiap port yang diinginkan pada host target.
Pesan kesalahan akan menjelaskan apakah port terbuka atau tidak.
Hal ini merupakan cara yang baik untuk melewati firewall karena
server FTP organisasi biasanya lebih memiliki akses ke host internal daripada
host Internet. Nmap mendukung scan bounce FTP dengan opsi -b option.
Ia mengambil argumen dalam bentuk
<username>:<password>@<server>:<port>.
<Server> adalah nama atau alamat IP server FTP yang rentan.
Sebagaimana dengan URL normal, anda dapat menghilangkan
<username>:<password>,
sehingga menggunakan login anonim (user:
anonymous password:-wwwuser@)
. Nomor port (dan tanda titik dua sebelumnya) dapat dihilangkan juga,
sehingga menggunakan port FTP baku (21) pada
<server>. Kerentanan ini meluas di tahun 1997 ketika Nmap dirilis,
namun telah diperbaiki. Server-server yang rentan masih ada,
sehingga patut dicoba bila teknik yang lainnya gagal. Jika tujuan anda
adalah melewati firewall, scan jaringan target untuk port 21 (atau
bahkan untuk sembarang layanan FTP jika anda scan seluruh port dengan deteksi
versi) yang terbuka, lalu coba scan bounce. Nmap akan memberitahu anda
apakah host rentan atau tidak. Jika anda hanya ingin menutupi
jejak anda, anda tidak perlu (dan bahkan tidak seharusnya) membatasi
diri anda pada host pada jaringan target. Sebelum anda memeriksa
alamat Internet acak untuk mencari server FTP yang rentan, pertimbangkan bahwa
sysadmin mungkin tidak akan menghargai anda menggunakan server mereka dengan cara ini.
|
|