March 17, 2020

Nmap Kullanım Rehberi

Nmap, GNU Genel Kamu Lisansı altında yayınlanan bir açık kaynak kodlu programdır. TCP / IP sistemlerini keşfetmek, izlemek ve sorun gidermek için kullanılabilen bir araçtır. Nmap, Gordon “Fyodor” Lyon tarafından oluşturulan ve bir gönüllü topluluğu tarafından aktif olarak geliştirilen ücretsiz, çapraz platform bir ağ tarama yardımcı programıdır. Nmap ile taradığımız ağdaki açık makineleri, makinelerdeki açık portları, çalışan servisleri, işletim sistemi versiyonlarını ve belli başlı zayıfıkları tespit edebiliriz. Özellikle penetrasyon testi yapanlar Nmap programını çok kullanır. Siz de network penetrasyon testleri alanında uzmanlaşmak istiyorsanız Nmap programının kullanımını çok iyi bilmelisiniz.

Three Way Handshake(Üçlü el sıkışma)

İstemci-Sunucu arasında veri alışverişinin sağlanması için üçlü el sıkışmanın gerçekleşmesi lazım.

Öncelikle TCP bağlantıları bayraklarla sağlanır, yani TCP oturumunun ilerlemesi için bu bayrakların kendi aralarında alışveriş yapabiliyor olması gerekmektedir.

Bilgisayarımız bir web sayfasına ulaşmak için TCP oturumunu başlatması gerekmektedir. bunun için bilgisayarımız bilgilerini SYN(istek paketi) paketini sunucuya gönderir. Sunucu istenilen TCP portunun açık olması durumunda ACK (Onay Paketi) paketi ile (SYN+ACK) cevabını gönderir. Bilgisayarımız gelen SYN+ACK paketini aldığına dair sunucuya ACK paketi gönderir ve böylece 3 lü el sıkışma gerçekleşmiş olur.

Wireshark ile trafiği dinliyebilir ve denetleyebiliriz bu konuuyu bir sonraki yazımda inceleyeceğim.

Eğer 3lü el sıkışma gerçekleşmezse modumuz aşağıdadır;

Genel Taramalarımız;

Tek Bir Hedefi Taramak

Nmap'i hiçbir komut satırı seçeneğiyle çalıştırmadığınızda sadece belirlenmiş hedef taranır. Bir hedef bir IP adresi veya ana makine adı olabilir (Makine adını Nmap çözmeye çalışacaktır). Kullanım şekli : nmap hedef Aşağıdaki örnekte nmap programını üretenlerin bizim için hazırldığı scanme.insecure.org sitesini tarayacağız.

Varsayılan bir Nmap taraması en sık kullanılan 1000 TCP / IP portunu denetler.Bir sorguya yanıt veren bağlantı noktaları altı bağlantı noktasından birine sınıfandırılır: açık(open), kapalı(closed), fltrelenmiş(fltered), fltrelenmemiş(unfltered ), açık | fltrelenmiş, kapalı | fltrelenmiş. Aşağıda bu durumlar ayrıntılı açıklanmıştır.

Açık

Açık bağlantı noktası, gelen bir bağlantı isteklerine aktif şekilde yanıt veren bir bağlantı noktasıdır.

Kapalı

Kapalı bir bağlantı noktası, hedefte aktif olarak bir sorguya yanıt veren, ancak bağlantı noktasında çalışan herhangi bir hizmeti olmayan bir bağlantı noktasıdır. Kapatılan bağlantı noktaları, gelen trafği fltrelemek için herhangi bir güvenlik duvarının bulunmadığı sistemlerde yaygın olarak bulunur.

Filtrelenmiş

Filtrelenmiş portlar, tipik olarak, Nmap'ın portun açık veya kapalı olup olmadığını belirlemesini önleyen bir güvenlik duvarı tarafından korunan portlardır.

Filtrelenmemiş

Filtrelenmemiş bir port, Nmap'ın erişebildiği bir porttur ancak açık veya kapalı olup olmadığını belirleyemez.

Açık | Filtrelenmiş

Açık fltrelenmiş bir port, Nmap tarafından açık veya fltrelendiği düşünülen bir porttur. Portun hangi durumunda olduğunu kesin belirleyememiştir.

Kapalı | Filtrelenmiş

Kapalı fltrelenmiş bir , Nmap tarafından kapalı veya fltrelendiği düşünülen bir porttur. Portun hangi durumunda olduğunu kesin belirleyememiştir.

Birden Çok Hedefi Tarama

Nmap, aynı anda birden fazla bilgisayarı taramak için kullanılabilir. Bunun için komut satırında hedef IP adreslerini veya ana bilgisayar adlarını boşluklarla ayrılmış şekilde birlikte yazmak yeterlidir. Kullanım şekli ;

Hedef Listesini Tarama

Taranacak çok sayıda sisteminiz varsa, IP adresini (veya ana bilgisayar adlarını) bir metin dosyasına girebilir ve bu dosyayı komut satırında Nmap girişi olarak kullanabilirsiniz. Kullanım şekli :

Agresif Tarama Yapma

-A parametresi, Nmap'a agresif bir tarama yapmasını söyler. Agresif tarama, Nmap'te en çok kullanılan seçeneklerin bazılarını seçer ve komut satırı argümanlarının uzun bir dizesini yazmanın basit bir alternatif olarak sunulmaktadır. -A parametresi birkaç gelişmiş seçenek için eşanlamlıdır (örneğin -O-sC --traceroute) gibi komutları ayrı ayrı yazmaktan kurtuluruz bu komutlar ne anlama geliyor derseniz rehberin ileriki bölümlerinde göreceğiz. Kullanım şekli :

Aşağıdaki örnekte insecure sitesine agresif tarama yapılmıştır.

Ping Atma

Varsayılan olarak, Nmap, açık portlar için bir sistemi taramaya çalışmadan önce hedefe çevrimiçi olup olmadığını görmek için ping atar. Bu özellik, yanıt vermeyen hedeferin atlanmalarına neden olması nedeniyle tarama yaparken zamandan kazanmanıza yardımcı olur. Kullanım Şekli :

Sadece Ping Taraması Yap

-sP seçeneği, belirtilen ana bilgisayarda basit bir ping gerçekleştirmek için kullanılır. Kullanım şekli :

UDP Taraması

-PU seçeneği, hedef sistemde bir UDP ping işlemi gerçekleştirir. Kullanım Şekli :

TCP Syn Scan

Kaynak makinanın hedef makinaya TCP SYN bayraklı paket göndererek başlattığı bu tarama türünde, tarama esnasında muhtemelen portların çoğu kapalı olacaktır. Kapalı olduğu durumlarda hedef makina RST + ACK bayraklı paket döndürür. Açık olduğu durumda SYN + ACK bayraklı paket dönecektir. Kaynak makinada RST bayraklı paket göndererek bağlantıyı koparır ve böylelikle üçlü el sıkışma tamamlanmaz. Kullanım şekli:

TCP Connect Scan

Kaynak makinanın gerçekleştireceği TCP Connect Scan, kapalı portlara yapıldığı zaman dönecek cevaplar TCP SYN Scan gibi olacaktır, RST + ACK bayraklı paket dönecektir. Ancak açık olduğu durumlarda TCP SYN Scan tersine, hedef makinanın göndereceği SYN + ACK bayraklı paketi, kaynak makina ACK bayraklı paket göndererek cevaplar ve üçlü el sıkışmayı tamamlar. Kullanım şekli:

Sürüm Tespiti

Sürüm tespiti, 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. Kullanım şekli:

ACK Scan

Kaynak makinanın hedef makinaya TCP ACK bayraklı paket göndereceği bu tarama türünde, hedef makina tarafından ICMP Destination Unreachable mesajı dönerse yada herhangi bir tepki oluşmazsa port “filtered” olarak kabul edilir. Eğer hedef makina RST bayraklı paket döndürürse port “unfiltered” kabul edilir. Kullanım şekli:

Os İzi Belirleme

OS izi belirleme işlemi başlamadan önce, Nmap sırasıyla ping ve scan işlemlerini gerçekleştirir. Nmap tarama esnasında hedef makinanın portlarını open, closed, filtered olarak kategorize eder. Bu işlem OS izi belirlemede çok önemlidir çünkü sorgular esnasında hem kapalı hemde açık portlar ele alınarak bir sonuç belirlenir. Açık ve kapalı portlar belirlendikten sonra, OS izi belirleme işlemine geçilir. Bu işlem OS araştırması, TCP el sıkışma serileri ile devam eder. El sıkışma serileri ile TCP uptime, TCP sequence ve IPID tahminleri gerçekleştirilir. Gönderilen herhangi bayraklı paketlere verilen cevaplar, ttl değerleri ve yukarıda bahsedilen seçenekler sonucunda Nmap OS izi ile ilgili bir tahminde bulunacaktır. Bu seçeneği çalıştırabilmek için aşağıdaki komut kullanılmalıdır. Kullanım şekli:

Nmap Script Motoru

NSE, varolan Nmap yeteneklerini geliştirmek ve Nmap dahilindeki formatlarla çıktı alabilmek için kullanılan bir yapıdır. NSE scriptlerinin içerdiği bazı örnekler aşağıdaki gibidir :

  • Geliştirilmiş Ağ Keşfi : Whois lookup istekleri ve ek protokol sorguları gerçekleştirir. Ayrıca erişilebilir network paylaşımları gibi dinlenilen servislerden bilgi toplamak amacıyla istemci gibi davranır.
  • Geliştirilmiş Versiyon Keşfi : Karmaşık versiyon araştırmaları yapar ve servislere brute force saldırısı düzenler.
  • Zafiyet Keşfi : Özel zafiyetlerin kontrolü amacıyla araştırma yapar.
  • Zararlı Yazılım Keşfi : Virus, worm ve trojan gibi zararlı yazılımların bulunması amacıyla araştırmalar yapar.
  • Zafiyeti Kullanmak : Bulunan zafiyetleri kullanmak amacıyla scriptleri çalıştırır.

Varsayılan olarak, Version Scanning ( -sV ) versiyon kategorisinde bulunan bütün NSE scriptlerini çalıştırır. –A özelliği ise, -sC ( güvenli veizinsiz giriş kategorileri ) seçeneğini çalıştırır. NSE scriptleri Lua script dilinde yazılır ve .nse uzantısına sahiptir ve Nmap ana dizinin altında “scripts” dizininde saklanırlar. Bununla birlikte “script.db” Nmap ana dizinin altında bulunur ve bütün scriptleri kategorileriyle ( Güvenli, Zorla Giriş, Zararlı Yazılım,Arka Kapı, Versiyon, Keşif, Zafiyet ) saklar. NSE, scripti çalıştırmadan önce hedefteki makinanın, Nmap çıktılarına dayanarak, gerekli kriterleri karşılayıp karşılamadığını araştırır. Bu araştırmadan sonra scriptin çalışmasına karar verir. NSE kullanmanın en çabuk yolu aşağıdaki gibidir :

Yukarıdaki seçenek vasıtasıyla NSE bütün Güvenli ve Zorla Giriş scriptlerinin çalıştıracaktır. Eğer daha özel bir scriptin çalıştırılması istenirse - - script seçeneği kullanılarak istenilen bir kategoriye ait scriptler çalıştırılabilir :

Belirli bir dizinin altındaki scriptleri çalıştırmak istenirse aşağıdaki seçenek kullanılmalıdır.

Bütün scriptlerin çalışması istenirse aşağıdaki seçenek kullanılmalıdır .