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 and Nmap::Parser 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.

-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.

--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.