Nmap Özeti (ESP)

Reading time: 12 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin
nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24

Parametreler

Tarayıcı IP'leri

  • <ip>,<net/mask>: IP'leri doğrudan belirtir
  • -iL <ips_file>: list_IPs
  • -iR <number>: Rastgele IP sayısı, olası IP'leri --exclude <Ips> veya --excludefile <file> ile hariç tutabilirsiniz.

Ekipman keşfi

Varsayılan olarak Nmap, -PA80 -PS443 -PE -PP içeren bir keşif aşaması başlatır.

  • -sL: İnvaziv değildir, isimleri çözmek için DNS istekleri yaparak hedefleri listeler. Örneğin www.prueba.es/24'te tüm IP'lerin hedeflerimiz olup olmadığını bilmek için faydalıdır.
  • -Pn: Ping yok. Hepsinin aktif olduğunu biliyorsanız faydalıdır (değilse, çok zaman kaybedebilirsiniz, ancak bu seçenek aynı zamanda aktif olmadıklarını söyleyerek yanlış negatifler de üretebilir), keşif aşamasını engeller.
  • -sn : Port taraması yok. Keşif aşamasını tamamladıktan sonra portları taramaz. Göreceli olarak gizlidir ve küçük bir ağ taramasına izin verir. Yetkilerle 80'e bir ACK (-PA), 443'e bir SYN(-PS) ve bir echo isteği ve bir Zaman damgası isteği gönderir, yetkisizse her zaman bağlantıları tamamlar. Hedef ağsa, yalnızca ARP(-PR) kullanır. Başka bir seçenekle kullanıldığında, yalnızca diğer seçeneğin paketleri düşer.
  • -PR: Ping ARP. Ağımızdaki bilgisayarları analiz ederken varsayılan olarak kullanılır, ping kullanmaktan daha hızlıdır. ARP paketleri kullanmak istemiyorsanız --send-ip kullanın.
  • -PS <ports>: SYN paketleri gönderir, eğer SYN/ACK ile yanıt verirse açıktır (bağlantıyı sonlandırmamak için RST ile yanıt verir), eğer RST ile yanıt verirse kapalıdır ve eğer yanıt vermezse ulaşılamazdır. Yetkiler yoksa, otomatik olarak toplam bir bağlantı kullanılır. Hiç port verilmezse, 80'e gönderir.
  • -PA <ports>: Öncekine benzer ama ACK ile, ikisini birleştirmek daha iyi sonuçlar verir.
  • -PU <ports>: Amaç tam tersidir, kapalı olması beklenen portlara gönderilir. Bazı güvenlik duvarları yalnızca TCP bağlantılarını kontrol eder. Kapalıysa port ulaşılamaz ile yanıtlanır, başka bir icmp ile yanıtlanırsa veya yanıt verilmezse hedef ulaşılamaz olarak bırakılır.
  • -PE, -PP, -PM : ICMP PING'leri: echo replay, timestamp ve adres maskesi. Hedefin aktif olup olmadığını öğrenmek için gönderilir.
  • -PY<ports>: Varsayılan olarak 80'e SCTP INIT probeleri gönderir, INIT-ACK(açık) veya ABORT(kapalı) veya hiçbir şey veya ICMP ulaşılamaz (aktif değil) ile yanıtlanabilir.
  • -PO <protocols>: Başlıklarda bir protokol belirtilir, varsayılan olarak 1(ICMP), 2(IGMP) ve 4(Encap IP). ICMP, IGMP, TCP (6) ve UDP (17) protokolleri için protokol başlıkları gönderilir, diğerleri için yalnızca IP başlığı gönderilir. Bunun amacı, başlıkların bozulması nedeniyle, Protokol ulaşılamaz veya aynı protokolden yanıtlar alarak aktif olup olmadığını bilmektir.
  • -n: DNS yok
  • -R: Her zaman DNS

Port tarama teknikleri

  • -sS: Bağlantıyı tamamlamaz, bu nedenle iz bırakmaz, kullanılması çok iyi. (yetkiler) Varsayılan olarak kullanılır.
  • -sT: Bağlantıyı tamamlar, bu nedenle iz bırakır, ancak kesinlikle kullanılabilir. Varsayılan olarak yetkisizdir.
  • -sU: Daha yavaş, UDP için. Genellikle: DNS(53), SNMP(161,162), DHCP(67 ve 68), (-sU53,161,162,67,68): açık (yanıt), kapalı (port ulaşılamaz), filtrelenmiş (başka bir ICMP), açık/filtrelenmiş (hiçbir şey). Açık/filtrelenmiş durumunda, -sV nmap'in desteklediği herhangi bir versiyonu tespit etmek için çok sayıda istek gönderir ve gerçek durumu tespit edebilir. Zamanı çok artırır.
  • -sY: SCTP protokolü bağlantıyı kurmada başarısız olur, bu nedenle günlük kaydı yoktur, -PY gibi çalışır.
  • -sN,-sX,-sF: Null, Fin, Xmas, bazı güvenlik duvarlarını geçebilir ve bilgi çıkarabilir. Standart uyumlu makinelerin SYN, RST veya ACK gecikmeleri olmayan tüm isteklere RST ile yanıt vermesi gerektiği esasına dayanır: açık/filtrelenmiş (hiçbir şey), kapalı (RST), filtrelenmiş (ICMP ulaşılamaz). Windows, Cisco, BSDI ve OS/400 üzerinde güvenilir değildir. Unix üzerinde evet.
  • -sM: Maimon taraması: FIN ve ACK bayrakları gönderir, BSD için kullanılır, şu anda hepsini kapalı olarak döndürecektir.
  • -sA, sW: ACK ve Window, güvenlik duvarlarını tespit etmek için kullanılır, portların filtrelenip filtrelenmediğini bilmek için. -sW açık/kapalı arasında ayrım yapar çünkü açık olanlar farklı bir pencere değeri ile yanıt verir: açık (0'dan farklı pencere ile RST), kapalı (RST pencere = 0), filtrelenmiş (ICMP ulaşılamaz veya hiçbir şey). Tüm bilgisayarlar bu şekilde çalışmaz, bu nedenle hepsi kapalıysa çalışmıyor demektir, az sayıda açık varsa iyi çalışıyor demektir, çok sayıda açık ve az sayıda kapalı varsa, tam tersi çalışıyor demektir.
  • -sI: Idle taraması. Aktif bir güvenlik duvarı varsa ama belirli bir IP'ye filtrelemediğini biliyorsak (veya sadece anonimlik istiyorsak) zombi tarayıcıyı kullanabiliriz (tüm portlar için çalışır), olası zombileri aramak için scrpit ipidseq veya exploit auxiliary/scanner/ip/ipidseq kullanabiliriz. Bu tarayıcı, IP paketlerinin IPID numarasına dayanır.
  • --badsum: Yanlış toplam gönderir, bilgisayarlar paketleri atar, ancak güvenlik duvarları bir şey yanıtlayabilir, güvenlik duvarlarını tespit etmek için kullanılır.
  • -sZ: "Garip" SCTP tarayıcı, cookie echo parçaları ile probeler gönderdiğinde, açık olduğunda atılmalı veya kapalı olduğunda ABORT ile yanıtlanmalıdır. Geçemediği güvenlik duvarlarından geçebilir, kötü olanı ise filtrelenmiş ve açık arasında ayrım yapmamaktadır.
  • -sO: Protokol IP taraması. Bazen protokolün bile ayırt edilemediği kötü ve boş başlıklar gönderir. ICMP ulaşılamaz protokol gelirse kapalıdır, ulaşılamaz port gelirse açıktır, başka bir hata gelirse filtrelenmiştir, hiçbir şey gelmezse açık|filtrelenmiştir.
  • -b <server>: FTPhost--> Başka bir hosttan tarama yapmak için kullanılır, bu, başka bir makinenin ftp'sine bağlanarak ve başka bir makineden taramak istediğiniz portlara dosyalar göndermesini istemekle yapılır, yanıtlarına göre açık olup olmadıklarını bileceğiz. [<user>:<password>@]<server>[:<port>] Neredeyse tüm ftp sunucuları artık bunu yapmanıza izin vermiyor ve bu nedenle pratikte pek bir kullanımı yok.

Odak Analizi

-p: Tarama yapılacak portları belirtmek için kullanılır. Tüm 65,335 portu seçmek için: -p- veya -p all. Nmap, popülariteye dayalı bir iç sınıflandırma kullanır. Varsayılan olarak, en üst 1000 portu kullanır. -F (hızlı tarama) ile en üst 100'ü analiz eder. --top-ports ile o sayıda en üst portu analiz eder (1'den 65,335'e kadar). Portları rastgele sırayla kontrol eder; bunu önlemek için -r kullanın. Ayrıca belirli portları seçebiliriz: 20-30,80,443,1024- (sonuncusu 1024'ten itibaren bakmak anlamına gelir). Portları protokollere göre de gruplandırabiliriz: U:53,T:21-25,80,139,S:9. Nmap'in popüler portları içinde bir aralık da seçebiliriz: -p [-1024] nmap-services'de yer alanlardan 1024'e kadar analiz eder. --port-ratio 0 ile 1 arasında bir oran içinde en yaygın portları analiz eder.

-sV Versiyon taraması, yoğunluk 0 ile 9 arasında ayarlanabilir, varsayılan 7'dir.

--version-intensity Yoğunluğu ayarlarız, böylece daha düşük olduğunda yalnızca en olası probeleri başlatır, ancak hepsini değil. Bu sayede UDP tarama süresini önemli ölçüde kısaltabiliriz.

-O OS tespiti

--osscan-limit Doğru host taraması için en az bir açık port ve bir kapalı port gereklidir. Bu koşul sağlanmazsa ve bunu ayarladıysak, OS tahmini yapmayacaktır (zaman kazandırır).

--osscan-guess OS tespiti mükemmel değilse, daha fazla çaba göstermesini sağlar.

Scriptler

--script |||[,...]

Varsayılan scriptleri kullanmak için -sC veya --script=default kullanın.

Mevcut türler: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version ve vuln

  • Auth: Tüm mevcut kimlik doğrulama scriptlerini çalıştırır
  • Default: Temel varsayılan araç scriptlerini çalıştırır
  • Discovery: Hedef veya kurban hakkında bilgi alır
  • External: Dış kaynakları kullanmak için script
  • Intrusive: Kurban veya hedef için saldırgan olarak kabul edilen scriptleri kullanır
  • Malware: Kötü amaçlı kod veya arka kapılar tarafından açılan bağlantıları kontrol eder
  • Safe: İnvaziv olmayan scriptleri çalıştırır
  • Vuln: En bilinen zafiyetleri keşfeder
  • All: Mevcut tüm NSE uzantı scriptlerini çalıştırır

Scriptleri aramak için:

nmap --script-help="http-*" -> http- ile başlayanlar

nmap --script-help="not intrusive" -> Hepsi hariç

nmap --script-help="default or safe" -> Her ikisinde veya her ikisinde olanlar

nmap --script-help="default and safe" --> Her ikisinde olanlar

nmap --script-help="(default or safe or intrusive) and not http-*"

--script-args =,={=},={,}

--script-args-file

--script-help ||||all[,...]

--script-trace ---> Scriptin nasıl ilerlediği hakkında bilgi verir

--script-updatedb

Bir script kullanmak için, sadece şunu yazın: nmap --script Script_Name target --> Script kullanıldığında, hem script hem de tarayıcı çalıştırılacak, bu nedenle tarayıcı seçenekleri de eklenebilir. Sadece güvenli olanları çalıştırmak için "safe=1" ekleyebiliriz.

Zaman Kontrolü

Nmap, zamanı saniye, dakika, ms cinsinden değiştirebilir: --host-timeout argümanları 900000ms, 900, 900s ve 15m hepsi aynı şeyi yapar.

Nmap, taranacak toplam host sayısını gruplara ayırır ve bu grupları bloklar halinde analiz eder, bu nedenle tümü analiz edilmeden bir sonraki bloğa geçmez (ve kullanıcı, blok analiz edilene kadar herhangi bir güncelleme almaz). Bu şekilde, Nmap'in büyük gruplar kullanması daha optimaldir. Varsayılan olarak sınıf C'de 256 kullanır.

Bu, --min-hostgroup ; --max-hostgroup ile değiştirilebilir (paralel tarama grup boyutlarını ayarlamak için).

Paralel tarayıcı sayısını kontrol edebilirsiniz ama bunu yapmamak daha iyidir (Nmap zaten ağ durumuna dayalı otomatik kontrol içerir): --min-parallelism ; --max-parallelism

RTT zaman aşımını değiştirebiliriz, ancak genellikle gerekli değildir: --min-rtt-timeout , --max-rtt-timeout , --initial-rtt-timeout

Deneme sayısını değiştirebiliriz: --max-retries

Bir hostun tarama süresini değiştirebiliriz: --host-timeout

Her test arasındaki süreyi yavaşlatmak için değiştirebiliriz: --scan-delay ; --max-scan-delay

Saniye başına paket sayısını değiştirebiliriz: --min-rate ; --max-rate

Birçok port, filtrelendiğinde veya kapandığında yanıt vermek için uzun zaman alır. Sadece açık olanlarla ilgileniyorsak, daha hızlı gidebiliriz: --defeat-rst-ratelimit

Nmap'in ne kadar agresif olmasını istediğimizi tanımlamak için: -T paranoid|sneaky|polite|normal|aggressive|insane

-T (0-1)

-T0 --> Sadece 1 portu tarar ve bir sonraki için 5 dakika bekler

-T1 ve T2 --> Çok benzer ama her test arasında sırasıyla yalnızca 15 ve 0.4 saniye bekler

-T3 --> Varsayılan işlem, paralel taramayı içerir

-T4 --> --max-rtt-timeout 1250ms --min-rtt-timeout 100ms --initial-rtt-timeout 500ms --max-retries 6 --max-scan-delay 10ms

-T5 --> --max-rtt-timeout 300ms --min-rtt-timeout 50ms --initial-rtt-timeout 250ms --max-retries 2 --host-timeout 15m --max-scan-delay 5ms

Güvenlik Duvarı/IDS

Portlara erişime izin vermezler ve paketleri analiz ederler.

-f Paketleri parçalamak için, varsayılan olarak başlıktan sonra 8 bayta böler, bu boyutu belirtmek için ..mtu kullanırız (bunu yaparken -f kullanmayın), offset 8'in katı olmalıdır. Versiyon tarayıcıları ve scriptler parçalamayı desteklemez.

-D decoy1,decoy2,ME Nmap tarayıcıları gönderir ama başka IP adresleri ile kaynak olarak, bu şekilde sizi gizler. Listede ME'yi eklerseniz, Nmap sizi oraya yerleştirir, tamamen maskelemek için önünüze 5 veya 6 tane koymak daha iyidir. Rastgele IP'ler RND: ile oluşturulabilir. Rastgele IP oluşturur. Bağlantı olmadan TCP versiyon dedektörleri ile çalışmazlar. Bir ağın içindeyseniz, aktif IP'leri kullanmakla ilgileniyorsunuz, aksi takdirde tek aktif olduğunuzu anlamak çok kolay olacaktır.

Rastgele IP'leri kullanmak için: nmap -D RND:10 Target_IP

-S IP Nmap IP adresinizi yakalamıyorsa bunu vermek için kullanılır. Ayrıca başka bir hedefin sizi taradığını düşündürmek için de kullanılır.

-e Arayüzü seçmek için

Birçok yönetici, her şeyin düzgün çalışması için giriş portlarını açık bırakır ve başka bir çözüm bulmaktan daha kolaydır. Bunlar DNS portları veya FTP portları olabilir... Bu zafiyeti bulmak için Nmap şunları içerir: --source-port ;-g Eşdeğerdir.

--data Hexadecimal metin göndermek için: --data 0xdeadbeef ve --data \xCA\xFE\x09

--data-string Normal metin göndermek için: --data-string "Güvenlik Operasyonları tarafından gerçekleştirilen tarama, uzantı 7192"

--data-length Nmap yalnızca başlıklar gönderir, bununla daha fazla bayt eklemeyi başarırız (rastgele oluşturulacaktır).

IP paketini tamamen yapılandırmak için --ip-options kullanın.

Gönderilen ve alınan paketlerdeki seçenekleri görmek istiyorsanız, --packet-trace belirtin. Nmap ile IP seçeneklerini kullanma hakkında daha fazla bilgi ve örnekler için http://seclists.org/nmap-dev/2006/q3/52 adresine bakın.

--ttl

--randomize-hosts Saldırıyı daha az belirgin hale getirmek için

--spoof-mac <MAC address, prefix, or vendor name> MAC'i değiştirmek için örnekler: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2 ve Cisco

--proxies <Virgülle ayrılmış proxy URL'leri listesi> Proxy kullanmak için, bazen bir proxy Nmap'in istediği kadar açık bağlantı tutmaz, bu nedenle paralellik değiştirilmelidir: --max-parallelism

-sP Ağımızdaki hostları ARP ile keşfetmek için

Birçok yönetici, belirli bir porttan gelen tüm paketlerin geçmesine izin veren bir güvenlik duvarı kuralı oluşturur (20,53 ve 67 gibi), Nmap'e bu portlardan paketler göndermesini söyleyebiliriz: nmap --source-port 53 IP

Çıktılar

-oN file Normal çıktı

-oX file XML çıktısı

-oS file Script kiddies çıktısı

-oG file Greppable çıktı

-oA file -oS hariç hepsi

-v level ayrıntı seviyesi

-d level hata ayıklama

--reason Host ve durumun nedeni

--stats-every time Her o zaman ne durumda olduğunu söyler

--packet-trace Hangi paketlerin çıktığını görmek için, --version-trace veya --script-trace gibi filtreler belirtilebilir.

--open açık, açık|filtrelenmiş ve filtrelenmemiş gösterir

--resume file Bir özet çıktısı verir

Çeşitli

-6 IPv6'ya izin verir

-A -O -sV -sC --traceroute ile aynıdır

Çalışma süresi

Nmap çalışırken seçenekleri değiştirebiliriz:

v / V Ayrıntı seviyesini artırma / azaltma

d / D Hata ayıklama seviyesini artırma / azaltma

p / P Paket izlemeyi açma / kapama

? Çalışma zamanı etkileşimi yardım ekranını yazdır

Vulscan

Nmap scripti, çevrimdışı bir veritabanında elde edilen hizmetlerin versiyonlarına bakar (diğer çok önemli olanlardan indirilmiştir) ve olası zafiyetleri döndürür.

Kullandığı veritabanları:

  1. Scipvuldb.csv | http://www.scip.ch/en/?vuldb
  2. Cve.csv | http://cve.mitre.org
  3. Osvdb.csv | http://www.osvdb.org
  4. Securityfocus.csv | http://www.securityfocus.com/bid/
  5. Securitytracker.csv | http://www.securitytracker.com
  6. Xforce.csv | http://xforce.iss.net
  7. Exploitdb.csv | http://www.exploit-db.com
  8. Openvas.csv | http://www.openvas.org

Nmap klasörüne indirmek ve kurmak için:

wget http://www.computec.ch/projekte/vulscan/download/nmap_nse_vulscan-2.0.tar.gz && tar -czvf nmap_nse_vulscan-2.0.tar.gz vulscan/ && sudo cp -r vulscan/ /usr/share/nmap/scripts/

Veritabanı paketlerini indirip /usr/share/nmap/scripts/vulscan/ dizinine eklemeniz de gerekecektir.

Kullanım:

Hepsini kullanmak için: sudo nmap -sV --script=vulscan HOST_TO_SCAN

Belirli bir veritabanını kullanmak için: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_TO_SCAN

Nmap Servis taramasını x16 Hızlandırma

bu gönderiye göre, tüm totalwaitms değerlerini /usr/share/nmap/nmap-service-probes dosyasında 300 ve tcpwrappedms değerini 200 olarak değiştirerek nmap servis analizini hızlandırabilirsiniz.

Ayrıca, belirli bir servicewaitms tanımlanmamış probeler varsayılan olarak 5000 değerini kullanır. Bu nedenle, her bir probeye değer ekleyebiliriz veya nmap'i kendimiz derleyip service_scan.h dosyasındaki varsayılan değeri değiştirebiliriz.

Eğer totalwaitms ve tcpwrappedms değerlerini /usr/share/nmap/nmap-service-probes dosyasında hiç değiştirmek istemiyorsanız, bu değerlerin nmap-service-probes dosyasında tamamen göz ardı edilmesi için parsing kodunu düzenleyebilirsiniz.