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