Nmap

Vikipedi, özgür ansiklopedi
Atla: kullan, ara
Nmap
Nmap HUN.gif
Geliştiren(ler) Gordon Lyon(Fyodor)
Güncel sürüm 5.51
((2011)
İşletim sistemi Linux, Windows, Solaris, *BSD, MacOS, AmigaOS
Yazılım türü Bilgisayar güvenliği
Lisans GNU GPL
Resmî sitesi http://nmap.org

Nmap, bilgisayar ağları uzmanı Gordon Lyon (Fyodor) tarafından C/C++ ve Python programlama dilleri kullanılarak geliştirilmiş bir güvenlik tarayıcısıdır. Taranan ağın haritasını çıkarabilir ve ağ makinalarında çalışan servislerin durumlarını, işletim sistemlerini, portların durumlarını gözlemleyebilir.

Nmap kullanarak ağa bağlı herhangi bir bilgisayarın işletim sistemi, çalışan fiziksel aygıt tipleri, çalışma süresi, yazılımların hangi servisleri kullandığı, yazılımların sürüm numaraları, bilgisayarın güvenlik duvarına sahip olup olmadığı, ağ kartının üreticisinin adı gibi bilgiler öğrenilebilmektedir.

Nmap tamamen özgür GPL lisanslı yazılımdır ve istendiği takdirde sitesinin ilgili bölümünden kaynak kodu indirilebilmektedir. Nmap' ın kullanılabildiği işletim sistemleri Linux, Windows, MacOS, Solaris, *BSD ve AmigaOS olarak sıralabilir fakat popülerliği öncelikle Linux daha sonrasında Windows' ta dır.

Nmap kullanım alanları[değiştir | kaynağı değiştir]

  • Taranan ağ üzerindeki sistemler hakkında bilgi sahibi olunmasında(port, üzerinde koşan uygulama vb. bilgileri öğrenmek gibi).
  • Ağ topolojisinin çıkarılmasında.
  • Sızma testlerinin gerçekleştirilmesinde.
  • Herhangi bir ağ hazırlanırken gerekli ayarların test edilmesinde.
  • Ağ envanteri tutulması, haritalaması, bakımında ve yönetiminde.

Nmap grafiksel kullanıcı arabirimi[değiştir | kaynağı değiştir]

Zenmap windows' tan ekran görüntüsü
  • Zenmap, Adriano Monteiro Marques tarafından UMIT grafiksel kullanıcı arabiriminden faydalanılarak geliştirilmiş şu anki resmi kullanıcı arabirimdir.
  • NmapFE, Zach Smith tarafından geliştirilmiş Nmap in ilk resmi grafiksel kullanıcı arabirimi olma niteliğindedir. Ve Nmap' in 2.2 ve 4.2 sürümleri arasında kullanılmıştır.
  • Son olarak MacOS için geliştirilmiz XNmap ise proje olarak artık ölü durumdadır.

Nmap ile tarama[değiştir | kaynağı değiştir]

Nmap herhangi bir istemci veya sunucuyu birçok farklı şekilde tarama yeteneğine sahiptir. Nmap'i güçlü kılan farklı tarama tekniklerine sahip olmasıdır. Protokol temelli (TCP, UDP, vb.) tarama yapılabileceği gibi, belirli aralıklardaki IP adresleri, alt ağlar (subnet) ve üzerlerinde çalışan port ve servisleri de taranabilir.[1]

Tarama sonuçlarında ortaya çıkabilecek port durumları aşağıdaki gibidir :

Open (Açık): Portun erişilebilir durumda olduğunu ve port üzerinde bir uygulamanın TCP bağlantılarını ya da UDP datagramlarını kabul ettiği anlamına gelmektedir. [2]

Closed (Kapalı): Portun erişilebilir olduğunu (Paketleri almakta ve geri paket göndermekte) fakat üzerinde herhangi bir uygulamanın olmadığı anlamını taşımaktadır.

Filtered (Filtreli): Dönen tepkiler bir paket filtreleme mekanizması tarafından engellenir. Nmap portun açık olduğuna karar veremez.

Unfiltered (Filtresiz): Portlar erişilebilir ancak Nmap portların açık veya kapalı olduğuna karar veremez. (Sadece ACK scan için )

Open|filtered (Açık|Filtreli): Nmap portların açık veya filtrelenmiş olduğuna karar veremez. (UDP, IP Protocol, FIN, Null, Xmas Scan için )

Closed|filtered (Kapalı|Filtreli): Nmap portların kapalı ya da filtreli olduğuna karar veremez. (Sadece Idle Scan için )

Nmap tarama türleri[değiştir | kaynağı değiştir]

TCP Syn (half open) Scan[değiştir | kaynağı değiştir]

Kaynak makinanın hedef makinaya TCP SYN bayraklı segment göndererek başlattığı bir tarama türüdür. Portların kapalı olduğu durumlarda hedef makina cevap olarak RST + ACK bayraklı segmenti döndürür. Portların açık olduğu durumlarda ise hedef makina SYN + ACK bayraklı segment döndürür. Daha sonra kaynak makina RST bayraklı segment göndererek bağlantıyı koparır ve böylelikle TCP üçlü el sıkışma (TCP three-way handshaking) tamamlanmaz.[3] Bu tarama türünde TCP üçlü el sıkışma gerçekleşmediği için bu tarama türü hedef sistemlerinde herhangi bir şekilde iz bırakmaz.

Bu taramayı gerçekleştirmek için aşağıdaki komut kullanılmalıdır :

nmap -sS -v [Hedef_IP]

TCP Connect Scan[değiştir | kaynağı değiştir]

Kaynak makinanın gerçekleştireceği TCP Connect Scan, kapalı portlara yapıldığı zaman RST + ACK bayraklı segment dönecektir. Ancak açık portlara yapıldığı durumlarda hedef makinanın göndereceği SYN + ACK bayraklı segmenti, kaynak makina ACK bayraklı segment göndererek cevaplar ve üçlü el sıkışmayı tamamlar.

Bu taramayı gerçekleştirmek için aşağıdaki komut kullanılmalıdır :

nmap -sT -v [Hedef_IP]

FIN (stealth) Scan[değiştir | kaynağı değiştir]

Hedef makinaya TCP bağlantı isteği olmadan gönderilen segmentle tarama yapılır. Kaynak makinanın göndereceği FIN bayraklı segment, hedef makinanın kapalı bir portuna gelirse hedef makina RST + ACK bayraklı segment döndürecektir. Eğer açık portuna gelirse hedef makinadan herhangi bir tepki dönmeyecektir.

Bu taramayı gerçekleştirmek için aşağıdaki komut kullanılmalıdır :

nmap -sF -v [Hedef_IP]

Xmas Scan[değiştir | kaynağı değiştir]

Bu tarama türünde kaynak bilgisayarın TCP segmentine URG,PSH ve FIN bayraklarını set edeceği ("1" yapılacağı) segment hedef makinaya gönderilir. Eğer Kaynak makinanın göndereceği URG,PSH ve FIN bayraklı segment, hedef makinanın kapalı bir portuna gelirse hedef makina RST + ACK bayraklı segment döndürecektir. Eğer port açık olursa hedef makinadan herhangi bir tepki dönmeyecektir.

Bu tarama türünde TCP başlığı içerisinde yer alan toplam altı adet bayraktan üç tanesi set edildiği ("1" yapıldığı) için, gönderilen segment yılbaşı ağacının yanan lambalarına benzetilmiştir. Bundan dolayı da bu tarama türüne Xmas (Christmas) Scan denmiştir.

Bu taramayı gerçekleştirmek için aşağıdaki komut kullanılmalıdır :

nmap -sX -v [Hedef_IP]

Null Scan[değiştir | kaynağı değiştir]

Hiçbir bayrağın bulunmayacağı bu tarama türü, gerçek hayatta karşımıza çıkmayan bir durumdur. Kaynak makinanın göndereceği bayraksız segmentler karşısında hedef makinanın vereceği tepkiler FIN Scan ile aynıdır. Kaynak makinanın göndereceği bayraksız segment, hedef makinanın kapalı bir portuna gelirse hedef makina RST + ACK bayraklı segment döndürecektir. Eğer port açık olursa hedef makinadan herhangi bir tepki dönmeyecektir.

Bu taramayı gerçekleştirmek için aşağıdaki komut kullanılmalıdır :

nmap -sN -v [Hedef_IP]

Ping Scan[değiştir | kaynağı değiştir]

Bu tarama türünde kaynak makina hedef makinaya tek bir ICMP Echo istek paketi gönderir. IP adresi erişilebilir ve ICMP filtreleme bulunmadığı sürece, hedef makina ICMP Echo cevabı döndürecektir. Eğer hedef makina erişilebilir değilse veya paket filtreleyici ICMP paketlerini filtreliyorsa, hedef makinadan herhangi bir cevap dönmeyecektir.

Bu taramayı gerçekleştirmek için aşağıdaki komut kullanılmalıdır :

nmap -sP -v [Hedef_IP]

UDP Scan[değiştir | kaynağı değiştir]

Kaynak makinanın hedef makinaya göndereceği UDP datagramına, ICMP Port Unreachable cevabı döndürülüyorsa hedef makina kapalı kabul edilecektir. Herhangi bir tepki döndürmeyen hedef makina open|filtered kabul edilecektir. UDP datagramıyla cevap döndüren hedef makinaya ait port ise açık kabul edilecektir.

Bu taramayı gerçekleştirmek için aşağıdaki komut kullanılmalıdır :

nmap -sU -v [Hedef_IP]

IP Protocol Scan[değiştir | kaynağı değiştir]

Bu tarama türü standart NMAP tarama türlerinden biraz farklıdır. Bu tarama türünde hedef makinaların üzerlerinde çalışan IP tabanlı protokoller tespit edilmektedir. Bu yüzden bu tarama türüne tam anlamıyla bir port taraması demek mümkün değildir. Hedef makina üzerinde, taramasını yaptığımız IP protokolü aktif haldeyse hedef makinadan bu taramaya herhangi bir cevap gelmeyecektir. Hedef makina üzerinde, taramasını yaptığımız IP protokolü aktif halde değilse hedef makinadan bu taramaya, tarama yapılan protokolün türüne göre değişebilen RST bayraklı (RST bayrağı "1" yapılmış) bir segment cevap olarak gelecektir.

Bu taramayı gerçekleştirmek için aşağıdaki komut kullanılmalıdır :

nmap -sO -v [Hedef_IP]

ACK Scan[değiştir | kaynağı değiştir]

Bu tarama türünde kaynak makina hedef makinaya TCP ACK bayraklı segment gönderir. Eğer hedef makina ICMP Destination Unreachable mesajını dönerse ya da hedef makinada bu taramaya karşılık herhangi bir tepki oluşmazsa port “filtered” olarak kabul edilir. Eğer hedef makina RST bayraklı segment döndürürse port “unfiltered” kabul edilir.

Bu taramayı gerçekleştirmek için aşağıdaki komut kullanılmalıdır :

nmap -sA -v [Hedef_IP]

Window Scan[değiştir | kaynağı değiştir]

Window Scan, ACK Scan türüne benzer ancak bir önemli farkı vardır. Window Scan portların açık olma durumlarını yani “open” durumlarını gösterebilir. Bu taramanın ismi TCP Windowing işleminden gelmektedir. Bazı TCP yığınları, RST bayraklı segmentlere cevap döndüreceği zaman, kendilerine özel window boyutları sağlarlar. Hedef makinaya ait kapalı bir porttan dönen RST segmentine ait window boyutu sıfırdır. Hedef makinaya ait açık bir porttan dönen RST segmentine ait window boyutu sıfırdan farklı olur.

Bu taramayı gerçekleştirmek için aşağıdaki komut kullanılmalıdır :

nmap -sW -v [Hedef_IP]

IdleScan[değiştir | kaynağı değiştir]

Bu tarama türü, kaynak makinanın hedef makinayı tarama esnasında aktif olarak rol almadığı bir türdür. Kaynak makina “zombi” olarak nitelendirilen makinalar üzerinden hedef makinayı tarayarak bilgi toplar.

Bu taramayı gerçekleştirmek için aşağıdaki komut kullanılmalıdır :

nmap -sI -v [Zombie_IP] [Hedef_IP]

Nmap betik motoru (Nmap scripting engine - NSE[4])[değiştir | kaynağı değiştir]

NSE (Nmap scripting engine), Nmap'in en güçlü ve kullanışlı özelliklerinden birisidir. NSE'yi; normal Nmap komutlarıyla yapılamayan ya da yapılması çok zor olan işlemlerin daha kolay bir şekilde yapılmasının sağlandığı bir betikler bütünü olarak tarif edebiliriz. Nmap ile birlikte birçok betik kütüphanesi hazır olarak gelmektedir. Fakat NSE aynı zamanda kullanıcıların ihtiyaç duydukları betikleri kendilerinin de yazabilmelerini ve bunları paylaşabilmelerini de sağlar. NSE'de yer alan betikler aynı anda paralel olarak da çalıştırılabilirler.

NSE kullanarak temel olarak yapılabilecekler aşağıda listelenmiştir:

1) Ağ keşifleri: Hedef etki alanlarının (domain) whois veri tabanı sorguları yapılabilir. Hedef sistemlerin SNMP sorguları yapılabilir ve mevcut NFS/SMB/RPC paylaşım ve servisleri listelenebilir.

2) Karmaşık versiyon tespiti Normal Nmap komutlarıyla hedef sistemlerin versiyonları belirlenebilmektedir. NSE ile hedef sistemlerin versiyonları çok daha ayrıntılı bir şekilde tespit edilebilmektedir.

3) Zafiyet (vulnerability) tespiti Normal Nmap komutlarıyla hedef sistemlerin zafiyetleri tam anlamıyla tespit edilememektedir. NSE ile bu zafiyetler daha kolayca belirlenebilmektedir. Nmap ile hazır gelen birçok zafiyet tespit betiği bulunmaktadır. Fakat Nmap'in temel işlevinin bir zafiyet tarayıcısı olmadığının bilinmesi gerekir.

4) Arka kapı (backdoor) tespiti NSE bazı arka kapı programlarını da tespit edebilmektedir.

5) Zafiyet sömürmmesi (Vulnerability exploitation) NSE ile sadece hedef sistemlerin zafiyetleri tespit edilmekle kalmayıp bu zafiyetlerin bazıları kullanılarak hedef sistemlere sızılması da mümkün olmaktadır. Fakat Nmap'in temel amacı Metasploit gibi bir zafiyet sömürü programına dönüşmek değildir. Buna rağmen NSE ile hedef sistemlerdeki bazı zafiyetlerin sömürülmesi de mümkündür.

NSE ile temel olarak bu işlemlerin yapılması hedeflenmekle beraber NSE'nin geliştirilmesine devam edilmektedir.

NSE örnekleri[değiştir | kaynağı değiştir]

NSE kullanmak için nmap komutunun sonuna "--script=example.nse" parametresi eklenir.

Aşağıdaki nmap komutuyla hedef sistemin başlık (banner) bilgisi alınabilmektedir: nmap -sS 192.168.61.61 --script=banner.nse

Aşağıdaki nmap komutuyla hedef sistemin http başlık (http header) bilgi alınabilmektedir: nmap -sS 192.168.61.61 --script=http-header.nse

"nmap -sC" komutu kullanılarak NSE kütüphanesinde bulunan temel bazı betiklerin çalıştırılması sağlanır. Bu komut nmap --script=default" komutuyla aynı görevi yapmaktadır.

Kaynakça[değiştir | kaynağı değiştir]

  1. ^ "Nmap İle Port Tarama" (İngilizce). nmap.org. http://nmap.org/bennieston-tutorial/. Erişim tarihi: 4 Mayıs 2013. 
  2. ^ "Port Tarama" (İngilizce). wikibooks. http://en.wikibooks.org/wiki/Hacking/Tools/Network/Nmap. Erişim tarihi: 4 Mayıs 2013. 
  3. ^ "Temel Nmap (Network Mapper) Kullanımı". cyber-warrior. http://www.cyber-warrior.org/Forum/temel-nmap-kullanimi-lojistik-all-star_456253,0.cwx. Erişim tarihi: 4 Mayıs 2013. 
  4. ^ "NSE" (İngilizce). http://nmap.org/book/nse.html. Erişim tarihi: 18 Kasım 2014. 

Dış bağlantılar[değiştir | kaynağı değiştir]