Hping ile bir cok uygulama gerceklestirilebilmektedir. Bunlardan bir önceki yazıda bahsedilmişti. Bu uygulamaları kısaca özetleyecek olursak
- Bilgisayar ağlarını keşif, gelişmiş port tarama özellikleri
- Firewall tespit ve test işlemleri
- Ağ dinleme modu
- Dosya transferi
- Komut çalıştırma özelliği
- IDS/IPS sistemlerin keşfi
Bu yazıda bu uygulamalardan bir kısmı gerçekleştirilecektir. İlk olarak host ve işletim sistemi keşfi gerçekleştirilecektir. icmp protokolü için kullanıalcak olan mesaj tipleri aşağıda belirtildiği gibidir.
Öncelikli olarak IP adresi bilinen hedef sistemin canlı olup olmadığını anlamak için icmp echo request (ping) mesajı gönderilecektir.
Yukarıda gösterildiği gibi gönderilen mesaja karşılık icmp echo reply cevabı alınmıştır. Buda hostun ayakta olduğu anlamına gelmektedir. Şimdi hedef hostun işletim sistemini keşif amaçlı icmp paketleri hazırlalım. ICMP ile işletim sistemi keşfi aktif ve pasif olmak üzere ikiye ayrılmaktadır. Aktif tarama aşağıda gösterilen akış diyagramları üzerinden, pasif tarama ise icmp paketlerinin incelenmesi ile gerçekleştirilmektedir. Bu safhada aktif keşif yöntemini göstereceğiz. Aşağıda gösterilen şekiller linux ve windows sistemler için aktif tarama diyagramını göstermektedir.
Şimdi sistemin linux mu yoksa farklı bir işletim sistemi olduğunu anlamak için icmp
timestamp mesajı gönderiyoruz. timestamp mesajı hedef sistemin zaman bilgisini timestamp request mesajıyla talep eder. Hedef sistem şayet yanıtlarsa timestamp reply mesajı ile kendi zaman bilgisini gönderir.
Yukarıda gözüktüğü gibi sistem yanıt olarak timestamp reply mesajını göndermiştir. Bu mesaj aşağıda gösterilmektedir.
Zaman bilgisinin paylaşılması farklı zafiyetlere sebep olabilir. CVE-1999-0524' de bu durum anlatılmıştır. Burada bir sonraki adım olan information request mesajını gönderiyor.
Gönderdiğimiz bu mesaja karşılık her hangi bir yanıt alamıyoruz. Bir sonraki adım olan
icmp address mask mesajını hazırlayıp gönderiyoruz.
Görüldüğü gibi herhangi bir yanıt alamadık. Böylelikle akış diyagramını tamamlayıp işletim sisteminin linux kernel 2.x.x versiyonuna sahip olduğu bilgisini elde ediyoruz.
Hedef sisteme yönelik keşif çalışmaları port taralamaları ile devam ediyoruz. Burada port taramaları için tarama(-- scan) modunu kullanabiliriz. Bunun yanında manuel olarakta gönderip aldığımız paketlere göre portların açık mı kapalı mı olduğuna karar verebiliriz. İlk olarak tarama modu ile port taraması yapalım.
Yukarıda TCP SYN taraması gerçekleştirilmiştir. Burada hping syn bayrağı set edilmiş tcp paketlerini hedefin 1- 65535 portlarına göndermektedir. Dönen yanıtları kontrol eden hping tcp üçlü el sıkışmanın ikinci fazını oluşturan syn+ack paketini gördüğünde portun açık olduğuna karar verir ve bunu ekrana basar. Kapalı olan diğer tüm portlar için rst+ack cevabı alan hping bu portları kapalı olarak gösterecektir. Yukarıda belirtilen taramaları manuel olarakta yapıp yorumlayabiliriz. Burada hedef sistemin kullanmış olduğu bir firewallu tespit etmek adına manuel tarama daha faydalı olacaktır.
Bunu açıklayacak olursak normal şartlar altında kapalı olan bir port syn paketine yanıt olarak geriye rst+ack mesajını döndürecektir. Fakat firewall ile belirlenen portlar kapatıldığı zaman, kapatılan portlar için geriye herhangi bir yanıt dönmez ve burada hping kullanıcısı hedef sistemin bir firewall tarafından korunduğunu anlar. Örneğin firewalldan yalnızca 21, 53, 80, 110, 143, portlarına gelen bağlantıların kabul edilmesi geriye kalan diğer tüm bağlantıların kapatılması gibi bir kural koyulduğu zaman hping üzerinden gerçekleştirilen manuel taramada sonuçlar aşağıdaki gibi olacaktır.
Burada verilen komut ile 1. porttan başlayarak tüm portlar için syn bayrağı set edilmiş tcp paketi gönderilir. Görüldüğü gibi yalnızca firewalldan izin verilen portlar için syn ve ack bayrakları set edilmiş(flags=SA) paketler gönderilmiştir. Açık olmayan portlar için herhangi bir yanıt gönderilmemiştir. Firewall ile korunmayan bir sistem ise genel olarak açık olmayan portlar için rst+ack ile yanıt vermektedir. Bu durum ise aşağıda gösterilmiştir.
Yukarıdada görüldüğü gibi açık olan 22. port için syn+ack onun dışındaki tüm portlar için rst+ack dönerilmiştir. Bu noktada görüldüğü gibi firewall yöneticisinin tanımladığı kurallar firewallun tespitini kolaylaştırmakta veya zorlaştırmaktadır. Örneğin kapalı portlar için istekleri rst+ack ile yanıtla gibi bir kural yazıldığında hedef sistemde firewall var mı yok mu anlamak oldukça güçleşmektedir.
Son olarak UDP portlarını kontrol için hping aracının nasıl kullanıldığından bahsedelim. UDP bağlantısız bir protokol olduğu için UDP portlarının açık mı yoksa kapalı mı olduğunu anlamak daha zordur. Bu aşamada hedef UDP portları için gönderilen paketlere karşılık geriye bir icmp port unreachable mesajı geliyorsa bu o portun kapalı olduğu anlamına gelmektedir. Fakat geriye bir udp paketi dönerse veya herhangi bir hata mesajı dönmezse bu o portun açık olduğu anlamına gelmektedir.
Aşağıda bu durum gösterilmiştir.
Yukarıda 123 numaralı port için gönderilen isteğe herhangi bir hata mesajı dönmemiştir. Bu o portun açık olduğu anlamına gelir. 124 numaralı port ise port ICMP port unreachable hatası döndürerek kapalı olduğu göstermiştir.
Hping ile gerçekleştirebilecek uygulamaların bir kısmı bu yazıda anlatılmaya çalışıldı. Kullanan kişinin kabiliyetine göre hping aracı çok önemli bir bilgi edinme aracına dönüşebilir. Böylelikle hping yazı dizisi tamamlanmış bulunmakta.
Yararlanılan Kaynaklar
[1] http://www.bilgiguvenligi.gov.tr/sizma-testleri/icmp-kesif-reconnaissance-saldirilari-ii.html
[2] http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol