10 Eylül 2015

Port Tarama Araçları ve Yöntemleri

Canlı sunucu ve cihazların tespiti, bunun sonrasında port tarama işlemlerinin gerçekleştirilmesi standart pentest çalışmalarının ilk adımlarındandır. Bu işlemler aynı zamanda temel ağ teknoloji bilgisine de sahip olunmasını gerektirmektedir. Port tarama yöntemleri adlı bu makalemizde bu temel teknikleri geniş şekilde inceledik.


Canlı Cihazların Tespiti
ICMP (Internet Control Message Protocol) kullanılarak network üzerindeki canlı sistemlerin tespiti sağlanabilir. Ping ve Traceroute programlarının kullandığı protokoldür. ICMP port bağımsız bir protokoldür. ICMP protokolünün kendine ait mesaj tipleri vardır. ICMP taramalarında  faydalı olabilecek mesaj tipleri şöyle sıralanabilir;
Type 3 (destination unreachable)
Type 8 (echo request)
Echo Request paketleri aynı zamanda ping olarak tanımlanabilir. Nmap tarzı araçlarla karşı tarafa gönderilen ping paketleri sayesinde sistemin durumu hakkında bilgi elde edilebilir.
Type 13 (timestamp request)
Timestamp Request ile karşıdaki sistemin , sistem zaman bilgisi elde edilebilir.
Type 15 (information request)
Information request ile sistemlerin boot edilme zamanları ve  network bilgileri gibi bilgiler elde edilebilir.
Type 17 (subnet address mask)
Bu istek ile sistemin subnet maskesi elde edilebilir. Ağ haritası çıkarılırken elde edilen subnet ile IP aralıkları tespit edilebilir.

Ping Sweep
ICMP Echo istekleri kullanılarak tüm network üzerine paketler gönderilir. Canlı olan sistemler gönderilen requestlere ICMP Echo Reply yanıtını dönerler. Belirtilen subnet üzerindeki her adrese Echo request gönderilmektedir.





Port Tarama Yöntemleri



TCP Portları Tarama

TCP Portlarının taranması için öncelikle TCP protokolü üzerinde bağlantını nasıl gerçekleştiğini incelemeliyiz. TCP üçlü el sıkışma (three way handshake) yöntemini kullanarak bağlantı kuran bir protokoldür. Bu işlemi bir sunucu ve bir client üzerinde kısaca inceleyelim;
1-Bağlantı kurmak isteyen Client,  Server tarafına SYN bayrağına (flag) bir istek gösterir.
2-Server bu isteğe karşılık olarak SYN+ACK bayraklarına sahip bir yanıt döner.
3-Son olarak Client ACK bayrağına sahip bir yanıt döner ve el sıkılşma gerçekleştirilip bağlantı kurulur.

TCP İletişim Bayrakları

SYN : Yeni bir sequence numarası ile bağlantı isteği başlatan bayraktır.
ACK : Acknowledge bayrağı veri aktarım isteğinin onaylandığıne ve sonraki adımda beklenen sequence number bilgisini belirler.
PSH : Sistem bağlantı isteğini kabul ettiğini ve tampomlanan bilginin gönderilmesini belirten bayraktır.
URG : Bayrağı taşıyan paketin mümkün olduğunda hızlı iletilmesini belirten bayraktır.
FIN : Daha fazla bilgi gönderilemeyeceğini bağlantının sonlandırılması gerektiğini belirten bayraktır.
RST : Bağlantıyı resetleyen bayraktır.

TCP Port Tarama Yöntemleri


        TCP Connect / Full Open Tarama
        Bu tarama TCP  taramalarında kullanılacak en güvenli yöntemdir. Tüm portlara (65,536) aynı anda istek gönderilir. Eğer üçlü el sıkışma gerçekleşirse, el sıkışmanın gerçekleştiği portların açık olduğu anlamına gelir. Olduça basit görünsede kolaycak tespit edilebilir. Çünkü sınır cihazları bu tür bağlantı isteklerini log kayıtlarında tutmaktadırlar.



Portlar kapalıysa hedeften RST/ACK yanıtı dönecektir.



Nmap ile TCP Connect Tarama
nmap –sT <adres>




Gizli (Stealth – Half Open ) Tarama
Gizli tarama yönteminde hedef porta tek bir SYN paketi gönderilir ve herhangi bir el sıkışma veya paket iletimi beklenmez. Bu taramada kısmen bir bağlantı kurulur, ancak bağlantı yarıda kesilir. Tek bir paket gönderilir ve cevap olarakda tek bir paket beklenir.
       Teorik olarak gizli tarama yönteminde üçlü el sıkışma gözlenebilir. Ancak burada odaklanması gerekilen kısım el sıkışmadaki son adımdır. İkinci adımda dönen yanıtın ardından tekrar bir bağlantı kurulmasına izin verilmez ve bağlantı kesilir. Adımları sırası ile incelersek

Açık Portlar Üzerinde

1- Hedefe client tarafından SYN paketi gönderilir.
2- SYN paketinin gönderildiği hedef SYN/ACK yanıtı döner.
3- Herhangi bir güvenlik önlemine yakalanmamak adına client ACK yerine RST paketi gönderir ve el sıkışmanın tamamlanmasını engeller.

Kapalı Portlar Üzerinde

1- Hedefe client tarafından SYN paketi gönderilir.
2- Hedef port kapalı olduğu için RST yanıtı döndürür.

Nmap ile Stealth Tarama

nmap –sS <adres>



Xmas Tarama
Xmas tarama yönteminde genellikle FIN-URG-PSH bayrakları tanımlanarak paket hedefe gönderilir. Gönderilen pakete hedef tarafından herhangi bir yanıt dönmezse port açık, eğer RST paketi dönerse port kapalı anlamına gelmektedir.

Nmap ile Xmas tarama
Nmap –sX <adres>
Nmap –sF –sU –sP <adres>

FIN Tarama
Hedefe FIN bayrağı taşıyan bir paket gönderilir. Eğer port açıksa hedef herhangi bir yanıt döndürmez,port kapalıysa RST paketi döndürür.
Nmap –sF <adres>

NULL Tarama
Hedefe hiçbir TCP bayrağı taşımayan bir paket gönderilir. Paketler hedefe ulaştığında port açıksa işletim sistemi tarafından drop edilir ve herhangi bir yanıt döndürmez. Eğer port açıksa RST paketi döndürür.
Nmap –sN <adres>

ACK Tarama
Bu teknikte hedefe ACK bayrağı taşıyan bir paket gönderilir ve hedeften dönen RST paketlerinin başlık bilgileri incelenir. Bu teknik filtrelenmiş portların ve firewall kurallarının anlaşılmasına yardımcı olabilir.
Nmap –sA <adres>





IDLE Tarama

Bu taramanın ana fikri başka bir host IP adresi kullanılarak  kendi IP adresinizin belirlenmesini engellemektir. Ancak bu yöntem diğerlerine göre biraz daha zahmetli ve karmaşıktır.
Metodun asıl fikri IP ID numarasını kullanarak saldırganın hedefe ne kadar paket gönderdiğini tespit etmesidir. Internet üzerindeki her IP paketi bir tanımlama numarası taşır (fragment identification number) bu numara IPID olarak adlandırılmaktadır. Birçok işletim sistemi paket her ulaştığında bahsettiğimiz  bu IPID numarasını arttırırlar.

Adım adım bu tarama yönetemini incelersek

1- Zombie olarak kullanılmak istenen cihazın IP ID’si tespit edilir.
2- Bir SYN paketi oluşturulur ve hedefin karar verilen portuna gönderilir. Portun açık veya kapalı olmasına göre IP ID arttırılacaktır.
3- Zombi cihazın IP ID’si tekrar kontrol edilir ve ilk adımda elde edilen ID ile karşılaştırılır.

Açık Port Taraması







Kapalı Port Tarama






Nmap Idle Tarama
Nmap –sI –Pn <zombie adres> <hedef adres>

IP Adres Spoof
Nmap ile tarama yaparken kendi IP adresinizi gizlemek için farklı adresin arkasına gizlenebilirsiniz. Bu işlem half-open tarama yöntemi ile birlikte kullanılır.
Nmap –sS –Pn –e eth0 –S <sahte adres> <tarama yapılacak adres>



Bu tür bir taramada –Pn komutunun kullanılması gereklidir. Bu sayede keşif için karşı tarafa ping paketi gönderilmez. Eğer ping paketi gönderilecek olursa kendi IP adresinizden gönderilecek ve gerçek IP adresiniz açığa çıkacaktır. Ayrıca paketlerin çıkacağı network arayüzü –e parametresi ile  birlikte belirtilmelidir.

UDP Portları Tarama
UDP port tarayıcıları protokol olarak TCP yerine UDP kullanılar ve TCP taramalara göre daha zordur. Hedef porta bir UDP paket gönderilebilir ancak durumu hakkında bilgi edinilemez. Burada devreye ICMP protokolü girer. Eğer kullanılmayan bir porta UDP paketi gönderirseniz size ICMP port unreachable yanıtını döndürecektir. Eğer port ICMP error yanıtı döndürürse port kapalı, eğer herhangi bir yanıt döndürmezse port açık demektir.
UDP protokolü connectionless bir protokoldür. Bu nedenle gönderilen herhangi paketin hedefe ulaşacağına dair bir garanti verilemez. UDP tarayıcılar kaybolan paketleri de  açık port olarak yorumlayabilir.

Nmap –sU <adres>

Taramalar Sırasında Faydalı Olabilecek Komutlar

Port taraması yapacağınız adresleri farklı biçimler belirtebilirsiniz.
Nmap –sT 10.0.0.0/8
Nmap –sT 10.0.0.1-250
Nmap –sT 10.0.0.1

Nmap default olarak en çok kullanılan 1000 portu taramaktadır. Siz farklı portları taramak isterseniz
-p komutunu kullanabilirsiniz.
Nmap –sS 192.168.2.222 -p 53
Nmap –sS 192.168.2.222 -p 1-200
Nmap –sS 192.168.2.222 -p- (65535 tüm portları tara) –r (-r parametresi sayesinde portlar sıralı olarak taranacaktır)

UDP ve TCP olarak ayırmak
Nmap –sS 192.168.2.222 –p U:53,T:25

Eğer çok fazla sayıda network tarayacaksanız hedefleri bir dosyadan okutabilirsiniz.
Nmap –sS –iL dosyaadi

Tarama sırasında gerçekleşen olayları takip etmek isterseniz debug ve verbose özelliklerini kullanabilirsiniz. Debug için –d parametresi kullanılmaktadır ve seviyelere ayrılmıştır. –d1-9 arasında seçim yapabilirsiniz yada –ddd biçiminde de belirtebilirsiniz.
Nmap –sS –v2 –d3 192.168.2.222 veya nmap –sS –vv –ddd 192.168.2.222



Gönderilen ve alınan paketlerin takip edilmesi için - -packet-trace komutu kullanılabilir. Ayrıca paketlerin takip edilmesi açısından tarama hızı yavaşlatılabilir. Bu işlem için –T komutu kullanılabilir.-T komutu 0-5 arası bir seçim yapmanızı isteyecektir.
Nmap –sS –T1 192.168.2.222 - -packet-trace –r





Tarama yapılan hostlarla ilgili detaylı bilgi edinilmek istenirse Aggresive scan yöntemi kullanılabilir. Bu yöntem ile işletim sistemi bilgisi, versiyon bilgileri gibi bilgiler elde edilebilir.
Nmap –A –T2 192.168.2.222

İşletim sistemi ve versiyon tespiti için diğer bir komut ise
Nmap –O –V 192.168.2.222 (-O parametresi işletim sistemi –V versiyon bilgisi için kullanılmaktadır)

Nmap tarama sonuçlarını bir dosyaya yazdırmak için aşağıdaki komutlar kullanılabilir.
Nmap –sT 192.168.2.222 –oN Normal bir çıktı dosyası üretir.
Nmap –sT 192.168.2.222 –oX XML tabanlı bir çıktı dosyası üretir.
Nmap –sT 192.168.2.222 –oG Grepable bir formatta çıktı dosyası üretir.

Hping3 ile Port Kontrolleri

Hping nmap benzeri bir paket üretme (crafting). Ürettiğimiz paketlere dönen yanıtlar ile portun açık veya kapalı olduğunu tespit edebiliriz. Daha önce bahsettiğimiz  taramaların benzerlerinin nasıl gerçekleştirileceğini hping aracı kullanarak gösterelim.
Hping nmap aracından farklı olarak varsayılan olaran herhangi bir flag taşımayan bir paketi 0 portuna gönderir. Bu nedenle kullanım esnasında bayrakları ve port numaralarını mutlaka belirtmek gereklidir.
Hping aracında kullanılabilecek protokoller
-0 Raw IP Modu
-1 ICMP
-2 UDP
-8 Scan
-9 Listen

SYN Tarama
Hping3 –S <adres> -p <tarama yapılacak port>


ACK Tarama
Hping3 –A <adres> -p <tarama yapılacak port>

FIN Tarama
Hping3 –A <adres> -p <tarama yapılacak port>

XMAS Tarama
Hping3 –FUP <adres> -p <tarama yapılacak port>

UDP Tarama
Hping3 -2 <adres> -p <tarama yapılacak port>

Detaylı bir çıktı almak için aşağıdaki komutlar kullanılabilir.
Hping3 –V –scan <port> -S <adres>

Birden fazla port taramak  için portlar virgülle ayrılabilir veya 1-100 aralığında aralık belirtilebilir.
Hping3 –S –p 1-100 <adres>


Hping aracında birden fazla host belirtme imkanımız bulunmamaktadır. Eğer birden fazla hostun portlarını kontrol edecekseniz adresinizin ait olduğu subneti taramanız gereklidir. Bunun için IP adresinizin sonuna X parametresini ve - -rand-dest komutunu kullanmanız gereklidir. Ayrıca paketlerin çıkacağı arayüzüde seçmeniz için –I parametresi kullanılmalıdır. Örnek olarak;

hping3 -S --scan 3389 --rand-dest 192.168.2.x -I eth0
Portları sırasıyla taramak için ++ parametresi kullanılabilir. Bu şekilde portlar birer birer arttırılır.
Hping3  -S –p ++20 <adres>



Hping üzerinde hedefe gönderilecek paket sayısı belirlenebilir.
Hping –S –p 3389 –c 2 <adres>

Port tarama yöntemleri arasında yukarıda saydığımız tekniklerin bir kısmı pratikte sürekli kullanılmakta, bir kısmı ise teorik olarak mevcut yöntemler olmakla birlikte genel olarak kullanılmamaktadır. Port tarama işlemleri sırasında unutulmaması gereken önemli noktalar her zaman bilinen portların kullanılmayabileceği ve uygulama katmanında uygulamanın cevap vereceği isteklerle port tarama (daha doğrusu uygulama tarama ya da "application mapping") yöntemlerinin kullanılma ihtiyacıdır.