İsmini Network Mapper’in kısaltmasından alan Nmap, ağ tarama ve zafiyet tespiti için kullanılan açık kaynaklı bir araçtır.

Sızma testi, en basit ifadeyle, beyaz şapkalı hackerlar ve/veya sızma testi uzmanları tarafından belli bir metodoloji içinde yapılan hacking faaliyetidir. Sızma testi yapılmadan önce hedef sistem sahibi tarafından, Scope of Work, Rules of Engagement, Non Disclosure Agreement gibi çeşitli belgeler imzalanmalıdır. Sızma testi, müşterinin talebi doğrultusunda blackbox, graybox ya da whitebox olabilir. Bu aşamadan sonra türü ne olursa olsun, bir sızma testinin en önemli aşaması “Bilgi Toplama” aşamasıdır. İşte burada Nmap devreye giriyor.

Bilgi güçtür

Sızma testinin yapılacağı sistem hakkında mümkün olduğunca bilgi toplamak gereklidir. Hedef sistem hakkında ne kadar çok bilgi toplanabilirse, o kadar çok enumaration yapılabilir. Bu da daha fazla explotation olasılığı anlamına gelmektedir.

Bilgi toplama aşaması sırasında kullanılan en önemli araçlardan biri olan Nmap sayesinde hedef IP aralığını tarayıp, açık/kapalı port bilgileri ile birlikte sistem üzerinde koşan işletim sistemi ve servisler hakkında ayrıntılı bilgi elde etmek mümkündür. Nmap sayesinde ayrıca ağ haritalaması da yapılabilir.

Standart portlar

Ağa bağlı her cihazda toplam 65535 port bulunmaktadır. Bunlardan bir kısmı standart portlar olarak tanımlanmıştır. Örneğin HTTP protokolü için standart port, 80’dir. HTTPS için ise 443. Windows NETBIOS için ayrılmış port 139’dur. SMB için ayrılmış port ise 445’dir. Bu şekilde belirli protokol ve servisler için ayrılmış çeşitli portlar bulunmaktadır. Bu portlar sistem yöneticileri tarafından değiştirilebilir, ancak genel olarak sabit portlar kullanılmaktadır.

Nmap ile tarama yapıldığında, hangi port’un açık olduğu tespit edilirse, sistem üzerinde bu portun standart olarak koştuğu uygulama, servis ya da protokollerin de var olduğu ortaya çıkmaktadır. Nmap ile farklı şekillerde port taraması yapılabilir. Nmap’in çalışma prensibi aslında epey basittir. Tarama işlemi sırasında Nmap her porta bağlanır ve portlardan gelen yanıtlara göre de open, closed, filtered gibi sonuç döndürür. Hangi portların açık olduğu öğrenildikten sonra da enumaration işlemi ile hedef sistemde koşan servisler ve sürümleri hakkında ayrıntılı bilgi elde edilmektedir.

Bir endüstri standardı: Nmap

Yukarıda saydığımız işlemlerin elle yapılması elbette mümkün. Geniş bir ağın taranması gerektiği durumlarda süreç uzayacak, bu da efor/maliyet açısından olumsuz bir geri dönüş anlamına gelecektir. Bu sebeple tüm bu işlemlerin otomatize edildiği araçların kullanılması, hem hız hem de hata payının minimize edilmesi açısından önem taşımaktadır.

Peki, bunca araç varken neden Nmap? Cevap çok basit… Nmap artık endüstri tüm siber güvenlik endüstrisi tarafından benimsenmiş bir standart diyebiliriz. Diğer taraftan Nmap, diğer alternatiflere göre çok daha hızlı ve etkin sonuçlar ortaya çıkarabiliyor. Nmap’in işlevselliği sadece bilgi toplama değil, aynı zamanda betik desteği sayesinde, zafiyet tespiti gibi pek çok farklı amaç için kullanılabilir kılmaktadır.

Birçok sızma testi aracında olduğu gibi Nmap de terminal üzerinden çalıştırılabilmektedir. Nmap’i aşağıdaki komutu girerek sisteminize kurabilirsiniz.:

sudo apt install nmap

Nmap’in çalıştırılması için de nmap komutunu girip, yanına çeşitli parametreler eklemeniz gerekmektedir. Nmap ile kullanabileceğiniz parametrelerin listesine help menüsü ile erişebilirsiniz:

nmap -h

Nmap ile port taraması yaparken kullanılabilecek üç temel tarama tipi bulunmaktadır. Bunlar:

  • TCP Connect Taramaları (-sT)
  • SYN “Half-open” Taramaları (-sS)
  • UDP Taramaları (-sU)

Bunlardan başka, gerektiği hallerde kullanılabilecek, görece daha az ihtiyaç duyulan tarama tipleri de bulunmaktadır:

  • TCP Null Taramaları (-sN)
  • TCP FIN Taramaları (-sF)
  • TCP Xmas Taramaları (-sX)

Nmap ile nasıl tarama yapılacağına değinmeden önce, TCP ve UDP bağlantı yapılarını inceleyelim:

TCP Connect Taramaları

TCP Connect taraması (-sT) yapabilmek için “üçlü ek sıkışması” konusunu bilmek gerekmektedir. Adından da anlaşılacağı üzere, üçlü el sıkışması üç aşamadan oluşmaktadır. İlk aşamada istemci, hedefe SYN paketi gönderir. Daha sonra sunucudan SYN/ACK paketi yanıtı döner. Üçüncü ve son aşamadaysa istemci el sıkışmayı ACK paketi göndererek sonlandırır.

Nmap bir SYN bayraklı bir TCP paketi gönderdiğinde eğer hedef RST (Reset) paketi gönderirse, Nmap bu port’un kapalı olduğunu anlayacaktır. Eğer hedeften SYN/ACK bayraklı bir TCP paketi dönerse, Nmap bu kez portun açık olduğunu algılayacaktır. Eğer hedef sistemde bir güvenlik duvarı varsa da bu kez paketler “drop” olacağından, Nmap bunları “filtered” şeklinde gösterecektir.

SYN taramaları

SYN taramaları (-sS) aynı zamanda “Half-open” ya da “Stealth” scan olarak da tanımlanmaktadır. Daha önce belirttiğimiz gibi TCP taramaları tam bir üçlü el sıkışma protokolü uygular. SYN taramalarında ise prosedür RST paketi ile sonlanır. Daha basit ifade etmek gerekirse, SYN taramalarında ilk aşamada istemci SYN Paketi gönderir. Hedef SYN/ACK paketi döndürür. Son olarak istemci RST paketi göndererek bağlantıyı sonlandırır.

Sızma testi sırasında SYN taraması kullanmanın çeşitli avantajları bulunmaktadır. Stealth tarama olarak da kullanılabilen bu tarama yöntemi, IDS ve IPS sistemlerini bypass etmek için kullanılır. Tam bir üçlü el sıkışma protokolü uygulanmadığından, TCP Connect taramalarına göre daha hızlı sonuç döndürür.

SYN taraması yapabilmek için sistem üzerinde yönetici haklarına sahip olmak gerekir. Bu sebeple Linux işletim sisteminde sudo komutu ile birlikte kullanılmalıdır. Aksi takdirde Nmap uygun şekilde çalışmaz. SYN taraması ayrıca, hedef sistemdeki güvenlik uygulamalarını bypass edebildiği için, kararlı olmayan yapılarda bazen sistemin çalışamaz hale gelmesine de sebep olabilmektedir.

SYN taramaları sırasında da Nmap, tıpkı TCP Connect taramasındaki gibi bir davranış sergiler. Port taraması sırasında hedeften RST yanıtı alınması halinde, Nmap bu port’un kapalı olduğunu algılamaktadır. Aynı şekilde TCP SYN paketi düşerse arkasında güvenlik duvarı olduğu anlaşılmaktadır.

UDP taramaları

TCP bağlantılarının aksine UDP bağlantıları stateless bağlantılardır. UDP bağlantılarında herhangi bir el sıkışma prosdedürü olmaksızın, paketler doğrudan hedef port’a gönderilir. Hızın önem teşkil ettiği durumlarda UDP bağlantıları tercih edilmektedir. Örneğin video yayınlar için TCP yerine UDP bağlantıları tercih edilmektedir. UDP taramaları, doğru bağlantı adımlarının uygulanmaması sebebiyle sızma testlerinde çok fazla tercih edilmemektedir. Yine de test sırasında UDP taraması yapılması gerektiğinde Nmap ile (-sU) yapmak ve dönen sonuçları analiz etmek mümkündür.

UDP taramalarında, hedeften herhangi bir yanıt dönmüyorsa, UDP portunun açık olduğu varsayılmaktadır. Bu durumda portun yine de bir güvenlik duvarı ile korunduğu olasılığı da göz ardı edilmemelidir. Eğer hedeften bir ICMP yanıtı geliyorsa, Nmap bu port’un kapalı olduğu kanaatine varmaktadır.

Nmap Cheat Sheet

Hedef Belirleme

TanımParametreÖrnek
Tek bir IP adresi tarama
nmap 192.168.1.1
Çoklu IP adresi tarama
nmap 192.168.1.1 192.168.2.1
Belli IP aralığını tarama
nmap 192.168.1.1-254
CIDR notasyonu ile tarama
nmap 192.168.1.0/24
Domain tarama
nmap scanme.nmap.org
Dosyadaki hedefleri tarama-iLnmap -iL targets.txt
Rastgele 100 host tarama-iRnmap -iR 100
Belli IP’leri tarama dışı tutma--excludenmap --exclude 192.168.1.1

Tarama Teknikleri

TanımParametreÖrnek
TCP SYN port taraması (varsayılan)-sSnmap 192.168.1.1 -sS
TCP bağlantı port taraması-sTnmap 192.168.1.1 -sT
UDP port taraması-sUnmap 192.168.1.1 -sU
TCP ACK port taraması-sAnmap 192.168.1.1 -sA
TCP Window port taraması-sWnmap 192.168.1.1 -sW
TCP Maimon port taraması-sMnmap 192.168.1.1 -sM

Hedef Keşfi

TanımParametreÖrnek
Tarama yapmadan hedefi listeler-sLnmap 192.168.1.1-3 -sL
Port taramasını etkisizleştirir. Sadece hedef keşfi yapar.-snnmap 192.168.1.1/24 -sn
Host keşfini etkisizleştirir. Sadece port taraması yapar.-Pnnmap 192.168.1.1-5 -Pn
Port X üzerinde TCP SYN keşfi yapar. Varsayılan port 80’dir.-PSnmap 192.168.1.1-5 -PS22-25,80
Port X üzerinde TCP ACK keşfi yapar. Varsayılan port 80’dir.-PAnmap 192.168.1.1-5 -PA22-25,80
Port X üzerinde UDP taraması yapar. Varsayılan port 40125’dir.-PUnmap 192.168.1.1-5 -PU53
Yerel ağ üzerinde ARP keşfi yapar.-PRnmap 192.168.1.1-1/24 -PR
DNS tanımlaması yapılmaz.-nnmap 192.168.1.1 -n

Port Belirleme

TanımParametreÖrnek
Port X için port taraması yapar.-pnmap 192.168.1.1 -p 21
Port aralığı verir.-pnmap 192.168.1.1 -p 21-100
TCP ve UDP portlarını tarar.-pnmap 192.168.1.1 -p U:53,T:21-25,80
Tüm portları tarar.-pnmap 192.168.1.1 -p-
Hizmet ismine göre port tarar.-pnmap 192.168.1.1 -p http,https
Hızlı port taraması (100 port)-Fnmap 192.168.1.1 -F
En önemli X portu tarar.--top-portsnmap 192.168.1.1 --top-ports 2000
Port 1’den port 65535’e kadar tarar.-p-65536nmap 192.168.1.1 -p-65535

Nmap ile İşletim Sistemi Tespiti

TanımParametreÖrnek
Hedef sistemde koşan hizmetlerin sürümlerini tespit etmeye çalışır.-Onmap 192.168.1.1 -O
En az bir adet açık ya da kapalı TCP port bulunmazsa OS tespiti denemesi yapılmaz.-O --osscan-limitnmap 192.168.1.1 -O --osscan-limit
Nmap daha agresif tahmin işlemi gerçekleştirir.-O --osscan-guessnmap 192.168.1.1 -O --osscan-guess
Hedef sistemde X kez OS tespit denemesi gerçekleşir.-O --max-os-triesnmap 192.168.1.1 -O --max-os-tries 1
OS tespiti, versiyon tespiti vs script taraması yapılır.-Anmap 192.168.1.1 -A

Nmap ile Hizmet ve Sürüm Tespiti

TanımParametreÖrnek
Hedef sistemde koşan hizmetlerin sürümlerini tespit etmeye çalışır.-sVnmap 192.168.1.1 -sV
Yoğunluk seviyesini belirler. 0-9 arası bir değer verilir.-sV --version-intensitynmap 192.168.1.1 -sV --version-intensity 8
Light mode aktif hale gelir.-sV --version-lightnmap 192.168.1.1 -sV --version-light
Yoğunluk seviyesi 9’a çıkarılır.-sV --version-allnmap 192.168.1.1 -sV --version-all
OS tespiti, versiyon tespiti vs script taraması yapılır.-Anmap 192.168.1.1 -A

Zaman ve Performans Ayarları

TanımParametreÖrnek
Paranoid IDS bypass-T0nmap 192.168.1.1 -T0
IDS bypass-T1nmap 192.168.1.1 -T1
Temkinli tarama-T2nmap 192.168.1.1 -T2
Normal tarama (varsayılan hız)-T3nmap 192.168.1.1 -T3
Agresif tarama-T4nmap 192.168.1.1 -T4
Aşırı agresif tarama-T5nmap 192.168.1.1 -T5

Dosya Çıktı Ayarları

TanımParametreÖrnek
Normal dosya çıktısı-oNnmap 192.168.1.1 -oN normal.file
XML dosya çıktısı-oXnmap 192.168.1.1 -oX xml.file
Grep dosya çıktısı-oGnmap 192.168.1.1 -oG grep.file
Her üç dosya biçiminde çıktı-oAnmap 192.168.1.1 -oA results