Bir önceki yazımızda, Nmap’in sunduğu çeşitli tarama türlerini inceledik. Bu son bölümde ise Nmap’in gelişmiş parametreleri ve ek özelliklerine odaklanıyoruz. Bu bölüm, Nmap ile daha derinlemesine ağ taramaları yapmak isteyenler için kritik öneme sahiptir.
İçindekiler Tablosu
Nmap Parametreleri ve Özellikleri
IP Taraması
Nmap üzerinde örneğin 192.168.1.16 ip adresini taramak isterseniz, “nmap 192.168.1.16” yazmanız yeterli olacaktır.
Fakat az daha detaylı bir taratma yapmak için yukarıda yazdığımız scan türlerini kullanabilirsiniz örneğin:
nmap -sS 192.168.1.16ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ (SYN Scan çalıştırır.)
Nmap üzerinde local ağınızdaki tüm cihazları da tarayabilirsiniz. Bunu yapmak için:
nmap 192.168.1.0/24
Komutunu girmeniz yeterli olacaktır. Bu komutu çalıştırdığımızda bağlı olduğumuz ağa bağlı olan tüm cihazlar taranacaktır.
Eğer bir ip taraması yaparken belirli aralıktaki ip adresleri tarama dışı bırakmak istiyorsanız ㅤ– exclude ㅤkomutunu kullanabilirsiniz.
Örneğin bağlı olduğum 192.168.1.0 ağında tüm cihazları taratmak istiyorum ama 100 ve 250 ip adresleri arasındaki ipleri taramamak istiyorum.
nmap 192.168.1.0/24 — exclude 192.168.1.100–250
komutunu kullanarak bu 100 ve 250 numaralı ip’ler arasındaki ip’leri tarama dışı bırakabilirim.
Aynı zamanda belirli bir txt dosyasının içinde taranmaması gereken ip adresleri varsa bu ip adreslerini
nmap 192.168.1.0/24 — exclude file /home/kali/Documents/Tarama.txt
Cümleyi etken çatıya dönüştürdüğümüzde şu şekilde olur:
-excludefileㅤ/dosyanın/dizin/yolu komutuyla tarama dışı bırakabiliriz. Örneğin:
Bu komut çalıştırılırken, ağdaki tüm cihazlar taranır, ancak Tarama.txt dosyasındaki IP adreslerine sahip cihazlar hariç tutulur.
-iL Parametresi:
Nmap’te aynı şekilde bir txt’ye kaydedilen ip listesi de taratabiliriz. Bu taramayı yapmak için -iL parametresini kullanmalısınız. -iL parametresini kullandıktan sonra içinde ip’leri barındıran txt’nin dizin yolunu belirtirseniz o txt içindeki ip’leri sırasıyla tarayacaktır.
“ nmap -iL /home/kali/Documents/ipler.txt “ㅤ(ipler.txt içindeki ip leri tarar)
Nmap’te Port Taraması:
-p Parametresi:
Nmap üzerinde taranan portları gösteren parametre ‘-p’ dir.
Örneğin bir ip üzerindeki 22. portu taramak isterseniz:
ㅤ-p 22 ㅤyazarak sadece 22. portu tarayabilirsiniz.
Aynı anda 22, 23 ve 80 numaralı portları taramak isterseniz, port numaralarını virgül “,” ile ayırarak yazabilirsiniz.
-p 22,23,80 ㅤparametresi hedef ip üzerinde 22 23 ve 80. portu tarayacaktır.
Yada belli aralık verip o aralıktaki portları taratmak isterseniz “ — “ işareti koyarak bir aralık belirtir ve o aralığı tararsınız. Örneğin 22 ve 80 port aralıklarını taramak için:
-p 22–80ㅤ yazarsanız 22. ve 80. port arası 22 ve 80 dahil tüm portları tarayacaktır.
Eğer yapacağınız port taramasında belli aralıklardaki portları taramak istemiyorsanız bunu — exclude-ports komutuyla yapabilirsiniz.
Mesela scanme.nmap.org adresinde bir port taraması gerçekleştireceksiniz ve 100 ile 200 numaralı portların arasındaki portlar dahil olmak üzere taranmamasını istiyorsunuz. Bunu:
nmapㅤ -exclude-ports 100–2000 scanme.nmap.org
Komutunu çalıştırarak gerçekleştirebilirsiniz.
Bir sistem üzerinde 65.536 tane port bulunmaktadır. Ancak Nmap aracı tarama yaparken en popüler 1000 portu tarar. Tüm portları taramak istersek ” -p- “ parametresini kullanabiliriz.
Örneğin scanme.nmap.org üzerindeki 65.356 portu da taramak istersek:
nmap ㅤ -p- ㅤscanme.nmap.org
komutunu çalıştırabiliriz. Bu parametreyle tüm portlar taranacaktır.
Eğer portlar üzerinde çalışan servisleri taramak istersek (örneğin http servislerini tarayacağız) -p parametresinden sonra taramak istediğimiz servisi yazarak tarayabiliriz. Örnek kullanım:
nmapㅤ -p http ㅤscanme.nmap.org
Yukarıdaki şekilde, scanme.nmap.org üzerindeki HTTP servisini çalıştıran portları, açık veya kapalı olmalarına bakmaksızın taradı ve gösterdi.
Adının bir kısmını hatırladığınız bir servis varsa bu servisi adın bir kısmını yazdıktan sonra “ * ” işareti koyarak Nmap aracına tamamlatabilirsiniz.
Örneğin ismi remote ile başlayan bir servisin adını unuttunuz:
nmap -p remote* scanme.nmap.org
Yukarıda gördüğümüz üzere remote ile başlatan tüm servisleri nmap bizim için taradı ve listeledi.
Yapacağınız taramada port sonuçlarını göstermek istemezsek -sn parametresini kullanabiliriz. Bu şekilde port taraması yapmada bize daha hızlı bir sonuç verir. İleride versiyon taramaları yaparken bu parametre bizi daha da hızlandıracaktır fakat genel olarak çok önemli bir parametre değildir.
örneğin:
namp -sn scanme.nmap.org
komutunu çalıştırırsak bize sadece host’un açık olup olmadığı hakkında bilgiler verir portları taramaz ve göstermez.
Nmap’te Servis ve Versiyon Tespiti
-sV Parametresi:
Nmap aracında -sV parametresini kullanarak portları tararız ve bu portların versiyonları hakkında bilgiler ediniriz.
Örneğin scanme.nmap.org adresine bir -sV taraması yaptığımızda:
Görüldüğü üzere scanme.nmap.org adresindeki portların servisleri ve versiyonları hakkında bilgi edindik.
Nmap bu versiyonları tahmin ederek önümüze getirir. %100 doğruluk oranı yoktur.
Nmap’te İşletim Sistemi Tespiti
-O Parametresi:
Nmap ile -O parametresini kullanarak operating system yani işletim sistemi taraması yapılabilmektedir.
Örneğin “scanme.nmap.org” sitesi üzerinde çalışan işletim sisteminin versiyonunu bulmak istediğimizde:
namp -o scanme.nmap.org
komutunu çalıştırmalıyız. Bu komutun sonucunda:
Çıktısını alırız. Agrassive OS guesses kısmında görüldüğü üzere çalıştığını tahmin ettiği işletim sistemlerini bize sırasıyla bildirdi. (Sağ tarafa doğru tahminler devam ediyordu fakat yazılar küçülüp okunamaz hale gelmesin diye resmin dışında bırakmam gerekti)
Operating System Taraması’nın çalışması için hedef sistemde en az 1 açık 1 tane de kapalı port bulunmalıdır. Aksi halde bir sonuç alamayız.
Eğer bir taramada OS Scan kullanıyorsak ve bu sistemde 1 açık 1 tane de kapalı port yoksa OS Scan bizim taramamızı çok yavaşlatır.
Bu durumdan kaçınmak için ㅤ- -osscan-limit ㅤparametresini kullanabiliriz.
Bu parametre bir açık bir kapalı port bulamazsa OS Scan taramasını atlamak için kullanır.
Örn: nmap -O – -osscan-limit scanme.nmap.org
Nmap’te Timing Parametresi
T5: InsaneㅤT4: Agrassive ㅤ T3: Normal ㅤ
T2: Polite ㅤ T1: Sneaky ㅤㅤ T0: Paranoid
T5 parametresinden başlayarak T0 parametresine kadar tarama hızı yavaşlayan bir sistem vardır. Taramanın en hızlısı T5’tir. Hızlı tarama hedef üzerinde daha fazla dikkat çeker ve hedef cihaz sizin taramanızı fark edip sizi yasaklar.
T0 parametresi de aşırı yavaş bir tarama sistemidir. Bu tarama hedef sistem üzerinde daha az dikkat çekmemizi sağlar. Böylece yakalanmadan karşı sistem hakkında bilgi toplayabiliriz.
Eğer T5 gibi hızlı bir tarama çalıştıracaksak sistemimizin ve ağımızın bu hızı kaldırabileceğinden emin olmamız gerekir, yoksa karşı sistem üzerinde paketler doğru iletilemez ve yanlış sonuçlarla karşılaşırız.
Nmap Scriptleri
Scriptler Nmap in içerisinde hali hazırda bulunmaktadır. 600’e yakın bu script tarama yaparken bize daha fazla bilgi sağlayan belli özel yazılımlardır.
Nmap bu scriptleri /usr/share/nmap/scripts/scripts.db klasöründe saklamaktadır:
Script Kategorileri
- SAFEㅤ ㅤㅤㅤ= Hedef kaynakları etkilemez.
- INTRUSIVEㅤ = Hedef kaynakları etkileyebiliriz.
- VULN ㅤ ㅤ ㅤ= Güvenlik açıklarını tespit eder.
- EXPLOİT ㅤㅤ = Güvenlik açıklarını sömürür.
- AUTH ㅤ ㅤ ㅤ= Kimlik bilgilerini bypass etmek için kullanırız.
- BRUTEㅤㅤㅤ = Kimlik bilgilerini tahmin etmek için brute force saldırı yapar.
- DISCOVERYㅤ= Ağ hakkında keşif yapmak için kullanırız.
- DEFAULTㅤㅤ = Hedef sistem üzerinde varsayılan olarak belirlenmiş (nmap tarafından) scriptler çalıştırılır.
Bu kategoriler Nmap’in içerisindeki scriptlerin yazılma amacına göre kategorize edilmesiyle oluşmuştur.
Sizin belirlediğiniz komutlarla hedef sisteme script taraması atıp daha fazla bilgi elde eder.
Aynı zamanda örneğin üzerinde http servisi çalışan porta http scriptlerini teker teker dener ve daha fazla bilgi bulur, hatta bir exploit bile uygulanır.
Örneğin http scriptlerini görmek için şu komutu kullanabiliriz:
grep “http” /usr/share/nmap/scripts/script.db
Bu şekilde http scriptlerini görmüş olduk. Sağ tarafta da gördüğümüz üzere bu scriptler, default, exploit, intrusive olarak kategorize edilmiştir.
Örneğin default bir script taramasını Nmap üzerinde şu şekilde yapabiliriz:
nmap ㅤ- -script-default ㅤscanme.nmap.org
Yazabiliriz ya da default tarama özelinde -sC komutu da aynı işi yapmaktadır.
nmapㅤ -sC ㅤscanme.nmap.org
Bu komut da yukarıdaki komutla aynı işi yapmaktadır ya da sadece Vuln kategorisindeki scriptlerini kullanmak istersek:
nmap ㅤ- -script ㅤvulnㅤscanme.nmap.org
şeklinde kullanabiliriz. Bu sayede Vuln kategorisine dahil tüm scriptleri nmap tek tek hedef sisteme deneyecektir.
Aynı komut satırı içerisinde 2 çeşit script taratmak istersek şu şekilde yapabiliriz:
nmap ㅤ- -script “vuln , exploit” ㅤscanme.nmap.org
Scritptler hakkında detaylı bilgi öğrenmek istersek scriptin ismini
– -script-help komutunu kullanarak bilgi alabiliriz.
örneğin ftp-anon scripti hakkında bilgi almak istersek:
nmap ㅤ- -script-helpㅤ ftp-anonㅤscanme.nmap.org
komutunu kullanabiliriz.ㅤㅤ
Firewall Atlatma
Firewall Ne İş Yapar?
Güvenlik duvarı (firewall), bilgisayar ağındaki trafiği denetleyerek hangi bağlantılara izin verileceğini veya hangi bağlantıların engelleneceğini belirleyen bir güvenlik mekanizmasıdır.
Bir ip’den sürekli ve hızlı hızlı gelen paketler Firewall’un savunma mekanizmasını tetikleyerek ve sistem sizden gelen paketlere kendini kapatır. Artık o sistem üzerinde tarama yapamaz hale gelirsiniz.
Nmap gibi ağ tarama araçları, bu tür güvenlik önlemlerini atlatmak veya algılanmamak için çeşitli teknikler kullanır.
Örneğin ‘google.com’a ping attığımızda bizim karşımıza gönderilen ping paketleriyle ilgili bir sonuç çıkar.
Fakat biz Tübitak’a ping atarsak aşağıdaki gibi bir sonuç alırız:
Görüldüğü üzere paketlerin hepsini kaybettik.
Bunun sebebi Tübitak üzerinde çalışan Firewall’ın ping scan’i kabul etmeyip devre dışı bırakmasıdır.
(ping scan kabul etmeyen web sitelerinde -Pn komutunu kullanmak genellikle işe yarayabilmektedir. Bu komut ping atmadan karşı sistemi taramamıza olanak sağlar.)
Firewall Atlatma Teknikleri
-f Parametresi:
Firewall yüksek boyuttaki paketleri yakalayıp şüphelenmemesi için -f parametresini kullanarak bu paketleri fragment’lere çevirip yollayabiliriz.
Boyutu küçültülmüş fragmentler olarak karşıya yollanan paket daha az dikkat çeker.
-f parametresinin örnek kullanımı şu şekildedir:
nmapㅤ -sS ㅤ-Pnㅤ -f ㅤscanme.nmap.org
Yukarıdaki Wireshark analizine göre, -f ile gönderilen paketler fragmentlere bölünerek ve karşı tarafa ‘Fragmented IP Protocol’ olarak iletilmiştir.
-D Parametresi:
Hedef sistem üzerinde taramalar yaparken karşı sistem üzerinde çok fazla log bırakabiliyoruz.
Bunu engellemek için de paketlerimizi -D parametresini kullanarak daha önceden belirttiğimiz ip adresleriyle istek yollayabiliriz.
örneğin:
nmapㅤ -sSㅤ -Pnㅤ -D 192.168.1.1 , 192.168.1.16 , 192.168.1.24 google.com
Yukarıdaki komutta “ , ” sembolü ile ayrıştırdığımız ekstra 3 ip adresi girildik. Artık karşı sisteme gönderilen paketler tek ip den gidip daha fazla dikkat çekmek yerine 3’e bölünüp çektiği dikkat azalacaktır.
Her seferinde ip adresini kendimiz yazmak zorunda değiliz. -D parametresinin yanına konulan RND: ㅤseçeneği ile Nmap bizim istediğimiz sayıda ip adresini rastgele seçip o ip’lere bölerek tarama atabilmektedir.
örnek kullanım:
nmapㅤ -sS ㅤ-Pn ㅤ-D ㅤRND:5 ㅤscanme.nmap.org
komutu ile 6 farklı ip adresinden karşı sisteme tarama atabiliriz. Bu sayının 6 olmasının sebebi RND:5 komutuyla 5 tane decoy ip istememiz ve 1 tane de kendi orijinal ip adresimizin bulunmasıdır.
Artık karşı sisteme 5 tane ip üzerinden istek atılacaktır ve çekilen şüphe azalacaktır.
Yukarıdaki Wireshark analizinde görüldüğü üzere Source kısmındaki ip adresimiz 6 farklı ip şeklini almıştır.
Çıktı Alma
-oN Parametresi
Nmap’te yaptığımız taramalar bazen saatler bazen de günler sürebiliyor ve biz bu yaptığımız taramaların sonuçlarını kaybetmek istemiyoruz.
Bu sebeple yaptığımız taramaları bir txt’ye kaydetmek isteyebiliriz ve bu çıktıyı alırken -oN parametresini kullanabiliriz.
örnek kullanım:
nmap –sS -Pn scanme.nmap.org -oN /home/kali/Documents/nmapcıktı.txt
yukarıdaki şekilde uygulandığı üzere alınan çıktı “Documents” klasörü içinde nmapcıktı.txt dosyası içerisine kaydedilecektir.
Eğer çıktıyı almak için bir dizin yolu vermezsek ve -oN nmapcıktı.txt şeklinde yazarsak, taramayı içinde bulunduğumuz dizine nmapcıktı.txt adıyla kayıt eder.
Daha farklı kayıt çeşitleri de vardır fakat bizim işimize yarayacak ve en fazla kullanılan çıktı şekli budur.
Bu yazı ile birlikte Nmap serimizin sonuna geldik. Eğer serinin önceki yazılarını kaçırdıysanız, aşağıdaki bağlantılardan erişebilirsiniz:
Nmap Detaylı Anlatım (2/3)
İkinci yazımızda, Nmap’in sunduğu tarama türleri detaylandırılmış ve Wireshark analizleri ile desteklenmiştir.Nmap Detaylı Anlatım (1/3)
Bu yazıda, Nmap’in temel işlevleri, TCP/UDP protokolleri ve port durumları ele alınmıştır.
Eren Gezen
HacktorX YazarıMerhaba, ben Eren. Adli Bilişim Mühendisiliği Öğrencisi 2. sınıfım. Kendimi siber güvenlik alanında geliştiriyorum.