Home page logo
/

ÖZET

Bu yazı TCP/IP katmanları sorgulaması ile bilgisayarlardan nasıl  bilgi toplanabileceğini anlatmakadır.
Önce TCP/IP katmanları sorgulaması kullanılmadan bilgisayarın işletim sistemini tesbit etmeye yarayan klasik metodları anlattım.Daha sonra katman sorgulaması ile işletim sistemi tesbit eden uygulamaların kullandıkları metodolojiyi açıkladım.Bundan sonra uzaktaki bir bilgisayarın kendisi hakkında bilgi vermesine yol açacak tekniklere yer verdim.
En son olarakta NMAP in bu teknikleri nasıl kullandığını ve NMAP ile tesbit edilen popüler internet sitelerinin kullandıkları işletim sistemlerini ekledim.


NEDENLER

Bence bir bilgisayarın İşletim sistemini tesbit etmenin faydası çok açık bu sebeple bu bölümü kısa tutacağım.Bu faydalardan bir tanesi güvenlik açıklarının işletim sistemlerine özgü olması.Farzedelimki bir bilgisayara girilebilirlik testi yapmayı düşünüyorsunuz ve 53 nolu portun açık olduğunu gördünüz.Eğer Bind in kırılabilir versiyonunu kullanıyor ise bu açığı kullanabilmeniz için tek bir şansınız var.Çünkü yanlış bir hareket Bind sunucusunun çökmesine neden olacaktır.İyi bir TCP/IP sorgulaması ile hedef sistemin Solaris 2.51 yada Linux 2.0.35 kullandığını tesbit edebilir ve kullanacağınız shellcode(kabuk kodu)nu buna göre düzenleyebilirsiniz.

Veya birisi 500,000 adet bilgisayarı herbirinin kullandığı işletim sistemini ve açık bıraktığı portları tesbit etmek için tarıyor.
Daha sonra başka birisi Sun comsat daemonunda root erişim sağlanabilecek bir delik olduğunu söylüyor ve bizim küçük cracker taradığı sistemlerde 'UDP/512' ve 'Solaris 2.6' kelimelerini bulup çıkarıyor.Ve root düzeyi erişim ekranları ile karşılaşıyor.Bu arada bu hareket SCRIPT KIDDIE(Bir şey anlamadan hazır işlemleri kullanabilen kişilere denilir) hareketidir.Bu metod  kabiliyetinizi kullandığınızı göstermez ve kimse yaptığınızdan etkilenmez.
  
Bir diğer kullanma alanı ise Sosyal mühendislik metodlarıdır.
Farzedelimki hedef aldığınız şirketi taradınız ve NMAP size 'Datavoice TxPORT PRISM 3000 T1 CSU/DSU 6.22/2.06' raporunu verdi.Bundan sonra Hacker 'Datavoice Desteği' istermiş gibi üreticiyi arıyor ve PRISM 3000 ile ilgili güvenlik özelliklerini tartışmaya başlıyor.Aldığı cevap"Yakın zaman içinde bir gücenlik açığı açıklamayı düşünüyoruz ancak açıklamadan önce müşterileimizin ilgili yamayı yüklemesini bekliyoruz.---Biraz önce size mail attım...."
Bazı saf adminler adece yetkili mühendislerin Datavoice CSU/DSU bilgisinin olabileceğini sanabilir tabii...

Başka bir kullanımı ise iş yapacağınız şirketlerin değerlendirilmesidir.İş yapacağınız bir ISP yi seçmeden önce tarama yapıp neler kullandığını test edebilirsiniz."Yıllık 99 USD isteyenler genellikle döküntü Router lar kullanırlar ve PPP servisleri yeterli düzeyde değildir.


KLASİK TEKNİKLER

Katman sorgulaması İşletim sistemi belirlenmesi problemini tek bir yol ile çözer.Bana göre bu teknik verdiği sözlerin çoğunu tutuyor ama şu an birçok farklı teknik bulunmaktadır.
Malesef bu hala en etkili tekniktir:

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: 

Eğer sistem yukarıda örneklendiği gibi herkese ne olduğunu söylüyor ise işletim sistemi belirlenmesi çilelerine gerek kalmıyor.
Malesef pek çok sistem bu tür ilanlar ile satılıyor ve pek çok admin bunları kapatmıyor.Sadece işletim sistemini belirleyebilmenin başka yolları var diye her bağlanmak isteyene bunu anons etmek doğru değil.

Bu tekniğin kullanılması sebebiyle ortaya çıkan problemler sebebiyle pek çok kişi bu ilanları kapatıyor ve bu ilanlarda yalan bilgi vermenin hayati önemi olduğunu kavrıyor.
Buna rağmen ,bu teknik İşletim sistemi ve versiyonunun tesbitinde istediğiniz herşeyi verir.eğer ISS Scanner a binlerce dolar veriyorsanız nmap yada queso yu indirin ve paranızı elinizde tutun:)))

İlanları kapasanız bile birçok yüklü uygulama sorulduğu zaman bu tür bilgileri mutlulukla verir.
Örneğin FTP sunucusuna bağlanalım:

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

Herşeyden önce bu uygulama varsayılan ilanında sistem ile iilgili detayları verir.'SYST' komutunu verdikten sonra ise bize daha fazla bilgi verir.Eğer anon FTP destekleniyor ise /bin/ls yada başka bir uygulamayı indirebilir ve hangi mimari için yazıldıklarını anlayabiliriz.

Pek çok uygulama bu tür bilgileri verebilir.Web sunucularını ele alalım örneğin :

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


Diğer klasik teknikler DNS host info kayıtları(Nadiren etkili) ve sosyal mühendisliktir.
Eğer makine 161/UDP portunu dinliyor ise CMU SNMP uygulamaları dağıtımının bir parçası olan 'snmpwalk' u ve 'public' ortak adını kullarak hemen hemen garanti bir şekilde detaylı bilgiler alabilirsiniz.


ŞU ANKİ TESBİT PROGRAMLARI

Nmap TCP/IP sorgulaması kullanarak İşletim sistemi tesbiti yapan ilk program değil.Genel bir IRC spoofer olan sirc(Johan tarafından yazılmıştır) versiyon 3 ten sonra çok temel tesbit teknikleri kullanmıştır.
Birkaç basit TCP flag ları kullarak bilgisayarları "4.4BSD" , "Win95" yada "Unknown" gibi 3 sınıfa ayırır.

Bü tür bir programa diğer bir örnek ise bu yılın ocak ayında genel kullanıma açılan checkos dir.Kullandığı teknikler tamamen sirc ile aynıdır.Hatta kullanılan kod bile bazı yerlerde aynıdır.Checkos nin ek bir özelliği ise Telnet ilan kontrolünü kullanmasıdır.Yukarıda açıklandığı gibi yararlı olabilir ancak aldatıcı da olabilir.

Su1d de bu tür bir program yazmıştır.SS adını verdiği program  versiyon 3.11 den sonra 12 faklı işletim sistemini tesbit edebilmektedir.Bunun üzerinde çok fazla duruyorum çünkü nmap kodunda onun kullandığı ağ kodları bulunmaktadır.:)

Ve birde queso var.Bu program en yeni ve diğerlerinden çok önde bir program . Sadece yeni testleri tanıtmasının yanında işletim sistemi testlerini kodun dışına taşıyan ilk(Bildiğim kadarıyla) program.
Diğer tarayıcı programlar aşağıdaki gibi kodlar içerirken : 
/* from ss */
if ((flagsfour & TH_RST) && (flagsfour & TH_ACK) && (winfour == 0) && 
   (flagsthree & TH_ACK))
       reportos(argv[2],argv[3],"Livingston Portmaster ComOS");

Queso bunu konfigürasyon dosyasına taşıyarak daha ölçülü ve yeni eklemeleri konfigürasyon dosyasına eklenecek bir kaç satıra indirgemiştir.  

Queso Savage tarafından yazılmıştır , Apostols.org un iyi bir üyesi.

Yukarıdaki programların hepsinde yeralan bir problem , bunların bilgi verirken cevaplarının ayrıntıdan yoksun olması.
Ben 'Bu sistem bir OpenBSD , FreeBSD yada NetBSD ' açıklamasından daha fazlasını bilmek isterim.Yani tam olarak bunlardan hangisi ve versiyonu ile ilgili bilgiler gibi.'Solaris 2.6' yi sadece'Solaris' e tercih ederim.
Bir sonraki bölümde anlatacağım gibi , bir çok teknik ile bunu başarmaya çalıştım
TESBİT METODOLOJİSİ(Yöntembilim)

Ağ katmanları sorgulaması ile tesbit yapmak için kullanılan çok fazla metod var.Temel olarak , işletim sistemlerine özgü bazı kavramları arayacaksınız ve bunları araştırmak için kod yazacaksınız.Eğer bu tür farkları yeteri kadar birleştirebilirseniz Tesbit aralığınızı daraltabilirsiniz.Örneğin NMAP Solaris 2.4 , Solaris 2.5-2.51 ve Solaris 2.6 yı biribirinden ayırabilir.

İşte bazı teknikler :

FIN testi -- 

Bu teknikte açık olan porta FIN paketi(Yada ACK veya SYN işareti(flag) taşımayan herhangi bir paket) yolluyoruz ve cevap için bekliyoruz. 
RPC 793 te açıklanan starndartlara göre doğru cevap cevap vermemektir.Ancak pek çok uygulama(MS Windows , BSDI , CISCO ,HP/UX  MVS ve IRIX gibi) RESET ile cevap verirler.Şu an kullanılan pek çok uygulama bu tekniği kullanır.

 SAHTE(BOGUS) flag testi -- 

Queso bu zekice testi kullanan  görüğüm ilk tarayıcıdır.Düşüncenin temeli SYN paketinin TCP başlığına tanımlanmamış TCP "flag"(işaret)(64 yada 128) koymaktır. 2.0.35 öncesi Linux versiyonları yollanan flag setini cevaplarında geri yollamaktadırlar.Bu eksiğe sahip başka bir işletim sistemi bulamadım .Ama bazı işletim sistemleri SYN+SAHTE paketini aldıklarında bağlantıyı sıfırlamaktadırlar.Buda onları tesbit etmede kullanılabilir.

                        
TCP ISN Modellemesi -- 

Buradaki düşünce TCP uygulamaları tarafından bağlantı isteklerine cevap verirken seçilen ISN(initial Sequence Number) paternlerini bulmaktır.Bunlar birçok guruba ayrılabilir.Geleneksel 64 K(Bir çok eski Unix uygulamaları),rastgele arttırmalar(Solarisin yeni versiyonları ,IRIX , FreeBSD , Digital Unix , Cray ve diğerleri) ,Gerçek "rastgele"(Linux 2.0.*,OpenVMS,yeni AIX vs.)Windows tabanlı sistemler "zamana bağlı" model kullanırlar.Bu modelde ISN küçük ve sabit zaman aralığına göre sürekli arttırılır. Tartışmasız , bu metod eski 64 K modellerindeki kadar kolaylıkla kırılabilir.Benim favori tekniğim ise "sabit".Yani Her zaman aynı ISN yi veren sistemler.Bunu bazı 3Com hublarda(0x803 kullanır) ve Apple LaserWriter yazıcılarda(0xC7001 kullanır) gördüm.
Bu guruplar ayrıca alt guruplara ayrılabilir.Sistem sistem değişkenlerine göre ISN yi rastgele arttıranlar ,en büyük ortak bölene göre arttıranlar ...ISN ile ilgili özellikle üzerinde durulması gereken bir nokta vardır.ISN önemli güvenlik deliklerine sebep olabilir.Bu konu ile ilgili daha fazla bilgi istiyorsanız güvenlik uzmanı SDSC den Tsutomu "Shimmy" Shimomura ile bağlantı kurun ve nasıl hacklendiğini sorun.NMAP bu tekniği kullanarak işletim sistemi tesbiti yapan ilk program.(Bildiğim kadarıyla)

     
Don't Fragment bit -- 
Pek çok işletim sistemi yolladıkları bazı paketlere IP "Don't Fragment" biti yerleştirmeye başladılar.Bu performans açısından bir çok artıyı da beraberinde getirir(Rahatsız edici olabilmesine rağmen--Bu yüzden nmap in bu seçeneği Solaris te çalışmaz)Her ne olursa olsun bütün işletim sistemleri bunu yapmaz ve bazıları bunu farklı şekillerde yapar.Bu yüzden bilgi edinmek için kullanılabilir.Bunu da kullanan başka bir program görmedim daha.

TCP İlk Pencere  -- 

Bu teknik basitçe , dönen paketlerin pencere büyüklüğünü kontrol etmeyi gerektirir.Eski tarayıcılar bir RST paketindeki sıfır olmayan bir pencereyi "BSD 4.4" türü anlamında kullandılar.Queso yada Nmap gibi yeni tarayıcılar ise pencere boyutları işletim sistemlerine özgü olduğu için bunların gerçek kayıtlarını tutarlar.İşletim sistemleri sadece pencere ile tesbit edilebileceği için bu testler sistem hakkında bir çok bilgi verir.(Örneğin AIX 0x3F25 tarafından kullanılır sadece).NT 5 için tamamen yeniden yazılmış TCP yığınında Microsoft 0x402E i kullanır..İlginç taraf OpenBSD ve FreeBSD de bunu kullanır.

ACK Değeri -- 

Bunun tamamen standart olduğunu düşünseniz bile , uygulamalar bazen kullanılan ACK değerine göre değişebilir.Örneğin ,kapalı bir TCP portuna bir FIN|PSH|URG paketi gönderdiğinizi düşünelim.Çoğu uygulama ACK değerini ISN niz ile değere eşleyecektir.(Windows yada bazı aptal yazıcılar bunu ISN+1 olarak eşler)eğer açık bir TCP portuna SYN|FIN|URG|PSH yollarsanız windows tutarsız davranır.Bazen ISN nizi aynen yollar bazen bir fazlasını bazende rastgele bir değer.Microsoft'un böyle bir kodu nasıl yazdığını merak ediyorum.


ICMP Hata Mesajı Dindirmesi -- 

Bazı (akıllı) işletim sistemleri RFC 1812 tavsiyelerine uyarak hata mesajlarının yollanma oranına limit koyar.Örneğin Linux (net/ipv4/icmp.h dosyasında )karşı terminalin "unreachable" mesaj jenerasyonunu  4 saniyede 80 ile sınırlar.(eğer aşma var ise 1/4 ceza ile)Bunu test etmenin bir yolu yüksek UDP portlarına paket kümeleri gönderip "unreachable" mesajlarını saymaktır.Bunu kullanan bir uygulama hiç görmedim ve aslında UDP taraması dışında bunu bende Nmap te kullanmadım.Bu test işletim sistemi tesbitini biraz uzatabilir çünkü paket kümesi yollanır ve paketlere cevap beklenir.Ayrıca paketlerin ağı etkilemesi baş ağrısına sebep olabilir.


ICMP Mesaj Alıntısı -- 

RFC lere göre ICMP hata mesajları , hataya neden olan  ICMP paketlerinden küçük miktarda veri alıntısı yapar."Port unreachable" mesajı için hemen hemen bütün uygulamalar geriye gerekli IP başlığı + 8 bayt yollar.Ancak Solaris biraz daha fazla Linux isee bundanda fazla yollar.Bu güzellik nmap in açık bir port olmasa bile linux ve solaris i tanımasını sağlar.


ICMP Hata Mesajı Yankısı Güvenilirliği -- 

Bu fikri Theo De Raadt (lead OpenBSD developer)ın comp.security.unix deki mailinden aldım.Daha öncede bahsedildiği gibi bilgisayarlar orijinal mesajı "port unreachable" hatası ile birlikte geri yollamak zorundadır.Bazı makineler yolladığınız başlıkları ilk değerlendirmede 'scarcth space' gibi algılarlar ve bu yüzden geri aldığınızda biraz çarpık görürsünüz.Örneğin , AIX ve BSDI 20 baytlık IP 'total length' alanını çok yüksek gönderirler.Bazı BSDI,  FreeBSD, OpenBSD, ULTRIX, ve VAXen yolladıgınız IP ID sini değiştirirler.Değişmiş TTL sebebiyle checksum eğişir iken , bazı makineler(AIX ,FreeBSD vs.) tutarsız yada 0 checksome gönderirler.Aynı şey UDP checksum için de geçerlidir.Nmap 9 ayrı test yaparak bu tür farkları ayırır.

Servis Türü (Types Of Service) -- 

ICMP port unreachable mesajları için geriye gönderilen paketlerdeki TOS değelerine baktım.Hemen hemen bütün uygulamalar bu hata için 0 dğerini kullandı, linuxun 0xC0 kullanmasına rağmen.Bu standart TOS değerlerinden birisini göstermiyor.Bunun yerine kullanılmayan precedence alanını gösteriyor(AFAIK).Neden bu değeri verdiğini bilmiyorum ama eğer 0 a değişirirlerse eski versiyonlar ile yeni versiyonları ayırabileceğiz ve eski versiyonları tesbit edebileceğiz.


Tanecik Algılaması(Fragmentation Handling) -- 
Bu Thomas  H. Ptacek (Secure Networks)in favori yöntemidir.Şu an NAI deki windows kullanıcıları tarafındanda kullanılıyor.Bu farklı uygulamaların üstüste gelen IP parçaçıklarının farklı alğılayışlarını kullanan bir tekniktir.Bazıları eski kısımların üzerine yenileri yazarken bazılarında eski kısımlar önceliğe sahiptir.Paketlerin birleştirilme metodlarını test etmek için bir çok seçeneğiniz var.P parçacıklarını yollamada kullanmak üzere portatif bir yol bilmediğim için bu özelliği eklemedim.Daha fazla bilgi için(http://www.secnet.com) adresine gidebilirsiniz.

TCP Seçenekleri -- 

Bunlar bilgi toplama açısından gerçekten altın madeni gibidir.
Bunların güzellikleri :
1) Genellikle isteğe bağlıdırlar bu yüzden bütün uygulamalar desteklemez
2) Bir seçenek kümesi göndererek bilgisayarın bunları kullanıp kullanmadığını test edebilirsiniz.Hedef genellikle cevabında seçenek desteğini içerir.
3) Herşeyi bir kerede test etmek için bütün seçenekleri tek bir pakette kullanabilirsiniz.
Nmap bu seçenekleri hemen hemen her testinde gönderir:

Window Scale=10; NOP; Max Segment Size = 265; Timestamp; End of Ops;

Cevap aldığınızda hangi seçeneklerin döndüğüne dolayısıyla desteklendiğine bakabilirsiniz.Bazı işletim sistemleri(Son FreeBSD gibi) yukarıdakilerin tamamını destekler.Linux 2.0.X gibi bazıları ise bir kaçını destekler.Enson Linux 2.1.X kernelleri de yukarıdakilerin hepsini destekler.Diğer taraftan TCP ISN tahmini saldırılarından da daha kolay etkilenirler.

Bazı işletim sistemleri aynı seçenek kümesini destekliyor olsa bile seçeneklerin değerlerine göre bazen bunları ayırabilirsiniz.Örneğin Linux a küçük bir MSS değeri yollarsanız genelde size aynen geri yollar.Diğerleri farklı değerler yollar.

Ve hatta aynı seçenekler ve aynı değerler yollanıyor olsa bile seçeneklerin sırasına göre(eğer padding aktif ise)tesbit yapabilirsiniz.Örneğin , Solaris 'NNTNWME' :


yollar iken Linux 2.1.122  MENNTNW yollar.Anı seçenekler , aynı değerler farklı sıralar...

Bunların dışında bir kaç tane daha faydalı test seçenekleri bulunmaktadır.T/TCP desteği ve seçici onaylar gibi.


Exploit Kronolojisi -- 

Bütün yukarıdaki testlere rağmen nmap Win95 , Win98 ,WinNT arasındaki ayırımı yapamamaktadır.Çünkü TCP implementasyonları arasında fark bulunmamaktadır.Win98 4 sene sonra çıktığı için yeni TCP seçenekleri eklenmiştir ve bu sebeple aralarında ayırım yapılabilir diye düşünebilirsiniz.ama hepsi aynı yapıyı kullanmaktadır.

Ancak ümidinizi yitirmeyin , eski windows DOS saldırılarıyla(Ping of Death, winnuke vs.) işe başlayıp daha ileri saldırılara (Teardrop , Land ) geçebilirsiniz.Her saldırıdan sonra ping edip sistemlerinin çöküp çökmeiğine bakabilir ve test seçeneklerinizi daraltabilirsiniz.

Bu özelliği yazmama rağmen Nmap e eklemedim:)))

SYN Flood Direnişi -- 

Bazı işletim sistemleri çok fazla taklit edilmiş SYN paketi gönderildiğinde yeni bağlantı kabul etmeyi durdururlar.(Paket takliti kernelinizin bağlantıyı sıfırlamasını engeller)Çoğu işletim sistemi sadece 8 paket tutabilirler.Son linux kernelleri (Diğer işletim sistemleri arasında)SYN cookieleri gibi bazı metodlar ile bunun bir problem olmasını engeller.Bu nedenle taklit edilmiş bir kaynaktan açık bir porta  8 paket göndererek ve bağlantı kurup kuramadığınızı test ederek hedef hakkında birşeyler öğrenebilirsiniz.Bu teknik nmap te yok çünkü bazıları SYN flood yapmanız halinde telaşlanabilir.İşletim sistemini öğrenmeye çalıştığınızı söylemek onları tatmin etmeyebilir.

NMAP UYGULAMALARI VE SONUÇLARI

Yukarıda bahsettiğim teknikler için bir referans oluşturdum.(Sadece Nmap e eklediklerim dahil).Bunu Nmap e de ekledim.Bu Nmap in hangi portların tesbite açık olduğunu bilmesini sağlamaktadır.Bu ayrıca Linux, *BSD,
Solaris 2.51 ve 2.6 ve diğer işletim sistemleri ile uyumludur.

Nmap in yeni versiyonları Tesbit şablonları ile doldurulmuş dosyaları okur.Bu dosyalar basit bir grammer ile oluşturulabilir..Aşağıda örnekler verilmiştir:

FingerPrint  IRIX 6.2 - 6.4 # Thanks to 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)

İlk satıra bakalım.('>' işaretini satırlar için kullanıyorum)
> FingerPrint  IRIX 6.2 - 6.3 # Thanks to Lamont Granquist

Bu satır basitçe tesbit IRIX 6.2 den 6.3 e kadar olan versiyonları içerir.# yorum satırıdır..Istenilen herşey yazılabilir.Lamont Granquist in ip adreslerini yada test ettiği IRIX bilgisayarları bana gönderdiğini gösteriyor.

> TSeq(Class=i800)

Bu ISN modellemesi "i800 sınıfına" aittir.Yani her yeni sequence number bir öncekinden 800 ün katları halinde büyük.

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

Test T1 olarak adlandırılmış.Bu teste TCP seçenekleri kümesi SYN paketi ile gönderiliyor.DF=N cevabın "Don't Fragment" biti içerilmemeli demek.
W=C000|EF2A aldığımız pencere reklamı 0xC000 yada EF2A olmalı demek.
ACK=S++ alacağımız onay bizim ISN miz + 1 olmalı demek.
Flags = AS ACK ve SYN flagları cevapta gönderildi demek.
Ops = MNWNNT cevap şu sırada olmalı demek :



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

Test 2  açık bir porta aynı seçenekler ile bir NULL gerektirir.
Resp=Y cevap almalıyız demek.Ops= means Cevap paketinde hiçbir seçenek olmamalı demek .  Eğer '%Ops=' olarak alırsak yollanan herhangi bir seçenek uymalı demek

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

Test 3 açık porta yollanan bir SYN|FIN|URG|PSH w/options .

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

Bu açık bir porta yollanan bir ACK paketi.Resp= olmadığına dikkat edin.Bu , cevap eksikliği(Ağ üzerine düşen paketler yada firewall gibi)karşılaştırmayı diğer testler eşleştikçe diskalifiye etmeyecek demek.Burada bunu kullandık çünkü cevap eksikliği genellikle ağın özelliklerinden dolayı olabilecek bir durum , işletim sistemine özgü değil.Test 2 ve 3 e Resp tag ı koyduk çünkü işletim sistemleri bunları gerçekten cevapsız bırakabiliyor.

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

Bu testler  kapalı portlara sırasıyla SYN, ACK, ve FIN|PSH|URG göndermek demek.Her zamanki gibi aynı seçenekler belirlenmiş.

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

Bu satır bir 'port unreachable' mesajı testidir.
DF=N tagını artık biliyor olmalısınız.TOS=0 IP type of service alanı 0 demek.Diğer iki alan Ip başlığı mesajının IP total length alanı değerinin Hex biçimini ve bize geri dönen Ip başlığında verilen toplam uzunluğu göstermektedir.
RID=E geri aldığımız UDP paketinin orijinal kopyasında  RID  değeri bekleniyor demek(Gönderdiğimizin aynısı gibi)
RIPCK=E hedef checksum ı değiştirmiyor demek.(RIPCK=F olsaydı değiştiriyor demek olurdu)
UCK=E UDP checksumı da doğru demek.
Daha sonra 0x134 uzunluğunda UDP paketi  ve DAT=E UDP verileri doğru gönderiliyor demek.Birçok uygulama(Bu da dahil) UDP verisini geri yollamaz.Bu yüzden DAT=E varsayılan değerdir.

Nmap in 6. betası ve sonrası bu özellikleri içermektedir. http://nmap.org/ adresinden en son versiyonları alabilirsiniz.


POPÜLER SİTELERDEN ÖRNEKLER

Bütün çabalarımızın örneği işte burada.Bunların çoğu özel bilgilerini gizlemek için bir sürü çaba sarfediyorlar .Ayrıca Yanlış işletim sistemi oyunları da işlemiyor.

Örneklerde kullanılan komut : nmap -sS -p 80 -O -v 

10/18/98 tarihine göre 

# "Hacker" siteleri yada (bir çoğu) kendini öyle sananlar
http://www.l0pht.com/        => OpenBSD 2.2 - 2.4
http://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  # Changed to OpenBSD after
                                      # they got owned.

# Security vendors, consultants, etc.
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 loyalty to their OS
http://www.li.org/           => Linux 2.0.35 # Linux International
http://www.redhat.com/       => Linux 2.0.31-34 # I wonder what distribution :)
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 :)
http://www.freebsd.org/      => FreeBSD 2.2.6-3.0 Beta

# Ivy league
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  # Hello! This is the 90's :)   
http://www.stanford.edu/     => Solaris 2.6
http://www.mit.edu/          => Solaris 2.5 - 2.51 # Coincidence that so many good
                                           # schools seem to like Sun?
                                           # Perhaps it is the 40%
                                           # .edu discount :)
http://www.berkeley.edu/     => UNIX OSF1 V 4.0,4.0B,4.0D  
http://www.oxford.edu/       => Linux 2.0.33-34  # Rock on!

# Lamer sites
http://www.aol.com/          => IRIX 6.2 - 6.4  # No wonder they are so insecure :)
http://www.happyhacker.org/  => OpenBSD 2.2-2.4 # Sick of being owned, Carolyn?
                                        # Even the most secure OS is
                                        # useless in the hands of an
                                        # incompetent admin.

# Misc
http://www.lwn.net/          => Linux 2.0.31-34 # This Linux news site rocks!
http://www.slashdot.org/     => Linux 2.1.122 - 2.1.126
http://www.whitehouse.gov/   => IRIX 5.3
sunsite.unc.edu      => Solaris 2.6

Not: Microsoft Windows Nt nin güvenlik özellikleri sebebiyle popülerlik kazandığını söylüyordu.Yalnızca 2 tanesi windows kullanıyor.Windowsu tesbit etmek nmap için çok kolay.

Kontrol etmemiz gereken bir site daha kaldı.Çok gizli Transmeta şirketininki..Bu şirket Microsofttan Paul Allen tarafından kuruldu ama Linus Torvaldsı çalıştırıyor.Acaba paule uyup Nt mi kullanıyorlar yada isyan başlatıp linux mu kullanıyorlar :

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

Bu komut Nmap e bilinen portlarda SYN taraması yapmasını , sonuçları transmeta.log dosyasında tutmasını , verbose modunda olmasını , işletim sistemi testi yapmasını ve http://www.transmeta.com/ adresinin içinde bulunduğu C Class ı taramasını söylüyor.

Sonuç :
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 ( possibly the same
                                      machine as above )


TEŞEKKÜRLER

Nmap in çok farklı işletim sistemlerini test edebilmesinin sebebi Özel Beta ekibinin yeni eklentiler için büyük çabalar harcamalarıdır.
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, ve Pluvius tonlarca IP göndererek bana yardımcı oldular.

Translated by Egemen Tas (egement@karyde.com.tr)

[ Nmap | Sec Tools | Mailing Lists | Site News | About/Contact | Advertising | Privacy ]