Konuyu Okuyanlar: 1 Ziyaretçi

nmap NSE Scriptleri: http-enum, smb-os-discovery ve Kendi Lab Notlarım

nmap NSE Scriptleri: http-enum, smb-os-discovery ve Kendi Lab Notlarım
[Resim: attachment.php?aid=155]

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:
Kod:
ls /usr/share/nmap/scripts | head nmap --script-help http-enum

http-enum: web dizin ve dosya keşfi
Kod:
nmap -p 80,443 --script http-enum 10.10.10.50
Bu script bilinen yolları (admin panelleri, yedek dosyalar, .git kalıntıları vb.) dener. Gobuster/ffuf kadar kapsamlı wordlist kullanmaz; hızlı sinyal için iyidir. Lab çıktısı kabaca şöyle görünür:



Dikkat: 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:
Kod:
nmap -p 80 --script http-enum --script-args http-enum.displayall 10.10.10.50

smb-os-discovery: SMB üzerinden OS ve alan bilgisi
Windows / Samba hedeflerinde:
Kod:
nmap -p 445 --script smb-os-discovery 10.10.10.20
Çıktıda işletim sistemi, bilgisayar adı, çalışma grubu / domain, bazen forest bilgisi gelir. Bu bilgi later hareket planını etkiler: domain üyesi bir makine ile iş grubu makinesi aynı değildir.

SMB imza zorunluluğunu da kontrol etmek isterseniz:
Kod:
nmap -p 445 --script smb2-security-mode 10.10.10.20
"Message signing enabled but not required" satırı mavi takım için düzeltilmesi gereken bir bulgudur.

Birkaç scripti birlikte çalıştırmak
Kod:
nmap -sV -p 80,443,445 --script "default and safe" 10.10.10.0/28
and safe ifadesi default kategorisinden yalnızca güvenli olanları seçer. Büyük alt ağlarda önce host discovery, sonra dar port listesi, en son script sırasını tercih ederim; aksi halde tarama saatler sürer ve logları kirletirsiniz.

vuln kategorisi: dikkatli kullanın
Kod:
nmap -p 443 --script vuln 10.10.10.50
Bu komut bilinen zafiyet imzalarını dener. Yanlış pozitif oranı yüksektir; her kırmızı satırı "kırıldı" sanmayın. Bulguyu manuel doğrulayın, CVE numarasını NVD'den kontrol edin, sürüm bilgisini -sV ile çaprazlayın.

Çıktıyı saklamak
Kod:
nmap -oA lab-scan-20261017 -sV -p 80,445 --script http-enum,smb-os-discovery 10.10.10.50
-oA üç format üretir: .nmap (metin), .xml, .gnmap. XML'i daha sonra searchsploit veya kendi betiklerinizle işleyebilirsiniz.

Performans 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
Kod:
# 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.50

Sık yaptığım hatalar
  1. Tüm script kategorilerini körlemesine çalıştırmak (dos/brute dahil) — labı bozar, yasal kapsamı aşabilir.
  2. -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.
  3. Çı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:
Kod:
grep '/open/' lab-scan.gnmap


Doğ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.


Ek DosyalarEkran Görüntüleri
   
Cevapla



Hızlı Menü: