29 Mayıs 2012 Salı

NetCat

Netcat istenen tcp/udp portundan dinleme veya yazma yapabilen bir araç kabaca. Boyut olarak küçük,kullanım olarak kolay olmasından ötürü alet çantasında bulundurulabilir.Windows versiyonu http://joncraton.org/files/nc111nt.zip adresinden edinilebilir. Araç herhangi bir kurulum gerektirmiyor zaten, arşiv dosyasını açıp kullanılabilir. Açıkçası ben de şimdiye kadar neredeyse hiç kullanmadım ama okuduğum kaynaklarda adı geçince ve basit birkaç örnekte kullanılınca bu kullanışlı araç hakkında bir blog girdisi yazmak istedim. Zaten google'dan da oldukça fazla kaynak örnek kullanım edinebilirsiniz.
Göstermek istediğim örnek banner grabbing, tabi konu web uygulama güvenliği olduğu için bizi ilgilendiren web sunucular.Banner kelime anlamı olarak "afiş" demek, it dünyasındaysa çeşitli hizmetler veren sunucu veya cihazlar (http,ftp,ssh,web vb) hakkında kolayca edinilebilen sürüm,platform vb bilgiler anlamına geliyor, bir nevi hedef sunucu veya cihazın kendisini afişe etmesi. Web için konuşmak gerekirse bir web sayfasını/sitesini barındıran ortam hakkında bilgi edinmenin en kolay yolu HTTP request header'da tek başına "HEAD" metodunu kullanmak. Aslına bakarsanız Web sunucu size cevap olarak göndereceği her response header'ında bu bilgiyi sunacak zaten (tabi bu bilgileri maskelemek de mümkün).Netcat'la bu işi yapmak çok kolay,
nc.exe nin bulunduğu klasörde aşağıdaki komutu çalıştırmak hedef sunucunun 80 portuna tcp bağlantı kurmayı sağlar.
( 192.168.227.132 IP adresi OWASP broken web applications projesi sanal makinesinin ip adresidir)
"nc 192.168.227.132 80"
bağlantı kurulduktan sonra

"HEAD / HTTP/1.0" komutu ile HEAD metodlu HTTP request yapmak istediğimizi belirtiriz.Bu durumda web sunucu bize sadece Response header'lardan oluşan boş bir cevap gönderir.


Bu bilgiler kullanılarak (Server: response header'ı) uygulama seviyesinde incelemeye başlamadan önce platform seviyesinde zaafiyet olup olmadığı (kullanılan uygulama platformu ve versiyonu dikkate alınarak) incelenebilir ve hedef sistem belki de çok daha kısa ve kolay yoldan zaafiyete uğratılabilir. Bu işleme "fingerprinting" de denir, yani karşı tarafın parmak izin alma onu tanıma babında.
Bu basit HTTP iletişimi paket seviyesinde aşağıdaki ekran görüntüsünde gösterildiği gibi gerçekleşir.


Bu örnekte OWASP'ın "Broken Web Applications" projesi için hazırladığı ve içinde türlü zaafiyetler barındıran web uygulamalarını topladığı sanal makineyi kullandım.
Netcat herhangi bir dosyanın içeriğini de komut girdisi olarak kullanabilir. Örnek olarak içine 
"HEAD / HTTP/1.0" yazdığım girdi.txt isimli test dosyası da üstteki ile aynı sonucu verir.


Txt dosyaları kullanılarak istediğiniz HTTP Request header'ları bu dosyaya yazabilir ve netcat'e girdi olarak sunabilirsiniz, bir nevi Request Header Interception ya da web sunucusuna gönderilen request header'larda oynama yapma yöntemi.
Burada dikkat edilmesi gereken bir nokta var, text dosyasına "HEAD / HTTP/1.0" yazdıktan sonra 2 kere enter'a basmak. 
"Banner grabbing" ya da "Fingerprinting" olarak adlandırılan bu yöntemi grafik arayüzü ile yapmak isteyenler yine ücretsiz "httprint" aracını kullanabilir.


Aynı basit bilgiyi telnet komutuyla 80 portuna bağlandıktan sonra "HEAD / HTTP/1.0" komutunu yazarak de elde edebilirsiniz.
Görüldüğü gibi browser dışından bir web sunucuya http isteği göndermek bu kadar kolay, bağlantıyı kurduktan sonra komut satırına hangi request metodlarını ve header'ları yazarsanız sunucu bu isteğe uygun geçerli ya da geçersiz  ( hata) cevaplar dönecek. Mesela benzer şekilde request gönderirken HTTP/1.1 versiyonu kullanabilirsiniz ama unutmayın HTTP/1.1 de her requestin bir host header'ı olmalı,aksi halde "400 Bad Request" cevabı alırsınız.



Hiç yorum yok:

Yorum Gönder