Fingerprinting Nedi...
 
Bildirimler
Hepsini Temizle

Fingerprinting Nedir ?  

  RSS
Onur Serhat Uygur
(@onurserhatuygur)
Üye

1.a Fingerprinting

Fingerprinting tanımı aslında
karşı taraf hakkında bilgi toplamaktan ibarettir.Bir saldırı yöntemi
değildir sadece karşı sistem hakkında bilgi verir ve saldırı için doğru
seçimlerin yapılmasına olanak sağlar.Çalışan işletim sistemi, çalışan
programlar işletim sistemi versiyonu gibi bilgiler sayesinde karşı
sistemin güvenlik açıkları kolayca tespit edilip saldırı
uygulanabilir.Bir çok çeşidi ve yöntemi vardır.En basit örneği , FTP
Server’larından vermek mümkündür.FTP formatına göre karşı tarafa
gönderilen “SYST” mesajı karşı tarafın işletim sistemi hakkında bilgi
verir.Örneğin; anonymous olarak ftp.sau.edu.tr adresine bağlanıp,
command ekranına SYST yazılırsa sonuç aşağıdaki gibi olacaktır :

Connected to ftp.sau.edu.tr

SYST
215 UNIX Type: L8
Host Type (S): UNIX Standart

Bu
sayede karşı tarafta UNIX Standart yüklü bir makinenin olduğu tespit
edildi.Bunun dışında telnet aracılığıyla bağlandığımız bir sistem
direkt olarak bize işletim sistemini verebilir.Çoğu işletim sistemi
üreticisi günümüzde bu bilgiyi telnet üzerinden otomatik olarak vermeye
ayarlıyor ve çoğu sistem yöneticisi de bunları kapatmıyor.Aşağıda küçük
bir örnek var:

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:

Görüldüğü
gibi yaptığımız tek şey telnet aracılığı ile karşı tarafa
bağlanmaktı.Sistem bize işletim sistemini versiyon numarasına kadar
verdi.Bu yöntemlerin dışında birde http Fingerprinting adı verilen ve
adından da anlaşılabileceği gibi http protokolünü kullanan bir yöntem
daha var.Bu yöntemde “http” ’de tanımlı “GET” metodunu kullanarak Web
Server’ın ne olduğunu öğreniyoruz:

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

IIS
Web Server kurulu bir sistemde hangi işletim sisteminin yüklü olduğunu
tahmin etmek pek zor değil.Bu anlatılan yöntemlerden farklı olarak daha
alt seviye bazı yöntemler de mevcut.Bu yöntemler TCP/IP protokolünün
işletim sistemleri arasındaki küçük farklarından yararlanarak amacına
ulaşıyor.Aşağıda bunlardan bazılarını inceleyelim:

The FIN
Probe: Bu teknikte karşı tarafın açık bir portuna bir FIN paketi
yolluyoruz(Yani FIN kontrol biti bir olan herhangi bir paket).RFC 973
standart’ına göre karşı tarafın bu pakete hiçbir karşılık vermemesi
gerekirken, MS Windows, BSDI, CISCO, HP/UX, MVS, IRIX gibi işletim
sistemleri geriye RST paketi yollarlar.Günümüzde bir çok Fingerprinting
aracı bu yöntemi kullanmaktadır.

TCP ISN Sampling: Bu teknik
işletim sistemlerinin TCP/IP stack’lerinin “initial sequnce
number”’ları (ISN) seçme özelliğinden faydalanıyor.Hatırlayacağınız
gibi TCP/IP’de bir bağlantı kurulduğu zaman iki tarafta da byte
akışının doğru sağlanması için sequence number’lar kullanılıyordu.Her
yeni paket için de x kadar arttırılıyordu.Bu yöntemde işletim
sistemlerini kategorize edersek: “Random Increments”, “True Random” ve
“Time dependant model” olarak üçe ayırabiliriz.İlk modelde iki bağlantı
için belirlenen seq. Number’lar arasındaki x artış miktarı her paket
için random olarak seçilir ve sürekli bir öncekiyle toplanır.Solaris,
IRIX, FreeBSD, Digital UNIX, Cray gibi işletim sistemleri ISN üretmede
bu modeli kullanmaktadır.İkinci modelde ise iki bağlantının seq.
Number’ları arasında hiçbir bağıntı yoktur, birbirlerinden tamamen
bağımsızdırlar.Bu modeli kullanan sistemler arasında Linux 2.0.x Open
VMS gibi sistemleri sayabiliriz.Üçüncü modelde ise ISN ‘ler belli bir
zaman aralığında sabit bir sayıyla toplanarak elde edilirler.Windows bu
üçüncü modeli kullanan bir yapıya sahiptir.

TCP TimeStamp: TCP
başlığı içinde yer alan bu bilgiyi işletim sistemleri farklı
işlerler.Bazıları bu özelliği desteklemez, bazıları ise belirli
peryodlarla bu değeri arttırırlar.Bazı işletim sistemleri ise hep 0
döndürür.

TCP Initial Window:Bu teknikte karşı sistemden dönen
paketlerin “Window Size”’ları kontrol edilir ve buna göre değerlendirme
yapılır.Bu değerlendirme önemlidir çünkü çoğu işletim sistemi bu değer
için sabit bir sayı kullanır.Örneğin AIX işletim sistemi Window Size
değeri için hex değer olarak $3F25 sayısını kullanır.Aynı şekilde
FreeBSD, OpenBSD ve Windows NT işletim sistemleri bu sayıyı $402E
olarak belirlemişlerdir.

ICMP Message Quoting:Bu teknikte ICMP
protokolünün “port unreachable” hatasından faydalanıyoruz.Bu hata karşı
tarafa bir ICMP paketi gönderildiği ve bu port açık olmadığı zaman geri
gelen bir hata mesajıdır.Çoğu sistem IP Header + 8 Byte geri
gönderir.Fakat Solaris işletim sistemi 8 Byte’dan daha fazla gönderir,
Linux ise Solaris’ten daha fazla gönderir.

Type Of
Service:ICMP protokolünde alınan bir port unreachable paketinin ToS
değeri incelenirse, bu değerin her işletim sisteminde 0, bir tek
Linux’ta $0C olduğu görülmüştür.

TCP Options: TCP paket
başlığında “TCP Options” değerini kullanarak işletim sistemi tahmini
yapmaktır.Bu yöntemin bir çok avantajı vardır bunlardan birkaçını
sıralarsak:

i) Her şeyden önce bu kısım isteğe bağlıdır yani birçok işletim sistemi bu değeri gözardı eder.

ii)
Eğer bir Option ayarlayarak karşı makineye gönderirseniz, karşı
sistemin cevabı o option’ ın desteklenip desteklenmediğini
gösterecektir.Bu Option’lar da her işletim sistemine göre değişeceği
için bu da bize avantaj sağlar.

iii) Bir çok Option’ı
ayarlayıp sadece bir paket göndererek, cevap alabilirsiniz.Yani tek bir
paketle karşı tarafın hangi Option’ ları desteklediğini kolayca
anlayabilirsiniz.

WindowScale, NOP, Max Segment Size,
TimeStamp TCP Options’ın alabileceği değerlerin bazılarıdır.Örneğin bu
sayılan özelliklerin hepsi FreeBSD tarafından desteklenmektedir.Bunun
yanında Linux 2.0.x sürümleri yukarıdakilerin çok azını destekler.İki
işletim sistemi aynı Option özellikleri desteklese bile bunlara verdiği
cevaplar faklıdır.Örneğin bir Linux sistemine küçük bir MSS(Max Segment
Size) değeri gönderilirse, sistem aynı değeri bize geri
gönderecektir.Geri dönen değerler aynı olsa bile sıraları
faklıdır.Örneğin Solaris “MSS” değerine “NNTNWME” ile cevap verirken
Linux 2.1.122 “MENNTNW” ile cevap verir

 

Kaynak : C|EH MCSE  System

Alıntı
Gönderildi : 22/02/2008 17:57
Paylaş: