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.
-
-oN
(normal output)<filespec>
normal output
akan diarahkan ke nama file yang diberikan. Seperti yang didiskusikan di atas, opsi ini sedikit berbeda dariinteractive output
.-
-oX
(XML output)<filespec>
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 dihttps://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
(ScRipT KIdd|3 oUTpuT)<filespec>
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
(grepable output)<filespec>
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
, danStatus
.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
, danVersion 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
(Output to all formats)<basename>
Sebagai kenyamanan, anda dapat menspesifikasikan
-oA
untuk menyimpan hasil scan dalam format normal, XML, dan grepable sekaligus. Mereka disimpan dalam<basename>
,<basename>
.nmap
, dan<basename>
.xml
. Seperti kebanyakan program, anda dapat memberi awalan nama file dengan path direktori, seperti<basename>
.gnmap~/nmaplogs/foocorp/
pada Unix atauc:\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 callconnect
. Fitur ini secara otomatis diaktifkan oleh opsi debug (-d
) dan hasilnya disimpan dalam file log XML bahkan bila opsi ini tidak diberikan.-
--stats-every
(Print periodic timing stats)<time>
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 portclosed
,filtered
, danclosed|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 portopen
,open|filtered
, danunfiltered
. Ketiga port ini diperlakukan seperti normalnya, yang berarti bahwaopen|filtered
danunfiltered
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
(Resume aborted scan)<filename>
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
(Set XSL stylesheet to transform XML output)<path or URL>
Nmap menyertakan sebuah stylesheet XSL bernama
nmap.xsl
untuk melihat atau menerjemahkan output XML ke HTML. Output XML menyertakan sebuah direktifxml-stylesheet
yang mengarah kenmap.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 mengambilnmap.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 memilikinmap.xsl
). Jadi URL seringkali lebih bermanfaat, namun lokasi filesistem lokalnmap.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.