Nmap
Nmap, bilgisayar ağları uzmanı Gordon Lyon (Fyodor) tarafından 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 çalışma zamanı ekran görüntüsü | |
Geliştirici(ler) | Gordon Lyon(Fyodor) |
---|---|
Güncel sürüm | 5.51 / (2011 |
İşletim sistemi | Linux, Windows, Solaris, *BSD, MacOS, AmigaOS |
Tür | Bilgisayar güvenliği |
Lisans | GNU GPL v2 |
Resmî sitesi | http://nmap.org |
Kod deposu |
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 kodu18 Ocak 2010 tarihinde Wayback Machine sitesinde arşivlendi. 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ı
- 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
- Zenmap22 Kasım 2008 tarihinde Wayback Machine sitesinde arşivlendi., Adriano Monteiro Marques tarafından UMIT grafiksel kullanıcı arabiriminden faydalanılarak geliştirilmiş şu anki resmi kullanıcı arabirimdir.
- NmapFE9 Nisan 2016 tarihinde Wayback Machine sitesinde arşivlendi., Zach Smith tarafından geliştirilmiş Nmap'in ilk resmi grafiksel kullanıcı arabirimi olma niteliğindedir. Nmap'in 2.2 ve 4.2 sürümleri arasında kullanılmıştır.
- Son olarak MacOS için geliştirilmiş XNmap ise proje olarak artık ölü durumdadır.
Nmap ile tarama
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 )
TCP Syn (half open) Scan
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
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
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
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
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
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
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
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
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
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
Bu tarama türü, kaynak makinanın hedef makineyi tarama esnasında aktif olarak rol almadığı bir türdür. Kaynak makina “zombi” olarak nitelendirilen makinalar üzerinden hedef makineyi 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])
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ürmesi (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
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.
Ayrıca bakınız
Kaynakça
- "Nmap İle Port Tarama" (İngilizce). nmap.org. 9 Nisan 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Mayıs 2013.
- "Port Tarama" (İngilizce). wikibooks. 6 Nisan 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Mayıs 2013.
- "Temel Nmap (Network Mapper) Kullanımı". cyber-warrior. 29 Kasım 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Mayıs 2013.
- "NSE" (İngilizce). 1 Mayıs 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 18 Kasım 2014.