|
6 Mayıs 2007 Pazar
15:16:09
|
|
|
Temel Saldırı Teknikleri Kategori Temel Hack
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://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://ftp.sau.edu.tr/
SYST 215 UNIX Type: L8 Host Type : 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 &
|
|