Ethical Hacking #3: Nmap ile Ağ Tarama

Burak Şentürk
9 min readMay 6, 2021

Merhabalar, Ethical Hacking serimizin üçüncü yazısında sizlere Nmap aracını anlatacağım. Bu araç sayesinde ağ içerisinde diğer cihazlar hakkında bilgi edinip, üzerlerinde çalışan servislerin tespitini göreceğiz.
Serinin daha önceki yazılarına ulaşmak için tıklayınız.

Nmap

Nmap Nedir?

Nmap, C/C++ ve Python ile kodlanmış, ağ tarama ve zafiyet tespiti için kullanılan açık kaynaklı bir araçtır. İsmini Network Mapper’in kısaltmasından almaktadır. Ağ yöneticileri nmap’i sistemlerinde hangi cihazların çalıştığını belirlemek, mevcut ana makineleri ve sundukları hizmetleri keşfetmek, açık bağlantı noktaları bulmak ve güvenlik risklerini taramak için kullanırlar. Nmap, yüz binlerce cihazı ve alt ağı kapsayan geniş ağların yanı sıra tek ana bilgisayarı izlemek için kullanılabilir.

Nmap sistem bağlantı noktalarına ham paketler göndererek bilgi toplar. Yanıtları dinler ve bağlantı noktalarının örneğin bir güvenlik duvarı tarafından açık, kapalı veya filtrelenmiş olup olmadığını belirler. Nmap üzerinde bulunan modüller sayesinde port taraması, servis keşfi, versiyon ve işletim sistemi tespiti gerçekleştirebilir.

Port Nedir?

İngilizce kelime anlamı liman olan port ; giriş, soket veya bağlantı noktası anlamında kullanılan bir bilgisayar terimidir. Fiziksel port ve sanal port (fiziksel olmayan) olarak ikiye ayrılır.

Fiziksel Port

Fiziksel port ile kastedilen bilgisayar bileşenlerinde bulunan ve fiziksel bağlantıda kullanılan bir donanım yuvasıdır. Bu tür portlar üzerinden bağlanmış herhangi bir makinaya veri gönderilebilir ve bu makinanın işleyişi kontrol edilebilir. Bir bilgisayarda bulunan yaygın fiziksel portlara AT Port, Firewire Port (IEEE-1394), Serial port, USB port, LAN veya Ağ Portu (RJ-45) vb. örnek verilebilir.

Fiziksel Port

Sanal Port

Sanal port bilgisayar kullanırken ağ ve internet üzerinde veya bir yazılım vasıtasıyla yönlendirilen mantıksal bağlantı noktalarıdır. İnternet ortamında kullanılan port , sanal port diye açıkladığımız terimi ifade etmektedir. Bu soyut bağlantı noktalarını adresleyebilmek için numaralar verilir. Bazı sunucular sabit port numarası kullanırken bazı sunucular ise farklı port adreslerinden hizmet verir. 1024’e kadar olan portlar özel portlardır, 1024’ün üzerinde ki port numaraları ise genel kullanıma açıktır. Bu portlara telnet-23, http-80, ftp-21 portları örnek verilebilir.

En Popüler Portlar

  • 21 FTP
  • 22 SSH
  • 23 TELNET
  • 25 SMTP
  • 53 DNS
  • 80 HTTP
  • 110 POP3
  • 115 SFTP
  • 135 RPC
  • 143 IMAP
  • 194 IRC
  • 443 SSL
  • 445 SMB
  • 1433 MSSQL
  • 3306 MYSQL
  • 3389 Remote Desktop

TCP ve UDP Nedir?

TCP (Transmission Control Protocol)

TCP (Transmission Control Protocol), TCP/IP protokol takımının aktarım katmanı protokollerinden birisidir.

Gelişmiş bilgisayar ağlarında paket anahtarlamalı bilgisayar iletişiminde kayıpsız veri gönderimi sağlayabilmek için TCP protokolü yazılmıştır. HTTP, HTTPS, POP3, SSH, SMTP, Telnet ve FTP gibi internet’in kullanıcı açısından en popüler protokollerinin veri iletimi TCP vasıtasıyla yapılır.

UDP (User Datagram Protocol)

TCP/IP protokol takımının iki aktarım katmanı protokolünden birisidir. Verileri bağlantı kurmadan yollar. Gelişmiş bilgisayar ağlarında paket anahtarlı bilgisayar iletişiminde bir datagram modu oluşturabilmek için UDP protokolü yazılmıştır. Bu protokol minimum protokol mekanizmasıyla bir uygulama programından diğerine mesaj göndermek için bir prosedür içerir. Bu protokol ‘transaction’ yönlendirmelidir. Paketin teslim garantisini isteyen uygulamalar TCP protokolünü kullanır.

TCP Bayrakları

TCP paketlerinde başlık bilgisinin baştan (sıfırıncı indisten) itibaren 13. bayt ofsetinde TCP flag değerleri yer almaktadır.

  • SYN > Synchronzation > Onay anlamına gelen TCP bayrağı, bir paketin başarılı bir şekilde alındığını onaylamak için kullanılır. alıcı, göndericiye ilk paketini aldığını bildirmek için 3 işleminin ikinci aşamasında bir ACK ve bir SYN gönderir.
  • ACK > Acknowledgement > Paketin alındığını karşı tarafa bildiren onay paketidir.
  • FIN > Finish > Tamamlandı anlamına gelen FIN bayrağı gönderenden daha fazla veri olmadığı anlamına gelir. Bu nedenle, göndericiden gönderilen son pakette kullanılır.
  • RST > Reset > Sıfırlama anlamına gelen RST bayrağı, bir paket beklemeyen belirli bir ana bilgisayara bir paket gönderildiğinde alıcıdan gönderene gönderilir.
  • URG > Urgent > Diğer paketleri işlemeden önce acil paketleri işleme alması için alıcıyı bilgilendirmek için kullanılır. Bilinen tüm acil veriler alındığında alıcıya bildirilecektir.
  • PSH > Push > URG bayrağına biraz benziyor ve alıcıya bu paketleri paketlemek yerine aldıkları gibi işleme koymasını söylüyor.
TCP Flag Değer Karşılıkları

TCP paketlerini incelediğimiz zaman bu bayrakları birbirlerinden ayırt etmek için yada kombin olarak pakette yer alan bayrakların hangi bayraklar olduğunu tespit edebilmek için her bir bayrak türüne kendisine özel bir bayrak değeri atanmaktadır. Bu değerler standart olarak sabit tutulmaktadır. Değişken değerler burada söz konusu değildir.

Three way handshake (Üç Yollu El Sıkışma)

Nmap Tarama Türleri Nelerdir?

TCP Syan Scan:

İstemci makine, hedef makine veya makinlere TCP SYN bayraklı bir segment gönderir. Eğer segmentin gönderildiği port kapalı ise hedef makine RST + ACK; portlar açık ise SYN + ACK bayraklı segmentleri döndürür. Daha sonra RST + ACK bayraklı segmentten gelen baülantıyı sonlandırır ve üçlü el sıkışma (three way handshaking) tamamlanmış olur. Bu şekilde hedef makine veya makinelerde hangi portların açık olup olmadığını tespit edebiliyoruz.

TCP Connect Scan:

TCP SYN Scan ile benzer yanları vardır. Farkı hedef makinenin gönderdiği SYN + ACK bayraklı segmentten sonra hedef makineye bir ACK bayraklı segment gönderilerek üçlü el sıkışmayı tamamlamasıdır.

FIN Scan:

Hedef makineye TCP bağlantı isteği olmadan gönderilen segmentler ile yapılan tarama türüdür. Hedef makineye FIN bayraklı segment gönderilir. Eğer port kapalı ise RST + ACK bayraklı segment döner. Port açık ise hedef makine tarafından herhangi bir geri dönüş olmayacaktır.

Xmas (Christmas) Scan:

Adını yılbaşında süslenen çam ağaçlarından almıştır. Sebebi ise TCP başlığı içinde bulunan toplam 6 paketin sadece 3'ünün set edilmesi ve set edildiğinde ortaya çıkan görüntünün akıllara çam ağacındaki yanıp sönen lambaları getirmesidir.

TCP segmentinde URG, PSH, FIN bayrakları set edilerek hedef makineye istek gönderilir. Bu aşamadan sonrası FIN Scan ile aynıdır. Eğer port kapalı ise RST + ACK bayraklı segment döner. Port açık ise hedef makine tarafından herhangi bir geri dönüş olmayacaktır.

Null Scan:

Adından da anlaşılabileceği gibi hiçbir bayrak set edilmemiş istekler ile yapılan tarama türüdür. Yapılan istekte ise hedef makinenin tepkisi ise FIN Scan ile Xmas Scan ile aynıdır. Eğer port kapalı ise RST + ACK bayraklı segment döner. Port açık ise hedef makine tarafından herhangi bir geri dönüş olmayacaktır.

Ping Scan:

Hedef makineye bir ICMP ECHO istek paketi gönderilir. Eğer hedef makineye ulaşılabiliyor ve hedef makinede ICMP filtreleme bulunmuyor ise hedef makineye karşılık olarak bir ICMP ECHO paketi gönderecektir. Eğer hedef makineye ulaşılamaz veya hedef makine ICMP paketlerini filtreliyor ise cevap olarak herhangi bir şey dönmeyecektir.

IP Protocol Scan:

Bu türde diğerlerinden farklı olarak port taraması değil bir IP protokolü ile tarama yapılır. Eğer IP protokolü aktif ise herhangi bir cevap dönmez ama aktif değilse RST bayrağı set edilmiş bir cevap döndürür.

ACK Scan:

Hedef makineye TCP ACK bayrakları set edilmiş bir istek gönderilir. Eğer hedef makine “ICMP Port Unreachable” döndürüyor ise veya da herhangi bir cevap alınmıyor ise hedef makinedeki port “filtered” olarak kabul edilir. Eğer hedef makine RST bayrağı set edilmiş bir cevap döndürüyor ise port “unfiltered” olarak kabul edilir.

Idle Scan:

Zombi bilgisayarlar tarafından yapılan tarama türüdür. Hedef makineye istekler kaynak makineden değil de belirlenen Zombi Bilgisayarlar üzerinden gider.

Nmap Kullanımı

Nmap Windows, Linux ve MacOS üzerinde çalışabilen bir araçtır. Kali Linux işletim sistemiyle birlikte kurulu olarak gelmektedir. Farklı bir işletim sistemine kurmak isterseniz bu adresi ziyaret edebilirsiniz.

Nmap’i kullanabilmek için komut satırı arabirimlerine aşina olmanız gerekir. Otomatikleşmiş kurallar sadece temel düzeyde tarama yapmanıza yardım eder. Temel nmap komutu oluştururken “nmap {tarama türü} {opsiyonlar} {hedef}” dizilimi temel alınır.

Nmap’i başlatmak için komut satırına “nmap” komutunu yazmanız yeterlidir.

Nmap

Nmap kullanımında tüm komutları ve işlevlerini öğrenmek için komut satırına “nmap -help” ve “nmap -h” komutunu yazabilirsiniz.

Nmap Help

Hedef Belirleme

Nmap’te hedef tanımlamak için farklı seçenekler vardır. Bir kerede sadece bir IP adresini veya bir IP aralığını tarayabilirsiniz. Kullanımı:

Hedef Belirleme

Tarama Türü Belirleme

Nmap üzerinden gönderilen ilk parametre tarama türüdür. Mantığı “nmap -s[ tarama_türünün_kodu ]” şeklindedir. Buradaki küçük s harfinin anlamı “scan”dır. Bütün tarama türlerinin harfi küçük s’den sonra büyük olarak yazılır. Tarama türlerinin kodları:

  • SYN Scan: -sS
  • TCP Connect Scan: -sT
  • FIN Scan: -sF
  • Xmas Scan: -sX
  • Null Scan: -sN
  • Ping Scan: -sP
  • IP Protocol Scan: -sO
  • ACK Scan: -sA
  • Idle Scan: -sI

Hepsinin kullanımı SYN Scan örneğindeki syntax ile aynıdır. Tek farklı olan Idle Scan’dır. Çünkü Idle Scan türünde hedef makineye zombi bilgisayarlar üzerinden gönderiliyor.

Idle Scan: nmap -sI [zombi_ip] [hedef]
Diğer Tarama Türleri: nmap -s[tarama_türünün_kodu] [hedef]

Port Opsiyonları

Nmap, biz aksini belirtmediğimiz sürece hedef makine veya makineler üzerinde en sık kullanılan 1000 portunu tarar. Bunu yapmasının sebebi ise toplamda 65.535 adet port bulunmasıdır. Gerekli işlemleri yaptığımız takdirde belirli bir portu tarama, belirtilen port aralığında portları tarama, en sık kullanılan n adet portu tarama gibi seçenekleri de kullanabiliyoruz.

Port Belirleme ve Keşif Taramaları

Port Tarama Örneği

Port Tarama

SYN Scan Örneği

SYN Scan

Nmap taraması yaparken işlem devam ediyor fakat durumu öğrenmek istiyorsanız “C” tuşunu kullanabilirsiniz. Aynı zamanda “P” tuşu ile anlık olarak yapılan progress’lerin akışını izleyebilirsiniz.

Versiyon Tespiti Örneği

Versiyon Tespit

Tarama türünü belirttikten sonra “-sV” parametresi ile tespit edilen portlarda çalışan servisler hakkında detaylı versiyon bilgisi istedik. “-p80,443,3306” parametresi ile de sadece bu üç portun taranması gerektiğini belirttik. Ayrıca kırmızı ile işaretlemiş olduğum alanda “filtered” ibaresi yer almaktadır. Bu alanda filtered yazmasının sebebi bu alanda bir güvenlik cihazı veya bir güvenlik yazılımı olduğunu işaret eder.

İşletim Sistemi Analizi

İşletim Sistemi Analizi

Port tanımlaması yaptıktan sonra “-A” parametresi ile detaylı olarak işletim sistemi analizi ve versiyon isteminde bulunabiliyoruz. Nmap, işletim sistemi ve versiyon tespiti yaparken TTL, Windows Size Identification gibi IP paket başlıklarına bakar. Bu başlıklara ait değerlerin standart olup olmadığına, eğer standart değil ise daha alt katmanlara inerek bu analizi devam ettirir. Bunların yanında işletim sistemlerine göre farklılık gösteren bazı varsayılan (kurulumla otomatik gelen) servisler vardır. Nmap veritabanında hangi işletim sisteminde hangi serverlerin olduğu ve bu servislerin hangi portlardan ayağa kalktığı bulunduğundan dolayı Nmap 1 açık 1 kapalı port bularak da işletim sistemi tespiti yapabilmektedir.

Firewall/IDS Atlatma Yöntemleri

Hedef makinede güvenlik duvarı devrede olabilir. Güvenlik duvarını atlatmak için bazı yöntemler vardır. Bu yöntemler şu şekildedir:

nmap -f scanme.nmap.org: -f parametresi ile paketleri parçalayıp güvenlik duvarını aşmasını sağlayabilirsiniz.

nmap -MTU 576 scanme.nmap.org: -MTU parametresi ile istediğimiz MTU değerini atayabiliyoruz. Burada 576 olarak ayarlandı.

nmap -D 192.168.1.21 192.168.1.34: -D parametresini IP Spoofing işlemi için kullanılıyoruz. Hedef makineye IP adresimizi 192.168.1.21'miş gibi yolluyoruz.

Scan Sonuçlarını Dosyaya Aktarma

Yukarıda anlatılanları doğrultusunda Nmap scaninizi başlattınız, ancak bu scan sonuçlarını terminale değil bir dosyaya bastırmak istiyorsunuz. Şu şekilde yapıyoruz:

nmap -sS -oN scansonuc.txt scanme.nmap.org: -oN parametresi, tarama sonuçlarını normal olarak scansonuc.txt dosyasına kaydeder.

nmap -sS -oX scansonuc.txt scanme.nmap.org: -oX parametresi, tarama sonuçlarını XML formatında scansonuc.txt dosyasına kaydeder.

nmap -sS -oG scansonuc.txt scanme.nmap.org: -oG parametresi, üzerinde oynama yapılabilecek bir Nmap çıktısı üretir.

nmap -sS -oA scansonuc.txt scanme.nmap.org: -oA parametresi ile yapılmakta olan bir işlem yarım kalır ise bu komut ile işleme devam edilir.

Bunlar haricinde Nmap’te çıktı işleme yapılabilecek araçlar bulunmaktadır. Bu araçlardan başlıca 3 tanesi:

  • Xsltproc
  • Saxon
  • Xalan

Yukarıdaki 3 araç, XML olarak verilen Nmap çıktılarını friendly (arkadaş canlısı) hale getirip HTML olarak size sunuyor. Bu üç aracın kullanımı sırası ile şu şekildedir:

  • xsltproc <nmapcikti.xml> -o <nmapcikti.html>
  • java -jar saxon9.jar -s:<nmapcikti.xml> -o:<nmapcikti.html>
  • Xalan -a <nmapcikti.xml> -o <nmapcikti.html>

Bu araçları indirmek ve daha fazla bilgiye sahip olmak için tıklayınız.

Zenmap

Zenmap, Nmap aracının GUI (Graphical User Interface) yani Grafiksel Kullanıcı Arayüzü’dür. Daha açık anlatmak gerekirse Nmap’in terminalde değil de arayüz üzerinde çalıştırmanıza yarayan bir araçtır.

Zenmap

Target(Hedef) kısmına karşı tarafın IP adresini yazıyoruz. Daha sonra Scan kısmına tıklayarak çalıştırıyoruz.

Not: Yukarıda anlatılanları uygulamak için http://scanme.nmap.org/ adresini kullanabilirsiniz.

Kaynaklar

[1] Nmap Nedir ve Nasıl Kullanılır?
[2] TryHackMe Nmap
[3] TCP
[4] UDP
[5] TCP Flaglarının İncelenmesi
[6] Sıfırdan Nmap Dersleri
[7] Zenmap Nedir? Ne İşe Yarar? Nasıl Kullanılır?
[8] Ethical Hacking-Offensive&Defensive/Ömer Çıtak

--

--

Burak Şentürk

Student of Management Information Systems at Karadeniz Technical University • DeepLab.Bootcamp Organization Developer