Bir önceki blog girdisinde NSE’in faydalarından ve basit kullanımından bahsetmiştim. Şimdi de çeşitli NSE scriptlerini kullanarak manuel ya da scriptlerle yaptığımız işleri Nmap’e nasıl havale edeceğimize bakalım. Ilk test sistemlerin DNS cache poisoning’e açık olup olmadığını test etmek. Bugün yaptığım bazı testler sonrası bu konunun oldukça önemli olduğunu anladım. Hatta derdimi anlatacak birileri bulsam tüm Türkiye’nin ip aralığını alıp bu testten gerçirmek isterdim ama arada bir arıza çıkar da sen bizim networkümüzü hangi hakla tararsın(Taramak? DNS sunucusuna çeşitli istekler göndermek illegal mıdır?) diye söylenir diye bu fikrimden şimdilik vazgeçtim.
İçinde birden fazla DNS sunucu barındıranların kendi sistemlerini test etmeleri için buraya Nmap ile testlerin nasıl yapılacağını yazayım belki birilerine faydası dokunur.
Dns cache poisoning açıklığını test etmek için hedef sistemde iki değer kontrol edilir. Birincisi dns sorgulamalarında kaynak portun değiştirilmesi, diğeri de dns sorgularındaki TXID değerinin yeteri kadar random/rastgele olması. Nmap ile bu iki değeri de kontrol edebiliriz. Hatta tek bir taramada her ikisi de kontrol edilebilir.
Önce kaynak port rastgeleliğini test edelim.
# nmap -P0 -sU -p 53 –script dns-random-srcport 100.100.100.2 -vv
Starting Nmap 4.76 ( http://nmap.org ) at 2009-01-12 11:14 GMT
Initiating Parallel DNS resolution of 1 host. at 11:14
Completed Parallel DNS resolution of 1 host. at 11:14, 0.00s elapsed
Initiating UDP Scan at 11:14
Scanning (100.100.100.2) [1 port]
Completed UDP Scan at 11:14, 2.02s elapsed (1 total ports)
SCRIPT ENGINE: Initiating script scanning.
Initiating SCRIPT ENGINE at 11:14
Discovered open port 53/udp on 100.100.100.2
Completed SCRIPT ENGINE at 11:14, 5.83s elapsed
Host host- (100.100.100.2) appears to be up … good.
Scanned at 2009-01-12 11:14:39 GMT for 8s
Interesting ports on (100.100.100.2):
PORT STATE SERVICE
53/udp open domain
|_ dns-random-srcport: 100.100.100.2 is POOR: 52 queries in 108.6 seconds from 1 ports with std dev 0Read data files from: /usr/local/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 8.04 seconds
Raw packets sent: 2 (56B) | Rcvd: 0 (0B)
Benzer şekilde txid üretecinin tahmin edilebilirligini test etmek için
# nmap -P0 -sU -p 53 –script dns-random-txid 100.100.100.2 -vv
komutu kullanılabilir.
bt scripts # nmap -P0 -sU -p 53 –script dns-random-txid 100.100.100.5 -vv
Starting Nmap 4.76 ( http://nmap.org ) at 2009-01-12 11:50 GMT
Initiating Parallel DNS resolution of 1 host. at 11:50
Completed Parallel DNS resolution of 1 host. at 11:50, 0.10s elapsed
Initiating UDP Scan at 11:50
Scanning 100.100.100.5 [1 port]
Completed UDP Scan at 11:50, 2.02s elapsed (1 total ports)
SCRIPT ENGINE: Initiating script scanning.
Initiating SCRIPT ENGINE at 11:50
Discovered open port 53/udp on 100.100.100.5
Completed SCRIPT ENGINE at 11:50, 5.80s elapsed
Host 100.100.100.5 appears to be up … good.
Scanned at 2009-01-12 11:50:48 GMT for 8s
Interesting ports on 100.100.100.5:
PORT STATE SERVICE
53/udp open domain
|_ dns-random-txid: x.y.z.t is GREAT: 26 queries in 5.3 seconds from 26 txids with std dev 17822Read data files from: /usr/local/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 8.09 seconds
Raw packets sent: 2 (56B) | Rcvd: 0 (0B)
Her iki testi de tek bir Nmap taraması ile gerçekleştirmek için scriptler arasına “, ” koyulması yeterli olacaktır.
Nmap tarafından dns ile ilgili yapılabilecek diğer taramalar.
bt scripts # ls dns*
dns-random-srcport.nse dns-random-txid.nse dns-recursion.nse dns-test-open-recursion.nse dns-zone-transfer.nse
Geliştirdikleri “bscan” adlı yeni bir tarayıcı ile tüm interneti tarayanlar da yok değil hani.
Kaynağın keşfini zorlaştırmak adına izlenecek tonlarca yöntem var. Fikrimce, bunlardan en etkili olanlarından ilk ikisi “chaining ssh proxies over ssh,” ve “randomizing ip and mac addresses by utilizing nmap’s spoofing capabilities”.
Her ne kadar THC’nin bscan’i outdated ve not-public release olsa da onun yerine scanrand’i
incelemenizi tavsiye edebilirim.
http://blog.thc.org/index.php?/archives/2-Port-Scanning-the-Internet.html
http://www.doxpara.com/read.php/docs/scanrand_logs.html
Baglantilar icin tesekkurler fakat 2000 yilindaki Internet ile gunumuz arasinda daglar kadar fark var. O zaman 16 saatte interneti taramislar bu kadar zaman diliminde Turkiye bile taranamaz.
Ek olarak;
Internet uzerinde saglikli bir tarama icin Proxy kullanimi pek uygun degil. Araya girecek her cihaz sonuclari etkileyecektir.
Ek olarak gunumuz internetinde ip spoofing yaparak port tarama teorik olarak mumkun gozukse de pratikte mumkun gozukmuyor.
2000 interneti ile günümüz interneti arasında dağlar kadar fark olduğu tespitinize katılıyorum.
bu tip bir taramayı kendi makinanızdan başlatmayacağınız gerçeğini gözönünde bulundurursak eğer:
ssh üzerinden socks proxyleri zincirleme fikri izinizi gizlemenizi sağlayacaktır, IDS veya IPS sistemlerini şaşırtmak için değil.
anlatmak istediğim şöyle tasvir edilebilir:
Scanner (you) -> Bastion Host 1 -> Bastion Host 2 (where scanning process initiated) Targets concerned
ayrıca IP adresini “gizlemek/karıştırmak” için de nmap’in “-D” parametresi kullanılır.
tipik bir sentaks aşağıdaki gibidir:
nmap -n -Ddecoy-ip1,decoy-ip2,ur-ip,decoy-ip3,decoy-ip4 remote-host-ip
bu şekilde network IDS veya IPS 4 port taraması görecektir ve uzaktaki host (remote-host-ip) hangisinin gerçek olduğunu söyleyemeyecektir.
ya da bir zombie host yardımı ile idle scan’e başvurulabilinir.
# nmap -P0 -sI 1.3.3.7:12345 192.168.5.0/24
zombie host avlamanın en kolay yollarından biri de MS08-067 smb zafiyeti için taramaktır. bu sürecin kolaylaştırılmasını sağlayacak nmap betiği de paul dot com ‘da bir örnekle betimlenmiştir.
ref: http://pauldotcom.com/2008/12/scan-for-ms08067-with-nmap.html
Selamlar,
yorumlar icin tesekkurler ama illegal bir islem icin ugrasmadigimizdan bu tip atraksiyonlara gerek yok.
Decoy vs kullanimi sadece basit manada port tarama icin ise yarar(Decoy hostlarin hic biri 3-way handshake tamamlayamayacaktir ya da udp uzerinden servis kullanimi icin ek paket gonderemeyecektir) Versiyon scanning ya da baglanti kurulumu gerektiren bir tarama da basarisiz kalacaktir.
Nmap’in bildigim kadari ile proxy destegi yok. Proxy uzerinden tarama gibi bir ozellik guzel olurdu aslinda.
Hos olsa da sadece full baglanti iceren taramalari yapabilirdi herhalde.
http://tsocks.sourceforge.net/
proxy desteklemeyen uygulamalara proxy desteği kazandırır.
Ayrıca, SYN scanning (-sS)’de 3-way handshake tamamlanmıyor.
-sS’nin 3lu el sikistigi ile ilgili eksik bir bilgilendirme yazmadim ama sanirim Decoy tarama yorumumdaki basit tarama anlasilmamis. Demek istedigim Decoy tarama kullanirken sadece basit port tarama yapilabilir(-sF, -sA, -sS vs gibi). Gercek TCP baglantisi gerektiren taramalar yapilamaz.
Proxy uzerinden yapilacak taramalar da yine TCP baglantisi gerektirecek taramalar. Diger taramalar yapilamaz, dogrudan kendi ip adresiniz gozukur. Bunun sebebi de kullanilan Proxy’nin layer 5 ve uzeri icin calistigi. Proxy ile 3*way handshake tamamlamadan disari paket gonderilemez.
Bu arada TOR vs gibi bir proxy chain uzerinden yapilan tarama ne kadar saglikli olur. Deneme imkanim olmadi ama tahminim kompleks taramalarda hatali sonuclar alinabilecegi yonunde. Belki -rtt sureleri ile oynayarak sonuclar daha saglikli hale getirilebilir.
bende port randomizasyon kontrollerinde aşağıdaki komutu kullanıyorum, amcalar bunun için server yapmış
dig @ +short porttest.dns-oarc.net TXT
kolay gele.
dig @server-ip +short porttest.dns-oarc.net TXT
olacak 🙂