Sızma testi, en basit ifadeyle, beyaz şapkalı hackerlar ve/veya sızma testi uzmanları tarafından belli bir metodoloji içinde yapılan hacking faaliyetidir. Sızma testi yapılmadan önce hedef sistem sahibi tarafından, Scope of Work, Rules of Engagement, Non Disclosure Agreement gibi çeşitli belgeler imzalanmalıdır. Sızma testi, müşterinin talebi doğrultusunda blackbox, graybox ya da whitebox olabilir. Bu aşamadan sonra türü ne olursa olsun, bir sızma testinin en önemli aşaması “Bilgi Toplama” aşamasıdır. İşte burada Nmap devreye giriyor.
Bilgi güçtür
Sızma testinin yapılacağı sistem hakkında mümkün olduğunca bilgi toplamak gereklidir. Hedef sistem hakkında ne kadar çok bilgi toplanabilirse, o kadar çok enumaration yapılabilir. Bu da daha fazla explotation olasılığı anlamına gelmektedir.
Bilgi toplama aşaması sırasında kullanılan en önemli araçlardan biri olan Nmap sayesinde hedef IP aralığını tarayıp, açık/kapalı port bilgileri ile birlikte sistem üzerinde koşan işletim sistemi ve servisler hakkında ayrıntılı bilgi elde etmek mümkündür. Nmap sayesinde ayrıca ağ haritalaması da yapılabilir.
Standart portlar
Ağa bağlı her cihazda toplam 65535 port bulunmaktadır. Bunlardan bir kısmı standart portlar olarak tanımlanmıştır. Örneğin HTTP protokolü için standart port, 80’dir. HTTPS için ise 443. Windows NETBIOS için ayrılmış port 139’dur. SMB için ayrılmış port ise 445’dir. Bu şekilde belirli protokol ve servisler için ayrılmış çeşitli portlar bulunmaktadır. Bu portlar sistem yöneticileri tarafından değiştirilebilir, ancak genel olarak sabit portlar kullanılmaktadır.
Nmap ile tarama yapıldığında, hangi port’un açık olduğu tespit edilirse, sistem üzerinde bu portun standart olarak koştuğu uygulama, servis ya da protokollerin de var olduğu ortaya çıkmaktadır. Nmap ile farklı şekillerde port taraması yapılabilir. Nmap’in çalışma prensibi aslında epey basittir. Tarama işlemi sırasında Nmap her porta bağlanır ve portlardan gelen yanıtlara göre de open, closed, filtered gibi sonuç döndürür. Hangi portların açık olduğu öğrenildikten sonra da enumaration işlemi ile hedef sistemde koşan servisler ve sürümleri hakkında ayrıntılı bilgi elde edilmektedir.
Bir endüstri standardı: Nmap
Yukarıda saydığımız işlemlerin elle yapılması elbette mümkün. Geniş bir ağın taranması gerektiği durumlarda süreç uzayacak, bu da efor/maliyet açısından olumsuz bir geri dönüş anlamına gelecektir. Bu sebeple tüm bu işlemlerin otomatize edildiği araçların kullanılması, hem hız hem de hata payının minimize edilmesi açısından önem taşımaktadır.
Peki, bunca araç varken neden Nmap? Cevap çok basit… Nmap artık endüstri tüm siber güvenlik endüstrisi tarafından benimsenmiş bir standart diyebiliriz. Diğer taraftan Nmap, diğer alternatiflere göre çok daha hızlı ve etkin sonuçlar ortaya çıkarabiliyor. Nmap’in işlevselliği sadece bilgi toplama değil, aynı zamanda betik desteği sayesinde, zafiyet tespiti gibi pek çok farklı amaç için kullanılabilir kılmaktadır.
Birçok sızma testi aracında olduğu gibi Nmap de terminal üzerinden çalıştırılabilmektedir. Nmap’i aşağıdaki komutu girerek sisteminize kurabilirsiniz.:
sudo apt install nmap
Nmap’in çalıştırılması için de nmap komutunu girip, yanına çeşitli parametreler eklemeniz gerekmektedir. Nmap ile kullanabileceğiniz parametrelerin listesine help menüsü ile erişebilirsiniz:
nmap -h
Nmap ile port taraması yaparken kullanılabilecek üç temel tarama tipi bulunmaktadır. Bunlar:
- TCP Connect Taramaları (
-sT
) - SYN “Half-open” Taramaları (
-sS
) - UDP Taramaları (
-sU
)
Bunlardan başka, gerektiği hallerde kullanılabilecek, görece daha az ihtiyaç duyulan tarama tipleri de bulunmaktadır:
- TCP Null Taramaları (
-sN
) - TCP FIN Taramaları (
-sF
) - TCP Xmas Taramaları (
-sX
)
Nmap ile nasıl tarama yapılacağına değinmeden önce, TCP ve UDP bağlantı yapılarını inceleyelim:
TCP Connect Taramaları
TCP Connect taraması (-sT
) yapabilmek için “üçlü ek sıkışması” konusunu bilmek gerekmektedir. Adından da anlaşılacağı üzere, üçlü el sıkışması üç aşamadan oluşmaktadır. İlk aşamada istemci, hedefe SYN paketi gönderir. Daha sonra sunucudan SYN/ACK paketi yanıtı döner. Üçüncü ve son aşamadaysa istemci el sıkışmayı ACK paketi göndererek sonlandırır.
Nmap bir SYN bayraklı bir TCP paketi gönderdiğinde eğer hedef RST (Reset) paketi gönderirse, Nmap bu port’un kapalı olduğunu anlayacaktır. Eğer hedeften SYN/ACK bayraklı bir TCP paketi dönerse, Nmap bu kez portun açık olduğunu algılayacaktır. Eğer hedef sistemde bir güvenlik duvarı varsa da bu kez paketler “drop” olacağından, Nmap bunları “filtered” şeklinde gösterecektir.
SYN taramaları
SYN taramaları (-sS
) aynı zamanda “Half-open” ya da “Stealth” scan olarak da tanımlanmaktadır. Daha önce belirttiğimiz gibi TCP taramaları tam bir üçlü el sıkışma protokolü uygular. SYN taramalarında ise prosedür RST paketi ile sonlanır. Daha basit ifade etmek gerekirse, SYN taramalarında ilk aşamada istemci SYN Paketi gönderir. Hedef SYN/ACK paketi döndürür. Son olarak istemci RST paketi göndererek bağlantıyı sonlandırır.
Sızma testi sırasında SYN taraması kullanmanın çeşitli avantajları bulunmaktadır. Stealth tarama olarak da kullanılabilen bu tarama yöntemi, IDS ve IPS sistemlerini bypass etmek için kullanılır. Tam bir üçlü el sıkışma protokolü uygulanmadığından, TCP Connect taramalarına göre daha hızlı sonuç döndürür.
SYN taraması yapabilmek için sistem üzerinde yönetici haklarına sahip olmak gerekir. Bu sebeple Linux işletim sisteminde sudo
komutu ile birlikte kullanılmalıdır. Aksi takdirde Nmap uygun şekilde çalışmaz. SYN taraması ayrıca, hedef sistemdeki güvenlik uygulamalarını bypass edebildiği için, kararlı olmayan yapılarda bazen sistemin çalışamaz hale gelmesine de sebep olabilmektedir.
SYN taramaları sırasında da Nmap, tıpkı TCP Connect taramasındaki gibi bir davranış sergiler. Port taraması sırasında hedeften RST yanıtı alınması halinde, Nmap bu port’un kapalı olduğunu algılamaktadır. Aynı şekilde TCP SYN paketi düşerse arkasında güvenlik duvarı olduğu anlaşılmaktadır.
UDP taramaları
TCP bağlantılarının aksine UDP bağlantıları stateless bağlantılardır. UDP bağlantılarında herhangi bir el sıkışma prosdedürü olmaksızın, paketler doğrudan hedef port’a gönderilir. Hızın önem teşkil ettiği durumlarda UDP bağlantıları tercih edilmektedir. Örneğin video yayınlar için TCP yerine UDP bağlantıları tercih edilmektedir. UDP taramaları, doğru bağlantı adımlarının uygulanmaması sebebiyle sızma testlerinde çok fazla tercih edilmemektedir. Yine de test sırasında UDP taraması yapılması gerektiğinde Nmap ile (-sU
) yapmak ve dönen sonuçları analiz etmek mümkündür.
UDP taramalarında, hedeften herhangi bir yanıt dönmüyorsa, UDP portunun açık olduğu varsayılmaktadır. Bu durumda portun yine de bir güvenlik duvarı ile korunduğu olasılığı da göz ardı edilmemelidir. Eğer hedeften bir ICMP yanıtı geliyorsa, Nmap bu port’un kapalı olduğu kanaatine varmaktadır.
Nmap Cheat Sheet
Hedef Belirleme
Tanım | Parametre | Örnek |
---|---|---|
Tek bir IP adresi tarama | nmap 192.168.1.1 | |
Çoklu IP adresi tarama | nmap 192.168.1.1 192.168.2.1 | |
Belli IP aralığını tarama | nmap 192.168.1.1-254 | |
CIDR notasyonu ile tarama | nmap 192.168.1.0/24 | |
Domain tarama | nmap scanme.nmap.org | |
Dosyadaki hedefleri tarama | -iL | nmap -iL targets.txt |
Rastgele 100 host tarama | -iR | nmap -iR 100 |
Belli IP’leri tarama dışı tutma | --exclude | nmap --exclude 192.168.1.1 |
Tarama Teknikleri
Tanım | Parametre | Örnek |
---|---|---|
TCP SYN port taraması (varsayılan) | -sS | nmap 192.168.1.1 -sS |
TCP bağlantı port taraması | -sT | nmap 192.168.1.1 -sT |
UDP port taraması | -sU | nmap 192.168.1.1 -sU |
TCP ACK port taraması | -sA | nmap 192.168.1.1 -sA |
TCP Window port taraması | -sW | nmap 192.168.1.1 -sW |
TCP Maimon port taraması | -sM | nmap 192.168.1.1 -sM |
Hedef Keşfi
Tanım | Parametre | Örnek |
---|---|---|
Tarama yapmadan hedefi listeler | -sL | nmap 192.168.1.1-3 -sL |
Port taramasını etkisizleştirir. Sadece hedef keşfi yapar. | -sn | nmap 192.168.1.1/24 -sn |
Host keşfini etkisizleştirir. Sadece port taraması yapar. | -Pn | nmap 192.168.1.1-5 -Pn |
Port X üzerinde TCP SYN keşfi yapar. Varsayılan port 80’dir. | -PS | nmap 192.168.1.1-5 -PS22-25,80 |
Port X üzerinde TCP ACK keşfi yapar. Varsayılan port 80’dir. | -PA | nmap 192.168.1.1-5 -PA22-25,80 |
Port X üzerinde UDP taraması yapar. Varsayılan port 40125’dir. | -PU | nmap 192.168.1.1-5 -PU53 |
Yerel ağ üzerinde ARP keşfi yapar. | -PR | nmap 192.168.1.1-1/24 -PR |
DNS tanımlaması yapılmaz. | -n | nmap 192.168.1.1 -n |
Port Belirleme
Tanım | Parametre | Örnek |
---|---|---|
Port X için port taraması yapar. | -p | nmap 192.168.1.1 -p 21 |
Port aralığı verir. | -p | nmap 192.168.1.1 -p 21-100 |
TCP ve UDP portlarını tarar. | -p | nmap 192.168.1.1 -p U:53,T:21-25,80 |
Tüm portları tarar. | -p | nmap 192.168.1.1 -p- |
Hizmet ismine göre port tarar. | -p | nmap 192.168.1.1 -p http,https |
Hızlı port taraması (100 port) | -F | nmap 192.168.1.1 -F |
En önemli X portu tarar. | --top-ports | nmap 192.168.1.1 --top-ports 2000 |
Port 1’den port 65535’e kadar tarar. | -p-65536 | nmap 192.168.1.1 -p-65535 |
Nmap ile İşletim Sistemi Tespiti
Tanım | Parametre | Örnek |
---|---|---|
Hedef sistemde koşan hizmetlerin sürümlerini tespit etmeye çalışır. | -O | nmap 192.168.1.1 -O |
En az bir adet açık ya da kapalı TCP port bulunmazsa OS tespiti denemesi yapılmaz. | -O --osscan-limit | nmap 192.168.1.1 -O --osscan-limit |
Nmap daha agresif tahmin işlemi gerçekleştirir. | -O --osscan-guess | nmap 192.168.1.1 -O --osscan-guess |
Hedef sistemde X kez OS tespit denemesi gerçekleşir. | -O --max-os-tries | nmap 192.168.1.1 -O --max-os-tries 1 |
OS tespiti, versiyon tespiti vs script taraması yapılır. | -A | nmap 192.168.1.1 -A |
Nmap ile Hizmet ve Sürüm Tespiti
Tanım | Parametre | Örnek |
---|---|---|
Hedef sistemde koşan hizmetlerin sürümlerini tespit etmeye çalışır. | -sV | nmap 192.168.1.1 -sV |
Yoğunluk seviyesini belirler. 0-9 arası bir değer verilir. | -sV --version-intensity | nmap 192.168.1.1 -sV --version-intensity 8 |
Light mode aktif hale gelir. | -sV --version-light | nmap 192.168.1.1 -sV --version-light |
Yoğunluk seviyesi 9’a çıkarılır. | -sV --version-all | nmap 192.168.1.1 -sV --version-all |
OS tespiti, versiyon tespiti vs script taraması yapılır. | -A | nmap 192.168.1.1 -A |
Zaman ve Performans Ayarları
Tanım | Parametre | Örnek |
---|---|---|
Paranoid IDS bypass | -T0 | nmap 192.168.1.1 -T0 |
IDS bypass | -T1 | nmap 192.168.1.1 -T1 |
Temkinli tarama | -T2 | nmap 192.168.1.1 -T2 |
Normal tarama (varsayılan hız) | -T3 | nmap 192.168.1.1 -T3 |
Agresif tarama | -T4 | nmap 192.168.1.1 -T4 |
Aşırı agresif tarama | -T5 | nmap 192.168.1.1 -T5 |
Dosya Çıktı Ayarları
Tanım | Parametre | Örnek |
---|---|---|
Normal dosya çıktısı | -oN | nmap 192.168.1.1 -oN normal.file |
XML dosya çıktısı | -oX | nmap 192.168.1.1 -oX xml.file |
Grep dosya çıktısı | -oG | nmap 192.168.1.1 -oG grep.file |
Her üç dosya biçiminde çıktı | -oA | nmap 192.168.1.1 -oA results |