Deteksi OS melalui Finger Print Tcp/Ip

Deteksi OS melalui Fingerprint TCP/IP
oleh Fyodor <fyodor@insecure.org> (http://www.insecure.org/)
Ditulis: 18 Oktober 1998
Modifikasi terakhir: 10 April 1999

[French Translation by Arhuman <arhuman&at&francemel.com>]
[Portuguese Translation by Frank Ned <frank&at&absoluta.org>]
[Italian Translation by Rige <rigel&at&penguinpowered.com>]
[Russian Translation by Alex Volkov <alex&at&nmap.ru>]
[Spanish Translation by Marco Barbosa <mabs&at&hotmail.com>]
[German Translation by Stefan Maly <stefan&at&maly.de>]
[Chinese Translation by neko <neko&at&126.com>]
[Turkish Translation by Egemen Tas <egement&at&karyde.com.tr>]
[Hebrew Translation by Elad]
[Japanese Translation by Yoriyuki Sakai <sakai&at&lac.co.jp>
and Hiromi Yanaoka <yanaoka&at&lac.co.jp>]
[Polish Translation by Pawel Wasylyszyn <wasylysp&at&wizard.ae.krakow.pl>]

Catatan ini boleh didistribusikan secara bebas. Catatan terakhir
tersedia di http://www.insecure.org/nmap/nmap-fingerprinting-article.txt

ABSTRAKSI

Catatan ini membicarakan bagaimana mendapatkan informasi yang berharga
tentang host melalui urutan stack TCP/IP nya. Pertama saya akan
mempresentasikan beberapa metode klasik menentukan OS yang tidak menyertakan
stack fingerprint. Kemudian saya akan menjelaskan “gaya seni”saat ini dalam
peralatan stack fingerprint. Kemudian deskripsi beberapa teknik yang
menyebabkan remote host untuk membocorkan informasi tentang dirinya sendiri.
Terakhir saya akan menerangkan implementasi nmap saya, diikuti oleh informasi
yang didapat dari nmap yang mengungkapkan OS yang dipakai di beberapa site
internet yang populer.

ALASAN

Saya pikir kegunaan untuk menentukan OS apa yang dipakai sistem sangat jelas.
Salah satu contoh yang kuat dari kegunaan itu adalah bahwa lubang-lubang
keamanan tergantung dari versi OS. Taruhlah kamu melakukan tes penetrasi dan
kamu menemukan port 53 terbuka. Jika ini termasuk Bind versi yang lemah/cacat,
kamu hanya dapat satu kesempatan untuk mengeksploitnya karena usaha yang gagal
akan merusak daemon. Dengan TCP/IP fingerprinter yang baik, kamu akan dengan
cepat menemukan mesin ini menggunakan ‘Solaris 2.51’ atau ‘Linux 2.0.35’ dan
kamu dapat menyesuaikan kode kamu sendiri.

Kemungkinan buruk terjadi bila seseorang menscan 500.000 host untk melihat
OS yang dipakai dan port berapa yang terbuka. Kemudian ketika seseorang
mengatakan ada lubang comsat daemon di Sun, cracker kecil kita mendapat
daftar untuk ‘UDP/512’ dan ‘Solaris 2.6’dan segera dia punya banyak halaman
boxes yang rootable. Hal ini mestinya dicatat sebagai tindakan SCRIPT KIDDIE.
Kamu tidak punya skill dan tidak seorangpun berimpresi bahwa kamu dapat
menemukan .edu yang cacat yang lubangnya belum dipatch. Juga, orang akan
kurang impresif jika kamu menggunakan akses untuk men-deface website untuk
menunjukkan kepintaran kamu dan betapa bodohnya sisadmin.

Kemungkinan yang lain adalah teknik sosial atau ‘social engineering’.
Taruhlah kamu sedang menscan perusahaan target kamu dan nmap melaporkan
‘Datavoice TxPORT PRISM 3000 T1 CSU/DSU 6.22/2.06’. Hacker mungkin akan menelepon
sebagai ‘Datavoice support’ dan menanyakan tentang PRISM 3000. “Kita akan
mengumumkan lubang keamanan segera, tapi pertama kita ingin pelanggan kita saat
ini untuk menginstall patch– Saya hanya mengemail ini untukmu”. Beberapa
administrator yang naif akan mengira hanya teknisi Datavoice yang tahu
banyak tentang CSU/DSU.

Penggunaan potensial yang lain adalah evaluasi perusahaan yang ingin diajak
bisnis. Sebelum kamu memilih ISP yang baru, scanlah mereka dan lihat
peralatan yang digunakan. “$99/tahun” akan terdengar buruk jika kamu tahu
bahwa mereka punya router yang payah dan menawarkan service PPP Windows.

TEKNIK KLASIK

Stack fingerprint memecahkan masalah identifikasi OS dalam jalan yang unik
Saya pikir teknik ini memegang banyak janji, tapi saat ini ternyata ada solusi
yang lain . Sayangnya, hal ini merupakan teknik yang paling efektif.
playground~> telnet hpux.u-aizu.ac.jp
Trying 163.143.103.12 …
Connected to hpux.u-aizu.ac.jp.
Escape character is ‘^]’.

HP-UX hpux B.10.01 A 9000/715 (ttyp2)

login:

Di situ tidak akan muncul masalah fingerprint jika mesin mengumumkan
kepada dunia sistem yang dipakai. Sayangnya, banyak vendor mengirim
sistem saat ini dengan jenis banner yang seperti itu dan banyak admin
tidak mematikannya. Hanya karena banyak jalan untuk mengetahui OS
yang dipakai ( misalnya fingerprint), bukan berarti kita mesti mengumumkan
OS dan arsitektur kita kepada setiap orang yang mencoba untuk koneksi.

Masalah yang berhubungan dengan teknik ini adalah jumlah orang yang
mematikan banner yang semakin meningkat, banyak sistem yang tidak
memberikan informasi yang cukup dan usaha orang untuk membohongi di
banner mereka. Bagaimanapun, pembacaan banner adalah semua yang
kamu dapatkan untuk mengecek OS dan versi OS jika kamu menghabiskan
$$$ untuk ISS scanner komersial. Download nmap dan tabungkan uangmu🙂.
Bahkan jika kamu mematikan banner, banyak aplikasi yang dengan gembira
memberi tahu jika diminta. Sebagai contoh lihat sebuah FTP server:

payfonez> telnet ftp.netscape.com 21
Trying 207.200.74.26 …
Connected to ftp.netscape.com.
Escape character is ‘^]’.
220 ftp29 FTP server (UNIX(r) System V Release 4.0) ready.
SYST
215 UNIX Type: L8 Version: SUNOS

Pertama, ini memberitahu detail sistem di banner defaultnya.
Kemudian jika kita beri perintah ‘SYST’ dengan gembiranya
dia akan memberi informasi yang lebih banyak.

Jika mendukung anon FTP, kita dapat sering download /bin/ls
atau binari yang lain dan menentukan arsitektur apa yang dipakai.
Banyak aplikasi terlalu bebas dengan informasi. Ambil webserver
sebagai contoh:

playground> echo ‘GET / HTTP/1.0\n’ | nc hotbot.com 80 | egrep ‘^Server:’
Server: Microsoft-IIS/4.0
playground>

Hmmm … saya bertanya-tanya OS apa yang dipakai lamer.

Teknik klasik yang lain termasuk record host info DNS(jarang efektif)
dan teknik sosial. Jika mesin mendengar di 161/udp(snmp), kamu dijamin
setumpuk info menggunakan ‘snmp walk’ dari distribusi alat CMU SNMP
dan nama komunitas ‘public’

PROGRAM FINGERPRINT TERBARU

Nmap bukan program identifikasi OS yang pertama menggunakan
fingerprint TCP/IP. IRC spoofer sirc-nya Johan memasukkan teknik
dasar fingerprint sejak versi 3. Itu berusaha untuk menempatkan host
dalam kelas “Linux”, “4.4BSD”, “Win95”, atau “Unknown” menggunakan
tes flag TCP sederhana.
Program lain seperti checkos, dirilis Januari tahun ini oleh Shok pada
Confidence Remains High Issue #7. Teknik fingerprint sama seperti SIRC
bahkan kodenya identik di beberapa tempat. Checkos tersedia
khusus dan dalam jangka panjang akan dirilis untuk umum, jadi saya tidak
punya ide siapa mengambil kode siapa. Tapi kelihatannya akan tercantum
kredit kepada yang lain. Satu yang checkos tambahkan adalah
pengecekan banner telnet yang berguna tapi punya masalah nantinya.
[ Update: Shok menulis untuk mengatakan bahwa checkos tidak ditujukan
untuk umum dan inilah mengapa dia belum terusik untuk meberi kredit
SIRC untuk beberapa kode.]

Su1d juga menulis program pengecek OS dan dinamai SS versi 3.11
dan dapat mengidentifikasi 12 tipe OS yang berbeda. Saya termasuk
bagiannya karena dia memberi kredit program nmap saya untuk beberapa
kode jaringannya🙂.

Lalu ada queso. Program ini terbaru dan merupakan lompatan besar dari
program yang lain. Tidak hanya mengenalkan beberapa test baru, tapi
mereka juga yang pertama (yang saya lihat) memindahkan kode
fingerprint OS. Scanner yang lain memasukkan kode seperti:

/* dari ss */
if ((flagsfour & TH_RST) && (flagsfour & TH_ACK) && (winfour == 0) &&
(flagsthree & TH_ACK))
reportos(argv[2],argv[3],”Livingston Portmaster ComOS”);

Bahkan queso memindahkan ini ke file konfigurasi yang ternyata
lebih baik dan membuat tambahan OS semudah menambah
sedikit baris ke file fingerprint.

Queso ditulis oleh Savage, satu dari legenda di Apostols.org .

Satu masalah dengan semua program yang dijelaskan diatas
adalah bahwa mereka sangat terbatas pada jumlah test fingerprint
yang membatasi granularitas jawaban. Saya ingin mengetahui
lebih daripada hanya ‘mesin ini OpenBSD, FreeBSD, atau NetBSD’,
saya ingin tahu secara persis versi berapa. Dengan kata lain,
saya lebih suka melihat ‘Solaris 2.6’ daripada hanya ‘Solaris’.
Untuk mencapai ini, saya bekerja pada teknik fingerprint
yang akan saya jelaskan nanti.

METODOLOGI FINGERPRINT

Disana ada banyak teknik yang dapat digunakan untuk me-fingerprint
stack networking. Dasarnya, kamu hanya melihat benda
yang berbeda diantara sistem operasi dan menulis perbedannya.
Jika kamu kombinasikan, kamu dapat mempersempitnya secara tepat.
Contohnya, nmap dapat membedakan Solaris 2.4 vs Solaris 2.5-2.51 vs
Solaris 2.6. Juga dapat memberitahu kernel Linux 2.0.30 dari 2.0.31-34
atau 2.0.35. Berikut ini beberapa tekniknya:

FIN probe — Di sini kita mengirim paket FIN (atau paket tanpa
flag ACK atau SYN ) untuk membuka port dan menunggu respon.
Tindakan RFC 793 yang benar adalah
tidak ada respon tapi implementasi yang buruk seperti MS Windows,
BSDI, CISCO, HP/UX, MVS, dan IRIX mengirim kembali RESET .
Banyak peralatan menggunakan teknik ini.

Flag BOGUS probe — Queso adalah scanner pertama yang menggunakan
tes pintar ini. Idenya adalah mengeset flag TCP undefined (64 atau 128)
pada header TCP dari paket SYN. Mesin Linux terutama 2.0.35
menjaga flag ini tetap di keadaan set pada responnya. Saya tidak
menemukan OS lain mempunyai bug ini. Tapi, beberapa OS tampak
mereset koneksi ketika mereka dapat paket SYN+BOGUS. Tingkah
laku ini dapat berguna untuk mengidentifikasi mereka.
Sampling TCP ISN –Ide di sini untuk menemukan pola pada angka urutan
inisial yang dipilih oleh implementasi TCP ketika merespon permintaan
koneksi. Dapat dikategorikan ke dalam banyak grup misalnya tradisional
64K( kotak UNIX lama), peningkatan random ( versi terbaru Solaris,
IRIX, FreeBSD,Digital UNIX, Cray, dsb), random asli (Linux 2.0.*,
OpenVMS, AIX terbaru, dsb). Kotak Windows (dan sedikit yang lain)
menggunakan model “time dependent” (tergantung waktu) dimana ISN dinaikkan
sedikit setiap waktu periode.Tanpa perlu dikata, ini hampir mudah
diserang seperti 64K lama. Tentu teknik favorite saya adalah konstan.
Mesin selalu menggunakan ISN yang sama🙂. Saya sudah lihat pada
3Com hubs(memakai 0x803) dan printer AppleLaserWriter( memakai
0x7001)
Kamu dapat juga membagi grup ini seperti peningkatan random dengan
variasi perhitungan, pembagi terbesar, dan fungsi lain pada set angka
urutan dan selisihnya.
Dicatat bahwa penciptaan ISN mempunyai implikasi keamanan yang
penting. Untuk informasi yang lebih banyak , hubungi “ahli keamanan”
Tsutomu “Shimmy” Shimomura di SDSC dan tanya dia bagaimana dia
dimiliki. Nmap adalah program pertama yang saya lihat menggunakan
ini untuk identifikasi OS.
Bit “don’t fragment” — Banyak OS memulai untuk mengeset
bit IP “Don’t Fragment” pada beberapa paket yang mereka kirim.
Ini memberikan keuntungan performasi yang beragam( meskipun ini
dapat diabaikan– inilah mengapa scan fragmentasi nmap tidak bekerja
dari kotak Solaris). Pada beberapa kasus. tidak semua OS
melakukan ini dan beberapa melakukannya pada kasus berbeda,
jadi dengan memperhatikan bit ini kita dapat informasi tentang OS
target. Saya belum melihat yang satu ini sebelumnya.
Window inisial TCP — Ini termasuk mengecek ukuran window pada paket
yang dikembalikan. Scanner lama menggunakan window non-zero pada
paket RST untuk mengartikan “BSD 4.4 turunan”. Scanner terbaru
seperti queso dan nmap menjaga jejak window asli karena merupakan
konstanta sesuai tipe OS. Tes ini memberikan kita banyak informasi
karena beberapa OS dapat diidentifikasi secara unik lewat window
sendiri( misalnya, AIX adalah hanya OS yang saya lihat menggunakan
0x3F25) . Pada stack TCP untuk NT5, Microsoft menggunakan
0x402E. Menariknya, itu adalah angka yang digunakan OpenBSD
dan FreeBSD.

Nilai ACK — Meskipun kamu berpikir ini standar, implementasinya berbeda
pada nilai yang digunakan untuk field ACK pada kasus tertentu.
Sebagai contoh, taruhlah kamu mengirim FIN|PSH|URG ke port
TCP yang tertutup. Banyak implementasi akan mengeset ACK
sama seperti angka urutan inisial, meskipun Windows dan beberapa
printer yang bodoh akan mengirim urutan+1. Jika kamu mengirim
SYN|FIN|URG|PSH ke port terbuka, Windows sangat tidak
konsisten. Kadang-kadang mengirim kembali urutannya, lain waktu
mengirim S++ atau nilai yang acak. Seseorang mesti bertanya-tanya
kode apa yang ditulis MS sehingga berubah seperti itu.

ICMP Error Message Quenching — Beberapa OS mengikuti RFC 1812 saran
untuk membatasi kecepatan mengirim pesan error. Misalnya,
kernel Linux(pada net/ipv4/icmp.h) membatasinya 80 per 4 detik,
dengan 1/4 detik penalti jika melewati.Satu jalan untuk mengetesnya
adalah mengirim segudang paket ke beberapa port UDP secara acak dan
menghitung yang tidak sampai yang diterima. Saya tidak menambah ini
pada nmap (kecuali untuk scan port UDP).Tes ini membuat deteksi OS
menjadi lebih lama karena kamu perlu mengirim segudang paket dan
menunggunya kembali. Juga kemungkinan adanya paket yang drop akan
menyakitkan.
ICMP Message Quoting –RFC memberi tahu pesan error ICMP
perlu sejumlah kecil pesan ICMP yang menyebabkan error
yang beragam. Untuk pesan “port tidak dapat dicapai”, hampir
semua implementasi mengirim IP header + 8 bytes kembali.
Tapi, Solaris mengirim lebih banyak bit dan Linux lebih dari itu.
Cantiknya, ini mengijinkan nmap mengenali host Linux dan
Solaris bahkan bila tidak ada port yang listening.

ICMP Error message echoing integrity — Saya dapat ide dari
Theo De Raadt (developer OpenBSD ) pada
comp.security.unix. Mesin mesti mengirim kembali
bagian pesan yang asli dengan error port yang tidak dapat
dicapai. Beberapa mesin memakai header sebagai ‘scratch
space’ selama proses sehingga terjadi bitwarp oleh waktu yang
kamu dapat kembali. Misal , AIX dan BSDI mengirim kembali
field IP ‘panjang total’ yang 20 byte terlalu tinggi. Beberapa BSDI,
FreeBSD, OpenBSD, ULTRIX, dan VAXen mengirim IP ID
yang kamu kirim ke mereka. Ketika checksum berubah karena
perubahan TTL, beberapa mesin (AIX, FreeBSD, dsb) mengirim
kembali checksum inkonsisten atau 0. Beberapa berjalan dengan
checksum UDP. Nmap melakukan 9 test berbeda pada error ICMP
untuk mengendus perbedaan seperti itu.

Tipe Service — Untuk pesan port ICMP yang tidak dapat dicapai
saya melihat nilai Type Of Service (TOS) dari paket yang kembali.
Hampir semua implementasi memakai 0 untuk error ICMP ini
meskipun Linux memakai 0xC0. Ini tidak mengindikasikan satu nilai
standar TOS, tapi merupakan bagian field yang tidak terpakai(AFAIK).
Saya tidak tahu mengapa ini diset, tapi jika mereka merubahnya ke 0
kita akan dapat mengidentifikasi versi lama dan baru.
Penanganan Fragmentasi — Ini merupakan teknik favorit Thomas
H. Ptacek dari Secure Networks, Inc(sekarang milik user Windows di
NAI). Ini mengambil keuntungan dari fakta bahwa implementasi
berbeda sering menangani fragmen IP yang overlapping secara berbeda.
Beberapa mengganti yang baru, lainnya masih suka yang lama.
Di sana banyak perbedaan yang digunakanuntuk menentukan bagaimana
paket disusun kembali. Saya tidak menambahkan kemampuan ini karena
saya tahu tidak ada jalan portable untuk mengirim fragmen IP (khususnya,
di Solaris). Untuk informasi lebih jauh tentang fragmen overlapping
kamu dapat membaca catatan IDS (http://www.secnet.com/).
Pilihan TCP — Di sini ada sebuah tambang emas pembocoran informasi.
Kecantikan pilihan ini adalah bahwa:
1) Mereka secara umum opsional ( duh!)🙂 jadi tidak semua host
mengimplementasikannya
2) Kamu tahu jika host mengimplementasikannya dengan mengirim
urutan dengan pilihan set, target menunjukkan dukungan pilihan
itu dengan mensetnya di tanggapan
3) Kamu dapat memiliki seluruh pilihan di satu paket untuk
mengetes semuanya sekali saja
Nmap mengirim pilihan ini di hampir semua paket probe:
Window Scale=10; NOP; Max Segment Size = 265; Timestamp; End of Ops;

Ketika kamu dapat respon , kamu lihat pilihan mana yang dikembalikan
dan didukung. Beberapa OS seperti FreeBSD saat ini mendukung semua,
sedang yang lain seperti Linux 2.0.X mendukung sedikit. Linux 2.1.x kernel
mendukung semuanya. Dengan kata lain, mereka dapat diserang prediksi
urutan TCP.
Bahkan jika beberapa OS mendukung pilihan sama, kamu dapat
membedakannya lewat nilai pilihan itu.Contoh, jika kamu mengirim
nilai MSS kecil ke kotak Linux, ini akan mengembalikan MSS kembali ke
kamu. Host yang lain akan memberi nilai yang beda.
Dan jika kamu dapat set pilihan yang sama DAN nilai sama,
kamu tetap data membedakannya lewat pesan
pilihan yang diberikan, dan dimana padding dipakai. Contoh
Solaris mengembalikan ‘NNTNWME’ yang berarti:
<no op><no op><timestamp><no op><window scale><echoed MSS>
Sedang Linux 2.1.122 mengembalikan MENNTW. Pilihan sama,
nilai sama, tapi pesan berbeda!
Saya belum melihat alat deteksi OS yang lain menggunakan pilihan TCP,
tapi ini sangat berguna.
Di sana ada sedikit pilihan berguna seperti dukungan T/TCP dan
keterangan yang selektif.

Kronologi Exploit — Bahkan dengan semua tes diatas, nmap tidak dapat
membedakan antara stack TCP Win95, WinNT atau Win98.
Ini agak mengejutkan, khususnya sejak Win98 datang 4 tahun setelah
Win95. Kamu mungkin berpikir mereka mengembangkan stack dengan
jalan yang sama( seperti mendukung lebih banyak pilihan TCP)
dan kita dapat mendeteksi perubahan dan membedakan OS.
Sayangnya ini bukan kasusnya. Stack NT sama berantakan dengan
stack ’95 dan mereka tidak mengupgradenya untuk ’98.
Tapi jangan menyerah, ada solusinya. Kamu dapat memulai dengan
Windows DOS attacks ( Ping of Death, Winnuke, dsb) dan pindah
ke serangan yang lebih seperti Teardrop dan Land. Setelah serangan
ping mereka untuk melihat apakah mereka crash. Ketika sudah crash
kamu akan mempersempit apa yang mereka jalankan ke satu service
pack atau hotfix.
Saya tidak menambahkan fungsi ini ke nmap, meskipun saya mesti
bilang ini sangat menggairahkan🙂.
Resistansi SYN Flood — Beberapa OS akan berhenti menerima koneksi baru
jika kamu mengirim terlalu banyak paket SYN. Banyak OS hanya
dapat menangani 8 paket. Linux kernel sekarang mengijinkan metode
beragam seperti SYN cookie untuk mencegah menjadi masalah serius.
Kemudian kamu dapat belajar tentang OS sasaran dengan mengirimkan
8 paket dari sumber ke port terbuka dan mengetes apakah kamu
dapat membuat koneksi ke port itu sendiri. Ini tidak diimplementasikan
di nmap karena orang sebal jika kamu meng-flood mereka SYN.
Bahkan penjelasan bahwa kamu melakukan sedikit percobaan untuk
menentukan OS yang meraka pakai tidak dapat membantu untuk membuat
mereka tenang.

IMPLEMENTASI NMAP DAN HASILNYA

Saya telah membuat implementasi referensi teknik deteksi OS
tersebut diatas. Saya telah tambahkan di scanner nmap saya yang
berguna untuk mengetahui port berapa yang terbuka dan tertutup.
Ini juga portable diantara Linux, *BSD, dan Solaris 2.51 dan 2.6
dan beberapa OS lain.

Versi terbaru nmap membaca file dengan template fingerprint yang
mengikuti tata bahasa sederhana. Inilah contohnya:

FingerPrint IRIX 6.2 – 6.4 # Terima kasih Lamont Granquist
TSeq(Class=i800)
T1(DF=N%W=C000|EF2A%ACK=S++%Flags=AS%Ops=MNWNNT)
T2(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=)
T3(Resp=Y%DF=N%W=C000|EF2A%ACK=O%Flags=A%Ops=NNT)
T4(DF=N%W=0%ACK=O%Flags=R%Ops=)
T5(DF=N%W=0%ACK=S++%Flags=AR%Ops=)
T6(DF=N%W=0%ACK=O%Flags=R%Ops=)
T7(DF=N%W=0%ACK=S%Flags=AR%Ops=)
PU(DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E)

Coba lihat baris pertama ( saya tambahkan ‘>’ quote markers):

> FingerPrint IRIX 6.2 – 6.3 # Terima kasih Lamont Granquist

Ini mengatakan bahwa fingerprint meliputi IRIX versi 6.2 sampai 6.3
dan komentar mengatakan bahwa Lamont Granquist telah mengirim saya
alamat IP atau fingerprint kotak IRIX yang telah dites.

> TSeq(Class=i800)

Ini berarti bahwa sampling ISN ditaruh di “class i800”. Ini berarti
setiap angka urutan yang baru kelipatan 800 lebih dari sebelumnya.

> T1(DF=N%W=C000|EF2A%ACK=S++%Flags=AS%Ops=MNWNNT)

Test ini dinamai T1 (untuk test1, pintar yah?). Di tes ini kita kirim paket
SYN sengan pilihan TCP ke port terbuka. DF=N berarti bit
“Don’t fragment” dari respon mesti jangan diset.
W=C000|EF2A berarti iklan window yang kita terima harus 0xC000
atau EF2A. ACK=S++ berarti keterangan yang kita terima mesti
angka urutan plus 1. Flags = AS berarti flag ACK dan SYN dikirim
dalam responnya. Ops=MNWNNT berarti pilihan di respon harus
(dalam pesan ini):

<MSS (not echoed)><NOP><Window scale><NOP><NOP><Timestamp>

> T2(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=)

Test 2 memasukkan NULL dengan pilihan sama ke port terbuka.
Resp=Y berarti kita harus dapat respon. Ops= berarti disana harus
tidak ada pilihan di paket respon. Jika tidak ada ‘%Ops=’
lalu pilihan yang dikirim akan match.

> T3(Resp=Y%DF=N%W=400%ACK=S++%Flags=AS%Ops=M)

Test 3 adalah w/pilihan SYN|FIN|URG|PSH ke port yang terbuka.

> T4(DF=N%W=0%ACK=O%Flags=R%Ops=)

Ini adalah ACK ke port terbuka. Catat bahwa kita tidak ada
Resp= di sini. ini berarti kekurangan respon ( seperti paket drop
di jaringan atau di firewall) tidak akan mendiskualifikasi match selama
semua test yang lain match. Kita lakukan ini karena secara virtual
OS akan mengirim respon, jadi kekurangan respon merupakan
atribut kondisi jaringan dan bukan OS itu sendiri. Kita taruh Resp pada
test 2 dan 3 karena beberapa OS melakukan drop ketika
tidak ada respon.

> T5(DF=N%W=0%ACK=S++%Flags=AR%Ops=)
> T6(DF=N%W=0%ACK=O%Flags=R%Ops=)
> T7(DF=N%W=0%ACK=S%Flags=AR%Ops=)

Tes ini adalah SYN, ACK, dan FIN|PSH|URG ke port tertutup.
Pilihan sama selalu diset. Tentu ini mungkin jelas diberinama
‘T5’, ‘T6’, dan ‘T7’🙂

> PU(DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E)

Yang menyebalkan adalah tes pesan “port unreachable”. Kamu sebaiknya
mengenali DF=N sekarang. TOS=0 berarti bahwa tipe IP dari
field service adalah 0. Dua field berikutnya memberikan nilai (hex)
field panjang total IP dari pesan header IP dan panjang total yang
diberikan di header IP mereka kembali kirimkan ke kita.
RID=E berarti nilai RID yang kita dapat di copy paket UDP asli
adalah yang kita harapkan. RIPCK=E berarti mereka tidak dapat checksum
(jika ya, mestinya RIPCK=F). UCK=E berarti checksum UDP benar. Lalu
datang panjang UDP yang 0x134 dan DAT=E berarti mereka balikkan data
UDP secara benar. Karena banyak implementasi(termasuk satu ini) tidak
mengirim data UDP kembali, mereka dapat DAT=E secara default.

Versi nmap dengan fungsi ini merupakan siklus beta khusus yang keenam.
Ini mungkin basi oleh waktu kamu baca ini di Phrack. Lalu lagi,
mungkin tidak. Lihat http://www.insecure.org/nmap/
untuk versi terbaru.

SEKILAS SITE POPULAR

Ini adalah hasil yang menyenangkan dari semua usaha kita. Kita dapat
mencoba situs secara acak dan menentukan OS yang mereka pakai. Banyak
orang telah mengeliminasi banner telnet,dsb untuk menjaga informasi
khusus. Tapi ini percuma dengan fingerprinter baru kita! juga ini
jalan terbaik untuk mengungkapkan <pengguna OS favorit> yang
dijadikan lamer :)!

Perintah yang digunakan adalah : nmap -sS -p 80 -O -v <host>

Juga catat bahwa scan ini dilakukan pada 10/18/98. Beberapa mungkin
sudah mengupgrade atau merubah server setelah itu.
Catat bahwa saya tidak suka site-site di sini.

# Situs “Hacker” atau (pada beberapa kasus) site yang sejenisnya
http://www.l0pht.com/ => OpenBSD 2.2 – 2.4
http://www.insecure.org/ => Linux 2.0.31-34
http://www.rhino9.ml.org/ => Windows 95/NT # No comment🙂
http://www.technotronic.com/ => Linux 2.0.31-34
http://www.nmrc.org/ => FreeBSD 2.2.6 – 3.0
http://www.cultdeadcow.com/ => OpenBSD 2.2 – 2.4
http://www.kevinmitnick.com/ => Linux 2.0.31-34 # Free Kevin!
http://www.2600.com/ => FreeBSD 2.2.6 – 3.0 Beta
http://www.antionline.com/ => FreeBSD 2.2.6 – 3.0 Beta
http://www.rootshell.com/ => Linux 2.0.35 # Berubah ke OpenBSD setelah
# mereka dimiliki.

# Vendor Keamanan, konsultan, dsb.
http://www.repsec.com/ => Linux 2.0.35
http://www.iss.net/ => Linux 2.0.31-34
http://www.checkpoint.com/ => Solaris 2.5 – 2.51
http://www.infowar.com/ => Win95/NT

# Vendor OS
http://www.li.org/ => Linux 2.0.35 # Linux Internasional
http://www.redhat.com/ => Linux 2.0.31-34 # Saya bertanya-tanya distro apa:)
http://www.debian.org/ => Linux 2.0.35
http://www.linux.org/ => Linux 2.1.122 – 2.1.126
http://www.sgi.com/ => IRIX 6.2 – 6.4
http://www.netbsd.org/ => NetBSD 1.3X
http://www.openbsd.org/ => Solaris 2.6 # Ahem🙂 (ini karena UAlberta
# menge-host mereka)
http://www.freebsd.org/ => FreeBSD 2.2.6-3.0 Beta

# Ivy Univ
http://www.harvard.edu/ => Solaris 2.6
http://www.yale.edu/ => Solaris 2.5 – 2.51
http://www.caltech.edu/ => SunOS 4.1.2-4.1.4 # Hallo! Ini era 90’s🙂
http://www.stanford.edu/ => Solaris 2.6
http://www.mit.edu/ => Solaris 2.5 – 2.51
# sekolah-sekolah nampak suka Sun?
# Mungkin ini 40%
# .edu diskon🙂
http://www.berkeley.edu/ => UNIX OSF1 V 4.0,4.0B,4.0D
http://www.oxford.edu/ => Linux 2.0.33-34 # Rock on!

# Situs Lamer
http://www.aol.com/ => IRIX 6.2 – 6.4 # Wajar mereka tidak aman🙂
http://www.happyhacker.org/ => OpenBSD 2.2-2.4 # Pahit , Carolyn?
# Bahkan OS paling aman
# tidak berguna di tangan
# admin yang tidak kompeten
# Misc
http://www.lwn.net/ => Linux 2.0.31-34 # Situs berita Linux !
http://www.slashdot.org/ => Linux 2.1.122 – 2.1.126
http://www.whitehouse.gov/ => IRIX 5.3
sunsite.unc.edu => Solaris 2.6

Catatan: Di paper keamanan mereka, Microsoft bilang tentang kurangnya
keamanan mereka: “asumsi ini telah berubah setelah Windows NT mendapat
popularitas karena fitur keamanannya.”. Hmmm, di mana saya berada
tidak kelihatan Windows popular di komunitas keamanan🙂. Saya hanya
melihat 2 kotak Windows dari seluruh grup dan Windows mudah bagi nmap
untuk membedakannya karena terlalu berantakan.

Dan tentu, ada satu situs yang harus kita cek. Ini adalah website perusahaan
Transmeta yang rahasia. Menariknya perusahaan ini didanai oleh Paul Allen
dari Microsoft, tapi mempekerjakan Linus Torvalds. Jadi apakah mereka ikut
Paul dan memakai NT atau memberontak dan mengikuti revolusi Linux?
Mari kita lihat:

Kita gunakan perintah:
nmap -sS -F -o transmeta.log -v -O http://www.transmeta.com///24

Ini berarti scan SYN untuk port yang diketahui (dari /etc/services), log
hasilnya ke ‘transmeta.log’, bisa dilihat, melakukan scan OS dan
scan kelas C dimana http://www.transmeta.com/ berada.
Inilah hasilnya:

neon-best.transmeta.com (206.184.214.10) => Linux 2.0.33-34
http://www.transmeta.com/ (206.184.214.11) => Linux 2.0.30
neosilicon.transmeta.com (206.184.214.14) => Linux 2.0.33-34
ssl.transmeta.com (206.184.214.15) => Linux unknown version
linux.kernel.org (206.184.214.34) => Linux 2.0.35
http://www.linuxbase.org/ (206.184.214.35) => Linux 2.0.35 ( mungkin sama
mesinnya )

Baik, saya kira ini menjawab pertanyaan kita secara jelas🙂

KETERANGAN

Alasan Nmap mampu mendeteksi banyak OS berbeda adalah banyak orang
di tim beta khusus berusaha mencari kotak yang baru dan menarik
untuk fingerprint!
Khususnya, Jan Koum, van Hauser, Dmess0r, David O’Brien, James
W. Abendschan, Solar Designer, Chris Wilson, Stuart Stock, Mea Culpa,
Lamont Granquist, Dr. Who, Jordan Ritter, Brett Eldridge, and Pluvius
telah mengirim banyak alamat IP dari kotak dan/atau fingerprint mesin
yang tidak dapat dicapai melalui internet.

Terima kasih Richard Stallman atas penulisan GNU Emacs. Artikel ini
akan tidak rapi wordwrapnya jika masih pakai vi atau cat dan ^D.

Pertanyaan dan komentar dapat dikirim ke fyodor@insecure.org
Nmap tersedia di http://www.insecure.org/nmap .

Published in: on October 9, 2007 at 3:31 am  Leave a Comment  

The URI to TrackBack this entry is: https://miqrosoft.wordpress.com/2007/10/09/deteksi-os-melalui-finger-print-tcpip/trackback/

RSS feed for comments on this post.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: