Kategoriler
Linux Siber Güvenlik

Detaylı NMAP Kullanımı

Nmap, en basit açıklama ile hedef makinedeki portları tespit etmemizi, onlar hakkında bilgi toplamamızı sağlayan bir araç. Ancak bununla sınırlı değil. Çok daha kapsamlı işler yaptığı gerçek. Ağdaki veya bizim belirlediğimiz ip adreslerindeki işletim sistemini, o makinelerde çalışan servisleri, firewall bulunup bulunmadığı ve ağ haritası gibi veriler oluşturmamız mümkün. Ağırlıklı olarak linux üzerinde kullanılmakla beraber windows ve MacOS için de indirmek mümkün. Hatta Android üzerinden de kullanabilirsiniz. Biz anlatımlarımızı linux üzerinden sürdüreceğiz.Yazıya devam etmeden önce buraya tıklayarak internet protokollerini öğrenmenizi öneririm. Bunları anlamadan komutları anlamanız pek mümkün olmayacaktır. Kurulum kısmını ben pas geçeceğim ancak kolayca yapabilirsiniz. Kaynak bırakacağım.

Genelde pentesterlar ağı keşfetmek, ip adreslerini, ayaktaki makineleri ve açık portları, çalışan servisler ve onların versiyonlarını keşfetmek amacıyla kullanır. Ağ yöneticileri de ağı haritalamak için NMAP kullanır. NMAP alanının en iyisi desek herhalde itiraz eden çıkmaz. Bu taramalar root yetkisi ile yapılırsa daha sağlıklı olacaktır. Diğer yandan bu tarama sonuçları kesin olmayabilir. Manipüle edilebilir. Honeypota çarpmış olabiliriz. Özellikle TCP taraması başlatmadınız ise güvenilir olmayabilir.(Acelemiz yok TCP taramasını anlatacağız ileride.) Diğer yandan taramalar sisteme ciddi bir yük bindirip erişimin kesilmesine sebep olabilir. Bu yüzden dikkat etmek iyi olacaktır. Son olarak aktif keşif yapıyorsunuz. Yani sizinle ilgili her şey log kaydına düşüyor. Sistem sahibi sizi takip ediyor olacaktır. O yüzden izinsiz bir tarama yapmamanızı öneririm. Özellikle ktirik sistemler ise… Bu log kayıtlarından sizin tespit edilmenizi zorlaştıran yöntemler de var tabii. Onları da anlatacağız.

Biz genelde pentest işlemi sırasında nasıl bir yol izleriz?

Öncelikle ağı keşfedeceğiz. Ağdaki açık makineleri tespit edeceğiz. Söz konusu bir domain ise DNS sorgusu ile ip adresini almamız gerek. Daha sonra çalışan makinenin üzerinde at koşturan servislere bir bakacağız neler var. Bu servislerin versiyonları ne? Bunları keşfettikten sonra bu makinenin işletim sistemi nedir, firewall bulunduruyor mu gibi sorulara cevap bulacağız. Daha sonra Firewall varsa onları atlatmaya bakacağız. Tespit ettiğimiz servislerin o versiyonlarındaki açıkları keşfedip uygulamaya koyacağız.

Taramaya Başlamak…

nmap 192.168.1.15

Bu tarama bize hedef sistemin en popüler bin portunu tarar ve çalışan versiyonları servisi ile karşımıza koyar. Bir domain girdiniz ise DNS çözümlemesi yaparak ip adresini de belirtir ve sistemin ayakta olup olmadığını, cihaz ismini verir.

Peki biz tek bir hedef taratmak istemiyorsak? Onun için de aşağıdaki tarama yöntemlerine göz atmak gerekecek.

nmap -A 192.168.1.15

Yukarıdaki taramanın ismi agresif tarama. Bu tarama yukarıda anlattıklarıma ek olarak sistemin işletim sistemini tahmin eder, gönderilen paketin aldığı yolları takip ederek haritalandırır, versiyon tespiti sırasında da nmap scriptlerini kullanır. (Bu script meselesini de anlatacağız.)

Taramada Hedef Belirtmek

  • nmap 192.168.1.1, 192.168.1.22, 192.168.1.34 : Bu şekilde birden fazla adresi tarayabilirsiniz.
  • nmap 192.168.1.1-40 : Bu şekilde 192.168.1.1 adresinden başlayarak sonu 40 olana kadar tüm adresleri tamamlar. Toplamda 40 hedef demektir bu da.
  • nmap 192.168.1.0/24 : Bu tarama ile 192.168.1.x aralığındaki tüm ip adreslerini tarar.
  • nmap -iL hedefler.txt : Bu parametre sayesinde not defterine kaydettiğiniz tüm hedefleri satır satır alarak tarayacaktır.
  • nmap 192.168.1.0/24 –exclude 192.168.1.55 : exclude parametresi sayesinde bir listede taranmasını istemediğiniz adresi listeden çıkartabilirsiniz. Örnekte 192.168.1.55 adresi taramaya dahil edilmeyecektir.
  • nmap 192.168.1.0/24 –exclude list.txt : Bu sayede de tarama yaptığımız ip aralığında, belirtiğimiz listedeki adreslerin tarama dışı kalmasını sağlıyoruz. Not defterindeki hedefler taramaya dahil edilmeyecektir.
  • nmap -6 [hedef] : ipv6 taraması yapmamızı sağlar.

Taramada Port Belirtmek

Peki önce şundan bahsedelim : Port Nedir? Port en basit anlamda sizlerin bilgisayarındaki veri kapılarıdır. Veri akışı onlar sayesinde yapılır.Bilgisayarınızın bir ip adresi var. Ancak birden fazla internete bağlı programla çalışıyorsunuz. Bu durumda nasıl veri akışı gerçekleşecek? Farklı kapılardan, yani farklı portlardan. Toplamda 2 üzeri 16 yani, 65535 adet port açılabilir. Sanıyorum ki bu kadar kapı size fazlasıyla yeter 🙂  En sık kullanılan portlar ve onlarda çalışan default sistemleri aşağıda listeledim. (65535 port TCP ve UDP olarak ayrılıyor. Yani verdiğimiz sayının iki katı söz konusu ya bu ayrı bir yazı konusu. Kafanızı çok takmayın şimdilik.)

  • File Transfer Protocol(FTP) 20/21
  • Secure Shell(SSH) 22
  • Telnet 23
  • Simple Mail Transfer Protocol(SMTP) 25
  • Domain Name System(DNS) 53
  • Domain Host Configuration Protocol(DHCP) 67/68
  • Hypertext Transfer Protocol(HTTP) 80
  • HTTPS 443
  • NetBIOS 137/138/139
  • Internet Message Access Protocol(IMAP) 143
  • Simple Network Management Protocol(SNMP) 161/162
  • Hypertext Transfer Protocol over SSL/TSL(HTTPS) 443

Uzun bir liste : http://www.ciscotr.com/forum/network/428-tum-port-numaralari-list-tcp-udp-port.html

Nihayetinde nmap taraması belirtilmedikçe en popüler ilk bin portu tarar. Ancak biz başka bir portu taramak istiyorsak? Sistem sahibi bir servisin standart çalıştığı port yerine başka bir port girmişse biz o sistemden bihaber olacağız. Veya kapsamlı bir tarama yaparak portların tamamına göz atmak istiyor olabiliriz. İşte bunun için de aşağıdaki parametreler bize çözüm olacak.

  • nmap 192.168.1.15 -p 80 : Bu tarama ile yalnızca 80 portunu tararsınız.
  • nmap 192.168.1.15 -p 80,443,53 : Bu sayede birden fazla port taramanız mümkün.
  • nmap 192.168.1.15 -p 80-100 : Burada da 80 ile 100 arasındaki tüm portları taradık.
  • nmap 192.168.1.15 -p- : Bu da en kapsamlı olanı. Tüm portları tarayacaktır. Kaç adet demiştik? 65535
  • nmap -p ftp,https,telnet 192.168.1.15 : Burada sayısal olarak girmek yerine portları isim olarak girdik. Girdiklerimizi tarayıp sonucu verecektir.
  • nmap -p “http*” 192.168.1.15 : Bu sayede hem http hem de https çalışan portları tararız.
  • nmap 192.168.1.15 –top-ports 400 : Bir şey belirtmememiz halinde NMAP en popüler 1000 portu taramıştı değil mi? Biz en popüler ilk kaç portu tarayabileceğini belirtebiliriz. Tıpkı burada olduğu gibi.
  • nmap -F 192.168.1.15 : Bu sayede de en popüler 100 portu tarayarak hızlı olmasını göz önüne alırsak verimli bir tarama gerçekleştiririz.
  • nmap -r 192.168.1.15 : Bu parametre ile verilen portlar ardışık olarak taranır. Siz bir şey belirtmediniz ise nmap verdiğiniz portları rastgele tarar.

Port Tarama Sonuçları

Gelelim bu portlar tarandığında yazan sonuçların anlamlarına.

  • Open : Port açık demek. Aradığımız şey tam da bu. Bu portun üstünde çalışan sistemin üzerine gidebiliriz.
  • Close : Port kapalı. Ancak nihayetinde böyle bir servis var. Aktif olma ihtimali de var. Yine de şu an üstüne gidemeyiz.
  • Filtered : Açık veya kapalı olduğu net değil. Muhtemelen bir firewall sistemi devrede.
  • Unfiltered : ACK taramalarında karşınıza çıkar. (Bunu da anlatacağız.) Erişilebilir ancak açık olmama ihtimali de var demektir.
  • Open | Filtered : Açıkveya filtreli olup olmadığı tespit edilememiş.
  • Close | Filtered : Kapalı veya filtreli olup olmadığı tespit edilememiş.

Gelişmiş Tarama Türleri

NMAP,sistemde yetkili olup olmamanıza göre farklı standart taramalar yapar. Ancak elbette bu tarama tipini değiştirmemiz de mümkün.

TCP Syn Scan : -sS parametresi kullanılır. Bu şekilde SYN paketleri göndererek tarama yapılır. Log kayıtlarına yakalanmaması garanti edilmez. Günümüzde gelişmiş firewaller tespit edebiliyor fakat bir sonraki bahsedeceğimiz taramaya oranla daha az riskli olduğunu söyleyebiliriz. Yetkili erişiminiz varsa bu tarama türünü standart olarak gerçekleştirir.(Linux’taki root yetkisini örnek verebiliriz evet.)

Örnek kullanım : nmap -sS 192.168.1.15

TCP Connect Scan : -sT parametresi kullanılır. Direk olarak sistemle bağlantı kurduğu için log kayıtlarına düşmemeniz pek de mümkün değil. Ancak Syn Scan taramasına kıyasla daha net sonuçlar elde edersiniz. Örneğin servislerin versiyonlarını ararken daha kesin sonuçlar karşınıza çıkar. Yetkili erişiminiz olmaması halinde bu tarama standart olarak gerçekleşir.

Örnek Kullanım : nmap -sT 192.168.1.15

UDP Scan : -sU parametresi kullanılır. UDP paketleri ile tarama yapar. Birçok servis TCP protokolü ile anlaşırken hala UDP kullanan servisler var. Haliyle mevcut taramanızın yanında UDP taraması yapmak daha kapsamlı bir sonuç üretecektir. Ancak UDP taraması biraz uzun sürecektir.

Örnek kullanım : nmap -sU 192.168.1.15

TCP Null Scan : -sN parametresi kullanılır. Bayrak bulundurmayan boş TCP paketleri gönderir. Yine de log kayıtlarına düşer. Gerçek hayatta olmayan bir senaryodur. Karşı taraftaki güvenlik duvarını atlatmamızı sağlayabilir.

FIN Scan : -sF parametresi ile kullanılır. TCP üçlü el sıkışmasının ilk aşamasını gerçekleştirmez. Burada da amaç, şayet bir güvenlik sistemi varsa sistemden cevap almak için ters köşe yapmaktır diyebiliriz. FIN paketi gönderildiğinde karşı makinenin o portu kapalıysa RST+ACK paketi dönerken, portun açık olması halinde hiçbir tepki verilmez.

Örnek Kullanım : nmap -sF 192.168.1.15

XMAS Scan : -sX parametresi ile kullanılır. Bazı güvenlik duvarlarından sonuç almamızı sağlayabilir. TCP paketinin içine URG, PSH ve FIN bayrakları ekler. Hedef makineden dönen cevap FIN taraması ile aynıdır.

TCP ACK Scan : -sA parametresi kullanılır. Hedef sistemin güvenlik duvarı bulundurup bulundurmadığını tespit etmek için kullanılabilir. Tek vazifesi filtreli ve filtresiz paketleri ayırt etmektir. Kapalı veya açık olma durumlarına bakmaz. Hatırlarsanız üçlü el sıkışmada ACK paketi gönderirdik. Karşı taraf ACK+RST gönderirdi. Sistem gönderdiği paketlere RST ekledi ise filtresiz demektir.

–scanflags : TCP tarama bayraklarını manuel girmek isterseniz kullanabilirsiniz. Örnek kullanım : nmap –scanflags [bayrak_tipi] [hedef]

IP Protocol Scan : -sO parametresi kullanılır. Hedef sistemde desteklenen IP porotokollerini gösterir.(TCP, UDP, ICMP…) Ne tür taramalar yapmak istediğinizi belirlemek için güzel bir çözüm olacaktır.

Keşif & Ping

Bir sistemin çalışır halde olup olmadığını anlamak için ona ping göndeririz. Bu sayede tim ip adreslerini tek tek aramak zorunda kalmayız. Standart bir taramada ICMP isteği gönderilir ve cevaba göre hareket edilir. Ancak güvenlik sistemleri ICMP isteklerini genelde engeller ve siz de buna bir çözüm bulmak için aşağıdaki parametreleri kullanırsınız.

-PN : Bazı güvenlik duvarları ping gönderildiğinde karşılık vermez. Bu durumda -PN parametresini kullanırsanız NMAP, o makineyi ayakta kabul edecek ve taramaya başlayacak.

-sP : İp adresi aralığındaki hangi makineler açık onları listeler ve port taraması yapmaz. Root yetkisi ile çalıştırırsanız yerel bir ağda mac adreslerini de size listeleyecektir.

-PS : Makinelere ping gönderilirken standart olarak 80 portu tercih edilir. Ancak siz bunu değiştirebilirsiniz. Ping göndererek yapılan kontrol işleminde istediğiniz portu seçmeniz mümkün. Örneğin : nmap -PS 80,22,443,25 [hedef]

-PA : Standart durumlarda ICMP taraması gerçekleştiğini söylemiştik. Bu işlem üçlü el sıkışması gibidir. ACK paketleri gönderilmesini sağlar. ICMP engelleyen güvenlik duvarları bulunuyorsa bu tarama biçimi çözüm olabilir.

-PU : UDP paketleri göndermeyi tercih eder. Varsayılan port numarası 40125’tir. Bunu değiştirmeniz de mümkün. Örneğin : nmap -PU 22,25,80,443 [hedef]

-PY : Hedefin Akış Kontrol İletim Protokolünü (SCTP) kullanarak keşif yapar. SCTP ise genelde ip tabanlı telefon sistemlerinde kullanılır. Yine PU’da olduğu gibi port belirtmeniz mümkün.

–traceroute : Bu parametre sayesinde gönderilen paketlerin sizin cihazınızdan çıktıktan sonra dünyanın nerelerini dolaşıp karşı makineye ulaştığını keşfedebilirsiniz.

İşletim Sistemi  ve Servis Versiyonu Keşfi

İşletim Sistemi Keşifleri

-O veya –osscan-guess parametreleri ile işletim sistemlerini tespit edebilirsiniz. NMAP, makineden topladığı tüm verileri bir araya getirerek bir sonuç ortaya koyar. Ancak ikinci seçeneği tercih ederseniz daha agresif davranır ve olasılığı daha yüksek sonuçlar elde edersiniz.

Örnek Kullanım : nmap -O 192.168.1.15

Versiyon Keşifleri

-sV parametresi sayesinde çalışan servislerin versiyonları hakkında bilgi edinebiliriz. Bu parametreyi eklememiz halinde NMAP, servislerden bilgi toplamaya başlar ve sonuçta elde ettiği verileri bir araya getirerek versiyonunu tespit eder.

Örnek kullanım : nmap -sV 192.168.1.15

–version-trace parametresini kullanırsanız versiyon taraması için bilgi toplaması vazifesi ile görevlendirdiğimiz casus paketimizin nereleri dolandığını görebilirsiniz. Bu sayede herhangi bir hatanın tespitini de yapmanız mümkün.

-sR, RPC (remote procedure call) taraması yapmak için kullanılan bir parametredir.

RPC NEDİR : RPC, sunucu ve istemcilerin iletişimi için dizayn edilmiş bir servistir. Kullandığınız herhangi bir uygulama sunucu istemci iletişimine ihtiyaç duyuyor ise eğer RPC servisini kullanabilir. Bir mail server için örnek vermek gerekir ise, istemci yani mail almak veya göndermek isteyen bir makine mail server’ a pop3 ile bağlanarak mail alabilir ve smtp üzerinden mail gönderebilir. Mail server tarafında bu servislerin çalışıyor olması gerekmektedir ki gelen isteklere cevap verebilsinler. Aynı örnekten yola çıkarak Microsoft Exchange Server istemcilere pop3 ve smtp desteği sunuyorken ayrıca iletişim için RPC protokolünüde kullanabilmektedir. Burada RPC istemci ve sunucu arasındaki iletişimi gerçekteştiren servis olarak gözlemlenmektedir ( tabiki mail trafiği ile ilgili olan iletişim ).
Özetle RPC sunucu ve istemci arasında çalışan programların ( yapılan işlemlerin ) iletişimi için dizayn edilmiştir.