Nmap Nedir, Nasıl Kullanılır, Kurulum ve Kullanımı

  Linux

Nmap açık kaynak kod özelliği ile C/C++ ve Python programlama dilleri kullanılarak geliştirilmiş network tarama sistemidir. Ağ üzerinde tarama yaparak çalışan servisleri, ağ haritalarını, port bilgileri gibi bilgileri analiz etmeye yarar.

Klasik bir çok sistemcinin ilk yardım çantası içinde bulunan bu muhteşem program ile bir çok şey yapmamız mümkün. Bir çok farklı tarama yöntemine ve farklı seçeneklere sahip olan bu program ile dns lookup, ping, portscanner, mac scan v.b. bir çok alanda bilgi elde etme imkanı sunar. Protokol tabanlı taramanın yanında ip ve port bazlı servis taramaları gibi seçeneklere de sahiptir.

Unix/linux, Windows ve Mac tabanlı sistemler üzerinde çalışabilme yeteneğine sahip olması kullanıcılar için ayrı bir tercih sebebi oluşturuyor.

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.

http://tr.wikipedia.org/wiki/Nmap#Nmap_kullan.C4.B1m_alanlar.C4.B1
Kurulumu,
Redhat/Centos tabanlı dağıtımlar için,
yum install -y nmap

Ubuntu/Debian tabanlı dağıtımlar için,
apt-get install nmap

Freebsd için,
cd /usr/ports/security/nmap && make install clean
veya aşağıdaki adresten uygun paket bulunur ve sisteme eklenerek kurulur,
http://www.openbsd.org/ftp.html
pkg_add -v nmap-<version>.tgz

Mandrake, Suse veya Fedora için,
http://nmap.org/book/inst-linux.html

Port Yanıtlarının/Durumlarının Anlamları

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.
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 Çeşitleri

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.

Örnek dizilim,
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.

Örnek dizilim,
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.

Örnek dizilim,
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.

Örnek dizilim,
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.

Örnek dizilim,
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.

Örnek dizilim,
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.

Örnek dizilim,
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.

Örnek dizilim,
nmap -sO -v [Hedef_IP]

Version Detection
Version Detection, bütün portların bilgilerini bulabilecek herhangi bir tarama türü ile beraber çalışır. Eğer herhangi bir tarama türü belirtilmezse yetkili kullanıcılar ( root, admin ) için TCP SYN, yetkisiz kullanıcılar için TCP Connect Scan çalıştırılır.
Eğer açık port bulunursa, Version Detection Scan hedef makina üzerinde araştırma sürecini başlatır. Hedef makinanın uygulamalarıyla direkt olarak iletişime geçerek elde edebileceği kadar bilgiyi almaya çalışır.
Başlangıçta varsayılan olarak TCP SYN Scan yapıldığı ve cevaplarının döndüğünü kabul edersek, 80. Port üzerinde çalışan HTTP hakkında bilgi toplayacak olan Version Detection Scan gerçekleştireceği tarama işlemleri aşağıdaki gibidir.

Örnek dizilim;
nmap -sV -v [Hedef_IP]

FTP Bounce Scan
FTP Bounce Scan, FTP Serverlarının pasif olarak çalışması ile gerçekleştirilir. Pasif moddaki FTPde, komut bağlantıları ile veriler tamamen ayrıdır. FTP Serverlar dışarıya veri bağlantıları kurduğu için FW ile uyumlu çalışması gerekir. Bunun dışında, herhangi bir kullanıcı bir veriyi tamamen farklı bir hedefe gönderebilir.
Nmapin taramayı gerçekleştirebilmesi için, aradaki adam olacak olan FTP Serverla bağlantı kurması gerekir. Bağlantı kurulduktan sonra Nmap verileri taranacak olan hedef IP ve porta yönlendirir. Yönlendirme işleminden sonra FTP üzerinde taramayı gerçekleştirebilmek için öncelikle PORT komutu, daha sonra verileri aktarabilmek için LIST komutu çalıştırılır. Kapalı portta bağlantı sağlanamazken, açık portta sağlanır.

Örnek dizilim,
nmap -b -v [user:[email protected]:port] [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.

Örnek dizilim,
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.

Örnek dizilim,
nmap -sW -v [Hedef_IP]

IdleScan
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.

Örnek dizilim,
nmap -sI -v [Zombie_IP] [Hedef_IP]

RPCScan
RPC Scan, hedef makina üzerinde koşan RPC uygulamalarını keşfeder. Başka bir tarama türü ile açık portlar keşfedildikten sonra,RPC Scan hedef makinanın açık portlarına RPC null göndererek, eğer çalışan bir RPC uygulaması varsa, RPC uygulamasını harekete geçirir.RPC Scan, Version Detection Scan işlemi esnasında otomatik olarak çalıştırılır.

Örnek dizilim,
nmap -sR -v [Hedef_IP]

List Scan
Bu tarama türü gerçek bir tarama değildir. Sadece Nmapin sorun çözme ve test yeteneklerini aktif kılar. Taranacak olan aktif makinaların Iplerini sıralar. Eğer reverse DNS çözümlemesi iptal edilmişse List Scan network üzerinde tamamen sessizdir. Herhangi bir paket almaz veya göndermez. Bu taramayı gerçekleştirmek için aşağıdaki komut kullanılmalıdır.

Örnek dizilim,
nmap -sL -v [Hedef_IP]

Ben burada örnek amacıyla sunucumu tuttuğum linode üzerinde ip bloğumu tarıyorum ve filtreliyorum. Kullanılan aktif ip’ler ve hostname’leri listeleniyor.

Kullanılan Komutlar özeti,
nmap -sS “hedef” = TCP SYN taraması için kullanılır,
nmap -sL “hedef” = Taramaları listelemek için kullanılır,
nmap -sT “hedef” = Tcp bağlantı taraması için kullanılır,
nmap -sR “hedef” = RPC taraması için kullanılır,
nmap -sF “hedef” = FIN taraması için kullanılır,
nmap -sW “hedef” = Window port açık/kapalı yanıtları için taramada kullanılır,
nmap -sX “hedef” = Xmas Tree taraması için kullanılır,
nmap -sA “hedef” = ACK paketlerinin analizi ve taraması için kullanılır,
nmap -sN “hedef” = Null taraması için kullanılır,
nmap -sO “hedef” = IP protokollerinin taraması için kullanılır,
nmap -sP “hedef” = Ping taraması için kullanılır,
nmap -sU “hedef” = UDP paketlerinin analizi ve taraması için kullanılır,
nmap -sV “hedef” = Version bilgisini öğrenmek için kullanılan tarama yöntemidir.

Nmap komutunun help çıktısını incelemek oldukça yararlı olacaktır, hem belirtmeden hemde detayını vermeden geçmeyeyim,

Kullanımı, (Birkaç basit örneklerle inceleyelim;)

nmap <tarama türü> <seçenekler> <hedef>

Ana şema aşağıdaki gibi yer aldığını tekrar hatırlatalım ve örneklere başlayalım.
nmap <tarama türü> <seçenekler> <hedef>

– Tek bir ip veya host için tarama işlemi yapalım,

– Birden fazla ip/host için tarama işlemi yapalım,

– Birden fazla ip adresi veya ip subnet’i için tarama yapalım,
Örneğin birden fazla ip taranacaksa komutlar aşağıdaki gibi olmalı;

yada

IP subneti için ise;

yada

– Nmap ile yaptığımız tarama işlemini bir dosyaya kaydetmek istiyorsak bunun için basit linux bash komutu ile yapmamız mümkün,

– Diyelim ki birden fazla host/ıp adresi var ve karışık, bunların hepsini bir listeye yazdırarak o listeden sırasıyla sorgu atmak istiyoruz, hatta bu sorguların sonuçlarını da bir dosyaya kaydetmek istiyorsak tam olarak aşağıdaki komut yardımcı olacaktır.
Önce dosyamda ne var görelim,

– Diyelimki bir networkü tarıyoruz ve bazı ip adreslerini bu tarama işlemine dahil etmek istemiyoruz. (Tıpkı grep -v ‘deki gibi)

veya

– Bir ip adresine ait portları tarayalım ve açıkmı kapalımı kontrol edelim, (Ben burada 0 ile 29 arasındaki portları tarıyorum.)

– Fast seçeneği ile hızlıca hedef makinedeki portları taramak istersek,

– Yalnızca açık olan portların yanıtını almak istediğimizde,

– Bir host/ip üzerinde genel bir arama yapalım,

– Burada uzak hosta sorgu atarak “-v” parametresi ile daha fazla ayrıntı “-O” ile işletim sistemi bilgisi ve “-sS” ile tcp syn

– Buda ufak bir tüyo olsun, local’de ip, interface ve route listesini almak istersek klasik linux bash komutları ile uğraşmadan kolayca yapabiliriz,

– Özellikle tarama yapmak istediğimiz bir port olduğunda aşağıdaki yöntemi kullanabiliriz,

– Diyelimki network bloğumuz var ve bu blok içindeki ip sahibi bilgisayarların işletim sistemlerini öğrenmemiz gerekiyor, Bu durumda;

Bu şekilde çok geniş ve uzun anlatımlara devam edilebilir. Fakat temelde bu bilgiler oldukça yararlı olacaktır. Fazlası için aşağıdaki kaynakları incelemenizi öneririm,
http://nmap.org/
http://www.bga.com.tr/calismalar/nmap_guide.pdf
http://en.wikipedia.org/wiki/Nmap
http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/
http://linux.die.net/man/1/nmap
http://tr.wikipedia.org/wiki/Nmap