Bu
bölümde aktif bilgi toplama evresinde kullanabileceğiniz en güçlü,
en faydalı araçlardan biri olan Nmap üzerinde durmaya çalışacağım.
Nmap Windows, MacOSX ve Linux üzerine kurulabilen ve bilgi toplama
evresinin footprinting ve banner grabbing evresinde oldukça
güvenilir sonuçlar verebilen başarılı bir programdır. Nmap
terminal üzerinde çalışır ve sağlamış olduğu kolaylıklarla
scan işleminizi oldukça farklı ve detaylı hale getirmenizi
sağlar.
Nmap
hedef hosta çok spesifik paketler yollar ardından hosttan aldığı
cevapları derleyerek, kendi bünyesinde değerlendirdikten sonra
hangi portun açık, kapalı veya filtreli olduğunu, hangi işletim
sisteminin yüklü olduğunu ve yüklü servislerin türünü ve
versiyonlarını yüksek oranda doğruluğunu kabul edebileceğimiz
bir şekilde bize sunar.
Nmap
sürekli geliştirilmeye devam etmektedir ve daha önceden de
belirttiğim gibi ücretsiz bir uygulamadır. Teknoloji çok hızlı
gelişmekte ve sürekli servislerin versiyonları değişmekte hatta
yeni işletim sistemleri kullanılmakta. Bu anlamda yeni hazırlanan
işletim sistemlerinin ve servislerin nmap tarafından tanıtılması
ve böylece yapılan network tarama işleminde tanımlanamamış
sonuçlar alınmaması için karşılaşılan footprinting izlerinin
nmap bünyesine eklenmesi gerekir. Bu client tarafından
yapılabilecek birşey değildir. Güncellemeler ile bunları edinmiş oluruz. Ancak karşılaştığınız bazı
durumlarda Nmap'in geliştirilme safhasına destek olabilirsiniz.
Hangi işletim sisteminin veya hangi servisin kurulu olduğunu
bildiğiniz bir hedef üzerinde (local network veya internet
üzerinden) yapmış olduğunuz bir test sonucunda, Nmap' in bu
özellikleri (işletim sistemi türü ve servisi) tanıyamadığını
tespit ettiğinizde bu sonuçları Nmap' in resmi websitesi üzerinden
paylaşabilirsiniz.Link
burada.
Öncelikle
şunu belirtmekte yarar var: Yapacağınız tüm scan taramaları
hedef host tarafından pek de hoş olarak karşılanmayacak bir
durumdur. Bu tıpkı tepeden tırnağa birini elinizle kontrol etmeye
benzer. Port taramalarının genel felsefesi önceden belirlenmiş ve
çok kullanılan bir takım portlara sinyaller yollama ve sonuçları yorumlama temeline
dayanır. Ancak buna bazı tweakler yaparak 65535 portun tamamını
taratabilir veya en çok kullanılan ilk 100, 200 veya buna benzer bir
sayıda portu taratabilirsiniz. Aynı zamanda belirli bir aralıkta
port taraması yapmak da seçenekleriniz arasında olabilir. Bazı
nedenlerden dolayı adminler servisleri yüksek rakamlı (nmap top
listte olmayan) portlara kurabilirler veya çeşitli güvenlik
duvarları kullanabilirler. Bu durumlarda sonuçlar yanıltıcı
olabilir. Ancak yapabileceğiniz ufak ayarlamalar ile sonuçları
biraz daha solidife etmek mümkün olabilir. Genel olarak hangi portta hangi servisin olabileceğini anlamak adına şu listeye göz atabilirsiniz.
Kali
dağıtımı ile yüklü şekilde gelen Nmap programını diğer
linux dağıtımlarına da kurmak mümkün. Bunun için apt-get
install nmap komutunu çalıştırmanız yeterlidir. Ardından
konsola nmap --version yazarak kurmuş olduğunuz Nmap in
versiyonunu öğrenebilirsiniz.
Nmap
çok kapsamlı bir programdır ve çok ince detayları dahi göz önünde
bulundurarak spesifik scan işlemleri yapmanıza olanak sağlar. Bütün
komutlar için help bölümde açıklamalar var ancak önemli
olanların üzerinde durmaya çalışacağım.
Öğreneceğiniz
komutları pratik yapmak için networkunuzda bulunan bir cihaz
üzerinden işlemlerinizi yapabilir veya scanme.nmap.org
adresini kullanabilirsiniz. Bu adres tamamen yeni kullanıcıların
pratik yapmaları için tahsis edilmiştir.
nmap
scanme.nmap.org şeklinde
hiçbir özellik eklemeksizin scan yaptığınızda nmap top 1000
listesindeki portları tarar. Aynı şekilde nmap
45.33.32.156 şeklinde
de aynı aramayı yapabilirsiniz. Scan işlemi bazen uzun sürebilir.
Böyle durumlarda enter tuşuna basarak işlemin gidişatı hakkında
bilgi alabilirsiniz. Gördüğünüz üzere kaç adet filtreli port
bulunduğunu, hangi portta hangi servisin kurulu olduğunu bize
raporladı. -v parametresini ekleyerek belirli aralıklar ile
prosesin yüzde kaça geldiğini size bildirmesini sağlayabilirsiniz.
Eğer bu parametreyi yazmadı iseniz, proses halindeyken v tuşuna
basarak onu aktive edebilirsiniz. Verbosity dört kademedir.( -v,
-v2, -v3, -v4)
nmap
-sV scanme.nmap.org burada
ise -sV komutunu kullanarak servis bilgilerini öğrenmeye
çalışıyoruz.
-sT
parametresi üçlü handshake ile scan yapar. Tcp scan tipi
olarak bilinir.
-sS
ise SYN stealth scan olarak bilinir. Handhake yoktur. Sadece SYN
(Synchronise)
pakedi yollar ve verilen cevabı alır. Eğer SYN/ACK
pakedi gelirse port açıktır mantığı üzerine kuruludur.
Yapmış
olduğunuz scan işlemlerinin raporlarına daha sonra göz atmak
isteyebilirsiniz hatta bunları html formatına çevirmek
isteyebilirsiniz. Bunun için -oA komutunu kullanmalısınız.
Kaydedilecek raporlar terminalde bulunduğunuz dizinin içinde
oluşturulacaktır. oA komutunun anlamı output all dur. Yani üç
farklı çıktı tipinin herbirinden verir. Bunlar .nmap .gnmap ve
.xml dir. (Sadece xml formatı için -oX, gnmap için -oG, nmap
çıktısı için -oN) Xml formatının html formatına
dönüştürülmesi de mümküntür. Tercih ettiğiniz converter ile
bunu yapabilirsiniz veya xsltproc kullanabilirsiniz.
Belirli
portlar veya port aralıkları üzerinden scan yapmanın
mümkün olduğunu söylemiştik. Bunun birkaç örneği aşağıdaki
gibi olabilir.
nmap
nmap.scanme.org -p 443 (Sadece 443 nolu port için)
nmap
nmap.scanme.org -p 1-2000 (1 ile 2000 arasındaki tüm portlar
için)
nmap
nmap.scanme.org -p- (65535 adet portun herbiri için işlemi
uygular.)
Birden
fazla hedefi aynı anda işleme almak için IP adreslerinin arasına
boşluk bırakarak yazmanız yeterlidir. Grup taramalarında işlemin
dışında olmasını istediğiniz hedefleri teker teker belirtmek de
mümkündür. Bunun için --exclude komutu kullanılmalıdır.
nmap 98.138.253.109-162 -T5 --exclude 98.138.157-161 Burada 109 ile 162 nolu IP aralığı arasında bulacağı tüm hostlar için toplu olarak sonuç verecek. Ancak 157 ve 161 ile bitenler liste dışı. Bunu portlar için de kullanabilirsiniz.
Bazı
durumlarda hedef sistemlerde çalışan servisler olmasına rağmen,
serverın offline olduğu gibi sonuçlar alınabilir. Bu durumda
agnostic scan denilen yönteme başvurabilirsiniz. -Pn
parametresi ekleyerek daha verimli sonuçlar alınabilinir. Aynı
zamanda hız ayarı da yapılabilir.
Sistemin
işletim sistemi hakkında bilgi edinmek isterseniz -O parametresini
eklemelisiniz. Ancak bulunan sonuçlar yüzde yüz doğru
olmayabilir. Çok az da olsa yanılma payı olabilir.
Az
önce bir takım hız parametreleri olduğu yazmıştım. Şimdi
bunlardan bahsedelim. T0, T1, T2, T3, T4 ve T5 olmak üzere altı
kademeli hız ayarımız var. En yavaş olanı T0' dır. Rakam
arttıkça scan tamamlanma süresi uzar. Ancak yavaş olan scan daha
verimli sonuçlar verebilir. min_rtt_timeout ve max_rtt_timeout
süreleri gibi birkaç değişkende farklılıklar vardır. IPS sistemlerine karşı
yapılacak scan işlemlerinde tercih edeceğiniz hız parametresinde
değişiklik yapmanız gerekebilir. Hatta bunu daha da ileri
götürerek IP adresinizi spooflayıp sanki yapılan scan işleminin
birden çok kişi tarafından yapıldığı izlenimini
verebilirsiniz. Bu işlem decoy olarak da bilinir. Hazırlanan scan
komutunun sonunda -D parametresi eklenir. Örnek olarak;
Bir önceki konumuz proxychains idi. Proxychains proxy kullanarak İnternet üzerinden işlem yapmamızı sağladığı hakkında uzunca bahsetmiştik. Nmap scan işlemlerinize Proxychains' i entegre etmeniz mümkün. Bunun için service tor start komutunu çalıştırarak onu aktive edin. Ardından yapacağınız scan işlemi için yazacağınız komutun başına proxychains yazmanız yeterli. proxychains nmap scanme.nmap.org gibi.
Nmap
çeşitli script eklentileri ile daha da zengin bir hale
getirilebilir. Http-enumeration, traceroute veya snmp sistemlerine karşı kullanılabilecek birçok script mevcut. Biraz daha detaya girmek ve ne tarz scriptler
olduğunu keşfetmek için resmi websitesine göz atabilirsiniz.