Deteksi OS melalui Fingerprint TCP/IP
oleh
Fyodor <fyodor@insecure.org>
(http://www.insecure.org/)
ABSTRAKSI
Catatan ini membicarakan bagaimana mendapatkan informasi yang berharga
tentang host melalui urutan stack TCP/IP nya. Pertama saya akan empresentasikan
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 Anda melakukan tes penetrasi
dan Anda menemukan port 53 terbuka. Jika ini termasuk Bind versi yang
lemah/cacat, Anda hanya dapat satu kesempatan untuk mengeksploitnya karena
usaha yang gagal akan merusak daemon. Dengan TCP/IP fingerprinter yang
baik, Anda akan dengan cepat menemukan mesin ini menggunakan 'Solaris
2.51' atau 'Linux 2.0.35' dan Anda dapat menyesuaikan kode Anda 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. Anda tidak punya skill dan tidak seorangpun berimpresi bahwa Anda
dapat menemukan .edu yang cacat yang lubangnya belum dipatch. Juga, orang
akan kurang impresif jika Anda menggunakan akses untuk men-deface website
untuk menunjukkan kepintaran Anda dan betapa bodohnya sisadmin.
Kemungkinan yang lain adalah teknik sosial atau 'social engineering'.
Taruhlah Anda sedang menscan perusahaan target Anda 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 Anda memilih ISP yang baru, scanlah mereka dan lihat peralatan
yang digunakan. "$99/tahun" akan terdengar buruk jika Anda 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 Anda dapatkan untuk mengecek OS dan
versi OS jika Anda menghabiskan $$$ untuk ISS scanner komersial. Download
nmap dan tabungkan uangmu :).
Bahkan jika Anda 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), Anda 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, Anda hanya melihat benda yang berbeda diantara sistem
operasi dan menulis perbedannya. Jika Anda kombinasikan, Anda 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)
Anda 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 Anda berpikir ini standar, implementasinya
berbeda pada nilai yang digunakan untuk field ACK pada kasus tertentu.
Sebagai contoh, taruhlah Anda 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 Anda 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 Anda
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 Anda 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 Anda 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 Anda 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) Anda tahu jika host mengimplementasikannya dengan mengirim urutan dengan
pilihan set, target menunjukkan dukungan pilihan itu dengan mensetnya
di tanggapan
3) Anda 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 Anda dapat respon , Anda 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, Anda dapat membedakannya
lewat nilai pilihan itu.Contoh, jika Anda mengirim nilai MSS kecil
ke kotak Linux, ini akan mengembalikan MSS kembali ke Anda. Host yang
lain akan memberi nilai yang beda.
Dan jika Anda dapat set pilihan yang sama DAN nilai sama, Anda 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. Anda 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. Anda 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 Anda 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 Anda 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 Anda dapat
belajar tentang OS sasaran dengan mengirimkan 8 paket dari sumber ke port
terbuka dan mengetes apakah Anda dapat membuat koneksi ke port itu sendiri.
Ini tidak iimplementasikan di nmap karena orang sebal jika Anda meng-flood
mereka SYN. Bahkan penjelasan bahwa Anda 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". Anda 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 Anda 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
http://www.insecure.org/ =>
Linux
http://www.rhino9.ml.org/ =>
Windows # No comment :)
http://www.technotronic.com/
=> Linux
http://www.nmrc.org/ => FreeBSD
http://www.cultdeadcow.com/
=> OpenBSD
http://www.kevinmitnick.com/
=> Linux # Free Kevin!
http://www.2600.com/ => FreeBSD
http://www.antionline.com/ =>
FreeBSD
http://www.rootshell.com/ =>
Linux Berubah ke OpenBSD setelah # mereka dimiliki.
# Vendor Keamanan, konsultan, dsb.
http://www.repsec.com/ => Linux
http://www.iss.net/ => Linux
http://www.checkpoint.com/ =>
Solaris
http://www.infowar.com/ => Win95/NT
# Vendor OS
http://www.li.org/ => Linux Linux
Internasional
http://www.redhat.com/ => Linux
# Saya bertanya-tanya distro apa:)
http://www.debian.org/ => Linux
http://www.linux.org/ => Linux
http://www.sgi.com/ => IRIX
http://www.netbsd.org/ => NetBSD
http://www.openbsd.org/ => Solaris
# Ahem :) (ini karena UAlberta # menge-host mereka)
http://www.freebsd.org/ => FreeBSD
# Ivy Univ
http://www.harvard.edu/ => Solaris
http://www.yale.edu/ => Solaris
http://www.caltech.edu/ => SunOS
http://www.stanford.edu/ =>
Solaris
http://www.mit.edu/ => Solaris #
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
# Situs Lamer
http://www.aol.com/ => IRIX
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 # Situs
berita Linux !
http://www.slashdot.org/ =>
Linux
http://www.whitehouse.gov/ =>
IRIX
http://sunsite.unc.edu =>
Solaris
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
.
|