Nmap ile Ağ Keşfi ve Zafiyet Taraması

Yıllar önce bir müşterinin ağında “biz güvenliyiz, firewall var” dedikleri ortamda nmap çalıştırdığımda ekrana dökülen listeye bakıp bir süre sessiz kaldım. 47 açık port, 3 eski Samba servisi, birinin hala telnet aktif. Firewall vardı evet, ama içeriye bakınca bambaşka bir tablo. İşte o günden beri nmap benim için sadece bir araç değil, bir gerçeklik testi.

Nmap Nedir ve Neden Bu Kadar Kritik?

Nmap (Network Mapper), Gordon Lyon tarafından geliştirilen ve 1997’den bu yana aktif olarak kullanılan açık kaynaklı bir ağ keşif ve güvenlik denetim aracıdır. Ama bu tanım biraz soğuk kalıyor. Daha doğrusu şunu söyleyeyim: eğer ağınızda nmap ile tarama yapmıyorsanız, saldırganlar sizin yerinize yapıyor olabilir.

Sistem yöneticileri genellikle nmap’i sızma testçilerinin aracı olarak görür. Oysa bu araç, günlük operasyonların vazgeçilmezi olmalı. Hangi servisler çalışıyor, hangi portlar açık, hangi makineler ağda, hangi işletim sistemleri kullanılıyor? Bu soruların cevabını bilmeden bir ağı yönettiğinizi söylemek zor.

Kurulum ve Temel Hazırlık

Nmap hemen hemen tüm Linux dağıtımlarında paket depolarından kurulabilir:

# Debian/Ubuntu
sudo apt update && sudo apt install nmap -y

# RHEL/CentOS/Rocky Linux
sudo dnf install nmap -y

# Arch Linux
sudo pacman -S nmap

# Versiyon kontrolü
nmap --version

Windows tarafında ise [nmap.org](https://nmap.org) adresinden indirilen installer ile birlikte Zenmap GUI’si de gelir. Ama terminale alışkınsanız Windows’ta da PowerShell üzerinden nmap’i doğrudan kullanabilirsiniz.

Bir not: Nmap taramalarını sadece izniniz olan sistemlerde çalıştırın. Başkasının altyapısını izinsiz taramak pek çok ülkede yasadışı, Türkiye’de de Bilişim Suçları kapsamında değerlendirilebilir. Kendi lab ortamınız, kendi üretim ağınız veya yazılı penetrasyon testi sözleşmeniz olan müşteri ağları, bunlar dışında asla.

Temel Tarama Türleri

Ping Taraması ile Ağda Kim Var?

Bir ağa bağlandığınızda önce hangi hostların ayakta olduğunu öğrenmek istersiniz. Buna host discovery denir:

# Sadece ping taraması, port taraması yok
nmap -sn 192.168.1.0/24

# Belirli bir IP aralığı
nmap -sn 10.0.0.1-50

# Birden fazla subnet
nmap -sn 192.168.1.0/24 192.168.2.0/24

-sn parametresi eski dokümanlarda -sP olarak geçer, ikisi de aynı işi yapar. Bu tarama ICMP echo request, TCP SYN/ACK ve ARP paketleri kullanır. Sonuç olarak ağdaki aktif makinelerin listesini alırsınız. Firewall arkasındaki bazı makineler ping’e cevap vermeyebilir, bunu aklınızda tutun.

SYN Taraması: Sessiz Ama Etkili

# En yaygın tarama türü, root yetkisi gerektirir
sudo nmap -sS 192.168.1.100

# Tüm 65535 portu tara
sudo nmap -sS -p- 192.168.1.100

# Belirli port aralığı
sudo nmap -sS -p 1-1024 192.168.1.100

# Yaygın portlar (top 1000)
sudo nmap -sS --top-ports 1000 192.168.1.100

SYN taraması (-sS) yarı açık tarama olarak da bilinir. TCP el sıkışmasını tamamlamaz, bu yüzden bazı eski sistemlerde log bırakmaz. Modern sistemlerde ve IDS çözümlerinde artık bu trafik de yakalanıyor ama yine de en temel ve güvenilir tarama türü olma özelliğini koruyor.

Servis ve Versiyon Tespiti

Bir port açık, tamam. Peki o portta ne çalışıyor, hangi versiyon? İşte burada işler ilginçleşiyor:

# Servis ve versiyon tespiti
sudo nmap -sV 192.168.1.100

# Agresif mod: OS tespiti, versiyon, script taraması hepsi bir arada
sudo nmap -A 192.168.1.100

# Daha yavaş ama daha doğru versiyon tespiti
sudo nmap -sV --version-intensity 9 192.168.1.100

-sV ile nmap açık portlara bağlanıp servis banner’larını okur, çeşitli problar gönderir ve çalışan servisi tespit etmeye çalışır. Örneğin 22 numaralı portta sadece “SSH açık” değil, “OpenSSH 7.4p1” bilgisine ulaşabilirsiniz. Bu versiyon bilgisi CVE araştırması için kritik.

İşletim Sistemi Tespiti

# OS fingerprinting
sudo nmap -O 192.168.1.100

# Daha agresif tahmin
sudo nmap -O --osscan-guess 192.168.1.100

# OS + servis versiyonu
sudo nmap -O -sV 192.168.1.100

OS tespiti TTL değerleri, TCP window size, IP ID sequence ve diğer ağ davranışlarına bakarak çalışır. Yüzde yüz doğru değil ama çoğu durumda oldukça isabetli sonuçlar veriyor.

Nmap Scripting Engine (NSE): Gerçek Güç Burada

NSE, nmap’i sıradan bir port tarayıcının çok ötesine taşıyan özellik. Lua ile yazılmış yüzlerce script ile zafiyet taraması, brute force, servis enumeration ve daha fazlasını yapabilirsiniz.

Scriptler kategorilere ayrılmıştır:

  • auth: Kimlik doğrulama testleri
  • broadcast: Broadcast keşif scriptleri
  • brute: Brute force saldırıları
  • default: Güvenli ve hızlı varsayılan scriptler
  • discovery: Servis ve ağ keşfi
  • exploit: Zafiyetleri istismar etmeye çalışır
  • fuzzer: Fuzzing testleri
  • intrusive: Sistemi olumsuz etkileyebilecek agresif scriptler
  • malware: Zararlı yazılım tespit scriptleri
  • safe: Sistemi etkilemeyecek güvenli scriptler
  • version: Versiyon tespiti
  • vuln: Bilinen zafiyetleri kontrol eder

Pratik NSE Kullanımı

# Varsayılan scriptlerle tarama
sudo nmap -sC 192.168.1.100

# Belirli bir script çalıştır
sudo nmap --script=http-title 192.168.1.100

# Tüm vuln scriptlerini çalıştır
sudo nmap --script=vuln 192.168.1.100

# SMB zafiyet taraması (EternalBlue, MS17-010 gibi)
sudo nmap --script=smb-vuln* -p 445 192.168.1.100

# HTTP enumeration
sudo nmap --script=http-enum -p 80,443,8080 192.168.1.100

# SSL/TLS zafiyet kontrolü
sudo nmap --script=ssl-heartbleed,ssl-poodle,ssl-dh-params -p 443 192.168.1.100

Şunu özellikle vurgulamak istiyorum: --script=vuln ve --script=exploit kategorileri hedef sistemi olumsuz etkileyebilir. Üretim ortamında bu scriptleri çalıştırmadan önce iki kez düşünün.

Gerçek Dünya Senaryoları

Senaryo 1: Yeni Bir Ağa Katıldınız, Envanter Çıkarın

Bir şirkete yeni sistem yöneticisi olarak başladınız ve size “ağı anlat” dediler. Elinizde dokümantasyon yok veya güncel değil. İlk iş:

# Ağdaki tüm aktif hostları bul ve dosyaya kaydet
sudo nmap -sn 10.10.0.0/16 -oG hosts_alive.txt

# Aktif hostlarda hızlı tarama yap
sudo nmap -sS -sV -O --top-ports 100 
  -iL hosts_alive.txt 
  -oA network_inventory

# Sonuçları grep ile filtrele, örneğin sadece web serverlara bak
grep "80/open|443/open|8080/open|8443/open" network_inventory.gnmap

-oA parametresi çıktıyı üç formatta kaydeder: normal (.nmap), grepable (.gnmap) ve XML (.xml). XML formatı daha sonra başka araçlarla işlenmek için idealdir.

Senaryo 2: Patch Yönetimi Öncesi Zafiyet Tespiti

Aylık patch döngünüz var ve hangi sistemlerin hangi bilinen zafiyetlere sahip olduğunu öğrenmek istiyorsunuz:

# Kritik servisleri tara, vuln scriptlerini çalıştır
sudo nmap -sV --script=vuln 
  -p 21,22,23,25,80,443,445,3306,3389,5900,8080 
  192.168.1.0/24 
  -oX vuln_scan_$(date +%Y%m%d).xml

# SMB spesifik - özellikle Windows ortamları için
sudo nmap --script=smb-security-mode,smb-vuln-ms17-010,smb-vuln-ms08-067 
  -p 445 
  192.168.1.0/24

# RDP kontrolü
sudo nmap --script=rdp-vuln-ms12-020 -p 3389 192.168.1.0/24

Senaryo 3: Web Sunucusu Güvenlik Kontrolü

Bir web uygulaması deploy etmeden önce veya rutin kontrol olarak:

# Web sunucusu detaylı tarama
sudo nmap -sV -sC 
  --script=http-headers,http-methods,http-auth-finder,http-title,http-server-header 
  -p 80,443,8080,8443 
  web.sirketiniz.com

# Dizin taraması
sudo nmap --script=http-enum 
  -p 80,443 
  web.sirketiniz.com

# SSL/TLS güvenlik kontrolü
sudo nmap --script=ssl-enum-ciphers,ssl-cert,ssl-heartbleed 
  -p 443 
  web.sirketiniz.com

Senaryo 4: Firewall Kural Testi

Yeni firewall kuralları yazdınız ve test etmek istiyorsunuz. Dışarıdan nasıl görünüyorsunuz?

# ACK taraması ile firewall filtrelerini anla
sudo nmap -sA 192.168.1.100

# Firewall bypass denemeleri (test amaçlı)
# Fragmented paketler
sudo nmap -f -sS 192.168.1.100

# Farklı kaynak port kullan
sudo nmap --source-port 53 -sS 192.168.1.100

# Decoy ile gerçek IP'yi gizle
sudo nmap -D RND:10 192.168.1.100

Tarama Hızı ve Zamanlama

Nmap’in zamanlama şablonları (-T0 ile -T5 arası) taramanın hızını ve agresifliğini belirler:

  • -T0 (Paranoid): IDS’den kaçmak için çok yavaş, paketler arası dakikalarca bekler
  • -T1 (Sneaky): Yavaş, IDS atlatmaya yönelik
  • -T2 (Polite): Ağ yükünü azaltmak için yavaşlatılmış
  • -T3 (Normal): Varsayılan, makul hız
  • -T4 (Aggressive): Hızlı, stabil ağlarda önerilir
  • -T5 (Insane): Çok hızlı, paket kaybı olabilir, sonuçlar güvenilmez olabilir
# Üretim ağında sakin tarama
sudo nmap -T2 -sS 192.168.1.0/24

# Kendi lab ortamında hızlı tarama
sudo nmap -T4 -A 192.168.1.0/24

# Gece yarısı zamanlanmış tarama için cron ile
# 0 2 * * 0 /usr/bin/nmap -T3 -sV -oA /var/log/nmap/weekly_scan 10.0.0.0/8

Üretim ağlarında -T4 ve üzerini kullanmak bazı servisleri etkileyebilir. Özellikle eski donanımlar, yazıcılar ve embedded sistemler yoğun taramadan kötü etkilenebilir. Bunu ya gece saatlerinde yapın ya da -T2 veya -T3 kullanın.

Çıktı Formatları ve Raporlama

Nmap’in çıktı seçenekleri, sonuçları başka araçlarla entegre etmek veya raporlamak için önemli:

# Normal çıktı dosyaya
nmap -oN tarama_sonucu.txt 192.168.1.0/24

# XML formatı (Metasploit, Nessus gibi araçlarla import edilebilir)
nmap -oX tarama_sonucu.xml 192.168.1.0/24

# Grepable format (script işleme için ideal)
nmap -oG tarama_sonucu.gnmap 192.168.1.0/24

# Tüm formatlar aynı anda
nmap -oA tarama_20240115 192.168.1.0/24

# XML'i HTML'e çevir (ndiff ile değil, xsltproc ile)
xsltproc /usr/share/nmap/nmap.xsl tarama_sonucu.xml -o tarama_sonucu.html

XML çıktısını Metasploit’e import etmek, tarama bulgularını doğrudan exploit aşamasına taşımak için çok kullanışlı. Ancak bunu üretim ortamında yapmadan önce risk değerlendirmesi yapmanızı tavsiye ederim.

Ndiff ile Değişiklik Takibi

Ndiff, iki nmap tarama sonucunu karşılaştırmanızı sağlar. Geçen haftaki taramayla bu haftakini kıyaslayıp ne değişmiş görmek için biçilmiş kaftan:

# İki taramayı karşılaştır
ndiff tarama_gecenhafta.xml tarama_buhafta.xml

# Sadece değişiklik olan hostları göster
ndiff --verbose tarama_eski.xml tarama_yeni.xml

# Fark yoksa sessiz kal, varsa alarm ver (cron için ideal)
ndiff tarama_eski.xml tarama_yeni.xml && echo "Fark yok" || echo "DEGISIKLIK VAR - Kontrol Et"

Bunu haftalık cron job olarak çalıştırıp sonucu e-posta ile göndermek, beklenmedik port açılmalarını veya yeni servisleri erken tespit etmenizi sağlar. Küçük ama değerli bir güvenlik katmanı.

Performans İpuçları ve Sık Yapılan Hatalar

Yıllar içinde gördüğüm yaygın hatalar:

  • Tüm portları gereksiz yere taramak: Envanter için top 1000 port çoğu zaman yeterli. Tam tarama gerekiyorsa bunu gece saatlerinde yapın.
  • Root olmadan SYN taraması yapmaya çalışmak: Root yetkisi olmadan nmap TCP connect taramasına (-sT) düşer, bu hem daha yavaş hem log bırakır.
  • Sonuçları kaydetmemek: Her taramayı -oA ile kaydedin, karşılaştırma yapmak için altın değerinde.
  • Büyük ağları tek seferde taramak: /16 veya /8 gibi büyük aralıkları parça parça tarayın.
  • False negative’lere güvenmek: Nmap “kapalı” dedi diye servis yoktur demeyin. Firewall drop ediyorsa da kapalı gibi görünebilir.
# Büyük ağ için önce host discovery, sonra sadece aktif hostları tara
sudo nmap -sn 10.0.0.0/8 -oG - | grep "Up" | awk '{print $2}' > aktif_hostlar.txt
wc -l aktif_hostlar.txt  # kaç host var?
sudo nmap -sV -sC --top-ports 200 -iL aktif_hostlar.txt -oA buyuk_ag_tarama

Nmap ile Entegre Kullanım

Nmap tek başına da güçlü ama diğer araçlarla birlikte kullanıldığında daha da etkili:

  • Metasploit: db_nmap komutu ile doğrudan Metasploit veritabanına tarama sonuçlarını aktarabilirsiniz
  • OpenVAS/Greenbone: Nmap ile keşfedilen hostları OpenVAS’a import edip daha derin zafiyet taraması yapabilirsiniz
  • Ansible: Nmap çıktısından dinamik inventory oluşturmak mümkün
  • ELK Stack: XML çıktılarını Logstash ile parse edip Elasticsearch’e göndererek trend analizi yapabilirsiniz

Sonuç

Nmap öğrenmesi birkaç saat, ustalaşması ise yıllar alan bir araç. Ama şunu söyleyebilirim: temel kullanımı bile öğrenmek, ağınız hakkındaki farkındalığınızı dramatik biçimde artırır. “Biz güvenliyiz” demek için önce ağınızda ne olduğunu bilmeniz gerekiyor.

Düzenli tarama yapmayı bir alışkanlık haline getirin. Haftalık otomatik taramalar, değişiklik takibi, patch öncesi ve sonrası karşılaştırma: bunlar güvenlik hijyeninin temel parçaları. Saldırganlar ağınızı muhtemelen sizden daha iyi biliyor. Bu denklemi değiştirmek sizin elinizde.

Son olarak şunu ekleyeyim: Nmap bir başlangıç noktası. Bulguları değerlendirmek, önceliklendirmek ve aksiyon almak asıl işin kendisi. Araç ne kadar iyi olursa olsun, arkasında düşünen ve hareket eden bir insan olmadan sadece renkli bir ekran çıktısından ibaret kalır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir