14 Mart 2014 Cuma

Python ile Banner Grabbing Mantığı

Genellikle Vulnerability Assessment tarayıcılarının çalışma mantığı; hedef sistemi tararken öncelike port taramasıyla hedef sistemin açık veya filtreli portlarını keşfeder. Açık portlarda yer alan servis bilgisini (hizmet, software vb.) keşfettikten sonra tarayıcının kendi veritabanında bulunan güvenlik zafiyeti barındıran servis ismiyleyle karşılaştırır eğer eşleşiyor ise bu sistemde XYZ zafiyeti vardır demektedir...

Tabi bu sadece possible yani olabilir demektir. Çünkü Vulnerability Assessment tarayıcıları keşfedilen zafiyeti sistemde gerçekten olup olmadığını doğrulamaz.
Evet belki hedef sistemin bir portunda çalışan XYZ servisinde daha önceden Security Reseacher'ler tarafından keşfedilmiş bir zafiyet olabilir fakat hedef sistemde belki bu zafiyet fixlenmiştir (kapatılmıştır)? Veya serviste sorun vardır tam çalışmıyordur bile.. İşte bu saydığım ve bunun gibi tarayıcılardan tarafından keşfedilen zafiyetlerin durumuna false-positive demekteyiz.

False-Positive kavramını basitçe anlatan bir diyagram çizdim:

Yukarıdaki belirttiğim konuya istinaden Vulnerability Assessment tarayıcıların temel çalışma mantığını Python'da socket modülünü kullanarak belirlenen hedef sisteme 21 FTP portundan bağlanıp önceden belirlediğimiz zafiyet barındıran FTP servislerinin karşı tarafta olup olmadığını eşleştiren küçük bir uygulama yapacağız.

1) Bağlantı kurarak banner (servis) bilgisi elde etme:
import socket
socket.setdefaulttimeout(2)
s = socket.socket()
s.connect(("80.243.179.140",21))
banner = s.recv(2048)
print "[+] Servis Bilgisi: "+banner
Çıktısı:

2) IF - ELIF - ELSE kullanarak zafiyet tespiti:
import socket 
socket.setdefaulttimeout(2)
s = socket.socket()
s.connect(("80.243.179.140",21))
banner = s.recv(2048) 
if ("FreeFloat Ftp Server (Version 1.00)" in banner):
    print "[+] FreeFloat FTP Server zafiyet barindirmaktadir."
elif ("ProFTPD 1.3.4c Server" in banner):
    print "[+] ProFTPD Server zafiyet barindirmaktadir."
elif ("Ability Server 2.34" in banner):
    print "[+] Ability FTP Server zafiyet barindirmaktadir."
elif ("Sami FTP Server 2.0.2" in banner):
    print "[+] Sami FTP Server zafiyet barindirmaktadir."
else:
    print "[-] FTP Server'inde zafiyet bulunamadi."
Çıktısı:

Faydalı olması dileğiyle...

2 yorum:

  1. time-out hatası veriyor bu ne anlama gelmektedir.

    YanıtlaSil
    Yanıtlar
    1. Kodlarda
      s.connect(("80.243.179.140",21))
      kısmındaki benim test yapmak amaçlı kullandığım örnek IP adresini silip siz test etmek istediğiniz sistemin IP adresini yazmalısınız. Çünkü benim test aşamasında kullandığım IP adresi artık kullanılmamaktadır.

      Sil