Nmap
Last updated
Last updated
Nmap (Network Mapper yani Ağ haritalayıcı), bilgisayar ağları uzmanı Gordon Lyon (Fyodor) tarafından geliştirilmiş bir güvenlik tarayıcısıdır. Taranan ağın haritasını çıkarabilir ve ağ makinalarında çalışan servislerin durumlarını, işletim sistemlerini, portların durumlarını gözlemleyebilir.
Nmap kullanarak ağa bağlı herhangi bir bilgisayarın işletim sistemi, çalışan fiziksel aygıt tipleri, çalışma süresi, yazılımların hangi servisleri kullandığı, yazılımların sürüm numaraları, bilgisayarın güvenlik duvarına sahip olup olmadığı, ağ kartının üreticisinin adı gibi bilgiler öğrenilebilmektedir.
Ağ Keşfi: Taranan ağ üzerindeki sistemler hakkında bilgi sahibi olunması (port, üzerinde koşan uygulama vb. bilgileri öğrenmek gibi). Ağ topolojisinin çıkarılması
Port Tarama: Hedef sistemlerdeki açık portları tespit. Hangi servislerin çalıştığını ve hangi portların açık olduğunu belirlemek amacıyla yapılır.
Servis Tespiti: Tespit edilen açık portların ardındaki servislerin belirlenmesi ve bu servislerin sürümlerinin tespiti.
İşletim Sistemi Tanıma: Hedef sistemlerin işletim sistemini belirlemek için IP paketlerinin yanıtlarının analizi. Sızma testlerinin gerçekleştirilmesi.
Scripting: Özelleştirilmiş taramalar ve testler yapmak için kullanıcıların yazdığı ya da indirdiği betikleri çalıştırma.
Zenmap, Adriano Monteiro Marques tarafından UMIT grafiksel kullanıcı arabiriminden faydalanılarak geliştirilmiş şu anki resmi kullanıcı arabirimdir. NMap paketinin içinde gelmektedir.
NmapFE, Zach Smith tarafından geliştirilmiş Nmap'in ilk resmi grafiksel kullanıcı arabirimi olma niteliğindedir. Nmap'in 2.2 ve 4.2 sürümleri arasında kullanılmıştır.
Nmap herhangi bir istemci veya sunucuyu birçok farklı şekilde tarama yeteneğine sahiptir. Nmap'i güçlü kılan farklı tarama tekniklerine sahip olmasıdır. Protokol temelli (TCP, UDP, vb.) tarama yapılabileceği gibi, belirli aralıklardaki IP adresleri, alt ağlar (subnet) ve üzerlerinde çalışan port ve servisleri de taranabilir.
Open (Açık): Portun erişilebilir durumda olduğunu ve port üzerinde bir uygulamanın TCP bağlantılarını ya da UDP datagramlarını kabul ettiği anlamına gelmektedir.
Closed (Kapalı): Portun erişilebilir olduğunu (Paketleri almakta ve geri paket göndermekte) fakat üzerinde herhangi bir uygulamanın olmadığı anlamını taşımaktadır.
Filtered (Filtreli): Dönen tepkiler bir paket filtreleme mekanizması tarafından engellenir. Nmap portun açık olduğuna karar veremez.
Unfiltered (Filtresiz): Portlar erişilebilir ancak Nmap portların açık veya kapalı olduğuna karar veremez. (Sadece ACK scan için)
Open|filtered (Açık|Filtreli): Nmap portların açık veya filtrelenmiş olduğuna karar veremez. (UDP, IP Protocol, FIN, Null, Xmas Scan için)
Closed|filtered (Kapalı|Filtreli): Nmap portların kapalı ya da filtreli olduğuna karar veremez. (Sadece Idle Scan için)
· 20 File Transfer Protocol (FTP) Veri İletimi
· 21 File Transfer Protocol (FTP) Komut Kontrolü
· 22 Secure Shell (SSH) Güvenli Giriş
· 23 Telnet uzaktan oturum açma hizmeti, şifrelenmemiş metin mesajları
· 25 Simple Mail Transfer Protocol (SMTP) e-posta gönderimi
· 53 Domain Name System (DNS) servisi
· 67, 68 Dynamic Host Configuration Protocol (DHCP)
· 80 Hypertext Transfer Protocol (HTTP) World Wide Web'de kullanılır
· 110 Post Office Protocol (POP3)
· 119 Network News Transfer Protocol (NNTP)
· 123 Network Time Protocol (NTP)
· 143 Internet Message Access Protocol (IMAP) Dijital posta yönetimi
· 161 Simple Network Management Protocol (SNMP)
· 194 Internet Relay Chat (IRC)
· 443 HTTP Secure (HTTPS) HTTP over TLS/SSL
· 546, 547 DHCPv6 IPv6 version of DHCP
TCP (Transmission Control Protocol), TCP/IP protokol takımının taşıma katmanı protokollerinden birisidir. Son güncellemesi Ağustos 2022 tarihi itibarıyla RFC 9293 içerisinde tanımlanmıştır.
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 internetin kullanıcı açısından en popüler protokollerinin veri iletimi TCP vasıtasıyla yapılır.
A bilgisayarı B bilgisayarına TCP yoluyla bağlanmak istediğinde şu yol izlenir:
1. A bilgisayarı B bilgisayarına TCP SYNchronize mesajı yollar
2. B bilgisayarı A bilgisayarının isteğini aldığına dair bir TCP SYN+ACKnowledgement mesajı yollar
3. A bilgisayarı B bilgisayarına TCP ACK mesajı yollar
4. B bilgisayarı bir ACK "TCP connection is ESTABLISHED" mesajı alır
5. Üç zamanlı el sıkışma adı verilen bu yöntem sonucunda TCP bağlantısı açılmış olur.
TCP'de veri iletimi çift yönlüdür. Yani her iki taraf da birbirlerine aynı bağlantı içerisinde veri gönderebilmektedir. Bağlantı oluşturulduktan sonra, B bilgisayarı A bilgisayarından paketler almaya başlar. B, her aldığı paketten sonra bir süre bekledikten sonra en son düzgün olarak aldığı paket grubunu A'ya bildirir. Gelen bildirimlere göre A, daha sonra hangi paketleri yollaması gerektiğine karar verir ve yollar.
TCP bağlantısının sona erdirilmesi
Veri iletişimi bitince bilgisayarlardan herhangi biri diğerine TCP kapatma mesajı yollar. Diğer bilgisayar, kapatmayı teyit etme paketi ve kapatma isteği yollar. Son olarak, diğer bilgisayar da kapatma teyidini yollar ve bağlantı kapatılmış olur.
Bu işlemin adımları tam olarak şöyledir:
1. A bilgisayarı B bilgisayarına bağlantıyı sonlandırmak istediğine dair TCP FIN mesajı yollar.
2. B bilgisayarı A bilgisayarına bağlantı sonlandırma isteğini aldığına dair TCP ACK mesajı yollar.
3. B bilgisayarı A bilgisayarına bağlantıyı sonlandırmak istediğine dair TCP FIN mesajı yollar.
4. A bilgisayarı B bilgisayarına bağlantı sonlandırma isteğini aldığına dair TCP ACK mesajı yollar.
5. Bu işlemlerin sonunda TCP bağlantısı sonlandırılmış olur. Buna 4 zamanlı el sıkışma denir.
Görüldüğü üzere, bağlantının kurulmasından farklı olarak bağlantı her cihaz için ayrıca kapatılmaktadır. Bunun nedeni, istenildiğinde bağlantının tek yönlü olarak açık tutulabilmesini sağlamaktır. Bunun için tek tarafın bağlantı kapama adımlarını gerçekleştirmesi gerekir.
UDP (User Datagram Protocol - Kullanıcı Veri bloğu İletişim Kuralları), 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.
Geniş alan ağlarında (WAN) ses ve görüntü aktarımı gibi gerçek zamanlı veri aktarımlarında UDP kullanılır.
UDP bağlantı kurulum işlemlerini, akış kontrolü ve tekrar iletim işlemlerini yapmayarak veri iletim süresini en aza indirir.
UDP ve TCP aynı iletişim yolunu kullandıklarında UDP ile yapılan gerçek zamanlı veri transferinin servis kalitesi TCP'nin oluşturduğu yüksek veri trafiği nedeniyle azalır.
UDP'yi kullanan protokollerden bazıları DNS, TFTP ve SNMP protokolleridir. Uygulama programcıları birçok zaman UDP'yi TCP'ye tercih eder, zira UDP ağ üzerinde fazla bant genişliği kaplamaz.
UDP güvenilir olmayan bir aktarım protokolüdür. Ağ üzerinden paketi gönderir ama gidip gitmediğini takip etmez ve paketin yerine ulaşıp ulaşmayacağına onay verme yetkisi yoktur. UDP üzerinden güvenilir şekilde veri göndermek isteyen bir uygulama bunu kendi yöntemleriyle yapmak zorundadır.
UDP, Ulaşım katmanı'nda faaliyet gösteren bir protokoldür. Verilerin doğru ya da yanlış şekilde iletilip iletilmediğini garanti etmez (connectionless).
TCP, bağlantı tabanlı (connection oriented) bir protokoldür, UDP bağlantı tabanlı değildir (connectionless).
TCP'de akış kontrolü vardır, UDP'de akış kontrolü yoktur.
TCP başlığı (header) 20 bayttır, UDP başlığı 8 bayttır.
TCP, UDP'den daha yavaştır, çünkü verinin karşı tarafa ulaşıp ulaşmadığını kontrol eder.
UDP, ses ve video gönderiminde kullanılır. TCP'ye göre daha hızlıdır fakat güvenilir (reliable) değildir. Veri ismine datagram denilir.
Datagramın segmentten farkı ise içerisinde sıra numarasının bulunmamasıdır.
NOT: Ulaşım katmanı TCP, UDP, SCTP, DCCP’ iletişim kurallarından oluşur.
Aşağıda yer alan siberyavuzlar.com ve scanme.nmap.org sitelerinin nmap tarama sonuçları ve whireshark ile paket analizleri yer almaktadır.
Bu örnek scanme.nmap.org için yapılan Nmap taramasının sonucunda 22,25,80,9929 ve 31337 portlarının açık olduğunu göstermektedir.
22 numaralı portu taradığımız sorguda State’in open çıkmasındaki sebebi anlamak için Nmap taraması yapmadan önce whireshark ile scanme.nmap.org adresinin ip adresini < ip.addr == 45.33.32.156 > filtreleyerek gelen ve giden paketleri dinlemeye başlıyoruz.
Sorguda Durumun Open çıkmasının sebebinin ana bilgisayarın ip adresinden hedef ip adresine TCP (Transmission Control Protocol) üzerinden gönderilen SYNchronize paketine karşılık olarak SYN+ACKnowledgement paketlerinin gelmesi sonucu oluştuğunu görmekteyiz.
Bu örnek scanme.nmap.org için yapılan Nmap taramasının sonucunda 22,25,80,9929 ve 31337 portlarının açık olduğunu göstermektedir.
67 numaralı portu taradığımız sorguda State’in closed çıkmasındaki sebebi anlamak için Nmap taraması yapmadan önce whireshark ile scanme.nmap.org adresinin ip adresini < ip.addr == 45.33.32.156 > filtreleyerek gelen ve giden paketleri dinlemeye başlıyoruz.
Sorgu sonucunun Closed çıkmasındaki sebebi Scname.nmap.org’un 67 numaralı portuna gönderilen SYNchronize paketine karşılık olarak gelen RST,ACK paketlerinin olduğunu görüyoruz.
Bu örnek siberyavzular.com için yapılan Nmap taramasının sonucunda 80 ve 433 portlarının açık olduğunu göstermektedir.
22 numaralı portu taradığımız zaman filtreli olduğunu görüyoruz ve arka planın nasıl işlediğini, bilgisayarlar arasındaki haberleşmenin nasıl olduğunu anlamak adına wireshark aracı ile siberyavuzlar.com adresine gönderdiğimiz paketleri inceliyoruz.
Sorguda state’in filtreli olarak görünmesindeki sebep ana bilgisayar ip adresinden hedef ip adresine TCP üserinden gönderilen SYNchronize paketine karşılık bir cevap alamamasından kaynaklandığını görebiliyoruz.
-Pn: Ping taramasını atla anlamına gelir. nmap, normalde hedefin çevrimiçi olup olmadığını kontrol etmek için ping gönderir. -Pn seçeneği ile bu kontrol atlanır ve doğrudan port taraması yapılır. Bu, hedefin ping yanıtlarını engellediği durumlarda kullanışlıdır.
-p 22: Taramanın sadece 22 numaralı port üzerinde yapılacağını belirtir. Bu port genellikle SSH (Secure Shell) hizmeti için kullanılır.
TCP Syn taraması, kaynak cihazın hedef cihaza TCP SYN işaretli segment göndermesiyle başlar. Bu işlem, portların durumunu tespit etmek için kullanılan yarı açık veya prematüre bir tarama tekniğidir. Kapalı portlara karşı hedef cihaz RST + ACK işaretli bir segment ile yanıt verirken, açık portlara karşı SYN + ACK işaretli bir segment döner. Kaynak cihaz, bağlantıyı sonlandırmak için bir RST segmenti gönderir, böylece TCP üç yönlü el sıkışması tamamlanmamış olur. Bu yöntemin kullanımı için aşağıdaki komut önerilir:
nmap -sS -v [Hedef_IP]
-sS: TCP SYN (Yarı Açık) Taraması. TCP bağlantısının ilk aşamasını (SYN) kullanarak port durumunu kontrol eder. Bu yöntem tam bir TCP bağlantısı kurmadan portların açık olup olmadığını belirler.
TCP Connect taraması, kaynak cihazın hedef cihazla tam bir TCP bağlantısı kurma girişiminde bulunduğu bir yöntemdir. Kapalı portlara yapılan taramalarda hedef cihaz RST + ACK işaretli bir segment dönerken, açık portlar için üç yönlü el sıkışma tamamlanır. Bu tarama yöntemi için kullanılacak komut şu şekildedir:
nmap -sT -v [Hedef_IP]
-sT: TCP Connect Taraması. Kaynak cihazın hedef cihazla tam bir TCP bağlantısı kurmasını denediği tarama türüdür. Sistem çağrıları kullanılarak gerçekleştirilir ve tam bir el sıkışma işlemi yapılır.
FIN taraması, hedef cihaza bir TCP bağlantı talebi olmaksızın FIN işaretli bir segment gönderilmesini içerir. Kapalı portlar, RST + ACK işaretli bir segment ile yanıt verirken, açık portlar herhangi bir yanıt vermez. Bu yöntem için kullanılması gereken komut aşağıdaki gibidir:
nmap -sF -v [Hedef_IP]
-sF: FIN (Gizli) Taraması. Hedefe bir TCP FIN paketi gönderilir. Açık portlar genellikle herhangi bir yanıt göndermezken, kapalı portlar bir RST paketi gönderir.
Xmas taraması, TCP segmentine URG, PSH ve FIN bayraklarının ayarlandığı bir tarama türüdür. Kapalı portlar, RST + ACK işaretli bir segment ile yanıt verirken, açık portlardan herhangi bir yanıt gelmez. Bu tarama için önerilen komut şöyledir:
nmap -sX -v [Hedef_IP]
-sX: Xmas Taraması. URG, PSH ve FIN bayrakları birlikte ayarlanmış TCP paketleri gönderilir. Bu da kapalı portların RST ile yanıt vermesine, açık portların ise genellikle sessiz kalmasına neden olur.
Null taraması, herhangi bir bayrağın bulunmadığı bir tarama yöntemidir. Kapalı portlar RST + ACK işaretli bir segment ile yanıt verirken, açık portlardan yanıt gelmez. Bu tarama tekniğini uygulamak için aşağıdaki komut kullanılmalıdır:
nmap -sN -v [Hedef_IP]
-sN: Null Taraması. TCP bayrakları ayarlanmamış paketler gönderilir. Kapalı portlar RST ile yanıt verirken, açık portlar genellikle yanıt vermez.
Ping taraması, kaynak cihazın hedef cihaza bir ICMP Echo istek paketi göndermesi ve hedef cihazın bu isteğe bir Echo cevabı döndürmesi prensibine dayanır. Erişilebilir ve ICMP filtrelemesi olmayan cihazlar cevap döner. Bu tarama için kullanılacak komut şudur:
nmap -sP -v [Hedef_IP]
-sP: Ping Taraması. Hedefin canlı olup olmadığını kontrol etmek için ICMP Echo istekleri veya diğer yöntemler (TCP/UDP paketleri) kullanılır.
UDP taraması, kaynak cihazın hedef cihaza UDP datagramları gönderdiği ve hedef cihazın bu datagramlara nasıl tepki verdiğine bağlı olarak port durumunu belirlediği bir yöntemdir. Bu tarama için önerilen komut aşağıda verilmiştir:
nmap -sU -v [Hedef_IP]
-sU: UDP Taraması. UDP datagramları gönderilerek hedefin UDP portlarının durumu kontrol edilir. Açık/kapalı/yarı açık portlar farklı yanıtlar verebilir.
IP Protokol taraması, hedef cihazlar üzerinde çalışan IP tabanlı protokollerin tespit edilmesini amaçlar. Aktif protokoller herhangi bir yanıt döndürmezken, pasif protokoller RST bayraklı bir segment ile yanıt verir. Bu tarama yöntemi için kullanılması gereken komut şu şekildedir:
nmap -sO -v [Hedef_IP]
-sO: IP Protokol Taraması. Hedefte desteklenen IP protokollerini saptamak için kullanılır. Farklı IP protokol numaralarına sahip paketler gönderilir.
ACK taraması, kaynak cihazın hedef cihaza TCP ACK işaretli bir segment göndermesi ve hedef cihazın bu isteğe nasıl tepki gösterdiğine bağlı olarak port durumunu belirleme yöntemidir. Bu tarama için önerilen komut şöyledir:
nmap -sA -v [Hedef_IP]
-sA: ACK Taraması. Bu tarama yöntemi, ağdaki filtreleme kurallarını belirlemek için kullanılır. Gönderilen ACK paketleriyle hangi portların durum filtreli olduğunu anlamaya çalışır.
Window taraması, ACK taramasına benzer ancak TCP pencereleme mekanizması üzerinden portların açık olup olmadığını belirleyebilir. Bu tarama yöntemi için kullanılacak komut aşağıdaki gibidir:
nmap -sW -v [Hedef_IP]
-sW: Window Taraması. ACK taramasına benzer şekilde çalışır ancak TCP pencere boyutu bilgisini kullanarak portların durumunu belirlemeye çalışır.
IdleScan, kaynak cihazın tarama sürecinde aktif rol almadığı, başka cihazlar üzerinden hedef cihazı tarayarak bilgi toplama yöntemidir. Bu tarama için kullanılması gereken komut şudur:
nmap -sI -v [Zombie_IP] [Hedef_IP]
-sI: IdleScan. "Zombie" bilgisayarın IP adresi kullanılarak, taramanın kaynağının gizlenmesini sağlayan gelişmiş bir tarama yöntemidir. Tarama sonuçlarını öğrenmek için hedefe doğrudan paket göndermek yerine, ara bilgisayar (zombie) kullanılır.
-v : seçeneği Nmap'te "verbose" modunu etkinleştirir. Bu mod, tarama sırasında daha fazla çıktı ve bilgi sağlar, böylece kullanıcı taramanın ilerleyişi hakkında daha detaylı geri bildirim alır. Özellikle, karmaşık tarama senaryolarında veya hata ayıklama sırasında ne olup bittiğini anlamak için yararlıdır. -v seçeneğini kullanarak, açılan portlar, tarama süresi, hedef hostların durumu ve daha fazlası gibi tarama işlemine dair ek bilgiler elde edilebilir.
ANAHTAR | ÖRNEK | TARİF |
---|---|---|
ANAHTAR | ÖRNEK | TARİF |
---|---|---|
ANAHTAR | ÖRNEK | TARİF |
---|---|---|
ANAHTAR | ÖRNEK | TARİF |
---|---|---|
ANAHTAR | ÖRNEK | TARİF |
---|---|---|