00 nmap nedir — raw socket ve root yetkisi
nmap (Network Mapper), ağ keşfi ve güvenlik denetimi için kullanılan açık kaynaklı bir araçtır. 1997'den bu yana aktif olarak geliştirilmektedir.
nmap'in gücünün büyük bölümü raw socket kullanımından gelir. Raw socket sayesinde nmap, OS'un TCP/IP yığınını bypass ederek kendi paketlerini oluşturur ve gönderir. Bu, SYN taraması gibi half-open bağlantıları mümkün kılar. Raw socket için root (ya da CAP_NET_RAW) yetkisi gerekir.
nmap → raw socket → kernel NIC → hedef
↑
kendi TCP/IP paketlerini oluşturur
OS'un connect() çağrısını kullanmaz
Kurulum
apt-get install nmap
nmap --version
# Nmap version 7.95 ( https://nmap.org )
nmap yalnızca izniniz olan sistemlerde kullanın. Üçüncü taraf sistemleri izinsiz taramak yasadışı ve etik dışıdır. Lab ortamı, kendi ağınız veya açık izin verilen sistemler dışında kullanmayın.
01 Host keşfi — ping sweep ve ARP scan
Ağda hangi hostlar aktif? Port taramadan önce bu soruyu yanıtla.
# 192.168.1.0/24 ağında aktif hostları bul
sudo nmap -sn 192.168.1.0/24
# ARP ile tarama (yerel ağ, daha hızlı ve güvenilir)
sudo nmap -sn -PR 192.168.1.0/24
# Ping atlayarak sadece portları tara (ICMP engelliyse)
sudo nmap -Pn 192.168.1.100
# Aralık belirtme yöntemleri
sudo nmap -sn 192.168.1.1-50 # 1'den 50'ye
sudo nmap -sn 192.168.1.1,10,20,100 # belirli IP'ler
sudo nmap -sn 10.0.0.0/8 # tüm class A (16M+ host)
# Hostname listesinden oku
sudo nmap -sn -iL targets.txt
# Çıktıyı sadece IP'ler olarak al
sudo nmap -sn 192.168.1.0/24 | grep 'Nmap scan report' | awk '{print $5}'
02 Port tarama türleri
nmap birçok farklı tarama tekniği sunar. Her birinin farklı trade-off'ları var.
-sS: SYN taraması (varsayılan)
# SYN taraması — en yaygın kullanım
# SYN gönderir, SYN-ACK gelirse port OPEN, RST gelirse CLOSED
sudo nmap -sS 192.168.1.100
# Belirli port aralığı
sudo nmap -sS -p 1-1000 192.168.1.100
sudo nmap -sS -p 80,443,8080,8443 192.168.1.100
# En yaygın 1000 port (varsayılan)
sudo nmap 192.168.1.100
# Tüm 65535 port
sudo nmap -p- 192.168.1.100
# En yaygın 100 port (hızlı tarama)
sudo nmap -F 192.168.1.100
-sU: UDP taraması
# UDP taraması — DNS (53), SNMP (161), DHCP (67/68) bulmak için
# UDP'de "kapalı port" ICMP port unreachable döner, açık port yanıt vermez
sudo nmap -sU -p 53,67,68,123,161,500 192.168.1.100
# TCP + UDP birlikte
sudo nmap -sSU -p T:22,80,443,U:53,161 192.168.1.100
-sA: ACK taraması (firewall tespiti)
# ACK taraması port açık/kapalı söylemez
# UNFILTERED = RST geldi (firewall yok)
# FILTERED = yanıt yok (firewall DROP yapıyor)
sudo nmap -sA -p 80,443 192.168.1.100
Port durumları
03 Servis ve versiyon tespiti
Port açık — ama hangi servis ve hangi versiyon çalışıyor?
# Versiyon tespiti
sudo nmap -sV 192.168.1.100
# Default scriptler + versiyon
sudo nmap -sC -sV 192.168.1.100
# Agresif mod (her şey)
sudo nmap -A 192.168.1.100
# Örnek çıktı:
# PORT STATE SERVICE VERSION
# 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.6
# 80/tcp open http nginx 1.24.0
# 443/tcp open ssl/http nginx 1.24.0
04 OS tespiti — TCP fingerprint
Her OS'un TCP/IP yığını biraz farklı davranır. Bu farklılıkları ölçerek OS tahmin edilir.
nmap, OS tespiti için şu değerleri analiz eder: TCP ISN (Initial Sequence Number) üretimi, TCP options sıralaması (window scale, SACK, timestamps), IP TTL başlangıç değerleri, ICMP yanıt özellikleri ve TCP window boyutları.
# OS tespiti (root gerekir)
sudo nmap -O 192.168.1.100
# OS + versiyon + scriptler
sudo nmap -O -sV 192.168.1.100
# Agresif OS tahmini (emin değilse de tahmin et)
sudo nmap -O --osscan-guess 192.168.1.100
# TTL değerini elle okuma (hızlı kaba tahmin)
ping -c 1 192.168.1.100 | grep ttl
# TTL~64 → Linux/Unix TTL~128 → Windows TTL~255 → Cisco/embedded
OS tespiti %100 kesin değildir. nmap olasılık yüzdesi verir: OS details: Linux 4.15 - 5.8 (96%). Özellikle embedded sistemlerde özelleştirilmiş kernel veya network stack olduğunda tespit yanılabilir. Sonuçları doğrulamak için servis versiyonlarını da kullan.
05 Nmap Script Engine (NSE)
NSE, nmap'e Lua tabanlı scripting altyapısı ekler. 600'den fazla hazır script gelir.
--script-args user=admin,pass=secret# Default scriptler
sudo nmap -sC 192.168.1.100
# HTTP başlık bilgisi
sudo nmap -p 80 --script http-headers 192.168.1.100
# HTTP başlıktan title al
sudo nmap -p 80,443 --script http-title 192.168.1.0/24
# SSH hostkey bilgisi
sudo nmap -p 22 --script ssh-hostkey 192.168.1.100
# SSL sertifika bilgisi
sudo nmap -p 443 --script ssl-cert 192.168.1.100
# SNMP bilgisi al (embedded cihazlarda sık görülür)
sudo nmap -sU -p 161 --script snmp-info 192.168.1.100
# Vuln kategorisi — bilinen güvenlik açıklarını tara
# (Dikkat: intrusive olabilir, test ortamında kullan)
sudo nmap -p 80,443 --script vuln 192.168.1.100
# Script listesini gör
ls /usr/share/nmap/scripts/ | grep '^http'
nmap --script-help http-headers
06 Çıktı formatları
nmap sonuçlarını raporlamak, arşivlemek ve sonradan analiz etmek için çıktı formatını seç.
# Tüm formatları kaydet
sudo nmap -sV -oA scan_2026_01 192.168.1.0/24
# XML'den açık portları çek
grep 'state="open"' scan_2026_01.xml | grep -oP 'portid="\K[0-9]+'
# Grepable format ile IP:port çiftlerini çıkar
grep '/open/' scan_2026_01.gnmap | awk '{print $2}'
# Verbose ile gerçek zamanlı izle
sudo nmap -sS -v 192.168.1.0/24
# Neden bu durum? --reason
sudo nmap -sS --reason 192.168.1.100
# PORT STATE SERVICE REASON
# 22/tcp open ssh syn-ack ttl 64
# 80/tcp closed http rst ttl 64
07 Pratik: embedded ağ audit
Fabrika çıkışı IoT cihazları genellikle gereksiz portlar açık bırakır. Üretime almadan önce ağ audit yap.
Adım 1: Yerel ağdaki tüm cihazları keşfet
# ARP ile hızlı host keşfi
sudo nmap -sn -PR 192.168.10.0/24
# Sonuçlar:
# Nmap scan report for 192.168.10.10 (IoT_Gateway)
# MAC Address: AA:BB:CC:DD:EE:FF (Espressif Systems)
Adım 2: Her cihazın açık portlarını tara
# SYN taraması + versiyon tespiti
sudo nmap -sS -sV -p- 192.168.10.10 -oA iot_audit
# UDP'de açık portlar (SNMP, mDNS, TFTP genellikle UDP)
sudo nmap -sU --top-ports 100 192.168.10.10
Adım 3: Tehlikeli servisleri kontrol et
# Telnet (23) — şifresiz, kapalı olmalı
sudo nmap -p 23 --script telnet-ntlm-info 192.168.10.10
# FTP (21) — anonim erişim var mı?
sudo nmap -p 21 --script ftp-anon 192.168.10.10
# HTTP default credentials
sudo nmap -p 80,8080 --script http-default-accounts 192.168.10.10
# SNMP community string (public/private)
sudo nmap -sU -p 161 --script snmp-brute 192.168.10.10
Adım 4: Audit raporu oluştur
# Tüm ağı tara ve raporla
sudo nmap -sS -sV -O --script default \
-oA /tmp/network_audit_$(date +%Y%m%d) \
192.168.10.0/24
# Açık portları özet olarak listele
grep '/open/' /tmp/network_audit_*.gnmap | \
awk '{print $2, $3}' | sort
UDP taraması ve agresif scriptler (-A, --script vuln) üretim cihazlarını etkisiz hale getirebilir. Önce bir test cihazında dene. Üretim ortamında -T2 (polite timing) veya -T1 (sneaky) ile daha yavaş ve dikkatli tara.