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 gokhankesici.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.
nmap -sI <zombi-ip> <hedef-ip>
Nmap port taraması sonucu çıktı olarak oluşan durumlar:
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