Nmap komutu nasıl kullanılır?

Varsayılan değerlerle host  veya ip ler için port taraması yapmak için direkt olarak hostlar ve ipler verilebilir. Detaylandırmak için ise -v, -vv, -vvv parametrelerinden birini kullanabiliriz.

nmap 192.168.4.4
nmap 192.168.4.4 192.168.4.25
nmap 192.168.4.5,6
nmap portquiz.net -v

Belirli bir ip’ye ait tarama işlemini aralık girerek veya network belirterek gerçekleştirebiliriz.

nmap 192.168.4.4-5
nmap 192.168.4.4.*
nmap 192.168.4.0/24

Nmap çıktısını bir dosyaya yazdırmak için -oN, bu çıktıyı xml formatında kaydetmek için -oX, grep edilebilir şekilde kaydedilsin istiyorsanız -oG parametrelerini kullanabilirsiniz.

nmap 192.168.4.4 -oN normal_cikti
nmap 192.168.4.4 -oX xml_cikti
nmap 192.168.4.5 -oG grep_cikti

Büyük bir network taraması yaparken –exclude parametresi ile ip veya ipleri kapsam dışına alabilirsiniz. Eğer listeyi bir dosyadan almak isterseniz de –excludefile parametresini kullabilirsiniz.

nmap 192.168.4.* --exclude 192.168.4.0
nmap 192.168.4.0/24 --exclude 192.168.4.3,192.168.4.5
nmap 192.168.4.0/24 -excludefile bunlar_haric.txt

Hiç parametre vermediğinde en popüler 1000 port baz alınır. Belirli bir port taramak için ise -p parametresi kullanılır. Portun TCP mi UDP mi olacağını belirtmek isterseniz T: ve U: ifadelerini kullanırsınız. Eğer protokolün adını biliyorsanız numara yerine isimde verebilirsiniz.

nmap 192.168.4.1 -p 22
nmap 192.168.4.1 -p ssh,80
nmap portquiz.net -sU -sT -p U:53,137,T:22-50

En çok kullanılan portları taramak için –top-ports parametresi kullanılır. Tüm portları taramak istiyorsanız -p ile birlikte ‘*’ kullanabilirsiniz. Herhangi bir port ismiyle birlikte de wildcard (*) kullanılabilinir.  -F parametresi ise en çok kullanılan 100 portu tarar.

nmap 192.168.4.1 --top-ports 5
nmap portquiz.net -p '*'
nmap portquiz.net -p 'http*'
nmap portquiz.net -F

Tarama yaparken kendi belirlediğiniz bir porttan hedef porta gidebilirsiniz. Örneğin hedefin sizden şüphelenmeyeceği 53, 80 gibi bir portlarla hedefe ulaşmaya çalışabilirsiniz. Bunun için –source-port (-g) parametresini kullanabilirsiniz.

nmap portquiz.net -p 22 --source-port 53

Nmap scriptlerini kullanmak için –script parametresi kullanabiliriz. Argüman alan scriptler için –script-args kullanabilirsiniz. Nmap ile gelen kategorize edilmiş scriptleri de çalıştırabilirsiniz. Bunlar: all, default (-sC), discovery, malware, auth,  safe, vuln, external, intrusive.

nmap --script ftp.enum.nse,http* 192.168.1.12
nmap --script "default and safe" 192.168.1.12
nmap --script "default and not safe" 192.168.1.12
nmap --script --http-enum --script-args http-enum.basepath='/' 192.168.1.2

Tarama yaptınız durumu sadece açık portların çıktısını almak istiyorsanız –open parametresi kullanabilirsiniz.

nmap 192.168.4.1 --open

Varsayılan olarak portlar nmap tarafından sırasıyla taranmazlar. Eğer belirttiğiniz portlar sırasıyla taransın diye bir isteğiniz olursa bu durumda -r parametresini kullanabilirsiniz. -v parametresini girdiğinizde sanki sırasıyla yapmıyor gibi bir algıya düşebilirsiniz. Ancak -v de düşen cevapla birlikte ekrana basılır. -r ‘nin çalıştığını network ile araya girip görebilirsiniz.

nmap portquiz.net -p 21,22,23 -r

Belirli bir dosyadaki ip listesini taramak için -iL parametresi kullanılır.

nmap -iL taranacak_liste.txt

Rasgele host bularak tarama yapmak için -iR parametresi kullanılır. Eğer portu belirtirseniz o portu bulana dek rasgele dener.

nmap -iR 2
nmap -iR 5 -p 3389

Ping olmaksızın port taraması için -PN parametresi kullanılır. Direkt SYN paketi gönderilir.

nmap 192.168.4.1 -PN

Port taraması yapmaksızın keşif amacıyla kullanılan sistemin ayakta olup olmadığını anlamak için -sP parametresi kullanılır.  Bu parametreyi diğer parametrelerle birlikte kullanmazsanız eğer nmap varsayılan olarak port tarama işlemini gerçekleştirir.

nmap 192.168.4.1 -sP

SYN paketi göndererek  keşif yapmak için -PS parametresi kullanılır. Yanına herhangi bir değer almazsa varsayılan port 80’e SYN gönderir.

nmap 192.168.4.1/24 -PS -sP
nmap 192.168.4.1/24 -PS22 -sP

ACK paketi göndererek keşif yapmak için -PA parametresi kullanılır. Yanına bir değer almazsa varsayılan port 80’e ACK gönderir.

nmap 192.168.4.1/24 -PA -sP
nmap 192.168.4.1/24 -PA22 -sP

UDP paketi göndererek keşif yapmak için -PU parametresi kullanılır. UDP ping yapabilmek için sistemde yetkili bir kullanıcı olmanız gerekmektedir. Bir değer almazsa varsayılan port 40125’e UDP gönderir.

nmap 192.168.4.1/24 -PU -sP
nmap 192.168.4.1/24 -PU21,22 -sP

ARP paketi göndererek keşif yapmak için -PR parametresini kullanabilirsiniz. Ayrıca ARP bildiğiniz üzere sadece local subnet’inizde çalışır.

nmap 192.168.4.1/24 -PR -sP

Nmap ile Reverse DNS (PTR) ‘de yapabilirsiniz. Normalde varsayılan olarak herhangi bir parametre girmezsenizde nmap reverse dns yapar. Ancak -n parametresi ile reversedns işlemini kapatabilirsiniz.

nmap 173.254.28.20 -n -sP

Manuel olarak dns server girmeniz gerektiği durumlar olabilir. Bu durumda –dns-servers parametresi girilebilir.

nmap ovural.com --dns-servers 173.254.28.20 -sP

Hiç bir tarama yapmadan sadece listeyi görüntelemek için -sL parametresi kullanılır.

nmap 173.254.28.20-200 -n -sL
nmap 173.254.20-200 -sL

TCP SYN Scan yani direkt TCP / SYN paketi gönderilerek tarama işlemi yapmak için -sS parametresi kullanılır. Hızlı bir tarama işlemidir. Ancak sadece SYN yolladığınızdan dikkatleri üzerinize çekersiniz. Root gibi yetkili bir kullanıcıysanız var sayılan olarak bu parametreyi girmezsenizde olur. Burada portun açık olduğunu SYN yolladığınızda SYN/ACK cevabı dönüldüğünde anlarsınız. Kapalı olduğunu ise gelen cevap RST ile anlarsınız.

nmap 173.254.20-200 -sS --top-ports 5

TCP Connect yani TCP üçlü el sıkışma (3-way handshaking) dediğimiz olay tamamlanarak yapılan bir tarama işlemidir. Bunun için -sT parametresi kullanılır. Yetkili olmayan, normal kullanıcılar herhangi bir parametre girmediklerinde varsayılan olarak bu modda çalışır. SYN Scan’e göre daha yavaş bir taramadır. Burada portun açık olduğunu SYN Scan’deki gibi cevap olarak SYN/ACK gelmesinden anlarız. Eğer cevaptan RST geliyorsa port kapalıdır.

nmap 173.254.20-200 -sT --top-ports 5

Nmap TCP’yi baz almış olsa da bazen UDP kullanan portları da taramak isteyebilirsiniz. Bu durumda -sU paramaetresi kullanılır. UDP port kendisine gelen cevaplara göre durumunu günceller. Örneğin UDP paketi gönderildiğinde herhangi bir cevap dönülmezse o portun açık veya filtrelenmiş olduğu düşünülür. Ancak UDP paketine UDP ile dönülmüşse o port açık olarak düşünülür. UDP Scan’de eğer giden pakete ICMP erişilemez cevabı dönüyorsada port kapalı olarak düşünülür.

nmap 173.254.20 -sU --top-ports 5

TCP NULL Scan yani segment içerisinde herhangi bir flag girilmemiş şekildeki taramalarda kullanılır. Bu durumda -sN parametresi kullanılır. Flag 0 olarak set edilmiştir. Windows’larda TCP protokolünün tamamına uyum diye bir söz konusu olmadığından farklılıklar olabiliyor. Windows’larda NULL Scan yoktur. Ancak Linux’da bu uyumluluk olduğundan Linux’da flagsiz tcp paketi gönderilebilir. Gidene pakete cevap dönülmezse port açık olabilir. Kapalı ise NULL RST döner.

nmap 173.254.20 -sN --top-ports 5

TCP FIN Scan yani çift taraflı oturum kapatma isteği ile gidildiğinde gerçekleştirilen taramalarda kullanılır. -sF parametresi ile kullanılabilir. Giden pakete cevap dönülmezse port açık olabilir, RST dönerse port kapalıdır.

nmap 173.254.20 -sF --top-ports 5

TCP Xmas Scan yani URG,FIN,PSH flaglerinin aynı anda set edilerek gönderilmesiyle gerçekleştirilen bir taramadır. -sX parametresi ile kullanılabilir. Giden pakete cevap dönülmezse port açık olabilir, RST dönerse port kapalıdır.

nmap 173.254.20 -sX --top-ports 5

Custom TCP Scan ‘de bayrakları kendiniz belirleyerek paketi gönderiyorsunuz. Bunun için –scanflags parametresi kullanılır.

nmap 173.254.20 --scanflags RSTACK --top-ports 5

TCP ACK Scan ile hedef sunucuda bir firewall erişmek istediğimiz port için bir firewall kullanmışmıyı anlayabileceğimiz en basit şekilde anlayabileceğimiz yöntem. Bunun için -sA parametresi kullanılır. Direkt olarak ACK gönderdiğimizden hemen bir RST paketi dönmesini bekleriz. Anlarızki filtreleme yok. Ama cevap dönmezse bir filtreleme işlemi var deriz.

nmap 173.254.20 -sA --top-ports 5

TCP Idle Scan ile başıboş dediğimiz makinalar aracılığıyla tarama yaptırabilirsiniz. Bunun için -sI parametresi kullanılır.

  • Saldırgan IP başlığı içinde yer alan ID bilgisini öğrenmek amacındadır ve SYN/ACK yollar
  • Zombi RST döner ve cevabı içinde ID bilgisinide vermiş olur.
  • Saldırgan sahte bir SYN paketi oluşturur. Ve paketin source ip’sinede zombi bilgisayarın ip’sini yazar ve hedefe gönderir.
  • Hedefteki bilgisayar bu paketi açıp baktığından sahte ip’yi source kabul edip port açıksa SYN/ACK, kapalıysa RST gönderecektir.
  • Açık olduğunu düşünürsek; zombi bilgisayarda SYN/ACK’e RST ile dönecektir ve Artış miktarını 1 düşünürsek ID değeri 1 artmış olur.
  • Kapalı veya filtrelenmiş olduğunu düşünürsek; zombi hiç bir cevap dönmeyecektir ve ID değeri değişmeyecektir.
  • Saldırgan bu sefer hedef sisteme SYN/ACK yollar ve ID’sini görmek ister.
  • Eğer Zombiden gelen ID değeri  2 fazlasıysa o port açık demektir. Eğer 1 fazlasıysa da o port kapalı olabilir diyeceğiz.
nmap -sI <zombi-ip> <hedef-ip>

Nmap port taraması sonucu çıktı olarak oluşan durumlar:

  • open : Porta erişilmiştir. SYN Scan veya TCP Connect gibi taramaları örnek verebiliriz.
  • closed : Porta erişilememekte.. SYN SCAN veya TCP Connect gibi taramaları örnek verebiliriz.
  • filtered : Hedef sistemde erişilen port için oturum denetlendiği anlaşıldı.ACK Scan örnek verilebilir ya da SYN paketi gönderdiniz cevap dönmedi gibi.
  • unfiltered : Hedef sistemde erişilen port için filtre ile kontrol yapılmamış. Portun açık veya kapalı olduğu bilgisi kesin olarak bilinemez. ACK Scan örnek verilebilir.
  • open|filtered :Giden pakete bir cevap dönülmemiş olabilir. Bu durumda o port kesinlikle kapalı değildir. Açıktır veya filtrelenmiş olabilir. NULL, FIN, Xmas Scan örnek verilebilir.
  • closed|filtered : IDLE Scan örnek verilebilir. Sistemin açık mı yoksa filtrelenmiş olduğu bilgisi kesin olarak bilinemez.

Yukarıdaki port taramalarının sebeplerini görmek için –reason parametresiyle kullanabilirsiniz.

nmap 173.254.28.20 --reason

IP Protocol Scan, nmap-protocols dosyası içerisindeki IANA yoksa sistem protocol dosyası içerisindeki IP protokollerini tarar. -sO parametresi kullanılır.Dönen sonuçtaki protokol kısmını port ile karıştırmayınız lütfen. Bu IANA numarasıdır. Taramayı IP paketi göndererek yapar.  Giden paketteki protokole cevap RST gelirse protokol açık, gelmezse kapalı olarak düşünülür.

nmap -sO 173.254.28.20

Sistemlerin karakteristik davranışları olabilmektedir. Nmap ‘de port scan yapar (en az 1 açık, 1 kapalı port) ve kendi analiz işlemini yapar kurulu olduğu konumdaki nmap-os-db dosyasına bakarak %100 olmamakla birlikte size, işletim sistemi hakkında bulabildiği tüm izleri sunar. Örneğin uptime süresini gelen SYN/ACK paketler içerisinden timestamp değerine bakarak tahmin etmeye çalışır. İşletim sistemi tahmini için -O, -A (aggesive scan) parametrelerinden biri kullanılır. Çoğu zaman ikisinide ayrı ayrı kullanmakta fayda var. Eğer işletim sistemi tahmini yapılamıyorsa –osscan-guess (–fuzy)  seçeneği ile birlikte kullanılarak yüzdelik tahmin gerçekleştirilebilir.

nmap 192.168.4.12 -O -v
nmap 192.168.4.12 -A -v
nmap 192.168.4.12 -O --osscan-gues

Tarama sonrası sistemdeki servislerin versiyonunu tahmini olarak görmek için ayrıca -sV parametresi kullanılabilir. Ayrıca debug işlemi gerçekleştirmek istiyorsanız da ek olarak –version-trace parametresini kullanabilirsiniz

nmap 192.168.4.12 -O -v -sV
nmap 192.168.4.12 -O -sV -O --version-trace

RPC servisini kullanan uygulamaları bulmak için -sR parametresi kullanabilirsiniz.

nmap 192.168.4.12 -sR

Taramalar otomize işler olduğundan tespit edilmeleri de kolay oluyor. Eğer tarama zamanının süresini kendiniz düzenlemek isterseniz –host-timeout parametresini kullanabilirsiniz. Saat için h, dakika için m, saniye olarak s olarak belirtebilirsiniz. Belirtmezseniz milisaniye cinsinden gösterilir.

nmap 192.168.4.12 --host-timeout 2s
nmap 192.168.4.12 --host-timeout 5m

Taramalarınızı -T[0-5] parametresi ile nmap zaman template lerinden birini de kullanabilirsiniz. Nmap varsayılan olarak T3 zaman modunda tarama yapar. T5 ile daha da hızlı bir tarama yapabilirsiniz. T0 ise en yavaş tarama şeklidir.  Yavaş tarama yaparak ids/ips’leri atlatmanız daha kolay olur.

nmap 192.168.4.12 -T5

Parçalanmış 8 byte’lık küçük paketler göndererek karşı tarafın port taraması yaptığınızı anlamasını zorlaştırabilirsiniz. Bunun için -f parametresini kullanabilirsiniz. Bu değeri kendiniz belirlemek isterseniz –mtu parametresini kullanabilirsiniz. Ayrıca mtu 8 ‘in katları olmalıdır.

nmap 192.168.4.12 -f
nmap 192.168.4.12 --mtu 32

Hostları rastgele taramakta bazı durumlarda engelleri aşmak adına faydalıdır. Bunun içinde –randomize-hosts parametresini kullanabilirsiniz.

nmap 192.168.4.12-24 --randomize-hosts

Tarama yaparken MAC adresinizide değiştirebilirsiniz. Bunun için –spoof-mac parametresini kullanabilirsiniz. Herhangi bir değer vermediğinizde MAC rastgele atanır. Bir dağıtıcı ismi de verebilirsiniz. Bu da engel teşkil eden çeşitli sistemleri atlatmanın yöntemlerinden biridir.

nmap 192.168.4.12 --spoof-mac
nmap 192.168.4.12 --spoof-mac CD:A9:1C:27:29:E3
nmap 192.168.4.12 --spoof-mac Cisco

Bir diğer sistemleri atlatma yöntemlerinden biri de veri bütünlüğü sağlayan checksum’ları rastgele oluşturmaktır. Bunun içinde –badsum parametresini kullanabiliriz. Eğer hedef eksik konfigüre edilmişse cevap döner, ancak doğru konfigüre edilmişse de cevap dönmez.

nmap 192.168.4.12 --badsum

Nmap için belirli bir interface kullanmak isterseniz -e parametresini kullanabilirsiniz.

nmap -e eth0 192.168.4.12 -p 22

Kaynak Linki: https://www.gokhankesici.com/nmap/

Yeteneklerini kullanarak başarılı olan insanlarla bir sorunum yok, sadece başarının en üst hedef olmadığını düşünüyorum. Özgürlük, bilginin paylaşılması - genişlemesi başarının, kişiselliğin ötesinde şeyler. Kişisel başarı yanlış değil ama etkisi sınırlanmış, eğer gerektiği kadarını elde ettiyseniz hala bunun için açlık duymak ayıp, tabii doğruluk, güzellik ve adalet için durum tam tersi. / Richard Stallman