NMAP(1)

NAMA
nmap - Tool eksplorasi jaringan dan keamanan / scanner port

SINOPSIS

nmap [Jenis Scan...] [Opsi] {spesifikasi target}

DESKRIPSI

Nmap (“Network Mapper”) merupakan sebuah tool open source untuk eksplorasi dan audit keamanan jaringan. Ia dirancang untuk memeriksa jaringan besar secara cepat, meskipun ia dapat pula bekerja terhadap host tunggal. Nmap menggunakan paket IP raw dalam cara yang canggih untuk menentukan host mana saja yang tersedia pada jaringan, layanan (nama aplikasi dan versi) apa yang diberikan, sistem operasi (dan versinya) apa yang digunakan, apa jenis firewall/filter paket yang digunakan, dan sejumlah karakteristik lainnya. Meskipun Nmap umumnya digunakan untuk audit keamanan, namun banyak administrator sistem dan jaringan menganggapnya berguna untuk tugas rutin seperti inventori jaringan, mengelola jadwal upgrade layanan, dan melakukan monitoring uptime host atau layanan.

Output Nmap adalah sebuah daftar target yang diperiksa, dengan informasi tambahannya tergantung pada opsi yang digunakan. Hal kunci di antara informasi itu adalah “tabel port menarik”. Tabel tersebut berisi daftar angka port dan protokol, nama layanan, dan status. Statusnya adalah terbuka (open), difilter (filtered), tertutup (closed), atau tidak difilter (unfiltered). Terbuka berarti bahwa aplikasi pada mesin target sedang mendengarkan (listening) untuk koneksi/paket pada port tersebut. Difilter berarti bahwa sebuah firewall, filter, atau penghalang jaringan lainnya memblokir port sehingga Nmap tidak dapat mengetahui apakah ia terbuka atau tertutup. Tertutup port tidak memiliki aplikasi yang sedang mendengarkan, meskipun mereka dapat terbuka kapanpun. Port digolongkan sebagai tidak difilter ketika mereka menanggapi probe Nmap, namun Nmap tidak dapat menentukan apakah mereka terbuka atau tertutup. Nmap melaporkan kombinasi status open|filtered dan closed|filtered ketika ia tidak dapat menentukan status manakah yang menggambarkan sebuah port. Tabel port mungkin juga menyertakan detil versi software ketika diminta melakukan pemeriksaan versi. Ketika sebuah pemeriksaan protokol IP diminta (-sO), Nmap memberikan informasi pada protokol IP yang didukung alih-alih port-port yang mendengarkan.

Selain tabel port yang menarik, Nmap dapat pula memberikan informasi lebih lanjut tentang target, termasuk nama reverse DNS, prakiraan sistem operasi, jenis device, dan alamat MAC.

Pemeriksaan Nmap yang umum ditunjukkan dalam Contoh 1. Argumen yang digunakan pada contoh ini hanyalah -A, untuk memeriksa sistem operasi dan versi, pemeriksaan skrip, dan traceroute; -T4 untuk eksekusi yang lebih cepat; dan dua buah nama host target.

Contoh 1. Sebuah gambaran pemeriksaan Nmap

    # nmap -A -T4 scanme.nmap.org
    Starting Nmap ( https://nmap.org )
    Interesting ports on scanme.nmap.org (64.13.134.52):
    Not shown: 994 filtered ports
    PORT    STATE  SERVICE VERSION
    22/tcp  open   ssh     OpenSSH 4.3 (protocol 2.0)
    25/tcp  closed smtp
    53/tcp  open   domain  ISC BIND 9.3.4
    70/tcp  closed gopher
    80/tcp  open   http    Apache httpd 2.2.2 ((Fedora))
    |_ HTML title: Go ahead and ScanMe!
    113/tcp closed auth
    Device type: general purpose
    Running: Linux 2.6.X
    OS details: Linux 2.6.20-1 (Fedora Core 5)
    TRACEROUTE (using port 80/tcp)
    HOP RTT   ADDRESS
    [Cut first seven hops for brevity]
    8   10.59 so-4-2-0.mpr3.pao1.us.above.net (64.125.28.142)
    9   11.00 metro0.sv.svcolo.com (208.185.168.173)
    10  9.93  scanme.nmap.org (64.13.134.52)
    Nmap done: 1 IP address (1 host up) scanned in 17.00 seconds

Versi terbaru Nmap dapat diperoleh dari https://nmap.org. Versi terbaru man page tersedia di https://nmap.org/book/man.html.

CATATAN TERJEMAHAN

Edisi bahasa Indonesia Nmap Reference Guide ini diterjemahkan dari versi [12855] versi Inggris[1] oleh Tedi Heriyanto. Meskipun kami berharap bahwa hal ini akan membuat Nmap lebih dapat diakses oleh para pengguna bahasa Indonesia di seluruh dunia, namun kami tidak dapat menjamin bahwa terjemahanan ini lengkap atau up-to-date seperti versi bahasa Inggris resminya. Pekerjaan ini dapat dimodifikasi dan didistribusikan kembali berdasarkan syarat-syarat Creative Commons Attribution License[2].

RINGKASAN OPSI

Ringkasan opsi ini ditampilkan ketika Nmap dijalankan tanpa argumen, dan versi terakhir selalu tersedia di https://nmap.org/data/nmap.usage.txt. Ia membantu mengingat opsi-opsi umum, namun ia bukanlah pengganti dokumentasi lengkap dalam halaman-halaman berikut manual ini. Bahkan beberapa opsi tersembunyi tidak disertakan di sini.

    Nmap 4.85BETA7 ( https://nmap.org )
    Usage: nmap [Scan Type(s)] [Options] {target specification}
    TARGET SPECIFICATION:
      Can pass hostnames, IP addresses, networks, etc.
      Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
      -iL <inputfilename>: Input from list of hosts/networks
      -iR <num hosts>: Choose random targets
      --exclude <host1[,host2][,host3],...>: Exclude hosts/networks
      --excludefile <exclude_file>: Exclude list from file
    HOST DISCOVERY:
      -sL: List Scan - simply list targets to scan
      -sP: Ping Scan - go no further than determining if host is online
      -PN: Treat all hosts as online -- skip host discovery
      -PS/PA/PU[portlist]: TCP SYN/ACK or UDP discovery to given ports
      -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
      -PO[protocol list]: IP Protocol Ping
      -n/-R: Never do DNS resolution/Always resolve [default: sometimes]
      --dns-servers <serv1[,serv2],...>: Specify custom DNS servers
      --system-dns: Use OS's DNS resolver
      --traceroute: Trace hop path to each host
    SCAN TECHNIQUES:
      -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
      -sU: UDP Scan
      -sN/sF/sX: TCP Null, FIN, and Xmas scans
      --scanflags <flags>: Customize TCP scan flags
      -sI <zombie host[:probeport]>: Idle scan
      -sO: IP protocol scan
      -b <FTP relay host>: FTP bounce scan
    PORT SPECIFICATION AND SCAN ORDER:
      -p <port ranges>: Only scan specified ports
        Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080
      -F: Fast mode - Scan fewer ports than the default scan
      -r: Scan ports sequentially - don't randomize
      --top-ports <number>: Scan <number> most common ports
      --port-ratio <ratio>: Scan ports more common than <ratio>
    SERVICE/VERSION DETECTION:
      -sV: Probe open ports to determine service/version info
      --version-intensity <level>: Set from 0 (light) to 9 (try all probes)
      --version-light: Limit to most likely probes (intensity 2)
      --version-all: Try every single probe (intensity 9)
      --version-trace: Show detailed version scan activity (for debugging)
    SCRIPT SCAN:
      -sC: equivalent to --script=default
      --script=<Lua scripts>: <Lua scripts> is a comma separated list of
               directories, script-files or script-categories
      --script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts
      --script-trace: Show all data sent and received
      --script-updatedb: Update the script database.
    OS DETECTION:
      -O: Enable OS detection
      --osscan-limit: Limit OS detection to promising targets
      --osscan-guess: Guess OS more aggressively
    TIMING AND PERFORMANCE:
      Options which take <time> are in milliseconds, unless you append 's'
      (seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).
      -T<0-5>: Set timing template (higher is faster)
      --min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes
      --min-parallelism/max-parallelism <numprobes>: Probe parallelization
      --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Specifies
          probe round trip time.
      --max-retries <tries>: Caps number of port scan probe retransmissions.
      --host-timeout <time>: Give up on target after this long
      --scan-delay/--max-scan-delay <time>: Adjust delay between probes
      --min-rate <number>: Send packets no slower than <number> per second
      --max-rate <number>: Send packets no faster than <number> per second
    FIREWALL/IDS EVASION AND SPOOFING:
      -f; --mtu <val>: fragment packets (optionally w/given MTU)
      -D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys
      -S <IP_Address>: Spoof source address
      -e <iface>: Use specified interface
      -g/--source-port <portnum>: Use given port number
      --data-length <num>: Append random data to sent packets
      --ip-options <options>: Send packets with specified ip options
      --ttl <val>: Set IP time-to-live field
      --spoof-mac <mac address/prefix/vendor name>: Spoof your MAC address
      --badsum: Send packets with a bogus TCP/UDP checksum
    OUTPUT:
      -oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,
         and Grepable format, respectively, to the given filename.
      -oA <basename>: Output in the three major formats at once
      -v: Increase verbosity level (use twice or more for greater effect)
      -d[level]: Set or increase debugging level (Up to 9 is meaningful)
      --reason: Display the reason a port is in a particular state
      --open: Only show open (or possibly open) ports
      --packet-trace: Show all packets sent and received
      --iflist: Print host interfaces and routes (for debugging)
      --log-errors: Log errors/warnings to the normal-format output file
      --append-output: Append to rather than clobber specified output files
      --resume <filename>: Resume an aborted scan
      --stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML
      --webxml: Reference stylesheet from Nmap.Org for more portable XML
      --no-stylesheet: Prevent associating of XSL stylesheet w/XML output
    MISC:
      -6: Enable IPv6 scanning
      -A: Enables OS detection and Version detection, Script scanning and Traceroute
      --datadir <dirname>: Specify custom Nmap data file location
      --send-eth/--send-ip: Send using raw ethernet frames or IP packets
      --privileged: Assume that the user is fully privileged
      --unprivileged: Assume the user lacks raw socket privileges
      -V: Print version number
      -h: Print this help summary page.
    EXAMPLES:
      nmap -v -A scanme.nmap.org
      nmap -v -sP 192.168.0.0/16 10.0.0.0/8
      nmap -v -iR 10000 -PN -p 80
    SEE THE MAN PAGE (https://nmap.org/book/man.html) FOR MORE OPTIONS AND EXAMPLES

SPESIFIKASI TARGET

Semua yang ada pada perintah baris Nmap yang bukan berupa opsi (atau argumen opsi) dianggap sebagai spesifikasi host target. Kasus paling sederhana adalah menspesifikasikan alamat IP target atau nama host untuk diperiksa.

Terkadang anda ingin memeriksa seluruh jaringan host-host yang berdekatan. Untuk hal ini, Nmap mendukung pengalamatan CIDR-style. Anda dapat menambahkan /numbits ke sebuah alamat IPv4 atau nama host dan Nmap akan memeriksa setiap alamat IP yang alamat numbits pertamanya sama dengan alamat IP referensi atau nama host yang diberikan. Sebagai contoh, 192.168.10.0/24 akan memeriksa 256 host antara 192.168.10.0 (biner: 11000000 10101000 00001010 00000000) dan 192.168.10.255 (biner: 11000000 10101000 00001010 11111111), inklusif. 192.168.10.40/24 akan memeriksa target-target yang sama. Misalkan host scanme.nmap.org memiliki alamat IP 64.13.134.52, spesifikasi scanme.nmap.org/16 akan memeriksa sebanyak 65.536 alamat IP antara 64.13.0.0 dan 64.13.255.255. Nilai terkecil yang diijinkan adalah /0, yang akan memeriksa seluruh Internet. Nilai terbesar adalah /32, yang hanya akan memeriksa host atau alamat IP yang disebutkan karena seluruh bit alamat tetap.

Notasi CIDR pendek namun tidak selalu fleksibel. Sebagai contoh, anda mungkin ingin memeriksa 192.168.0.0/16 namun ingin melewati IP yang diakhiri dengan .0 atau .255 karena mereka mungkin digunakan sebagai subnet jaringan dan alamat broadcast. Nmap mendukung hal ini melalui pengalamatan rentang oktet. Alih-alih menspesifikasikan alamat IP normal, anda dapat menspesifikasikan daftar angka atau rentang untuk setiap oktet. Sebagai contoh, 192.168.0-255.1-254 akan melewati seluruh alamat dalam rentang yang berakhiran dalam .0 atau .255, dan 192.168.3-5,7.1 akan memeriksa empat alamat 192.168.3.1, 192.168.4.1, 192.168.5.1, dan 192.168.7.1. Kedua sisi rentang dapat dihilangkan; nilai baku adalah 0 di sisi kiri dan 255 untuk sisi kanan. Penggunaan - sama artinya dengan 0-255, namun ingat untuk menggunakan 0- dalam oktet pertama sehingga spesifikasi target tidak terlihat seperti opsi perintah baris. Rentang tidak hanya terbatas pada oktet akhir: 0-255.0-255.13.37 akan melakukan pemeriksaan Internet-wide untuk seluruh alamat IP yang berakhiran 13.37. Sampling luas seperti ini dapat bermanfaat untuk riset dan survei Internet.

Alamat IPv6 hanya dapat dispesifikasikan dengan alamat IPv6 lengkap mereka atau nama host. CIDR dan rentang oktet tidak didukung untuk IPv6 karena mereka jarang bermanfaat.

Nmap menerima spesifikasi banyak host pada perintah baris, dan mereka tidak perlu dalam jenis yang sama. Perintah nmap scanme.nmap.org 192.168.0.0/8 10.0.0,1,3-7.- melakukan apa yang anda harapkan.

Meskipun target biasanya dispesifikasikan pada perintah baris, opsi berikut juga tersedia untuk mengendalikan pemilihan target:

-iL inputfilename (Input dari daftar)
    Membaca spesifikasi target dari inputfilename. Memberikan banyak daftar host pada perintah baris seringkali tidak mengasyikkan. Sebagai contoh, DHCP server anda mungkin mengekspor daftar 10.000 lease saat ini yang ingin anda periksa. Atau mungkin anda ingin memeriksa seluruh alamat IP kecuali bagi mereka untuk mencari host yang menggunakan alamat IP statik tidak terotorisasi. Cukup buat daftar host yang ingin diperiksa dan berikan namafilenya ke Nmap sebagai sebuah argumen bagi opsi -iL. Entrinya dapat dalam beragam format yang diterima oleh Nmap di perintah baris (alamat IP, nama host, CIDR, IPv6, atau rentang oktet). Setiap entri harus dipisahkan dengan satu atau lebih spasi, tab, atau baris baru. Anda dapat menspesifikasikan sebuah tanda hubung (hyphen) (-) sebagai nama file jika anda ingin Nmap membaca host dari input standar alih-alih dari sebuah file.

-iR num hosts (Pilih target acak)
    Untuk survei dan riset lain skala-Internet, anda mungkin ingin memilih target secara acak. Argumen num hosts memberitahu Nmap berapa banyak IP yang ingin dihasilkan. IP yang tidak diinginkan seperti dalam rentang alamat privat, multicast, atau tidak dialokasi secara otomatis akan dilewati. Argumen 0 dapat dispesifikasikan untuk pemeriksaan yang tidak pernah berakhir. Perhatikan bahwa beberapa administrator jaringan tidak suka terhadap pemeriksaan yang tidak terotorisasi terhadap jaringan mereka dan mungkin mengeluh. Gunakan opsi ini dengan risiko anda! Jika anda benar-benar merasa bosan di sore hari yang hujan, coba perintah nmap -sS -PS80 -iR 0 -p 80 untuk mencari server web acak untuk browsing.

--exclude host1[,host2[,...]] (Kecualikan host/jaringan)
    Spesifikasikan daftar target yang ingin dikecualikan dari pemeriksaan meskipun mereka merupakan bagian dari rentang jaringan yang anda spesifikasikan. Daftar yang anda berikan menggunakan sintaks Nmap normal, sehingga ia dapat mencakup nama host, blok CIDR, rentang oktet, dsb. Hal ini dapat bermanfaat ketika jaringan yang ingin anda periksa menyertakan server-server kritis, sistem yang diketahui terganggu dengan port scan, atau subnet yang dikelola oleh pihak lain.

--excludefile exclude_file (Daftar pengecualian dari file)
    Opsi ini memberikan fungsionalitas yang sama dengan opsi --exclude, namun target yang dikecualikan diberikan dalam sebuah exclude_file alih-alih diberikan pada perintah baris.

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[3]. 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[4]) 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[5], 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.

DASAR SCANNING PORT

Meskipun selama ini Nmap telah mengalami perkembangan fungsionalitas, namun ia bermula sebagai sebuah scanner port yang efisien, dan hal itu tetap menjadi fungsi utamanya. Perintah sederhana nmap target akan memeriksa lebih dari 1660 port TCP pada host target. Ketika banyak scanner port secara tradisional membagi seluruh port ke dalam status terbuka (open) atau tertutup (closed), Nmap lebih granular. Ia membagi port menjadi enam status : open, closed, filtered, unfiltered, open|filtered, or closed|filtered.

Status ini bukan merupakan properti intrinsik dari port itu sendiri, namun menggambarkan bagaimana Nmap memandang mereka. Sebagai contoh, scan Nmap dari jaringan yang sama dengan target mungkin menampilkan port 135/tcp sebagai terbuka, sementara scan yang sama pada waktu dan opsi yang sama dari Internet mungkin menunjukkan bahwa port tersebut filtered.

Enam status port yang dikenali Nmap

open
    Sebuah aplikasi secara aktif menerima koneksi paket TCP atau UDP pada port ini. Menemukan port terbuka ini seringkali merupakan tujuan utama scanning port. Orang dengan pikiran keamanan (security-minded) tahu bahwa setiap port terbuka merupakan celah untuk serangan. Penyerang dan pen-testers ingin mengeksploitasi port terbuka, namun administrator berusaha menutup atau melindungi mereka dengan firewall tanpa mengganggu user yang berhak. Port terbuka juga menarik bagi scan bukan keamanan karena mereka memberitahu layanan yang dapat digunakan pada jaringan.

closed
    Port tertutup dapat diakses (ia menerima dan menanggapi paket probe Nmap), namun tidak ada aplikasi yang mendengarkan padanya. Mereka bermanfaat dengan menunjukkan bahwa host up pada alamat IP tersebut (host discovery, atau ping scanning), dan sebagai bagian deteksi SO. Oleh karena port tertutup dapat dijangkau, bermanfaat untuk mencoba scan di waktu yang lain jikalau port tersebut terbuka. Administrator mungkin perlu mempertimbangkan untuk memblok port tersebut dengan firewall. Lalu mereka akan muncul dalam status filtered, yang akan didiskusikan.

filtered
    Nmap tidak dapat menentukan apakah port terbuka karena packet filtering mencegah probenya mencapai port. Filter ini dapat dilakukan oleh device firewall, aturan pada router, atau software firewall pada host. Port ini membuat penyerang frustrasi karena mereka memberikan sedikit informasi. Terkadang mereka menanggapi dengan pesan kesalahan ICMP misalnya tipe 3 kode 13 (tujuan tidak dapat dicapai: komunikasi dilarang secara administratif), namun yang lebih umum adalah filter yang hanya men-drop probe tanpa memberi tanggapan. Hal ini memaksa Nmap berusaha beberapa kali untuk memastikan probe tidak di-drop akibat jaringan yang padat. Hal ini sangat memperlambat proses scan.

unfiltered
    Status unfiltered berarti bahwa port dapat diakses, namun Nmap tidak dapat menentukan apakah ia open atau closed. Hanya scan ACK, yang digunakan untuk mengetahui aturan firewall, menggolongkan port ke dalam status ini. Pemeriksaan port unfiltered dengan tipe pemeriksaan lain seperti Window scan, SYN scan, atau FIN scan, dapat membantu mengetahui apakah port terbuka.

open|filtered
    Nmap menganggap port dalam status ini bila ia tidak dapat menentukan apakah port open atau filtered. Hal ini terjadi untuk jenis pemeriksaan ketika port terbuka tidak memberi respon. Tidak adanya tanggapan dapat pula berarti bahwa packet filter men-drop probe atau respon yang diberikan. Sehingga Nmap tidak dapat mengetahui dengan tepat apakah port terbuka atau difilter. Scan UDP, IP protocol, FIN, NULL, dan Xmas mengklasifikasikan port dengan cara ini.

closed|filtered
    Status ini digunakan ketika Nmap tidak dapat menentukan apakah port tertutup atau di-filter. Ia hanya digunakan pada scan idle ID IP.

TEKNIK SCANNING PORT

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 -sC, 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[6] 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[7] 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[7] (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 https://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[8]) 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.

SPESIFIKASI PORT DAN URUTAN SCAN

Selain menawarkan semua metode scan yang telah dijelaskan sebelumnya, Nmap juga memberikan opsi untuk menspesifikasikan port mana yang ingin diperiksa dan apakah urutan scan secara acak atau berurutan. Secara baku, Nmap memeriksa 1.000 port untuk setiap protokol yang paling umum.

-p port ranges (Hanya memeriksa port yang dispesifikasikan)
    Opsi ini menentukan port yang ingin anda periksa dan meniadakan nilai baku. Nomor port individu adalah OK, dan juga rentang yang dipisahkan oleh tanda sambung (misaln 1-1023). Nilai awal dan/atau akhir sebuah rentang dapat dihilangkan, Nmap lalu akan menggunakan 1 dan 65535. Jadi anda dapat memberikan opsi -p- untuk memeriksa port dari 1 hingga 65535. Anda diperbolehkan memeriksa port nol jika anda menspesifikasikannya secara eksplisit. Untuk pemeriksaan protokol IP (-sO), opsi ini menspesifikasikan nomor protokol yang ingin anda periksa (0–255).

    Ketika memeriksa port TCP dan UDP, anda dapat menentukan protokol tertentu dengan menambahkan T: atau U: di depan nomor port. Qualifier ini berlaku hingga anda menspesifikasikan qualifier lain. Sebagai contoh, argumen -p U:53,111,137,T:21-25,80,139,8080 akan memeriksa port UDP 53, 111,dan 137, dan juga port TCP yang disebutkan. Untuk memeriksa UDP dan TCP, anda harus menspesifikasikan -sU dan paling tidak satu jenis scan TCP (seperti -sS, -sF, atau -sT). Jika tidak diberikan qualifier protokol, nomor port akan ditambahkan ke seluruh daftar protokol. Port dapat juga dispesifikasikan dengan nama sesuai dengan apa yang diacu dalam file nmap-services. Anda bahkan dapat menggunakan wildcard * dan ? dengan nama. Sebagai contoh, untuk memeriksa port FTP dan seluruh port yang namanya dimulai dengan “http”, gunakan -p ftp,http*. Berhati-hatilah dengan ekspansi shell dan berilah tanda kutip pada argumen -p jika tidak yakin.

    Rentang port dapat dikelilingi oleh tanda kurung siku (square bracket) untuk mengindikasikan port yang berada di dalam rentang tersebut yang ada dalam nmap-services. Sebagai contoh, opsi berikut ini akan memeriksa seluruh port dalam nmap-services yang kurang dari sama dengan 1024: -p [-1024]. Berhati-hatilah dengan ekspansi shell dan berilah tanda kutip pada argumen -p jika tidak yakin.

-F (Fast (limited port) scan)
    Memberitahukan bahwa anda ingin memeriksa lebih sedikit port daripada jumlah baku. Normalnya Nmap memeriksa 1.000 port umum untuk setiap protokol yang diperiksa. Dengan -F, jumlahnya dikurangi menjadi 100.

    Nmap membutuhkan file nmap-services dengan informasi frekuensi untuk mengetahui port yang paling umum . Jika informasi frekuensi port tidak tersedia, mungkin karena penggunaan file nmap-services kustom, -F berarti memeriksa hanya port yang ada di dalam file services (normalnya Nmap memeriksa seluruh port yang memiliki nama dan port 1–1024).

-r (Jangan randomisasi port)
    Secara baku, Nmap merandomisasi urutan port yang diperiksa (kecuali port tertentu yang biasa diakses dipindahkan ke awal untuk alasan efisiensi). Randomisasi ini biasanya diinginkan,namun anda dapat memberikan opsi -r untuk pemeriksaan port secara berurutan.

--port-ratio <angka desimal antara 0 dan 1>
    Memeriksa seluruh port dalam file nmap-services dengan rasio lebih daripada angka yang diberikan sebagai argumen.

--top-ports <integer 1 atau lebih>
    Memeriksa port-port dengan rasio tertinggi N yang ditemukan dalam file nmap-services.

DETEKSI VERSI DAN LAYANAN

Arahkan Nmap ke mesin remote dan ia dapat memberitahu anda bahwa port 25/tcp, 80/tcp, dan 53/udp terbuka. Dengan menggunakan database nmap-services yang berisi lebih dari 2.200 layanan yang dikenal, Nmap akan melaporkan bahwa port tersebut mungkin adalah server mail (SMTP), server web (HTTP), dan name server (DNS). Pencocokan ini biasanya akurat- sebagian besar daemon yang mendengarkan TCP port 25 adalah, mail server. Namun demikian, anda tidak seharusnya terpaku pada hal ini! Orang-orang dapat dan menjalankan layanan pada port-port aneh.

Bahkan bila Nmap benar, dan server hipotetis di atas menjalankan server SMTP, HTTP, dan DNS, itu bukanlah informasi yang banyak. Ketika melakukan vulnerability assessment (atau inventori jaringan) atas perusahaan atau klien anda, anda benar-benar ingin mengetahui server mail dan DNS mana serta versi apa yang dijalankan. Dengan memiliki angka versi yang akurat akan membantu secara dramatis dalam menentukan eksploitasi yang tepat terhadap server tersebut. Deteksi versi membantu anda memperoleh informasi ini.

Setelah port TCP dan/atau UDP ditemukan dengan menggunakan salah satu metode scan, deteksi versi menginterogasi port tersebut untuk menentukan lebih jauh mengenai apa yang sedang berjalan. Database nmap-service-probes berisikan probe untuk melakukan query ke sejumlah layanan dan ekspresi pencocokan untuk mengenali dan memproses respon. Nmap berusaha menentukan protokol layanan (misalnya FTP, SSH, Telnet, HTTP), nama aplikasi (misalnya ISC BIND, Apache httpd, Solaris telnetd), angka versi, nama host, jenis device (misal printer, router), keluarga SO (misal Windows, Linux) dan terkadang detil lainnya seperti apakah X server terbuka untuk koneksi, versi protokol SSH, atau nama user KaZaA). Tentu saja, kebanyakan layanan tidak memberikan informasi ini. Jika Nmap dikompilasi dengan dukungan OpenSSL, ia akan koneksi ke server SSL untuk mendapatkan layanan yang berada di belakang lapisan enkripsi. Ketika ditemukan layanan RPC, Nmap RPC grinder (-sR) secara otomatis digunakan untuk menentukan program dan angka versi RPC. Beberapa port UDP diinformasikan dalam status open|filtered setelah scan port UDP tidak dapat menentukan apakah port terbuka atau disaring. Deteksi versi akan berusaha memperoleh respon dari port ini (sebagaimana dari port terbuka), dan merubah status port menjadi terbuka bila ia berhasil. Port TCP open|filtered diperlakukan dalam cara yang sama. Perhatikan bahwa opsi -A di antaranya mengaktifkan deteksi versi. Sebuah paper yang mendokumentasikan cara kerja, penggunaan, dan kustomisasi deteksi versi tersedia di https://nmap.org/book/vscan.html.

Bila Nmap menerima respon dari sebuah layanan namun tidak dapat mencocokkannya ke database, ia akan mencetak fingerprint khusus dan sebuah URL untuk menyerahkannya bila anda tahu secara pasti apa yang berjalan pada port tersebut. Mohon meluangkan waktu beberapa menit untuk menyerahkannya sehingga dapat bermanfaat bagi semua orang. Berkat penyerahan ini, Nmap memiliki sekitar 3.000 pola yang sesuai untuk lebih dari 350 protokol seperti SMTP, FTP, HTTP, dsb.

Deteksi versi diaktifkan dan dikendalikan dengan opsi-opsi berikut:

-sV (Deteksi Versi)
    Mengaktifkan deteksi versi, seperti yang dijelaskan di atas. Anda dapat pula menggunakan -A, yang salah satunya mengaktifkan deteksi versi.

--allports (Sertakan seluruh port dalam deteksi versi)
    Secara baku, deteksi versi Nmap melewati TCP port 9100 karena beberapa printer akan mencetak segala yang dikirim ke port itu, berakibat puluhan halaman request HTTP GET, sesi biner SSL, dsb. Perilaku ini dapat diubah dengan memodifikasi atau menghapus direktif Exclude dalam nmap-service-probes, atau anda dapat menspesifikasikan --allports untuk memeriksa seluruh port tanpa mengindahkan direktif Exclude.

--version-intensity intensity (Menset intensitas pemeriksaan versi)
    Ketika melakukan pemeriksaan versi (-sV), Nmap mengirim serangkaian probe, dan setiap probe diberi nilai antara satu dan sembilan. Probe dengan nomor rendah efektif terhadap beragam layanan umum, sementara nomor lebih tinggi jarang berguna. Level intensitas menspesifikasikan probe mana yang harus diaplikasikan. Semakin tinggi angkanya, semakin mungkin layanan diidentifikasi dengan benar. Namun demikian, scan dengan intensitas tinggi membutuhkan waktu yang lebih lama. Intensitas harus antara 0 dan 9. Nilai bakunya adalah 7. Ketika sebuah probe didaftarkan ke port target melalui direktif nmap-service-probes ports, probe tersebut akan dicoba tanpa memperdulikan level intensitas. Hal ini memastikan bahwa probe DNS akan selalu dicoba terhadap sembarang port terbuka 53, probe SSL akan dilakukan terhadap port 443, dst.

--version-light (Aktifkan mode ringan)
    Opsi ini merupakan alias dari --version-intensity 2. Mode ringan ini membuat pemeriksaan versi lebih cepat, namun mungkin kurang dapat mengidentifikasi layanan.

--version-all (Coba semua probe tunggal)
    Sebuah alias bagi --version-intensity 9, memastikan bahwa setiap probe tunggal dicoba terhadap setiap port.

--version-trace (Melacak aktivitas pemeriksaan versi)
    Hal ini membuat Nmap mencetak info debugging yang ekstensif tentang pemeriksaan versi yang sedang dilakukan. Ia merupakan subset dari --packet-trace.

-sR (RPC scan)
    Metode ini bekerja sama dengan beragam metode pemeriksaan port Nmap. Ia menggunakan seluruh port TCP/UDP yang terbuka dan membanjiri mereka dengan perintah NULL program SunRPC dalam usaha menentukan apakah mereka adalah port RPC, dan bila ya, menentukan program dan nomor versinya. Karenanya anda dapat secara efektif memperoleh info yang sama dengan rpcinfo -p bahkan bila portmapper target berada di belakang firewall (atau dilindungi oleh TCP wrapper). Saat ini tidak dapat menggunakan umpan dalam RPC scan. Ia secara otomatis diaktifkan sebagai bagian pemeriksaan versi (-sV) jika anda memintanya. Oleh karena deteksi versi menyertakannya dan jauh lebih lengkap, -sR jarang dibutuhkan.

DETEKSI SO

Salah satu fitur Nmap yang paling dikenal adalah deteksi SO dengan menggunakan fingerprint stack TCP/IP. Nmap mengirimkan serangkaian paket TCP dan UDP ke host remote dan menguji setiap bit paket responnya. Setelah melakukan serangkaian test seperti sampling TCP ISN, dukungan dan urutan opsi TCP, sampling ID IP, dan pemeriksaan ukuran jendela awal, Nmap membandingkan hasilnya ke database nmap-os-db yang berisi lebih dari seribu fingerprint SO yang dikenal dan mencetak detil SO bila terjadi kesesuaian. Setiap fingerprint menyertakan deskripsi SO tekstual dalam format bebas, klasifikasi yang memberikan nama vendor (misalnya Sun), SO di bawahnya (misalnya Solaris), generasi OS (misalnya 10), dan jenis device (fungsi umum, router, switch, konsol game, dsb.).

Jika Nmap tidak dapat menduga SO mesin, dan kondisinya bagus (misalnya paling tidak ditemukan satu port terbuka dan tertutup), Nmap akan memberikan URL yang dapat anda gunakan untuk menyerahkan fingerprint jika anda tahu (dengan pasti) SO yang berjalan di mesin itu. Dengan melakukan hal ini anda berkontribusi ke database sistem operasi yang dikenali Nmap dan karenanya ia akan lebih akurat.

Deteksi SO mengaktifkan beberapa tes lain yang menggunakan informasi yang dikumpulkan selama proses. Salah satunya adalah TCP Sequence Predictability Classification. Ukuran ini menentukan seberapa sulit memalsukan koneksi TCP ke host remote. Ia bermanfaat dalam mengeksploitasi relasi trust berbasis IP-sumber (rlogin, filter firewall, dsb) atau untuk menyembunyikan sumber serangan. Spoofing jenis ini jarang dilakukan lagi, namun banyak mesin masih rentan terhadapnya. Angka kesulitan aktualnya berdasarkan pada sampling statistik dan mungkin berfluktuasi. Umumnya lebih baik menggunakan klasifikasi bahasa Inggris seperti “worthy challenge” or “trivial joke”. Hal ini hanya dilaporkan dalam output normal dalam mode verbose (-v). Ketika digunakan mode verbose bersama dengan -O, pembuatan urutan ID IP ID juga dilaporkan. Kebanyakan mesin berada dalam kelas “incremental”, yang berarti mereka menaikkan field ID dalam header IP untuk setiap paket yang mereka kirim. Hal ini membuat mereka rentan atas beberapa serangan spoofing dan pengumpulan informasi tingkat tinggi.

Informasi ekstra lain yang disertakan dalam deteksi SO adalah menduga waktu uptime target. Tekniknya menggunakan opsi timestamp TCP (RFC 1323[9]) untuk menduga waktu terakhir mesin direboot. Dugaan dapat tidak akurat akibat counter timestamp tidak diinisialisasi ke nol atau counter overflow dan kembali ke awal, sehingga ia hanya dicetak dalam mode verbose.

Sebuah paper yang mendokumentasikan cara kerja, penggunaan, dan kustomisasi deteksi SO tersedia di https://nmap.org/book/osdetect.html.

Deteksi SO diaktifkan dan dikendalikan dengan opsi-opsi berikut:

-O (Aktifkan deteksi SO)
    Aktifkan deteksi SO, seperti didiskusikan di atas. Anda dapat juga menggunakan -A untuk mengaktifkan deteksi SO dan hal lainnya.

--osscan-limit (Batasi deteksi SO untuk target yang menjanjikan)
    Deteksi SO jauh lebih efektif bila ditemukan paling tidak satu port TCP terbuka dan tertutup. Set opsi ini dan Nmap tidak akan melakukan deteksi SO terhadap host yang tidak memenuhi kriteria ini. Hal ini dapat menghemat waktu, terutama pada pemeriksaan -PN atas banyak host. Ia hanya penting ketika deteksi SO diminta dengan opsi -O atau -A.

--osscan-guess; --fuzzy (Duga hasil deteksi SO)
    Ketika Nmap tidak dapat mendeteksi SO secara tepat, ia terkadang memberikan kemungkinan terdekat. Tebakan yang cocok harus sangat dekat agar dilakukan secara baku oleh Nmap. Semua opsi ekivalen ini membuat Nmap menduga dengan lebih agresif. Nmap tetap akan memberitahu anda ketika kecocokan tidak sempurna dicetak dan menampilkan tingkat kepercayaan (persentase) untuk setiap dugaan.

--max-os-tries (Menset jumlah usaha maksimum deteksi SO atas target)
    Ketika Nmap melakukan deteksi SO terhadap target dan gagal menemukan kecocokan sempurna, ia biasanya mengulang usahanya. Secara baku, Nmap berusaha lima kali jika kondisi memungkinkan penyerahan fingerprint SO, dan dua kli ketika kondisi tidak begitu baik. Menspesifikasikan nilai --max-os-tries yang lebih rendah (seperti 1) mempercepat Nmap, meski anda kehilangan usaha yang secara potensial dapat mengindentifikasi SO. Anda dapat pula menset perulangan yang lebih banyak ketika kondisi lebih baik. Hal ini jarang dilakukan, kecuali untuk menghasilkan fingerprint yang lebih baik untuk penyerahan dan integrasi ke database SO Nmap.

NMAP SCRIPTING ENGINE (NSE)

Nmap Scripting Engine (NSE) adalah salah satu fitur Nmap yang paling powerful dan fleksibel. Ia memungkinkan user untuk menulis (dan membagi) skrip sederhana (menggunakan bahasa pemrograman Lua[10], ) untuk mengotomasi beragam tugas jaringan. Skrip-skrip tersebut dieksekusi secara parale dengan kecepatan dan efisiensi yang anda harapkan dari Nmap. User dapat mengandalkan beragam skrip yang didistribusikan dengan Nmap, atau menulis sendiri sesuai kebutuhan.

Tugas-tugas yang kami pikirkan ketika membuat sistem termasuk penemuan jaringan, deteksi versi yang lebih canggih, deteksi kerentanan. NSE bahkan dapat digunakan untuk eksploitasi kerentanan.

Untuk mencerminkan penggunaan yang berbeda dan untuk memudahkan pilihan skrip yang diinginkan, setiap skrip berisi field yang mengasosiasikannya dengan satu atau lebih kategori. Kategori yang ada saat ini adalah safe, intrusive, malware, version, discovery, vuln, auth, and default. These are all described at https://nmap.org/book/nse-usage.html#nse-categories.

Nmap Scripting Engine dijelaskan lebih rinci di https://nmap.org/book/nse.html dan dikendalikan oleh opsi-opsi berikut ini:

-sC
    Melakukan scan skrip menggunakan sejumlah skrip baku. Ia merupakan ekivalen --script=default. Beberapa skrip dalam kategori ini dianggap intrusif dan tidak seharusnya dijalankan terhadap jaringan target tanpa ijin.

--script script-categories|directory|filename|all
    Menjalankan scan skrip (seperti -sC) menggunakan daftar kategori skrip, skrip individual, atau direktori berisikan skrip, aih-alih menggunakan set baku. Nmap akan mencoba dulu menginterpretasikan argumen sebagai kategori, kemudian sebagai file atau direktori. Skrip atau direktori skrip dapat dispesifikasikan dengan path absolut atau relatif. Path absolut digunakan seperti yang diberikan. Path relatif akan dicari dalam tempat-tempat berikut hingga ditemukan : --datadir/; $NMAPDIR/; ~/.nmap/ (tidak dicari pada Windows); NMAPDATADIR/ or ./. A scripts/ subdirektori juga dicari untuk setiap direktori ini.

    Jika diberikan sebuah direktori dan ditemukan, Nmap memuat seluruh skrip NSE (semua nama file yang berakhiran dengan .nse) dari direktori tersebut. Nama file tanpa ekstensi nse akan diabaikan. Nmap tidak mencari secara rekursif ke subdirektori untuk mencari skrip. Jika diberikan nama file individual, ekstensi file tidak perlu harus nse.

    Skrip Nmap secara baku disimpan dalam subdirektori scripts direktori data Nmap (lihat https://nmap.org/book/data-files.html). Demi efisiensi, skrip diindeks dalam database yang disimpan dalam scripts/script.db. yang mendaftar kategori atau kategori-kategori yang dimiliki skrip. Berikan argumen all untuk menjalankan seluruh skrip dalam database skrip Nmap.

    Skrip berbahaya tidak dijalankan dalam sandbox dan karenanya dapat merusak sistem anda atau menggangu privasi anda. Jangan pernah menjalankan skrip dari pihak ketiga kecuali anda mempercayai penulisnya atau telah mengaudit skrip tersebut dengan cermat.

--script-args name1=value1,name2={name3=value3},name4=value4
    Membolehkan anda memberik argumen ke skrip NSE. Argument diberikan sebagai pasangan name=value. Argumen yang diberikan diproses dan disimpan dalam tabel Lua, yang dapat diakses oleh semua skrip. Nama-nama dianggap sebagai string (yang harus berupa nilai alfanumerik) dan digunakan sebagai kunci dalam argument-table. Nilai dapat berupa string atau tabel (dilingkupi oleh ‘{’ dan ‘}’). Sebagai contoh, anda dapat memberikan argumen : user=bar,pass=foo,whois={whodb=nofollow+ripe}. Argumen string secara potensial digunakan oleh beberapa skrip; subtables normalnya hanya digunakan oleh satu skrip. Dalam skrip yang menggunakan subtable, ia dinamakan sesuai dengan nama skripnya (seperti whois dalam contoh ini).

--script-trace
    Opsi ini melakukan apa yang dilakukan oleh --packet-trace, namun satu tingkat ISO lebih tinggi. Jika diberikan opsi ini seluruh komunikasi incoming dan outgoing yang dilakukan skrip akan dicetak. Informasi yang ditampilkan mencakup protokol komunikasi, sumber, target dan data yang ditransmisikan. Jika lebih dari 5% seluruh data yang ditransmisikan tidak dapat dicetak, maka output trace dalam format hex. --packet-trace juga mengaktifkan tracing skrip.

--script-updatedb
    Opsi ini mengupdate database skrip yang ditemukan dalam scripts/script.db yang digunakan Nmap untuk menentukan skrip baku dan kategori yang tersedia. Opsi ini digunakan bila anda menambah atau mengurangi skrip NSE dari direktori baku scripts atau bila anda merubah kategori sembarang skrip. Opsi ini biasanya digunakan sendirian: nmap --script-updatedb.

PEWAKTUAN DAN KINERJA

Salah satu prioritas pengembangan tertinggi Nmap adalah kinerja. Scan baku (nmap hostname) sebuah host pada jaringan lokal saya membutuhkan seperlima detik. Hal tersebut cukup cepat, namun tambahkan bila anda memeriksa ratusan atau ribuan host. Terlebih lagi, beberapa opsi scan seperti pemeriksaan UDP dan deteksi versi dapat meningkatkan waktu pemeriksaan secara substansial. Begitu pula dengan beberapa konfigurasi firewall, terutama pembatasan rate respon. Meskipun Nmap menggunakan paralelisme dan algoritma canggih untuk mempercepat scan ini, user memiliki kendali penuh atas jalannya Nmap. User ahli secara cermat memberikan perintah Nmap yang hanya mengambil informasi yang dibutuhkan dengan batasan waktu yang sesuai.

Teknik-teknik untuk memperbaiki waktu pemeriksaan mencakup menghilangkan tes-tes yang tidak kritikal, dan mengupgrade ke versi terakhir Nmap (perbaikan kinerja dibuat secara rutin). Optimisasi parameter pewaktuan juga dapat memberikan perbedaan yang substansial. Opsi-opsi tersebut diberikan di bawah ini.

Beberapa opsi menerima sebuah parameter waktu. Ia dispesifikasikan secara baku dalam milidetik, meskipun anda dapat menambahkan ‘s’, ‘m’, atau ‘h’ ke nilai untuk menspesifikasikan detik, menit, atau jam. Sehingga argumen --host-timeout 900000, 900s, dan 15m semuanya melakukan hal yang sama.

--min-hostgroup numhosts; --max-hostgroup numhosts (Adjust parallel scan group sizes)
    Nmap memiliki kemampuan untuk melakukan scan port atau versi ke banyak host secara paralel. Nmap melakukan hal ini dengan membagi ruang IP target ke dalam kelompok dan kemudian memeriksa satu kelompok pada satu waktu. Secara umum, kelompok yang lebih besar lebih efisien. Kelemahannya adalah hasilnya tidak dapat disediakan hingga seluruh kelompok selesai. Jadi bila Nmap dimulai dengan kelompok berukuran 50, user tidak akan menerima laporan (kecuali update yang diberikan dalam mode verbose) hingga seluruh 50 host pertama selesai.

    Secara baku, Nmap menggunakan pendekatan kompromi untuk konflik in. Ia mulai dengan ukuran kelompok paling kecil lima sehingga dapat segera diperoleh hasil dan kemudian menaikkan ukuran kelompok hingga maksimum 1024. Angka baku tergantung pada opsi yang diberikan. Demi alasan efisiensi, Nmap menggunakan ukuran kelompok yang lebih besar untuk scan UDP atau sedikit-port TCP.

    Ketika ukuran kelompok maksimum diberikan dengan --max-hostgroup, Nmap tidak akan melampaui ukuran tersebut. Berikan ukuran minimum dengan --min-hostgroup dan Nmap akan berusaha ukuran kelompok di atas angka tersebut. Nmap mungkin akan menggunakan kelompok lebih kecil daripada yang anda spesifikasikan jika tidak terdapat cukup target pada interface yang diberikan untuk memenuhi ukuran minimum. Kedua opsi dapat digunakan untuk menset ukuran kelompok dalam rentang tertentu, namun hal ini jarang diperlukan.

    Opsi-opsi ini tidak memiliki efek ketika melalukan fase penemuan host dalam sebuah pemeriksaan. Ini mencakup scan ping biasa (-sP). Penemuan host selalu bekerja dalam kelompok host besar untuk meningkatkan kecepatan dan akurasi.

    Penggunaan utama opsi ini adalah untuk menspesifikasikan ukuran kelompok minimum yang besar sehingga scan penuh dapat dilakukan lebih cepat. Pilihan umum adalah 256 untuk memeriksa jaringan dalam Kelas C. Untuk scan dengan banyak port, melampaui angka tersebut tidak berarti banyak. Untuk scan terhadap beberapa port saja, ukuran kelompok host 2048 atau lebih mungkin bermanfaat.

--min-parallelism numprobes; --max-parallelism numprobes (Adjust probe parallelization)
    Opsi-opsi ini mengendalikan jumlah total probe yang dapat dilakukan untuk sekelompok host. Mereka digunakan untuk pemeriksaan port dan penemuan host. Secara baku, Nmap menghitung nilai paralel yang ideal berdasarkan kinerja jaringan. Jika paket di-drop, Nmap mengurangi dan membolehkan lebih sedikit probe yang tersisa. Angka probe ideal akan meningkat seiring dengan membaiknya jaringan. Opsi ini menempatkan batas minimum atau maksimum pada variabel tersebut. Secara baku, nilai idealnya dapat menurun ke angka satu bila jaringan ternyata tidak handal dan meningkat ke beberapa ratus dalam kondisi sempurna.

    Penggunaan paling umum adalah menset --min-parallelism ke angka lebih tinggi daripada satu untuk mempercepat scan host atau jaringan yang lambat. Ini adalah opsi berisiko untuk dimainkan, karena bila mensetnya terlalu tinggi akan mempengaruhi akurasi. Dengan menset opsi ini juga akan mengurangi kemampuan Nmap untuk mengendalikan paralelisme secara dinamis berdasarkan kondisi jaringan. Nilai sepuluh adalah cukup, meskipun saya hanya menyesuaikan nilai ini sebagai usaha terakhir.

    Opsi --max-parallelism seringkali diset ke satu untuk mencegah Nmap mengirimkan lebih dari satu probe di satu waktu ke host. Opsi ini dapat bermanfaat saat berkombinasi dengan --scan-delay (akan didiskusikan kemudian), meskipun yang terakhir biasanya dapat digunakan sendiri.

--min-rtt-timeout time, --max-rtt-timeout time, --initial-rtt-timeout time (Adjust probe timeouts)
    Nmap memelihara sebuah nilai timeout untuk menentukan berapa lama ia harus menunggu atas respon probe sebelum ia menyerah atau mentransmisi ulang probe. Nilai ini dihitung berdasarkan waktu respon probe sebelumnya. Jika latensi jaringan menunjukkan signifikan dan bervariasi, nilai timeout ini dapat meningkat ke beberapa detik. Ia juga dimulai dari nilai konservatif (tinggi) dan tetap untuk sementara waktu ketika Nmap memeriksa host yang tidak responsif.

    Menspesifikasikan nilai --max-rtt-timeout dan --initial-rtt-timeout lebih kecil daripada nilai baku dapat mempercepat waktu pemeriksaan secara signifikan. Hal ini terutama benar untuk scan tanpa ping (-PN), dan terhadap jaringan yang disaring secara ketat. Meskipun jangan terlalu agresif. Pemeriksaan dapat lebih lama jika anda menspesifikasikan nilai rendah sehingga banyak probe timeout dan dilakukan transmisi ulang ketika respons sedang dalam transit.

    Bila seluruh host berada pada jaringan lokal, 100 milidetik adalah nilai --max-rtt-timeout agresif yang wajar. Jika melibatkan routing, ping host pada jaringan terlebih dulu dengan utilitas ping ICMP, atau dengan pembuat paket kustom seperti hping2 yang lebih mungkin melewati firewall. Lihat maximum round trip time out dari sepuluh paket atau lebih. Anda mungkin ingin menggandakannya untuk --initial-rtt-timeout dan mengalikan tiga atau empat untuk --max-rtt-timeout. Umumnya saya tidak menset nilai maksimum RTT di bawah 100 ms, berapapun waktu ping. Ataupun melebihi 1000 ms.

    --min-rtt-timeout merupakan opsi yang jarang digunakan yang berguna ketika jaringan tidak handal, yang bahkan nilai baku Nmap terlalu agresif. Karena Nmap hanya mengurangi timeout ke minimum ketika jaringan tampaknya handal, kebutuhan ini tidak umum dan seharusnya dilaporkan sebagai bug ke nmap-dev mailing list.

--max-retries numtries (Specify the maximum number of port scan probe retransmissions)
    Ketika Nmap tidak menerima respon atas probe scan port, hal ini dapat berarti bahwa port disaring. Atau mungkin probe atau respon hilang dalam jaringan. Mungkin juga host target melakukan pembatasan sehingga memblokir respon sementara. Sehingga Nmap mencoba kembali mentransmisi probe awal. Jika Nmap mendeteksi kehandalan jaringan yang buruk, ia akan mencoba beberapa kali sebelum menyerah. Meskipun hal ini bermanfaat untuk akurasi, namun akan memperpanjang waktu pemeriksaan. Ketika kinerja lebih diutamakan, pemeriksaan dapat dipercepat dengan membatasi jumlah transmisi ulang yang dibolehkan. Anda bahkan dapat menspesifikasikan --max-retries 0 untuk mencegah terjadinya transmisi ulang, meskipun hanya direkomendasikan bagi situasi seperti survei informal ketika terjadi port dan host yang tidak didata tidak menjadi masalah.

    Bakunya (dengan template tanpa -T) adalah membolehkan sepuluh transmisi ulang. Jika jaringan tampak handal dan host target tidak membatasi, Nmap biasanya melakukan hanya satu transmisi ulang. Sehingga kebanyakan pemeriksaan target tidak terpengaruh dengan mengurangi nilai --max-retries ke nilai yang rendah seperti tiga. Nilai tersebut dapat secara substansial mempercepat pemeriksaan host-host lambat (rate limited). Anda biasanya kehilangan beberapa informasi ketika Nmap menyerah dengan mudah, meskipun hal tersebut lebih disukai daripada membiarkan --host-timeout berakhir dan kehilangan seluruh informasi mengenai target.

--host-timeout time (Give up on slow target hosts)
    Beberapa host membutuhkan banyak waktu untuk diperiksa. Hal ini mungkin disebabkan hardware atau software yang tidak berkinerja baik atau tidak handal, adanya pembatasan paket, atau firewall yang terlalu ketat. Beberapa persen host paling lambat yang diperiksa dapat menghabiskan sebagian besar waktu pemeriksaan. Terkadang adalah hal baik mengurangi kerugian dan melewati host-host tersebut. Berikan --host-timeout dengan waktu maksimum anda ingin menunggu. Sebagai contoh, berikan 30m untuk memastikan bahwa Nmap tidak menghabiskan lebih dari setengah jam pada satu host. Perhatikan bahwa Nmap mungkin memeriksa host lain pada waktu yang sama dalam waktu tersebut, sehingga itu bukan kerugian lengkap. Host yang timeout akan dilewati. Tidak ada hasil tabel port, deteksi SO, atau deteksi versi akan dicetak untuk host tersebut.

--scan-delay time; --max-scan-delay time (Adjust delay between probes)
    Opsi ini menyebabkan Nmap menunggu selama waktu yang diberikan antara setiap probe yang dikirimkan ke host yang diberikan. Hal ini terutama bermanfaat dalam hal pembatasan. Mesin-mesin Solaris (di antara yang lainnya) akan menanggapi paket probe scan UDP dengan hanya satu pesan ICMP per detik. Bila dikirimkan oleh Nmap lebih dari itu akan percuma. Nilai --scan-delay 1s akan membuat Nmap tetap pada rate lambat tersebut. Nmap berusaha untuk mendeteksi pembatasan rate dan menyesuaikan delay scan, namun tidaklah rugi untuk menspesifikasikannya secara eksplisit bila anda telah tahu rate terbaik.

    Ketika Nmap menyesuaikan delay scan lebih tinggi untuk menanggapi pembatasn rate, scan akan melambat secara dramatis. Opsi --max-scan-delay menspesifikasikan delay terbesar yang dibolehkan Nmap. Nilai --max-scan-delay rendah akan mempercepat Nmap, namun berisiko. Dengan menset nilai ini terlalu rendah dapat menyebabkan transmisi ulang paket yang tidak perlu dan mungkin port-port luput ketika target mengimplementasikan pembatasan rate ketat.

    Penggunaan lain --scan-delay adalah untuk menghindari sistem deteksi dan pencegahan intrusi (IDS/IPS) yang berbasis pembatasan

--min-rate number; --max-rate number (Directly control the scanning rate)
    Pewaktuan dinamis Nmap melakukan pekerjaan yang baik dalam menemukan kecepatan yagn tepat untuk melakukan pemeriksaan. Namun terkadang, anda mungkin mengetahui rate pemeriksaan jaringan yang tepat, atau anda harus memastikan bahwa pemeriksaan akan selesai pada waktu tertentu. Atau mungkin anda harus menjaga Nmap dari melakukan pemeriksaan terlalu cepat. Opsi --min-rate dan --max-rate dirancang untuk situasi ini.

    Ketika opsi --min-rate diberikan Nmap akan melakukan yang terbaik untuk mengirim paket secepat atau lebih cepat daripada rate yang diberikan. Argumen merupakan angka real positif mewakili rate paket per detik. Sebagai contoh, dengan menspesifikasikan --min-rate 300 berarti bahwa Nmap akan berusaha menjaga rate pengiriman pada atau di atas 300 paket per detik. Penspesifikasian rate minimum tidak mencegah Nmap mengirimkan lebih cepat bila kondisi memungkinkan.

    Demikian pula, --max-rate membatasi rate pengiriman ke nilai maksimum yang diberikan. Gunakan --max-rate 100, misalnya, untuk membatasi pengiriman 100 paket per detik pada jaringan yang cepat. Gunakan --max-rate 0.1 untuk scan lambat satu paket setiap sepuluh detik. Gunakan --min-rate dan --max-rate bersama untuk menjaga rate pada rentang tertentu.

    Kedua opsi ini bersifat global, mempengaruhi seluruh pemeriksaan, bukan host individual. Mereka hanya mempengaruhi scan port dan pencarian host Fitur lain seperti deteksi SO mengimplementasikan pewaktuan mereka sendiri.

    Terdapat dua kondisi ketika rate pemeriksaan aktual kurang dari nilai minimum yang diminta. Pertama adalah bila nilai minimum lebih cepat daripada rate tercepat pengiriman Nmap, yang tergantung pada hardware. Dalam kasus ini Nmap akan mengirim paket secepat mungkin, namun waspadai bahwa rate tinggi tersebut kemungkinan akan menyebabkan kehilangan akurasi. Kasus kedua adalah ketika Nmap tidak memiliki sesuatu untuk dikirim, sebagai contoh di akhir pemeriksaan ketika probe terakhir telah dikirim dan Nmap menunggu mereka time out atau mendapat respon. Adalah normal melihat rate pemeriksaan menurun pada akhir pemeriksaan atau di antara kelompok host. Rate pengiriman mungkin melebihi nilai maksimum untuk sementara waktu untuk mengimbangi delay yang tak terduga, namun secara rata-rata rate akan tetap pada atau di bawah nilai maksimum.

    Menspesifikasikan nilai rate minimum harus dilakukan dengan hati-hati. Pemeriksaan yang lebih cepat daripada yang dapat didukung oleh jaringan akan menyebabkan hilangnya akurasi. Dalam beberapa kasus, dengan menggunakan rate yang lebih cepat dapat membuat pemeriksaan menjadi lebih lama daripada bila menggunakan rate yang lebih lambat. Hal ini karena algoritma adaptive retransmission Nmap akan mendeteksi kepadatan jaringan yang disebabkan oleh rate pemeriksaan yang berlebihan dan meningkatkan angka transmisi ulang untuk memperbaiki akurasi. Jadi meskipun paket dikirim pada rate yang lebih tinggi, namun secara keseluruhan lebih banyak paket yang dikirimkan. Batasi angka transmisi ulang dengan opsi --max-retries jika anda ingin menset batas atas waktu scan total.

--defeat-rst-ratelimit
    Banyak host telah lama menggunakan pembatasan rate untuk mengurangi jumlah pesan kesalahan ICMP (seperti kesalahan port-unreachable) yang mereka kirim. Saat ini beberapa sistem menggunakan pembatasan limit ke paket RST (reset) yang mereka hasilkan. Hal ini akan memperlambat Nmap secara dramatis karena ia akan menyesuaikan pewaktuannya untuk mencerminkan batas rate tersebut. Anda dapat memberitahu Nmap untuk mengabaikan limit rate tersebut (untuk scan port seperti SYN scan yang tidak memperlakukan port non-responsiv sebagai open) dengan menspesifikasikan --defeat-rst-ratelimit.

    Dengan menggunakan opsi ini akan mengurangi akurasi, karena beberapa port akan tampak non-responsiv karena Nmap tidak menunggu cukup lama untuk respon RST yang rate-limited. Dengan SYN scan, hasil non-respon dalam port akan ditandai dengan status filtered alih-alih closed ketika menerima paket RST. Tambahan ini berguna ketika anda hanya perlu port terbuka, dan beda antara port closed dan filtered tidak cukup berharga.

-T paranoid|sneaky|polite|normal|aggressive|insane (Set a timing template)
    Meski kendali waktu fine-grained yang didiskusikan dalam bagian sebelumnya adalah powerful dan efektif, beberapa orang menganggapnya membingungkan. Terlebih lagi, memilih nilai yang tepat terkadang membutuhkan waktu lebih lama daripada pemeriksaan yang ingin dioptimisasi. Sehingga Nmap menawarkan pendekatan yang lebih mudah, dengan enam template waktu. Anda dapat menspesifikasikannya dengan opsi -T dan angkanya (0–5) atau namanya. Nama templatenya adalah paranoid (0), sneaky (1), polite (2), normal (3), aggressive (4), dan insane (5). Dua yang pertama adalah untuk menghindari IDS. Mode Polite memperlambat scan untuk menggunakan lebih sedikit bandwidth dan sumber daya mesin target. Mode Normal adalah bakunya sehingga -T3 tidak melakukan apapun. Mode Aggressive mempercepat scan dengan membuat asumsi bahwa anda berada pada jaringan yang cepat dan handal. Akhirnya, mode insane mengasumsikan bahwa anda berada pada jaringan yang sangat cepat atau rela mengorbankan akurasi demi kecepatan.

    Kesemua template ini memungkinkan user menspesifikasikan seberapa mereka ingin agresif, dan membiarkan Nmap memilih nilai pewaktuan yang tepat. Template juga membuat beberapa penyesuaian kecepatan minor yang tidak dimiliki oleh kendali fine-grained saat ini. Sebagai contoh, -T4 melarang delay scan dinamis melebihi 10 ms untuk port TCP dan -T5 membatasi nilai tersebut di 5 ms. Template dapat digunakan dalam kombinasi dengan kendali fine-grained, dan kendali fine-grained yang anda berikan akan mengambil alih template pewaktuan baku untuk parameter tersebut. Saya merekomendasikan penggunaan -T4 ketika memeriksa jaringan modern dan handal. Pertahankan opsi tersebut bahkan ketika anda menambah kendali fine-grained sehingga anda memperoleh manfaat dari optimisasi minor yang diberikan.

    Bila anda berada pada koneksi broadband atau ethernet yang memadai, saya akan merekomendasikan untuk selalu menggunakan -T4. Beberapa orang mencintai -T5 meskipun itu terlalu agresif untuk selera saya. Orang terkadang memberikan -T2 karena mereka pikir ia lebih tidak mungkin akan menyebabkan host crash atau karena mereka mengganggap dirinya secara umum sopan. Mereka terkadang tidak menyadari betapa lambatnya -T polite. Scan mereka akan membutuhkan waktu sepuluh kali lebih lama daripada scan baku. Mesin crash dan masalah bandwidth adalah jarang dengan opsi pewaktuan baku (-T3) sehingga normalnya saya merekomendasikan untuk pemeriksa yang berhati-hati. Menghilangkan deteksi versi lebih efektif daripada bermain dengan nilai pewaktuan dalam mengurangi masalah ini.

    Meski -T0 dan -T1 mungkin berguna untuk menghindari alert IDS, mereka akan membutuhkan waktu yang sangat lama untuk memeriksa ribuan mesin atau port. Untuk scan yang demikian lama, anda mungkin lebih menyukai menset nilai pewaktuan secara tepat anda butuhkan alih-alih bergantung pada nilai template -T0 and -T1.

    Efek utama T0 adalah serialisasi scan sehingga hanya satu port yang diperiksa pada satu waktu, dan menunggu lima menit antara pengiriman setiap probe. T1 dan T2 adalah serupa namun mereka hanya menunggu 15 detik dan 0.4 detik, antar probe. T3 merupakan perilaku baku Nmap, yang mencakup paralelisasi. -T4 ekivalen dengan --max-rtt-timeout 1250 --initial-rtt-timeout 500 --max-retries 6 dan menset delay scan TCP maksimum ke 10 milidetik. T5 ekivalen dengan --max-rtt-timeout 300 --min-rtt-timeout 50 --initial-rtt-timeout 250 --max-retries 2 --host-timeout 15m dan juga menset delay scan TCP maksimum ke 5 md.

FIREWALL/IDS EVASION AND SPOOFING

Banyak pionir Internet mempunyai visi jaringan terbuka global dengan ruang alamat IP universal yang memungkinkan koneksi virtual antara dua node. Hal ini membuat host bertindak sebagai peer sebenarnya, menyajikan dan mengambil informasi satu sama lain. Orang dapat mengakses sistem di rumah mereka dari tempat kerja, merubah seting kendali iklim atau membuka pintu bagi tamu yang datang awal. Visi konektivitas universal ini telah dibatasi dengan kekurangan ruang alamat dan masalah keamanan. Di awal tahun 1990-an, organisasi mulai menggunakan firewall dengan tujuan mengurangi konektivitas. Jaringan besar dibatasi dari Internet oleh proxy aplikasi, network address translation, dan filter paket. Aliran informasi yang tidak terbatas berubah menjadi regulasi ketat atas kanal komunikasi dan isi yang melaluinya.

Penghalang jaringan seperti firewall dapat membuat pemetaan jaringan sukar. Ia tidak akan menjadi lebih mudah, karena mengurangi reconnaissance umum adalah tujuan utama implementasi device tersebut. Namun demikian, Nmap menawarkan banyak fitur untuk membantu memahami jaringan yang kompleks ini, dan untuk memverifikasi bahwa filter bekerja sebagaimana yang diharapkan. Ia bahkan mendukung mekanisme untuk melewati pertahanan yang diimplementasikan dengan buruk. Salah satu metode terbaik untuk memahami postur keamanan jaringan anda adalah dengan berusaha mengalahkannya. Tempatkan diri anda dalam pola pikir penyerang, dan gunakan teknik-teknik dari bagian ini terhadap jaringan anda. Lakukan scan FTP bounce, scan idle, serangan fragmentasi, atau berusaha melakukan tunnel melalui salah satu proxy anda.

Selain membatasi aktivitas jaringan, perusahaan semakin meningkatkan pemantauan lalu lintas dengan intrusion detection systems (IDS). Seluruh IDS utama menyertakan aturan yang dirancang untuk mendeteksi scan Nmap karena scan terkadang merupakan awal serangan. Banyak dari produk-produk ini yang sekarang berubah menjadi intrusion prevention systems (IPS) yang secara aktif memblokir lalu lintas yang dianggap berbahaya. Sayangnya bagi administrator jaringan dan vendor IDS, mendeteksi tujuan jahat dengan menganalisis data paket merupakan masalah yang berat. Penyerang dengan kesabaran, keahlian, dan bantuan opsi-opsi Nmap tertentu biasanya dapat melewati IDS tanpa terdeteksi. Selain itu, administrator harus berurusan dengan hasil false positive dalam jumlah besar sehingga aktivitas yang tidak berbahaya salah didiagnosa dan di-alert atau diblokir.

Terkadang orang menyarankan bahwa Nmap tidak seharusnya menawarkan fitur-fitur untuk melewati aturan firewall atau menyelinap dari IDS. Mereka berargumen bahwa fitur-fitur ini akan disalahgunakan oleh penyerang alih-alih digunakan oleh administrator untuk memperbaiki keamanan. Permasalahan dengan logika ini adalah metode-metode tersebut tetap akan digunakan oleh penyerang, yang akan mencari tool lain atau menambahkan fungsionalitas tersebut ke dalam Nmap. Sedangkan, administrator akan merasa lebih sulit melakukan pekerjaan mereka. Menggunakan server FTP yang telah dipatch dan modern adalah pertahanan yang jauh lebih baik daripada mencegah penyebaran tool implementasi serangan FTP bounce.

Tidak ada peluru ajaib (atau opsi Nmap) untuk mendeteksi dan menghindari firewall dan sistem IDS. Ia membutuhkan kemampuan dan pengalaman. Tutorial adalah di luar cakupan panduan referensi ini, yang hanya mendaftarkan opsi-opsi yang relevan dan menjelaskan apa yang mereka lakukan.

-f (fragment packets); --mtu (using the specified MTU)
    Opsi -f menyebabkan scan yang diminta (termasuk ping scan) untuk menggunakan paket IP terfragmentasi kecil. Idenya adalah membagi header TCP ke beberapa paket untuk membuat filter paket, IDS, dan gangguan lain kesulitan mendeteksi apa yang sedang anda lakukan. Hati-hatilah dengan ini! Beberapa program memiliki kesulitan menangani paket-paket kecil ini. Sniffer old-school bernama Sniffit akan menjadi segmentation faulted segera setelah menerima fragmen pertama. Spesifikasikan opsi ini sekali, dan Nmap membagi paket ke dalam delapan byte atau kurang setelah header IP. Sehingga paket header TCP 20-byte akan dibagi ke dalam tiga paket. Dua paket dengan delapan byte header TCP, dan satu paket dengan empat byte akhir. Tentu saja setiap fragmen juga memiliki header IP. Spesifikasikan -f lagi untuk menggunakan fragmen 16 byte (mengurangi jumlah fragmen). Atau anda dapat menspesifikasikan ukuran offset anda sendiri dengan opsi --mtu. Jangan berikan opsi -f bila anda menggunakan --mtu. Offset harus merupakan kelipatan delapan. Meskipun paket fragmented tidak akan melewati filter paket dan firewall yang membuat antrian seluruh fragment IP, seperti opsi CONFIG_IP_ALWAYS_DEFRAG dalam kernel Linux, beberapa jaringan tidak dapat mengatasi kerugian kinerja yang disebabkannya dan membiarkan opsi tersebut tidak aktif. Yang lain tidak dapat mengaktifkannya karena fragmen dapat mengambil rute yang berbeda ke jaringan mereka. Beberapa sistem sumber mendeframentasi paket outgoing dalam kernel. Linux dengan modul pelacakan koneksi iptable adalah salah satu contohnya. Lakukan scan ketika sniffer seperti Wireshark berjalan untuk memastikan bahwa paket yang dikirim terfragmentasi. Jika OS host anda menyebabkan masalah, cobalah opsi --send-eth untuk melewati lapisan IP dan mengirim frame ethernet raw.

    Fragmentasi hanya didukung oleh fitur paket raw Nmap, yang mencakup scan port TCP dan UDP (kecuali scan connect dan FTP bounce scan) dan deteksi SO. Fitur seperti deteksi versi dan Nmap Scripting Engine umumnya tidak mendukung fragmentasi karena mereka tergantung pada stack TCP host anda untuk berkomunikasi dengan layanan target.

-D decoy1[,decoy2][,ME][,...] (Cloak a scan with decoys)
    Menyebabkan dilakukannya decoy scan, yang membuat host remote menganggap bahwa host-host yang anda berikan sebagai umpan (decoy) juga melakukan pemeriksaan jaringan target. Karenanya IDS mereka mungkin melaporkan scan port sebanyak 5–10 dari alamat IP yang unik, tetapi mereka tidak akan tahu IP mana yang memeriksa mereka dan mana yang umpan. Meski hal ini dapat dikalahkan dengan router path tracing, response-dropping, dan mekanisme aktif lainnya, namun ia umumnya merupakan teknik efektif untuk menyembunyikan alamat IP anda.

    Pisahkan setiap host umpan dengan koma, dan anda dapat secara opsional menggunakan ME sebagai salah satu umpan untuk mewakili posisi alamat IP real anda. Jika anda menempatkan ME pada posisi keenam atau lebih, beberapa detektor scan port umum (seperti Solar Designer's Scanlogd yang bagus) tidak akan menampilkan alamat IP anda sama sekali. Jika anda tidak menggunakan ME, Nmap akan menempatkan anda pada posisi acak. Anda dapat juga menggunakan RND untuk menghasilkan alamat IP acak dan non-reserved, atau RND:number untuk menghasilkan alamat number

    Perhatikan bahwa host yang anda gunakan sebagai umpan harus hidup atau anda akan secara tidak sengaja mebanjiri target anda dengan SYN. Juga mudah menentukan host mana yang memeriksa jika hanya satu host saja yang hidup pada jaringan. Anda mungkin ingin menggunakan alamat IP alih-alih nama (sehingga jaringan umpan tidak melihat anda dalam log DNS mereka).

    Umpan digunakan dalam scan ping awal (menggunakan ICMP, SYN, ACK, atau apapun) dan selama fase pemeriksaan port. Umpan juga digunakan selama deteksi SO (-O). Umpan tidak bekerja dengan deteksi versi atau scan connect TCP. Ketika berlaku scan delay, delay ditegakkan antara setiap batch probe palsu, tidak antara setiap probe invididual. Karena umpan dikirim sebagai satu batch keseluruhan, mereka mungkin melanggar batasan kendali kongesti secara sementara.

    Penting diperhatikan bahwa penggunaan terlalu banyak umpan mungkin memperlambat scan anda dan secara potensial membuatnya kurang akurat. Dan juga, beberapa ISP akan menyaring paket-paket palsu anda, namun banyak juga yang tidak membatasi paket IP palsu.

-S IP_Address (Spoof source address)
    Dalam beberapa keadaan, Nmap mungkin tidak dapat menentukan alamat sumber anda (Nmap akan memberitahu anda hal ini). Dalam situasi ini, gunakan -S dengan alamat IP interface yang ingin anda gunakan untuk mengirim paket.

    Kemungkinan lain penggunaan flag ini adalah untuk memalsukan scan untuk membuat target berpikir bahwa orang lain sedang memeriksa mereka. Bayangkan sebuah perusahaan sedang diperiksa portnya secara berulang-ulang oleh pesaing! Opsi -e dan -PN umumnya dibutuhkan untuk penggunaan seperti ini. Perhatikan bahwa anda biasanya tidak menerima paket reply (mereka akan ditujukan ke alamat IP yang anda palsukan), sehingga Nmap tidak akan menghasilkan laporan yang berguna.

-e interface (Use specified interface)
    Memberitahu Nmap interface untuk mengirim dan menerima paket. Nmap seharusnya dapat mendeteksinya secara otomatis, namun ia akan memberitahu anda bila ia tidak dapat melakukannya.

--source-port portnumber; -g portnumber (Spoof source port number)
    Salah satu kesalahan konfigurasi umum yang mengagetkan adalah mempercayai lalu lintas hanya berdasarkan nomor port sumber. Adalah mudah memahami bagaimana hal ini terjadi. Administrator akan mensetup firewall baru, hanya untuk dibanjiri dengan keluhan user yang aplikasinya berhenti bekerja. Secara khusus, DNS mungkin tidak berfungsi karena reply UDP DNS dari server eksternal tidak dapat lagi memasuki jaringan. FTP adalah contoh umum lainnya. Dalam transfer FTP aktif, server remote berusaha membuka koneksi ke klien untuk mengirim file yang diminta.

    Terdapat solusi aman untuk masalah ini, seringkali berupa proxy level-aplikasi atau modul firewall protocol-parsing. Sayangnya terdapat pula solusi yang lebih mudah dan tidak aman. Dengan memperhatikan bahwa balasan DNS datang dari port 53 dan active FTP dari port 20, banyak aadministrator terjebak dengan membolehkan lalu lintas incoming dari port-port ini. Mereka terkadang berasumsi bahwa tidak ada penyerang akan memperhatikan dan memanfaatkan lubang firewall ini. Dalam kasus lain, administrator menganggap ini sebagai solusi sementara hingga mereka dapat mengimplementasikan solusi yang lebih aman. Lalu mereka lupa melakukan upgrade keamanan.

    Administrator jaringan yang terlalu banyak kerja bukan satu-satunya yang jatuh dalam jebakan ini. Sejumlah produk dikirim dengan rule tidak aman ini. Bahkan Microsoft telah bersalah. Filter IPsec yang disertakan dengan Windows 2000 dan Windows XP berisikan sebuah rule implisit yang membolehkan semua lalu lintas TCP atau UDP dari port 88 (Kerberos). Dalam kasus terkenal lain, firewall personal Zone Alarm hingga versi 2.1.25 membolehkan sembarang paket UDP incoming dengan port sumber 53 (DNS) atau 67 (DHCP).

    Nmap menawarkan opsi -g dan --source-port (mereka ekivalen) untuk mengeksploitasi kelemahan ini. Cukup berikan nomor port dan Nmap akan mengirim paket dari port itu bila memungkinkan. Nmap harus menggunakan nomor port yang berbeda bagi beberapa tes deteksi SO tertentu agar bekerja dengan benar, dan request DNS mengabaikan flag --source-port karena Nmap mengandalkan pada librari sistem untuk menangani hal ini. Kebanyakan scan TCP, termasuk SYN scan, mendukung opsi secara penuh, demikian pula scan UDP.

--data-length number (Append random data to sent packets)
    Normalnya Nmap mengirim paket minimalis yang hanya berisi header. Sehingga paket TCP umumnya berukuran 40 byte dan request ICMP echo cuma 28. Opsi ini memberitahu Nmap untuk menambahkan random byte sejumlah tertentu untuk kebanyakan paket yang dikirimnya. Paket deteksi SO (-O) tidak terpengaruh karena akurasinya membutuhkan konsistensi probe, namun kebanyakan paket ping dan portscan mendukung opsi ini. Ia sedikit memperlambat, namun dapat membuat scan tidak terlalu mencurigakan.

--ip-options S|R [route]|L [route]|T|U ... ; --ip-options hex string (Send packets with specified ip options)
    Protokol IP[11] menawarkan beberapa opsi yang dapat ditempatkan pada header paket. Tidak seperti opsi TCP yang umum, opsi IP jarang ditemukan karena masalah kepraktisan dan keamanan. Nyatanya, banyak router Internet memblokir opsi yang paling berbahaya seperti source routing. Namun opsi dapat tetap berguna dalam beberapa kasus untuk menentukan dan memanipulasi rute jaringan ke mesin target. Sebagai contoh, anda mungkin dapat menggunakan opsi record route untuk menentukan path ke target bahkan ketika pendekatan tradisional bergaya traceroute gagal. Atau bila paket anda di-drop oleh firewall tertentu, anda mungkin dapat menspesifikasikan rute yang berbeda dengan opsi source routing yang ketat atau longgar.

    Cara paling powerful untuk menspesifikasikan opsi IP adalah cukup dengan memberikan nilainya sebagai argumen ke --ip-options. Dahului setiap angka hex dengan \x lalu dua digit. Anda dapat mengulang karakter tertentu dengan menambahkan tanda bintang dan diikuti jumlah perulangan yang anda inginkan. Sebagai contoh, \x01\x07\x04\x00*36\x01 adalah sebuah string hex berisi 36 NUL byte.

    Nmap juga menawarkan mekanisme shortcut untuk menspesifikasikan opsi. Cukup berikan huruf R, T, atau U untuk meminta record-route, record-timestamp, atau keduanya, Source routing ketat atau longgar dapat dispesifikasikan dengan tanda L atau S diikuti oleh spasi dan kemudian daftar alamat IP yang dipisah-spasi.

    Jika anda ingin melihat opsi dalam paket yang dikirim dan diterima, berikan --packet-trace. Informasi dan contoh lebih lanjut tentang penggunaan opsi IP dengan Nmap, dapat dilihat di https://seclists.org/nmap-dev/2006/q3/0052.html.

--ttl value (Set IP time-to-live field)
    Set field time-to-live IPv4 dalam paket yang dikirim ke nilai yang diberikan.

--randomize-hosts (Randomize target host order)
    Beritahu Nmap untuk mengacak setiap kelompok hingga 16384 host sebelum memeriksa merekaa. Hal ini dapat membuat scan kurang mencurigakan bagi berbagai sistem monitoring jaringan, terutama bila anda menggabungkannya dengan opsi pewaktuan yang lambat. Jika anda ingin mengacak dalam ukuran yang lebih besar, naikkan nilai PING_GROUP_SZ dalam nmap.h dan kompilasi ulang. Solusi alternatif adalah menghasilkan daftar IP target dengan list scan (-sL -n -oN filename), acaklah dengan skrip Perl, lalu berikan seluruh daftar ke Nmap dengan -iL.

--spoof-mac MAC address, prefix, or vendor name (Spoof MAC address)
    Meminta Nmap untuk menggunakan alamat MAC yang diberikan untuk seluruh frame ethernet raw yang dikirimkan. Opsi ini mengimplikasikan --send-eth untuk memastikan bahwa Nmap benar-benar mengirim paket level-ethernet. MAC yang diberikan dapat dalam beragam format. Jika berupa angka 0, Nmap memilih alamat MAC yang acak untuk sesi itu. Jika string yang diberikan adalah angka genap digit hex (setiap digit berpasangan dipisahkan oleh tanda titik dua), Nmap akan menggunakannya sebagai MAC. Jika diberikan kurang dari 12 digit hex, Nmap mengisi sisa 6 byte-nya dengan nilai acak. Jika argumen bukanlah nol atau string hex, Nmap mencari melalui file nmap-mac-prefixes untuk menemukan nama vendor berisikan string yang diberikan (tidak case sensitive). Jika ditemukan kecocokan, Nmap menggunakan OUI (three-byte prefix) vendor dan mengisi tiga byte sisanya secara random. Contoh argumen yang valid --spoof-mac adalah Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, dan Cisco. Opsi ini hanya mempengaruhi scan paket raw seperti SYN scan atau deteksi SO, dan tidak berlaku pada fitur berorientasi-koneksi seperti deteksi versi atau Nmap Scripting Engine.

--badsum (Send packets with bogus TCP/UDP checksums)
    Meminta Nmap untuk menggunakan checksum TCP atau UDP tidak valid untuk paket yang dikirimkan ke host target. Karena secara virtual seluruh stack IP host akan secara tepat men-drop paket ini, sembarang respon yang diterima adalah kemungkinan berasal dari firewall atau IDS yang tidak peduli untuk memverifikasi checksum. Detil lebih lanjut mengenai teknik ini, dapat dilihat pada https://nmap.org/p60-12.html

OUTPUT

Manfaat tool keamanan ditentukan oleh output yang dihasilkannya. Algoritma dan tes yang kompleks tidaklah berguna bila mereka tidak dipresentasikan dalam cara yang terorganisir dan lengkap. Dengan beragamnya cara penggunaan Nmap oleh orang dan software lainnya, tidak ada format yang dapat memuaskan semuanya. Sehingga Nmap memberikan beberapa format, termasuk mode interaktif agar manusia dapat membaca secara langsung dan XML untuk memudahkan parsing oleh software.

Selain memberikan beragam format output, Nmap juga menyediakan opsi untuk mengendalikan verbositas output dan pesan debug. Tipe output dapat dikirim ke output standar atau ke file. File output dapat pula digunakan untuk meresume scan.

Nmap menyediakan output dalam lima format berbeda. Bakunya disebut interactive output, dan dikirimkan ke output standar (stdout). Terdapat juga normal output, yang serupa dengan interaktif kecuali ia memberikan lebih sedikit informasi runtime dan peringatan karena ia diharap akan dianalisis setelah scan setelah alih-alih secara interaktif.

XML output adalah salah stau tipe output paling penting, karena ia dapat dikonversi ke HTML, dapat secara mudah diparse oleh program seperti Nmap graphical user interfaces, atau diimpor ke database.

Dua output terakhir adalah grepable output sederhana yang menyertakan informasi host target pada satu baris tunggal, dan sCRiPt KiDDi3 0utPUt bagi user yang mengganggap dirinya sebagai |<-r4d.

Meskipun output interaktif merupakan bakunya dan tidak memiliki opsi command-line, opsi keempat format lainnya menggunakan sintaks yang sama. Mereka mengambil satu argumen, nama file tempat menampung hasil. User dapat menspesifikasikan banyak format, namun setiap format hanya boleh dispesifikasikan satu kali. Sebagai contoh, anda mungkin ingin menyimpan output normal untuk review anda dan output XML untuk analisis programatik. Anda dapat melakukan hal ini dengan opsi -oX myscan.xml -oN myscan.nmap. Walau bab ini menggunakan nama sederhana seperti myscan.xml untuk singkatnya, disarankan untuk menggunakan nama yang lebih deskriptif. Nama yang dipilih merupakan masalah preferensi personal, meski saya menggunakan nama panjang yang menyertakan tanggal scan dan kata yang menjelaskan scan, ditempatkan dalam sebuah direktori dengan nama perusahaan yang saya periksa.

Meski opsi-opsi ini menyimpan hasil ke file, Nmap tetap mencetak output interaktif ke stdout seperti biasa. Sebagai contoh, perintah nmap -oX myscan.xml target mencetak XML ke myscan.xml dan mengisi seluruh output standar dengan hasil interaktif yang sama dengan yang akan dicetaknya bila -oX tidak diberikan. Anda dapat merubahnya dengan memberikan karakter hyphen sebagai argumen ke salah satu tipe format. Hal ini membuat Nmap menonaktifkan output interaktif, dan mencetak hasilnya dalam format yang anda spesifikasikan ke stream output standar. Sehingga perintah nmap -oX - target hanya akan mengirim output XML ke stdout. Kesalahan serius akan tetap dicetak ke stream kesalahan normal, stderr.

Tidak seperti beberapa argumen Nmap, spasi antara flag opsi logfile (seperti -oX) dan namafile atau hyphen adalah wajib. Jika anda menghilangkan flag dan memberi argumen seperti -oG- or -oXscan.xml, fitur kompatibiltas backward Nmap akan menyebabkan pembuatan normal format file output bernama G- dan Xscan.xml.

Seluruh argumen ini mendukung konversi strftime-like dalam namafile. %H, %M, %S, %m, %d, %y, dan %Y semuanya serupa seperti dalam strftime. %T sama dengan %H%M%S, %R sama dengan %H%M, dan %D sama dengan %m%d%y. Sebuah % diikuti dengan sembarang karakter hanya menghasilkan karakter itu (%% memberikan simbol persentase. Sehingga -oX 'scan-%T-%D.xml' akan menggunakan file XML dalam bentuk scan-144840-121307.xml.

Nmap juga menawarkan opsi untuk mengendalikan verbositas scan dan untuk menambah file output daripada menghapusnya. Seluruh opsi ini dijelaskan di bawah.

Format Output Nmap

-oN filespec (normal output)
    normal output akan diarahkan ke nama file yang diberikan. Seperti yang didiskusikan di atas, opsi ini sedikit berbeda dari interactive output.

-oX filespec (XML output)
    XML output diarahkan ke namafile yang diberikan. Nmap menyertakan document type definition (DTD) yang memungkinkan parser XML memvalidasi output XML Nmap. Walau utamanya ditujukan untuk penggunaan programatik, ia dapat juga membantu manusia menginterpretasikan output XML Nmap. DTD mendefinisikan elemen legal format, dan seringkali merinci atribut dan nilai yang dapat mereka terima. Versi terakhir selalu tersedia di https://nmap.org/data/nmap.dtd.

    XML memberikan format stabil yang dapat secara mudah diparse oleh software. Parser XML yang bebas tersedia untuk bahasa pemrograman utama, termasuk C/C++, Perl, Python, dan Java. Orang bahkan telah menulis binding untuk kebanyakan bahasa ini untuk menangani output Nmap dan dijalankan secara khusus. Contohnya adalah Nmap::Scanner[12] and Nmap::Parser[13] dalam Perl CPAN. Dalam kebanyakan kasus bagi interface aplikasi dengan Nmap yang sulit, XML merupakan format yang lebih disukai.

    Output XML mengacu ke XSL stylesheet yang dapat digunakan untuk memformat hasilnya sebagai HTML. Cara termudah menggunakan file ini adalah dengan memuat output XML dalam sebuah browser web seperti Firefox atau IE. Secara baku, ini hanya bekerja pada mesin tempat anda menjalankan Nmap (atau yang dikonfigurasi serupa) akibat path sistem file nmap.xsl yang di-hardcoded. Gunakan opsi --webxml atau --stylesheet untuk membuat file XML portabel yang dibaca sebagai HTML pada semua mesin yang dapat terkoneksi ke web.

-oS filespec (ScRipT KIdd|3 oUTpuT)
    Output ini seperti output interaktif, kecuali kemudian ia diprose lagi agar sesuai dengan l33t HaXXorZ yang sebelumnya merendahkan Nmap karena kapitalisasi dan ejaan yang konsisten. Perlu diperhatikan bahwa opsi ini mengolok-olok script kiddies alih-alih “membantu mereka”.

-oG filespec (grepable output)
    Format output ini dijelaskan terakhir karena telah didepresiasi. Format output XML jauh lebih powerful, dan juga cukup nyaman bagi pengguna berpengalaman. XML merupakan standar yang memiliki lusinan parser bagus, sementara output grepable merupakan hack sederhana buatan saya. XML dapat dikembangkan untuk mendukung fitur baru Nmap ketika dirilis, sementara saya seringkali harus menghilangkan fitur-fitur tersebut dari output grepable karena tidak ada tempat untuk menaruh mereka.

    Namun demikian, output grepable masih cukup populer. Ia merupakan format sederhana yang mendaftar setiap host pada satu baris dan dapat secara mudah dicari dan diparse dengan tool standar Unix seperti grep, awk, cut, sed, diff, dan Perl. Bahkan saya menggunakannya untuk test sekali yang dilakukan pada perintah beris. Menemukan seluruh host dengan port SSH terbuka atau yang menjalankan Solaris hanya membutuhkan satu grep sederhana untuk mengidentifikasikan host, yang di-pipe ke perintah awk atau cut untuk mencetak field yang diinginkan.

    Output grepable terdiri dari komentar (baris yang dimulai dengan tanda pound (#)) dan baris target. Sebuah baris target menyertakan kombinasi enam field berlabel, yang dipisahkan oleh tab dan diikuti oleh tanda titik dua. Field-fieldnya adalah Host, Ports, Protocols, Ignored State, OS, Seq Index, IP ID, dan Status.

    Field yang paling penting umumnya adalah Ports, yang memberikan detil pada setiap port yang menarik. Ia merupakan daftar entri port yang dibatasi koma. Setiap entri port mewakili satu port menarik, dan memiliki bentuk subfield yang dibatasi oleh tujuh garis miring (/). Subfieldnya adalah: Port number, State, Protocol, Owner, Service, SunRPC info, dan Version info.

    Sebagaimana dengan output XML, man page ini tidak memungkinkan untuk mendokumentasi seluruh format. Rincian lebih lanjut mengenai format output grepable Nmap tersedia dari https://nmap.org/book/output-formats-grepable-output.html.

-oA basename (Output to all formats)
    Sebagai kenyamanan, anda dapat menspesifikasikan -oA basename untuk menyimpan hasil scan dalam format normal, XML, dan grepable sekaligus. Mereka disimpan dalam basename.nmap, basename.xml, dan basename.gnmap. Seperti kebanyakan program, anda dapat memberi awalan nama file dengan path direktori, seperti ~/nmaplogs/foocorp/ pada Unix atau c:\hacking\sco pada Windows.

Opsi verbositas dan debugging

-v (Increase verbosity level)
    Peningkatan level verbositas, menyebabkan Nmap mencetak lebih banyak informasi tentang scan yang sedang berjalan. Port terbuka ditunjukkan saat ditemukan dan prakiraan waktu selesai disediakan ketika Nmap berpikir scan akan membutuhkan lebih dari beberapa menit. Gunakan dua kali atau lebih untuk lebih meningkatkan verbositas.

    Kebanyakan perubahan hanya mempengaruhi output interaktif, dan beberapa juga mempengaruhi output normal dan script kiddie. Tipe output lainnya ditujukan untuk diproses oleh mesin, sehingga Nmap dapat memberikan detil yang substansial dalam format tersebut tanpa melelahkan user. Namun demikian, terdapat beberapa perubahan dalam mode lainnya ketika ukuran output dapat dikurangi secara berarti dengan meniadakan beberapa detil. Sebagai contoh, baris perintah dalam output grepable yang memberikan daftar seluruh port yang discan hanya dicetak dalam mode verbose karena ia cukup panjang.

-d [level] (Increase or set debugging level)
    Ketika mode verbose tidak memberikan data yang cukup bagi anda, tersedia debugging untuk membanjiri anda dengan data! Sebagaimana dengan opsi verbositas (-v), debugging diaktifkan dengan flag perintah baris (-d) dan level debug dapat ditingkatkan dengan menspesifikasikannya berulang kali. Selain itu, anda dapat menset level debug dengan memberikan argumen ke -d. Sebagai contoh, -d9 menset level sembilan. Itu adalah level efektif tertinggi dan akan menghasilkan ribuan baris kecuali anda menjalankan scan yang sangat sederhana dengan sedikit port dan target.

    Debugging output berguna ketika diduga terdapat bug dalam Nmap, atau anda bingung mengenai apa yang dilakukan Nmap dan alasannya. Karena fitur ini lebih ditujukan bagi pengembang, baris debug tidak selalu jelas. Anda mungkin akan menemui sesuatu seperti : Timeout vals: srtt: -1 rttvar: -1 to: 1000000 delta 14987 ==> srtt: 14987 rttvar: 14987 to: 100000. Jika anda tidak memahami sebuah baris, anda dapat mengabaikannya, mencarinya dalam kode sumber, atau meminta bantuan dari list pengembangan (nmap-dev). Beberapa baris cukup jelas, namun pesannya dapat semakin tidak jelas ketika level debug dinaikkan.

--reason (Host and port state reasons)
    Tampilkan alasan setiap port diset ke status khusus dan alasan setiap host up atau down. Opsi ini menampilkan tipe paket yang menentukan status port atau host. Sebagai contoh, sebuah paket RST dari port tertutup atau echo reply dari host yang hidup. Informasi yang disediakan Nmap ditentukan oleh jenis scan atau ping. Scan SYN dan ping SYN (-sS dan -PS) sangat rinci, namun TCP connect scan (-sT) dibatasi oleh implementasi system call connect. Fitur ini secara otomatis diaktifkan oleh opsi debug (-d) dan hasilnya disimpan dalam file log XML bahkan bila opsi ini tidak diberikan.

--stats-every time (Print periodic timing stats)
    Mencetak status waktu secara periodik setelah setiap interval time. Waktu adalah spesifikasi yang dijelaskan dalam bagian bernama “PEWAKTUAN DAN KINERJA”; sehingga sebagai contoh, gunakan --stats-every 10s untuk memperoleh update status setiap 10 detik. Update dicetak ke output interaktif (layar) dan output XML.

--packet-trace (Trace packets and data sent and received)
    Menyebabkan Nmap untuk mencetak ringkasan seiap paket yang dikirim atau diterima. Opsi ini seringkali digunakan untuk debugging, namun juga bermanfaat bagi user baru untuk memahami secara tepat apa yang sebenarnya dilakukan oleh Nmap. Untuk menghindari pencetakan ribuan baris, anda mungkin ingin membatasi jumlah port yang ingin discan, seperti -p20-30. Jika anda hanya mementingkan proses subsistem deteksi versi, gunakan --version-trace. Jika anda hanya peduli dengan script tracing, berikan --script-trace. Dengan --packet-trace, anda memperoleh semua hal di atas.

--open (Show only open (or possibly open) ports)
    Terkadang anda hanya peduli tentang port yang benar-benar dapat dikoneksi (open ones), dan tidak ingin mengacaukan hasilnya dengan port closed, filtered, dan closed|filtered. Kustomisasi output normalnya dilakukan setelah scan dengan menggunakan tool seperti grep, awk, dan Perl, namun fitur ini ditambahkan karena banyaknya permintaan. Berikan --open untuk hanya melihat port open, open|filtered, dan unfiltered. Ketiga port ini diperlakukan seperti normalnya, yang berarti bahwa open|filtered dan unfiltered dapat digabungkan bila terdapat dalam jumlah banyak.

--iflist (List interfaces and routes)
    Cetak daftar interface dan rute sitem yang dideteksi oleh Nmap. Opsi ini berguna untuk debugging masalah routing atau kesalahan karakterisasi device (seperti Nmap memperlakukan koneksi PPP sebagai ethernet).

--log-errors (Log errors/warnings to normal mode output file)
    Peringatan dan kesalahan dicetak oleh Nmap biasanya hanya ke layar (output interaktif), membiarkan file output format normal (biasanya dispesifikan dengan -oN) tidak terganggu. Ketika anda ingin melihat pesan-pesan tersebut dalam file output normal yang anda spesifikasikan, tambahkan opsi ini. Ia berguna ketika anda tidak melihat output interaktif atau ketika anda ingin merekam kesalahan saat men-debug masalah. Pesan kesalahan dan peringatan akan tetap muncul dalam mode interaktif. Hal ini tidak bekerja banyak kebanyakan kesalahan yang terkait dengan argumen perintah baris yang buruk karena Nmap mungkin belum menginisialisasi file outputnya. Sebagai tambahan, beberapa pesan kesalahan dan peringatan Nmap menggunakan sistem yang berbeda yang beum mendukung opsi ini.

    Sebagai alternatif bagi --log-errors adalah dengan mengarahkan output interaktif (termasuk stream standard error) ke file. Kebanyakan shell Unix menjadikan pendekatan ini mudah, meskipun ia dapat sukar dilakukan pada Windows.

Miscellaneous output options

--append-output (Append to rather than clobber output files)
    Ketika anda menspesifikasikan nama file ke flag format output seperti -oX atau -oN, file tersebut secara baku akan ditimpa. Jika anda ingin menjaga isi file yang ada dan menambahkan hasil baru, spesifikasikan opsi --append-output. Seluruh nama file output yang dispesifikasikan dalam eksekusi Nmap tersebut kemudian akan ditambahkan alih-alih ditimpa. Hal ini tidak bekerja baik untuk data scan XML (-oX) karena file yang dihasilkan umumnya tidak akan dapat diparse dengan tepat hingga anda memperbaikinya secara manual.

--resume filename (Resume aborted scan)
    Beberapa penggunaan Nmap ekstensif membutuhkan waktu hingga dalam hitungan hari. Scan semacam itu tidak selalu berjalan hingga selesai. Pembatasan mungkin mencegah Nmap dijalankan ketika waktu kerja, jaringan dapat down, mesin yang menjalankan Nmap mungkin mengalami reboot terencana atau tidak, atau bahkan Nmap mengalami crash. Administrator yang menjalankan Nmap dapat membatalkannya demi alasan lainnya, ctrl-C. Memulai seluruh scan dari awal mungkin tidak diinginkan. Untungnya, bila log normal (-oN) atau grepable (-oG) disimpan, user dapat meminta Nmap melanjutkan scanning dengan target yang sedang dikerjakannya ketika eksekusi berhenti. Cukup berikan opsi --resume dan berikan argumen file output normal/grepable. Tidak boleh ada argumen lainnya, karena Nmap memparse file output yang sama dengan yang digunakan sebelumnya. Cukup panggil Nmap dengan nmap --resume logfilename. Nmap akan menambahkan hasil baru ke file data yang dispesifikasikan dalam eksekusi sebelumnya. Opsi ini tidak dapat dilakukan untuk format output XML karena penggabungan dua buah penjalanan Nmap ke satu file XML yang valid adalah sulit.

--stylesheet path or URL (Set XSL stylesheet to transform XML output)
    Nmap menyertakan sebuah stylesheet XSL bernama nmap.xsl untuk melihat atau menerjemahkan output XML ke HTML. Output XML menyertakan sebuah direktif xml-stylesheet yang mengarah ke nmap.xml tempat awalnya ia diinstalasi oleh Nmap (atau pada direktori kerja saat ini pada Windows). Cukup buka output Nmap pada browser modern dan ia seharusnya mengambil nmap.xsl dari filesystem dan menggunakannya untuk merender hasil. Jika anda ingin menggunakan stylesheet yang berbeda, berikan ia sebagai argumen bagi --stylesheet. Anda harus memberikan nama path atau URL lengkap. Cara pemanggilan umum adalah --stylesheet https://nmap.org/data/nmap.xsl. Cara ini memberitahu browser untuk memuat versi terakhir stylesheet dari Nmap.Org. Opsi --webxml melakukan hal yang sama dengan cara yang lebih singkat. Memuatkan XSL dari Nmap.Org memudahkan melihat hasil pada mesin yang tidak memiliki Nmap (dan karenanya tidak memiliki nmap.xsl). Jadi URL seringkali lebih bermanfaat, namun lokasi filesistem lokal nmap.xsl digunakan secara baku demi alasan privasi.

--webxml (Load stylesheet from Nmap.Org)
    Opsi kenyamanan ini adalah sekedar alias bagi --stylesheet https://nmap.org/data/nmap.xsl.

--no-stylesheet (Omit XSL stylesheet declaration from XML)
    Berikan opsi ini untuk mencegah Nmap dari mengasosiasikan sembarang sytlesheet XSL dengan output XML-nya. Direktif xml-stylesheet ditiadakan.

OPSI LAIN-LAIN

Bagian ini menjelaskan beberapa opsi penting (dan tidak begitu penting) yang tidak tercakup di manapun.

-6 (Enable IPv6 scanning)
    Sejak tahun 2002, Nmap memberikan dukungan IPv6 untuk fiturnya yang paling populer. Terutama, scanning ping (hanya-TCP), connect scanning, dan deteksi versi semuanya mendukung IPv6. Sintaks perintahnya sama dengan yang biasa kecuali anda juga menambahkan opsi -6. Tentu saja anda harus menggunakan sintaks IPv6 jika anda menspesifikasikan sebuah alamat alih-alih nama host. Sebuah alamat mungkin terlihat seperti 3ffe:7501:4819:2000:210:f3ff:fe03:14d0, sehingga disarankan untuk menggunakan nama host. Outputnya tampak sama dengan yang biasa, dengan alamat IPv6 pada baris “port menarik”.

    Meskipun IPv6 belum tersebar luas, ia telah digunakan secara signifikan di beberapa negara (biasanya Asia) dan kebanyakan sistem operasi modern mendukungnya. Untuk menggunakan Nmap dengan IPv6, sumber dan target scan anda harus dikonfigurasi untuk IPv6. Jika ISP anda (seperti kebanyakan) tidak mengalokasikan alamat IPv6 bagi anda, broker tunnel bebas tersedia luas dan bekerja baik dengan Nmap. Saya menggunakan layanan broker tunnel IPv6 gratis di http://www.tunnelbroker.net. Broker tunnel lainnya adalah di daftar Wikipedia[14]. 6to4 tunnels adalah pendekatan gratis dan populer lainnya.

-A (Aggressive scan options)
    Opsi ini mengaktifkan opsi agresive dan advance tambahan. Saya belum memutuskan kepanjangannya. Saat ini ia mengaktifkan deteksi SO (-O), scanning versi (-sV), scanning script (-sC) dan traceroute (--traceroute). Fitur lebih banyak mungkin ditambahkan di masa mendatang. Tujuannya adalah mengaktifkan set opsi scan yang lengkap tanpa perlu mengingat sejumlah besar flag. Namun demikian, karena scanning script dengan set baku dianggap mengganggu, anda tidak seharusnya menggunakan -A terhadap jaringan target tanpa ijin. Opsi ini hanya mengaktifkan fitur, dan tidak opsi pewaktuan (seperti -T4) atau opsi verbositas (-v) yang mungkin anda inginkan pula.

--datadir directoryname (Specify custom Nmap data file location)
    Nmap memperoleh beberapa data khusus pada runtime dalam file bernama nmap-service-probes, nmap-services, nmap-protocols, nmap-rpc, nmap-mac-prefixes, dan nmap-os-db. Jika lokasi file-file ini telah dispesifikasikan (dengan menggunakan opsi --servicedb atau --versiondb), lokasi tersebut digunakan untuk file itu. Setelah itu, Nmap mencari file-file ini dalam direktori yang dispesifikasikan dengan opsi --datadir (bila ada). File yang tidak ditemukan di sana, akan dicari pada direktori yang dispesifikasikan oleh variabel lingkungan NMAPDIR . Kemudian ~/.nmap untuk UID ril dan efektif (sistem POSIX) atau lokasi eksekutabel Nmap (Win32), dan kemudian lokasi yang digunakan saat kompilasi seperti /usr/local/share/nmap atau /usr/share/nmap . Dan terakhir, Nmap akan mencari dalam direktori saat ini.

--servicedb services file (Specify custom services file)
    Beritahu Nmap untuk menggunakan file service yang diberikan alih-alih file nmap-services yang disertakan dalam Nmap. Dengan menggunakan opsi ini juga menyebabkan opsi scan cepat (-F) digunakan. Lihat deskripsi untuk --datadir untuk informasi lebih lanjut mengenai file data Nmap.

--versiondb service probes file (Specify custom service probes file)
    Minta Nmap untuk menggunakan file pro be service yang diberikan alih-alih file nmap-service-probes yang disertakan dalam Nmap. Lihat deskripsi untuk --datadir untuk informasi lebih lanjut mengenai file data Nmap.

--send-eth (Use raw ethernet sending)
    Minta Nmap mengirim paket pada layer ethernet raw (data link) alih-alih layer IP (jaringan) yang lebih tinggi. Secara baku, Nmap memilih satu yang umumnya terbaik untuk platform yang digunakan. Socket Raw (layer IP layer) umumnya paling efisien pada mesin-mesin Unix, sementara frame ethernet dibutuhkan bagi operasi Windows karena Microsoft meniadakan dukungan socket raw. Nmap tetap menggunakan paket IP raw pada Unix ketika tidak ada pilihan lainnya (seperti koneksi non-ethernet).

--send-ip (Send at raw IP level)
    Minta Nmap untuk mengirim paket melalui soket IP raw alih-alih mengirimkan frame ethernet level lebih rendah. Ia merupakan komplemen opsi --send-eth yang didiskusikan sebelumnya.

--privileged (Assume that the user is fully privileged)
    Beritahu Nmap untuk mengasumsikan bahwa ia memiliki cukup privilege untuk melakukan pengiriman socket raw, packet sniffing, dan operasi sejenis yang biasanya membutuhkan root privileges pada sistem Unix. Secara baku Nmap berhenti bila operasi itu diminta namun geteuid tidaklah nol. --privileged berguna dengan kapabilitas kernel Linux dan sistem serupa yang mungkin dikonfigurasi untuk membolehkan user unprivileged melakukan scan raw-packet. Pastikan untuk memberikan flag opsi ini sebelum flag lainnya bagi opsi yang membutuhkan privilege (SYN scan, deteksi SO, dsb.). Variabel lingkungan NMAP_PRIVILEGED dapat juga diset sebagai alternatif ekivalen bagi --privileged.

--unprivileged (Assume that the user lacks raw socket privileges)
    Opsi ini merupakan lawan --privileged. Ia memberitahu Nmap untuk memperlakukan user sebagai tidak memiliki privilege network raw socket dan sniffing. Hal ini berguna untuk testing, debugging, atau ketika fungsionalitas jaringan raw pada sistem operasi anda tampaknya rusak. Variabel lingkungan NMAP_UNPRIVILEGED dapat diset sebagai alternatif ekivalen bagi --unprivileged.

--release-memory (Release memory before quitting)
    Opsi ini hanya berguna untuk memory-leak debugging. Ia membuat Nmap merilis memori yang telah dialokasikan sebelum ia berhenti sehingga kebocoran memori sebenarnya mudah ditemukan. Normalnya Nmap melewati langkah ini karena SO melakukannya setelah penghentian proses.

-V; --version (Print version number)
    Mencetak angka versi Nmap dan keluar.

-h; --help (Print help summary page)
    Mencetak layar bantuan singkat dengan flag-flag yang paling umum. Menjalankan Nmap tanpa argumen melakukan hal yang sama.

INTERAKSI RUNTIME

Selama eksekusi Nmap, seluruh kunci yang ditekan direkam. Hal ini memungkinkan anda beriteraksi dengan program tanpa membatalkan dan memulai ulang. Beberapa kunci khusus akan merubah opsi, sementara kunci lain akan mencetak pesan status yang memberitahu anda mengenai scan. Konvensinya adalah huruf kecil meningkatkan jumlah yang dicetak, dan huruf kapital mengurangi yang dicetak. Anda dapat juga menekan ‘?’ untuk bantuan.

v / V
    Naikkan / kurangi level verbositas

d / D
    Naikkan / kurangi level debugging

p / P
    Aktifkan/Non-aktifkan packet tracing

?
    Cetak layar bantuan interaksi runtime

Lainnya
    Cetak pesan satus seperti ini:

    Stats: 0:00:08 elapsed; 111 hosts completed (5 up), 5 undergoing Service Scan

    Service scan Timing: About 28.00% done; ETC: 16:18 (0:00:15 remaining)

CONTOH-CONTOH

Berikut ini adalah beberapa contoh penggunaan Nmap, dari yang mudah dan rutin hingga yang sedikit kompleks dan canggih. Beberapa alamat IP dan nama domain aktual digunakan untuk membuatnya menjadi lebih kongkrit. Anda harus merubah alamat/nama dengan jaringan anda sendiri.. Meskipun saya tidak menganggap scanning port jaringan lain adalah atau seharusnya ilegal, beberapa administrator jaringan tidak menghargai scanning jaringan mereka sembarangan dan akan mengajukan keluhan. Pendekatan terbaik adalah memperoleh ijin terlebih dulu.

Untuk tujuan pengujian, anda memperoleh ijin untuk memeriksa host scanme.nmap.org. Ijin ini hanya mencakup pemeriksaan dengan Nmap dan tidak menguji eksploit atau serangan denial of service. Untuk menghemat bandwidth, mohon tidak menggunakan lebih dari selusin scan terhadap host tersebut per hari. Jika layanan target scanning gratis ini disalahgunakan, ia akan dinonaktifkan dan Nmap akan melaporkan Failed to resolve given hostname/IP: scanme.nmap.org. Ijin ini juga berlaku untuk host-host scanme2.nmap.org, scanme3.nmap.org, dan seterusnya, meskipun host-host ini belum ada.

nmap -v scanme.nmap.org

Opsi ini memeriksa seluruh port TCP reserved pada mesin scanme.nmap.org . Opsi -v mengaktifkan mode verbose.

nmap -sS -O scanme.nmap.org/24

Meluncurkan scan stealth SYN terhadap setiap mesin yang up dari 256 IP pada jaringan berukuran “kelas C” tempat Scanme berada. Ia juga berusaha menentukan sistem operasi yang digunakan pada setiap host yang hidup dan berjalan. Hal ini membutukan privilege root karena scan SYN dan deteksi SO.

nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127

Meluncurkan enumerasi host dan scan TCP pada setengah bagian pertama dari subnet dalam alamat kelas B 198.116. Scan ini menguji apakah sistem menjalankan SSH, DNS, POP3, atau IMAP pada port standarnya, atau apapun pada port 4564. Pada sembarang port yang ditemukan terbuka, akan digunakan deteksi versi untuk menentukan aplikasi apa yang berjalan.

nmap -v -iR 100000 -PN -p 80

Meminta Nmap memilih 100.000 host secara acak dan memeriksanya untuk web server (port 80). Enumerasi host ditiadakan dengan -PN karena mengirim beberapa probe untuk menentukan apakah host hidup adalah sia-sia ketika anda hanya memprobe satu port pada setiap host target.

nmap -PN -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20

Memeriksa 4096 IP untuk sembarang web server (tanpa mem-ping mereka) dan menyimpan hasilnya dalam format grepable dan XML.

BUGS

Seperti penulisnya, Nmap tidaklah sempurna. Namun anda dapat membantu membuatnya lebih baik dengan mengirimkan laporan bug atau bahkan menulis patch. Jika Nmap tidak berlaku sesuai yang anda harapkan, pertama upgrade ke versi terakhir yang tersedia dari https://nmap.org. Jika masalah masih tetap, lakukan riset untuk menentukan apakah ia telah ditemukan dan diselesaikan. Cobalah mencari pesan kesalahan pada halaman pencarian kami https://insecure.org/search.html atau di Google. Juga cobalah membrowsing arsip nmap-dev di https://seclists.org/. Bacalah juga halaman manual ini dengan baik. Jika masih belum selesai juga, kirimkan laporan bug ke <dev@nmap.org>. Mohon sertakan semua yang anda telah pelajari mengenai masalah, dan juga versi Nmap dan sistem operasi yang anda gunakan. Laporan kesalahan dan pertanyaan penggunaan Nmap yang dikirim ke <dev@nmap.org> akan lebih mungkin dijawab daripada yang dikirimkan secara langsung ke Fyodor. Jika anda berlangganan ke list nmap-dev sebelum posting, pesan anda akan melewati moderasi dan akan lewat dengan lebih cepat. Berlangganan di https://nmap.org/mailman/listinfo/dev.

Patch code untuk memperbaiki bug adalah lebih baik daripada laporan kesalahan. Instruksi dasar untuk membuat file patch dengan perubahan anda tersedia di https://nmap.org/data/HACKING. Patch dapat dikirim ke nmap-dev (direkomendasikan) atau langsun ke Fyodor.

PENULIS

Fyodor <fyodor@nmap.org> (https://insecure.org)

Selama ini, ratusan orang telah memberikan kontribusi berharga ke Nmap. Hal ini dirinci dalam file CHANGELOG yang didistribusikan bersama Nmap dan juga tersedia dari https://nmap.org/changelog.html.

LEGAL NOTICES

  Unofficial Translation Disclaimer / Disklaimer Terjemahan Tidak Resmi

This is an unnofficial translation of the Nmap license details[15] into Indonesian. It was not written by Insecure.Com LLC, and does not legally state the distribution terms for Nmap -- only the original English text does that. However, we hope that this translation helps Indonesian speakers understand the Nmap license better.

Ini merupakan terjemahan tidak resmi dari Nmap license details[15] ke dalam bahasa Indonesia. Ia tidak ditulis oleh Insecure.Com LLC, dan tidak secara legal menyatakan syarat distribusi untuk Nmap -- hanya teks berbahasa Inggris aslinya yang melakukan hal itu. Namun demikian, kami berharap bahwa terjemahan ini membantu pengguna bahasa Indonesia untuk lebih memahami lisensi Nmap.

  Nmap Copyright and Licensing

The Nmap Security Scanner is (C) 1996–2009 Insecure.Com LLC. Nmap is also a registered trademark of Insecure.Com LLC. This program is free software; you may redistribute and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; Version 2 with the clarifications and exceptions described below. This guarantees your right to use, modify, and redistribute this software under certain conditions. If you wish to embed Nmap technology into proprietary software, we sell alternative licenses (contact <sales@insecure.com>). Dozens of software vendors already license Nmap technology such as host discovery, port scanning, OS detection, and version detection.

Note that the GPL places important restrictions on “derived works”, yet it does not provide a detailed definition of that term. To avoid misunderstandings, we consider an application to constitute a “derivative work” for the purpose of this license if it does any of the following:

    • Integrates source code from Nmap

    • Reads or includes Nmap copyrighted data files, such as nmap-os-db or nmap-service-probes.

    • Executes Nmap and parses the results (as opposed to typical shell or execution-menu apps, which simply display raw Nmap output and so are not derivative works.)

    • Integrates/includes/aggregates Nmap into a proprietary executable installer, such as those produced by InstallShield.

    • Links to a library or executes a program that does any of the above.

The term “Nmap” should be taken to also include any portions or derived works of Nmap. This list is not exclusive, but is meant to clarify our interpretation of derived works with some common examples. Our interpretation applies only to Nmap—we don't speak for other people's GPL works.

If you have any questions about the GPL licensing restrictions on using Nmap in non-GPL works, we would be happy to help. As mentioned above, we also offer alternative license to integrate Nmap into proprietary applications and appliances. These contracts have been sold to many security vendors, and generally include a perpetual license as well as providing for priority support and updates as well as helping to fund the continued development of Nmap technology. Please email <sales@insecure.com> for further information.

As a special exception to the GPL terms, Insecure.Com LLC grants permission to link the code of this program with any version of the OpenSSL library which is distributed under a license identical to that listed in the included COPYING.OpenSSL file, and distribute linked combinations including the two. You must obey the GNU GPL in all respects for all of the code used other than OpenSSL. If you modify this file, you may extend this exception to your version of the file, but you are not obligated to do so.

If you received these files with a written license agreement or contract stating terms other than the terms above, then that alternative license agreement takes precedence over these comments.

  Creative Commons License for this Nmap Guide

This Nmap Reference Guide is (C) 2005–2008 Insecure.Com LLC. It is hereby placed under version 2.5 of the Creative Commons Attribution License[2]. This allows you redistribute and modify the work as you desire, as long as you credit the original source. Alternatively, you may choose to treat this document as falling under the same license as Nmap itself (discussed previously).

  Source Code Availability and Community Contributions

Source is provided to this software because we believe users have a right to know exactly what a program is going to do before they run it. This also allows you to audit the software for security holes (none have been found so far).

Source code also allows you to port Nmap to new platforms, fix bugs, and add new features. You are highly encouraged to send your changes to <fyodor@nmap.org> for possible incorporation into the main distribution. By sending these changes to Fyodor or one of the Insecure.Org development mailing lists, it is assumed that you are offering Fyodor and Insecure.Com LLC the unlimited, non-exclusive right to reuse, modify, and relicense the code. Nmap will always be available Open Source, but this is important because the inability to relicense code has caused devastating problems for other Free Software projects (such as KDE and NASM). We also occasionally relicense the code to third parties as discussed above. If you wish to specify special license conditions of your contributions, just say so when you send them.

  No Warranty

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License v2.0 for more details at http://www.gnu.org/licenses/gpl-2.0.html, or in the COPYING file included with Nmap.

It should also be noted that Nmap has occasionally been known to crash poorly written applications, TCP/IP stacks, and even operating systems. While this is extremely rare, it is important to keep in mind. Nmap should never be run against mission critical systems unless you are prepared to suffer downtime. We acknowledge here that Nmap may crash your systems or networks and we disclaim all liability for any damage or problems Nmap could cause.

  Inappropriate Usage

Because of the slight risk of crashes and because a few black hats like to use Nmap for reconnaissance prior to attacking systems, there are administrators who become upset and may complain when their system is scanned. Thus, it is often advisable to request permission before doing even a light scan of a network.

Nmap should never be installed with special privileges (e.g. suid root) for security reasons.

  Third-Party Software

This product includes software developed by the Apache Software Foundation[16]. A modified version of the Libpcap portable packet capture library[17] is distributed along with Nmap. The Windows version of Nmap utilized the Libpcap-derived WinPcap library[18] instead. Regular expression support is provided by the PCRE library[19], which is open-source software, written by Philip Hazel. Certain raw networking functions use the Libdnet[20] networking library, which was written by Dug Song. A modified version is distributed with Nmap. Nmap can optionally link with the OpenSSL cryptography toolkit[21] for SSL version detection support. The Nmap Scripting Engine uses an embedded version of the Lua programming language[22]. All of the third-party software described in this paragraph is freely redistributable under BSD-style software licenses.

  United States Export Control Classification

U.S. Export Control: Insecure.Com LLC believes that Nmap falls under U.S. ECCN (export control classification number) 5D992. This category is called “Information Security software not controlled by 5D002”. The only restriction of this classification is AT (anti-terrorism), which applies to almost all goods and denies export to a handful of rogue nations such as Iran and North Korea. Thus exporting Nmap does not require any special license, permit, or other governmental authorization.

CATATAN

1.  versi Inggris
    https://nmap.org/book/man.html

2.  Creative Commons Attribution License
    http://creativecommons.org/licenses/by/2.5/

3.  RFC 1122
    http://www.rfc-editor.org/rfc/rfc1122.txt

4.  RFC 792
    http://www.rfc-editor.org/rfc/rfc792.txt

5.  RFC 1918
    http://www.rfc-editor.org/rfc/rfc1918.txt

6.  UDP
    http://www.rfc-editor.org/rfc/rfc768.txt

7.  RFC TCP
    http://www.rfc-editor.org/rfc/rfc793.txt

8.  RFC 959
    http://www.rfc-editor.org/rfc/rfc959.txt

9.  RFC 1323
    http://www.rfc-editor.org/rfc/rfc1323.txt

10. bahasa pemrograman Lua
    http://lua.org

11. Protokol IP
    http://www.rfc-editor.org/rfc/rfc791.txt

12. Nmap::Scanner
    http://sourceforge.net/projects/nmap-scanner/

13. Nmap::Parser
    http://nmapparser.wordpress.com/

14. di daftar Wikipedia
    http://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers

15. Nmap license details
    https://nmap.org/book/man-legal.html

16. Apache Software Foundation
    http://www.apache.org

17. Libpcap portable packet capture library
    http://www.tcpdump.org

18. WinPcap library
    http://www.winpcap.org

19. PCRE library
    http://www.pcre.org

20. Libdnet
    http://libdnet.sourceforge.net

21. OpenSSL cryptography toolkit
    http://www.openssl.org

22. Lua programming language
    http://www.lua.org