Arkadaşlar selam,
nmap'i herkes port taramak için kullanıyor ama asıl gücü NSE (Nmap Scripting Engine) tarafında. Bu yazıda lab ortamında en sık kullandığım birkaç scripti, nasıl seçildiğini ve çıktıyı nasıl okuduğumu anlatacağım. Hedef: kendi Metasploitable2 / DVWA labım. Başkasının sisteminde izinsiz script çalıştırmayın; bazı scriptler agresif trafik üretir.
NSE'ye hızlı bakış
Scriptler kategorilere ayrılır: auth, broadcast, brute, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, vuln. safe ve default günlük keşif için; intrusive / brute / exploit yalnızca yazılı izinli pentest kapsamında.
Kurulu scriptleri görmek:
ls /usr/share/nmap/scripts | head
nmap --script-help http-enumhttp-enum: web dizin ve dosya keşfi
nmap -p 80,443 --script http-enum 10.10.10.50Dikkat: http-enum varsayılan olarak bazı yolları dener; WAF veya rate-limit varsa gürültü çıkar. Pentest raporunda "discovery" bulgusu olarak not düşmek için yeterlidir; derin fuzzing için ffuf'a geçin.
Daha kontrollü kullanım:
nmap -p 80 --script http-enum --script-args http-enum.displayall 10.10.10.50smb-os-discovery: SMB üzerinden OS ve alan bilgisi
Windows / Samba hedeflerinde:
nmap -p 445 --script smb-os-discovery 10.10.10.20SMB imza zorunluluğunu da kontrol etmek isterseniz:
nmap -p 445 --script smb2-security-mode 10.10.10.20Birkaç scripti birlikte çalıştırmak
nmap -sV -p 80,443,445 --script "default and safe" 10.10.10.0/28vuln kategorisi: dikkatli kullanın
nmap -p 443 --script vuln 10.10.10.50Çıktıyı saklamak
nmap -oA lab-scan-20261017 -sV -p 80,445 --script http-enum,smb-os-discovery 10.10.10.50Performans ve nezaket
- -T3 varsayılan; labda -T4 kabul edilebilir, internette müşteri ağında -T2 daha naziktir.
- --max-rate ile saniyedeki paket sayısını sınırlayın.
- IDS/IPS olan ortamlarda script taraması alarm üretir; kapsam belgesinde belirtin.
Kendi not defterimden kısa komutlar
# SSL/TLS sertifika özeti
nmap -p 443 --script ssl-cert,ssl-enum-ciphers 10.10.10.50
# Redis bilerek açık mı (lab)
nmap -p 6379 --script redis-info 10.10.10.50
# HTTP başlıkları
nmap -p 80 --script http-headers,http-security-headers 10.10.10.50Sık yaptığım hatalar
- Tüm script kategorilerini körlemesine çalıştırmak (dos/brute dahil) — labı bozar, yasal kapsamı aşabilir.
- -Pn ile her IP'ye script yağdırmak — firewall ICMP kesiyorsa host discovery'yi ayrı düşünün, ama kör tarama maliyeti yüksektir.
- Çıktıyı kaydetmemek — iki gün sonra "o SMB ne demişti?" diye ararsınız.
Kaynaklar
- Nmap Network Scanning (kitap) ve resmi NSE dokümantasyonu: nmap.org/nsedoc
- Script yardım: nmap --script-help <ad>
Sizin favori NSE scriptiniz hangisi? Özellikle AD keşfinde kullandığınız bir kombinasyon varsa yazın.
Script argümanları ve sürüm
Birçok NSE scripti --script-args ile ince ayar alır. http-enum için displayall, smb-os-discovery için ekstra kimlik bilgisi (izinli pentestte) gibi. Script sürümü nmap sürümüyle gelir; Kali rolling'de nmap güncellemesi script davranışını değiştirebilir. Raporunuza nmap --version yazın ki tekrarlanabilir olsun.
Çıktıyı ekibe taşımak
XML'i xsltproc veya kendi Python parser'ınızla Markdown özetine çevirmek, müşteri raporuna ham nmap dump yapıştırmaktan iyidir. gnmap satırları grep ile "open" port listesini hızlı çıkarır:
grep '/open/' lab-scan.gnmapDoğrulama senaryosu
Bu konuyla ilgili ek bir kontrol: değişikliği yaptıktan sonra en az bir negatif test ve bir pozitif test tanımlayın. Negatif test 'alarm boşyere düşmemeli', pozitif test 'bilinen kötü örneği yakalamalı' der. İkisini de kaydedin.
Lab disiplini
Ortamlar arasında (lab, staging, production) aynı yapılandırmayı kör kopyalamayın. Adresler, sertifikalar ve kimlikler farklıdır. Şablon kullanın, değerleri envanterden doldurun.
Runbook'a taşımak
İlgili log ve kanıtları olaydan sonra en az kurum politikasının öngördüğü süre kadar saklayın. Disk dolunca en eski güvenlik logunu silmek klasik hatadır; ayrı retention politikası tanımlayın.
Ölçüm ve alarm sağlığı
Yanlış pozitifleri susturmak ile körleşmek arasındaki çizgi incedir. Suppress kuralına gerekçe ve gözden geçirme tarihi yazın. Süresi dolunca yeniden değerlendirin.
Kapsam ve izin hatırlatması
Bu adımları change ticket olmadan production'da uygulamayın. Küçük görünen bir audit ayarı bile uygulama uyumluluğunu bozabilir. Önce staging, sonra kontrollü yayılım.
Yedekleme ve geri dönüş
Yılda en az iki kez masabaşı tatbikatı yapın: 'bu kontrol kırılırsa kim fark eder?' sorusunu sorunsuz cevaplayabilmelisiniz. Tatbikat notlarını wiki'ye ekleyin.
Log saklama süresi
Araç çıktısını ekran görüntüsü olarak bırakmak yerine makinece okunur formatta (JSON/CSV) arşivleyin. İki yıl sonraki denetimde arama kolaylaşır.
Yanlış pozitif yönetimi
Yetki ayrımı: bu kontrolü yapılandıran kişi ile alarmı triaj eden kişi mümkünse farklı olsun. Küçük ekiplerde olmasa bile en azından farklı hesap kullanın.
Uygulama notu
Bu rehberdeki komutları olduğu gibi kopyalamadan önce yolları, arayüz adlarını ve IP adreslerini kendi ortamınıza göre değiştirin. Dağıtım farkları (Debian/Ubuntu/RHEL/Windows sunucu) çıktı biçimini değiştirebilir; man sayfası ve resmi dokümantasyon birincil kaynaktır. Bir adım beklediğiniz sonucu vermezse önce yetki (sudo/Administrator), sonra sürüm, en son da yapılandırma dosyası sırasıyla bakın. Değişiklikleri geri almak için snapshot veya yapılandırma yönetimi (Ansible/Git) kullanın; 'elle bir dokundum' geçmişi denetimde kaybolur. Alarm ve log örneklerini ekip kanalında paylaşırken kişisel veri ve iç IP şemasını maskeleyin.
Yasal uyarı: Bu içerik eğitim amaçlıdır. Anlatılanları yalnızca kendi sistemlerinizde veya yazılı izin aldığınız sistemlerde uygulayın. Yetkisiz erişim ve sistemlere müdahale 5237 sayılı TCK'nın 243, 244 ve 245. maddeleri kapsamında suçtur.