Hoşgeldin Misafir

#PTHM-Aktif Keşif

CW-ommah

17 Ocak 2022
905 Mesaj
TIM Görevleri
1

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Allah’ın Rahmeti Ve Bereketi Üzerinize Olsun
Selamun aleyküm dostlarım. Bu makalemizde ,bir sistemin erişilebilir olup olmadığını test etmek ve TTL değerlerinden yararlanarak işletim sistemi hakkında çıkarımlarda bulunmak için ping kullanmayı. Eski sistemlerde servis bilgilerini (banner) almak için telnet kullanmak ve neden günümüzde daha modern alternatiflerin tercih edildiğini anlayacağız ve netcat (nc) kullanarak banner alma, temel port sorgulama ve basit istemci-sunucu iletişimi gerçekleştirmeyi öğreneceğiz allah’ın izniyle.

NOT:Bu Makalede kullanılan IP adresleri ile kesinlikle bir iletişime geçmeyin

WEB Browser
Web tarayıcısı, aktif keşif için kullanılabilecek en pratik ve en az şüphe çeken araçlardan biridir. Neredeyse her sistemde bulunur ve oluşturduğu trafik normal kullanıcı etkinlikleriyle aynı görünür. Bu nedenle savunma ekiplerinin, keşif amacıyla yapılan faaliyetleri meşru web gezintilerinden ayırt etmesi oldukça zor olabilir.

Taşıma Katmanı Temelleri

Tarayıcılar, düz HTTP için varsayılan olarak TCP port 80 üzerinden bağlanır; ancak günümüzde çoğu site otomatik olarak HTTPS’e yönlendirdiği için bu nadiren kullanılır. HTTPS için standart port TCP 443’tür ve günümüzde neredeyse tüm web siteleri bu portu kullanır.
Birçok modern site ayrıca HTTP/3’ü de destekler; bu protokol QUIC üzerinden çalışır. QUIC, başlangıçta Google tarafından geliştirilmiş bir taşıma protokolüdür ve TCP ile TLS’in işlevlerini tek bir protokolde, UDP port 443 üzerinden birleştirir. Sonuç olarak, geleneksel TCP+TLS bağlantılarına göre daha hızlı ve güvenilir bir iletişim sağlanır. Tarayıcıda Network (Ağ) sekmesinde, protokol sütunu h3 olarak görünüyorsa bu, HTTP/3 trafiğini gösterir.
Web servislerine standart olmayan portlardan erişmek için URL’de portu açıkça belirtebilirsiniz. Örneğin:

Bu tür bir URL kullanıldığında tarayıcı belirtilen porta bağlanmayı dener. Eğer ilgili portta bir web sunucusu dinliyorsa, sayfa yüklenir.

Geliştirici Araçları (Developer Tools)

Windows ve Linux'ta Ctrl + Shift + I, macOS'ta ise Option + Command + I tuşlarına basarak Firefox, Chrome, Edge veya Chromium tabanlı çoğu tarayıcıda Geliştirici Araçları'nı açabilirsiniz. Bu araçlarda bulunan bazı sekmeler keşif çalışmaları için doğrudan faydalıdır.

Network (Ağ) Sekmesi

Network sekmesi, tüm istekleri ve yanıtları gerçek zamanlı olarak gösterir. Burada:
  • İstek (request) ve yanıt (response) başlıkları
  • Server
  • X-Powered-By
  • Content-Security-Policy
  • Zamanlama bilgileri
  • HTTP durum kodları
  • Gönderilen ve alınan çerezler (cookies)
gibi bilgiler görüntülenebilir.

Console (Konsol) Sekmesi

Console sekmesi sayesinde:
  • Sayfa bağlamında doğrudan JavaScript kodları çalıştırabilir,
  • Hata mesajlarını görüntüleyebilir,
  • DOM (Document Object Model) ile etkileşim kurabilirsiniz.

Sources (Kaynaklar) Sekmesi

Sources sekmesi, sayfa tarafından yüklenen:
  • JavaScript dosyalarını,
  • CSS dosyalarını,
  • HTML dosyalarını
incelemenizi sağlar.
Bu, tarayıcı üzerinden yapılabilecek en pratik keşif tekniklerinden biridir. JavaScript kaynak dosyalarında sıklıkla şunlar bulunabilir:

  • Sabit kodlanmış (hardcoded) API uç noktaları (endpoints),
  • Dizin yapıları,
  • Dahili servislere ait referanslar,
  • Geliştiricilerin herkese açık olmasını istemediği yorumlar.
Bu dosyaların incelenmesi, sayfanın normal görüntüsünde görünmeyen bilgilerin ortaya çıkarılmasını sağlayabilir. Aşağıdaki sorularda bu tekniği kullanacaksınız.

Application (Uygulama) Sekmesi

Application sekmesindeki Storage (Depolama) bölümünde:
  • Cookies (Çerezler),
  • Local Storage,
  • Session Storage
içerikleri incelenebilir.
Bu depolama alanlarında bazen:

  • Oturum belirteçleri (session tokens),
  • Yanlışlıkla istemci tarafında açığa çıkarılmış API anahtarları,
  • Takip kimlikleri (tracking IDs),
  • Kimlik doğrulama verileri
bulunabilir.

Security (Güvenlik) Sekmesi

Security sekmesi, SSL/TLS sertifikasıyla ilgili ayrıntıları gösterir:
  • Sertifikayı veren kuruluş (Issuer),
  • Geçerlilik süresi,
  • Subject Alternative Names (SANs)
gibi bilgiler burada yer alır.
Özellikle SAN kayıtları, aynı kuruluşa ait ek alt alan adlarını (subdomains) veya ilişkili alan adlarını ortaya çıkarabilir ve keşif çalışmaları için değerli bilgiler sağlayabilir.
Aşağıda Firefox Geliştirici Araçları'nın bir ekran görüntüsü bulunmaktadır. Chrome ve Edge tarayıcıları da buna oldukça benzer bir arayüz sunar.

1780359350361.png

Tarayıcı Eklentileri

Tarayıcı eklentileri, tarayıcınızı daha yetenekli bir keşif platformuna dönüştürebilir. Aşağıdaki eklentiler günümüzde yaygın olarak kullanılmakta ve aktif olarak geliştirilmektedir.

FoxyProxy, Burp Suite, ZAP ve SOCKS5 tünelleri gibi farklı proxy'ler arasında geçiş yapmanızı sağlar. Bu özellik, bir çalışma sırasında trafiği yakalamak veya farklı araçlar üzerinden yönlendirmek gerektiğinde oldukça faydalıdır.

User-Agent Switcher and Manager, User-Agent bilgisini değiştirerek farklı tarayıcıları, işletim sistemlerini veya cihazları taklit etmenize olanak tanır. Örneğin, mobil Safari ya da eski bir tarayıcı sürümü gibi davranarak mobil cihazlara özel uç noktaları (endpoints) veya belirli sürümlere özgü davranışları keşfedebilirsiniz. Ancak günümüzde birçok WAF ve CDN, şüpheli veya sık gerçekleştirilen User-Agent değişikliklerini tespit edebilmektedir.
Wappalyzer, bir web sitesinde kullanılan teknolojileri otomatik olarak tespit eder. Bunlar arasında:

  • CMS platformları,
  • Web sunucuları,
  • JavaScript çatıları (frameworks),
  • Analitik araçlar,
  • CDN hizmetleri,
  • Veritabanları
yer alır. Tarayıcıda gezinirken pasif olarak çalışır ve hızlı teknoloji parmak izi çıkarma (technology fingerprinting) amacıyla en yaygın kullanılan eklentilerden biridir.
1780359464740.png
Diğer faydalı alternatifler arasında, Wappalyzer'a benzer şekilde çalışan ancak bazen farklı teknolojileri tespit edebilen BuiltWith Technology Profiler, daha hafif bir alternatif olan WhatRuns ve özellikle JavaScript kütüphaneleri ile framework'lerine odaklanan Library Detector bulunmaktadır. Zamanla çoğu kişi, kendi çalışma tarzına en uygun olan üç ila beş eklentiden oluşan küçük bir araç seti oluşturur.

Her ne kadar web'de gezinmek normal bir kullanıcı etkinliği gibi görünse de, alışılmadık davranış kalıpları modern WAF'lerin veya uç nokta tespit sistemlerinin davranış tabanlı kurallarını tetikleyebilir. Çok hızlı sayfa yüklemeleri, değiştirilmiş HTTP başlıkları (headers), Geliştirici Araçları'nın (DevTools) sık kullanımı ve olağan dışı User-Agent değerleri, savunma ekiplerinin dikkat ettiği göstergeler arasındadır.

Bu nedenle temel amaç, mümkün olduğunca meşru bir kullanıcının davranışlarını taklit etmektir.

Ping
Ping ismi, sonarın çıkardığı "ping" sesinden gelir. Sonarda bir sinyal gönderilir ve geri dönen yankı dinlenir. Ağ iletişiminde de ping komutu benzer şekilde çalışır. Uzak bir sisteme küçük bir test paketi gönderir ve karşı taraftan bir yanıt bekler.
Bu basit iletişim sayesinde hedef sistemin:

  • Ağ üzerinden erişilebilir olup olmadığı,
  • Çevrimiçi (online) olup olmadığı,
  • Gönderilen isteklere yanıt verip vermediği
anlaşılabilir.
Kısacası ping, bir sistemin ağ üzerindeki varlığını ve erişilebilirliğini doğrulamak için kullanılan en temel araçlardan biridir.

Ping Nasıl Çalışır

Ping, ICMP (Internet Control Message Protocol) protokolünü kullanır. Bir ICMP Echo Request (Yankı İsteği) paketi (type 8) gönderir. Eğer hedef bu paketi alır ve yanıt vermesine izin verilmişse, ICMP Echo Reply (Yankı Yanıtı) (type 0) paketiyle geri döner.
Bu iletişim oldukça hafif ve hızlıdır; bu yüzden ping, daha detaylı taramalara geçmeden önce yapılan ilk temel kontrol yöntemi olarak standart hâle gelmiştir.

Temel Kullanım

Linux ve macOS sistemlerinde, gönderilecek paket sayısını belirtmek için -c parametresi kullanılır.
Kod:
ping -c 5 10.112.131.110
Bu komut 10.112.131.110 adresine 5 adet ICMP Echo Request paketi gönderir ve gelen yanıtları görüntüler. Paketlerin gönderimi tamamlandıktan sonra ping işlemi otomatik olarak sonlanır
Bir ana bilgisayar adı (hostname) da ping'lenebilir. Bu durumda, ping işlemi başlamadan önce DNS çözümlemesi gerçekleştirilir.
Kod:
ping -c 5 random.com
Windows'ta ise aynı işlev için -n parametresi kullanılır.
Kod:
ping -n 5 10.112.131.110
Linux'ta paket sayısını belirtmezseniz, ping komutu süresiz olarak çalışmaya devam eder. Durdurmak için Ctrl + C yapmanız gerekmektedir.
Kod:
ping -4 -c 5 10.112.131.110
ping -6 -c 5 MACHINE_IPV6
İlk komut hedefe yalnızca IPv4 kullanarak beş ping paketi gönderir. İkinci komut ise hedefe yalnızca IPv6 üzerinden beş ping paketi gönderir. Bu sayede her iki protokolün erişilebilirliği ayrı ayrı test edilebilir.

Çıktının Yorumlanması: Başarılı Bir Ping

Aşağıdaki örnek, çalışır durumda olan (alive) ve ICMP trafiğine izin veren bir hedef sistemi göstermektedir. Bu durumda hedef, gönderilen ICMP Echo Request paketlerine ICMP Echo Reply paketleriyle yanıt verir.
Başarılı bir ping sonucunda genellikle şu bilgiler görüntülenir:

  • Hedefin IP adresi
  • Gönderilen ve alınan paket sayısı
  • Paket kaybı yüzdesi (packet loss)
  • Her yanıtın gecikme süresi (latency veya round-trip time)
  • Minimum, ortalama ve maksimum yanıt süreleri
Bu tür bir çıktı, hedef sistemin ağ üzerinden erişilebilir olduğunu ve isteklere yanıt verdiğini gösterir. Ayrıca gecikme süreleri, ağ bağlantısının performansı hakkında da temel bilgiler sağlar.
Kod:
ejder@CW-ommah:~/İndirilenler$ ping -c 5 10.112.131.110
PING 10.112.131.110 (10.112.131.110) 56(84) bytes of data.
64 bytes from 10.112.131.110: icmp_seq=1 ttl=62 time=66.3 ms
64 bytes from 10.112.131.110: icmp_seq=2 ttl=62 time=64.5 ms
64 bytes from 10.112.131.110: icmp_seq=3 ttl=62 time=63.3 ms
64 bytes from 10.112.131.110: icmp_seq=4 ttl=62 time=63.3 ms
^C
--- 10.112.131.110 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 63.258/64.330/66.294/1.237 ms

Hedef, gönderilen beş isteğin tamamına yanıt vermiştir; bu da sistemin çevrimiçi olduğunu ve ağ üzerinden erişilebildiğini doğrular. %0 paket kaybı (packet loss), ağ yolunun sorunsuz çalıştığını gösterir. Yaklaşık 0,5 ms olan gidiş-dönüş süresi (round-trip time) oldukça düşüktür; bu da hedefin büyük olasılıkla aynı yerel ağ üzerinde bulunduğunu gösterir.
TTL (Time To Live) alanı ise özellikle dikkat edilmesi gereken bir bilgidir. Adında "Time" (zaman) geçmesine rağmen TTL aslında bir paketin düşürülmeden önce geçebileceği maksimum yönlendirici (hop) sayısını ifade eder. Paket geçtiği her yönlendiricide TTL değeri bir azaltılır. Başlangıç TTL değeri işletim sistemi tarafından belirlenir; bu nedenle işletim sistemi tespiti (OS fingerprinting) açısından yararlı bir gösterge olabilir. Linux sistemleri genellikle 64, Windows sistemleri ise genellikle 128 başlangıç TTL değeri kullanır.
Ancak paket size ulaşana kadar aradaki yönlendiriciler bu değeri azaltır. Örneğin, bir yanıtta görülen TTL değeri 58, büyük olasılıkla altı yönlendirici uzaklıktaki bir Linux sistemine işaret eder; bu durum farklı bir işletim sistemi kullanıldığı anlamına gelmez. Sonuçları yorumlarken bu noktayı göz önünde bulundurmak önemlidir.

Çıktı Yorumlama: Yanıt yok
Kod:
ejder@CW-ommah:~/İndirilenler$ ping -c 5 10.112.131.110
PING 10.112.131.110 (10.112.131.110) 56(84) bytes of data.
From 10.112.131.110 icmp_seq=5 Destination Host Unreachable
From 10.112.131.110 icmp_seq=5 Destination Host Unreachable
From 10.112.131.110 icmp_seq=5 Destination Host Unreachable
From 10.112.131.110 icmp_seq=5 Destination Host Unreachable
From 10.112.131.110 icmp_seq=5 Destination Host Unreachable

--- 10.112.131.110 ping statistics ---
5 packets transmitted, 0 received, +5 errors, 100% packet loss, time 4098ms
Yanıt alınamamasının birkaç yaygın nedeni vardır. Laboratuvar makinesi kapalı olabilir, çökmüş olabilir veya hâlâ açılış sürecinde olabilir. Ağ üzerindeki bir yönlendirici (router) ya da güvenlik duvarı (firewall), ICMP Echo Request paketlerini engelliyor olabilir. Hedef sistem, ICMP trafiğini düşüren bir NAT (Network Address Translation) arkasında bulunabilir.

Çoğu Windows sürümünde Windows Güvenlik Duvarı, varsayılan olarak ping isteklerini engeller. Kurumsal güvenlik duvarları, AWS, Azure ve GCP gibi bulut hizmet sağlayıcıları ile modern WAF ve CDN çözümleri de ICMP trafiğini sıklıkla tamamen engellemektedir.

Ayrıca sorun her zaman hedef tarafta olmayabilir; kullandığınız ağ veya kendi sisteminiz de dışarıya gönderilen ICMP paketlerini engelliyor olabilir. Bu nedenle ping'e yanıt alınamaması, hedef sistemin mutlaka kapalı veya erişilemez olduğu anlamına gelmez.

SonuçEn Olası AnlamıSonraki Adım
Hızlı yanıtlar, düşük veya hiç paket kaybı yokHedef çevrimiçi ve ICMP trafiğine izin veriyorPort taramasına geçin
"Destination Host Unreachable" (Hedef Ana Bilgisayara Ulaşılamıyor)Hedef kapalı veya hedefe giden bir ağ yolu bulunmuyorMakinenin açık olup olmadığını kontrol edin
Hata mesajı olmadan %100 paket kaybıICMP trafiği filtreleniyor veya engelleniyorNmap ile TCP/UDP tabanlı host keşfi deneyin
Yüksek gecikme süresi veya yoğun paket kaybıAğ yoğunluğu, uzun mesafe veya filtreleme söz konusu olabilirAğ yolunu traceroute ile inceleyin

TACEROUTE
Traceroute komutu, paketlerin sizin sisteminizden hedef bir sisteme giderken izlediği yolu takip eder. Amacı, yol üzerindeki yönlendiricilerin (hop'ların) IP adreslerini keşfetmek ve hedefe ulaşana kadar arada kaç yönlendirici bulunduğunu belirlemektir. Bu bilgiler; ağ topolojisini anlamak, filtreleme veya gecikmenin hangi noktada meydana geldiğini tespit etmek ve ağ altyapısını haritalandırmak açısından faydalıdır.
Ancak paketlerin izlediği yol sabit değildir. Birçok yönlendirici, ağdaki değişikliklere uyum sağlayan BGP ve OSPF gibi dinamik yönlendirme protokollerini kullanır. Ayrıca modern ağlarda yük dengeleme (load balancing) ve anycast routing teknikleri yaygın olarak kullanıldığından, aynı komutun art arda çalıştırıldığı durumlarda bile paketler farklı yollar izleyebilir.
Linux ve macOS sistemlerinde komut şu şekilde kullanılır:
Kod:
traceroute 10.112.131.110
Windows sistemlerinde ise eşdeğer komut şöyledir:
Kod:
tracert 10.112.131.110
IPv6 adresleri için aşağıdaki komut kullanılabilir:
Kod:
traceroute -6 MACHINE_IPV6

Traceroute Nasıl Çalışır?

Bir sistemden hedefe giden tam ağ yolunu doğrudan öğrenmenin bir yöntemi yoktur. Bunun yerine traceroute, IP başlığındaki TTL (Time To Live) alanından yararlanır. Bir paketi işleyen her yönlendirici (router), paketi iletmeden önce TTL değerini bir azaltır. TTL değeri 0'a ulaştığında, yönlendirici paketi düşürür ve göndericiye bir ICMP Time-to-Live Exceeded (TTL Süresi Aşıldı) mesajı gönderir.
Aşağıdaki diyagramda, TTL değeri 64 olan bir paketin bir sistemden ayrılışı gösterilmektedir. Paket, her biri TTL değerini bir azaltan dört yönlendiriciden geçtikten sonra hedefe TTL değeri 60 ile ulaşır.

1780360193868.png
Traceroute, TTL değeri 1'den başlayarak kademeli şekilde artırılan paketler göndererek, yol üzerindeki her yönlendiricinin sırayla IP adresini ortaya çıkarmasını sağlar.
  • TTL = 1 olan bir paket gönderildiğinde, ilk yönlendirici paketi alır, TTL değerini 0'a düşürür, paketi atar ve bir yanıt gönderir.
  • TTL = 2 olan bir paket gönderildiğinde, paket ilk yönlendiriciyi geçer ancak ikinci yönlendiricide TTL değeri 0'a ulaşır; ikinci yönlendirici paketi atarak yanıt verir.
  • TTL = 3 olduğunda ise paket üçüncü yönlendiriciye kadar ulaşır ve aynı işlem tekrarlanır.
Bu süreç, paket hedef sisteme ulaşıncaya kadar devam eder. Böylece traceroute, kaynak sistem ile hedef arasındaki tüm yönlendiricileri (hop'ları) sırayla keşfederek ağ yolunu haritalandırabilir.
1780360261542.png
Bazı yönlendiriciler, ICMP Time-to-Live Exceeded (TTL Süresi Aşıldı) mesajlarını göndermeyecek şekilde yapılandırılmıştır. Bu durum, keşif faaliyetlerini zorlaştırmak amacıyla tasarlanmış güvenli ortamlarda yaygın olarak görülür. Bu tür yönlendiriciler, traceroute çıktısında * (yıldız işareti) olarak görünür.
Linux'ta traceroute, varsayılan olarak UDP datagramları gönderir. UDP filtrelerini aşmak amacıyla TCP tabanlı izleme yapmak isterseniz aşağıdaki komutu kullanabilirsiniz:
Kod:
traceroute -T 10.112.131.110
ICMP tabanlı izleme gerçekleştirmek için ise şu komut kullanılır:
Kod:
traceroute -I 10.112.131.110
Bu seçenekler, ağ üzerinde farklı filtreleme ve güvenlik politikaları bulunduğunda hedefe giden yolu daha etkili şekilde analiz etmenize yardımcı olabilir.

Çıktının Okunması

Aşağıdaki iki örnek, ev ortamından random.com adresine iki kez çalıştırılmış traceroute çıktısını göstermektedir. Bu örnekler, aynı komut art arda çalıştırıldığında ağ yollarının nasıl değişebileceğini ortaya koymaktadır.
Kod:
jder@CW-ommah$ traceroute random.com
traceroute to random.com (172.67.69.208), 30 hops max, 60 byte packets
 1 ec2-3-248-240-5.eu-west-1.compute.amazonaws.com (3.248.240.5) 2.663 ms * ec2-3-248-240-13.eu-west-1.compute.amazonaws.com (3.248.240.13) 7.468 ms
 2 100.66.8.86 (100.66.8.86) 43.231 ms 100.65.21.64 (100.65.21.64) 18.886 ms 100.65.22.160 (100.65.22.160) 14.556 ms
 3 * 100.66.16.176 (100.66.16.176) 8.006 ms *
 4 100.66.11.34 (100.66.11.34) 17.401 ms 100.66.10.14 (100.66.10.14) 23.614 ms 100.66.19.236 (100.66.19.236) 17.524 ms
 5 100.66.7.35 (100.66.7.35) 12.808 ms 100.66.6.109 (100.66.6.109) 14.791 ms *
 6 100.65.14.131 (100.65.14.131) 1.026 ms 100.66.5.189 (100.66.5.189) 19.246 ms 100.66.5.243 (100.66.5.243) 19.805 ms
 7 100.65.13.143 (100.65.13.143) 14.254 ms 100.95.18.131 (100.95.18.131) 0.944 ms 100.95.18.129 (100.95.18.129) 0.778 ms
 8 100.95.2.143 (100.95.2.143) 0.680 ms 100.100.4.46 (100.100.4.46) 1.392 ms 100.95.18.143 (100.95.18.143) 0.878 ms
 9 100.100.20.76 (100.100.20.76) 7.819 ms 100.92.11.36 (100.92.11.36) 18.669 ms 100.100.20.26 (100.100.20.26) 0.842 ms
10 100.92.11.112 (100.92.11.112) 17.852 ms * 100.92.11.158 (100.92.11.158) 16.687 ms
11 100.92.211.82 (100.92.211.82) 19.713 ms 100.92.0.126 (100.92.0.126) 18.603 ms 52.93.112.182 (52.93.112.182) 17.738 ms
12 99.83.69.207 (99.83.69.207) 17.603 ms 15.827 ms 17.351 ms
13 100.92.9.83 (100.92.9.83) 17.894 ms 100.92.79.136 (100.92.79.136) 21.250 ms 100.92.9.118 (100.92.9.118) 18.166 ms
14 172.67.69.208 (172.67.69.208) 17.976 ms 16.945 ms 100.92.9.3 (100.92.9.3) 17.709 ms
Bu çıktı, her biri bir hop (sıçrama) temsil eden numaralandırılmış 14 satır içermektedir. Sistem, her TTL değeri için üç paket gönderir; bu nedenle her satırda en fazla üç IP adresi ve üç gidiş-dönüş süresi (round-trip time) görürsünüz. Bazı satırlarda aynı hop numarası için farklı IP adresleri görünmesinin nedeni, yük dengelemenin (load balancing) her üç paketin biraz farklı yollar izlemesine neden olmasıdır.

12. satırı ele alalım. 99.83.69.207 adresindeki yönlendirici, üç paketin tamamına yanıt vermiştir ve gidiş-dönüş süreleri sırasıyla 17.603 ms, 15.827 ms ve 17.351 ms’dir. 3. satırda ise üç paketten yalnızca biri yanıt almıştır. Diğer iki * sembolü, kalan iki ICMP Time-to-Live Exceeded mesajının yönlendirici tarafından ya düşürüldüğünü ya da engellendiğini gösterir.
Son satır (14. hop), traceroute başlığında random.com için gösterilen hedef IP adresiyle eşleşen 172.67.69.208 adresini göstermektedir. Bu, traceroute işleminin toplam 14 hop boyunca başarıyla tamamlandığı anlamına gelir. 1 ile 13 arasındaki hop’lar ara yönlendiricileri, 14. hop ise doğrudan hedefi temsil eder.
Kod:
root@CW-ommah$ traceroute random.com
traceroute to random.com (104.26.11.229), 30 hops max, 60 byte packets
 1 ec2-79-125-1-9.eu-west-1.compute.amazonaws.com (79.125.1.9) 1.475 ms * ec2-3-248-240-31.eu-west-1.compute.amazonaws.com (3.248.240.31) 9.456 ms
 2 100.65.20.160 (100.65.20.160) 16.575 ms 100.66.8.226 (100.66.8.226) 23.241 ms 100.65.23.192 (100.65.23.192) 22.267 ms
 3 100.66.16.50 (100.66.16.50) 2.777 ms 100.66.11.34 (100.66.11.34) 22.288 ms 100.66.16.28 (100.66.16.28) 4.421 ms
 4 100.66.6.47 (100.66.6.47) 17.264 ms 100.66.7.161 (100.66.7.161) 39.562 ms 100.66.10.198 (100.66.10.198) 15.958 ms
 5 100.66.5.123 (100.66.5.123) 20.099 ms 100.66.7.239 (100.66.7.239) 19.253 ms 100.66.5.59 (100.66.5.59) 15.397 ms
 6 * 100.66.5.223 (100.66.5.223) 16.172 ms 100.65.15.135 (100.65.15.135) 0.424 ms
 7 100.65.12.135 (100.65.12.135) 0.390 ms 100.65.12.15 (100.65.12.15) 1.045 ms 100.65.14.15 (100.65.14.15) 1.036 ms
 8 100.100.4.16 (100.100.4.16) 0.482 ms 100.100.20.122 (100.100.20.122) 0.795 ms 100.95.2.143 (100.95.2.143) 0.827 ms
 9 100.100.20.86 (100.100.20.86) 0.442 ms 100.100.4.78 (100.100.4.78) 0.347 ms 100.100.20.20 (100.100.20.20) 1.388 ms
10 100.92.212.20 (100.92.212.20) 11.611 ms 100.92.11.54 (100.92.11.54) 12.675 ms 100.92.11.56 (100.92.11.56) 10.835 ms
11 100.92.6.52 (100.92.6.52) 11.427 ms 100.92.6.50 (100.92.6.50) 11.033 ms 100.92.210.50 (100.92.210.50) 10.551 ms
12 100.92.210.139 (100.92.210.139) 10.026 ms 100.92.6.13 (100.92.6.13) 14.586 ms 100.92.210.69 (100.92.210.69) 12.032 ms
13 100.92.79.12 (100.92.79.12) 12.011 ms 100.92.79.68 (100.92.79.68) 11.318 ms 100.92.80.84 (100.92.80.84) 10.496 ms
14 100.92.9.27 (100.92.9.27) 11.354 ms 100.92.80.31 (100.92.80.31) 13.000 ms 52.93.135.125 (52.93.135.125) 11.412 ms
15 150.222.241.85 (150.222.241.85) 9.660 ms 52.93.135.81 (52.93.135.81) 10.941 ms 150.222.241.87 (150.222.241.87) 16.543 ms
16 100.92.228.102 (100.92.228.102) 15.168 ms 100.92.227.41 (100.92.227.41) 10.134 ms 100.92.227.52 (100.92.227.52) 11.756 ms
17 100.92.232.111 (100.92.232.111) 10.589 ms 100.92.231.69 (100.92.231.69) 16.664 ms 100.92.232.37 (100.92.232.37) 13.089 ms
18 100.91.205.140 (100.91.205.140) 11.551 ms 100.91.201.62 (100.91.201.62) 10.246 ms 100.91.201.36 (100.91.201.36) 11.368 ms
19 100.91.205.79 (100.91.205.79) 11.112 ms 100.91.205.83 (100.91.205.83) 11.040 ms 100.91.205.33 (100.91.205.33) 10.114 ms
20 100.91.211.45 (100.91.211.45) 9.486 ms 100.91.211.79 (100.91.211.79) 13.693 ms 100.91.211.47 (100.91.211.47) 13.619 ms
21 100.100.6.81 (100.100.6.81) 11.522 ms 100.100.68.70 (100.100.68.70) 10.181 ms 100.100.6.21 (100.100.6.21) 11.687 ms
22 100.100.65.131 (100.100.65.131) 10.371 ms 100.100.92.6 (100.100.92.6) 10.939 ms 100.100.65.70 (100.100.65.70) 23.703 ms
23 100.100.2.74 (100.100.2.74) 15.317 ms 100.100.66.17 (100.100.66.17) 11.492 ms 100.100.88.67 (100.100.88.67) 35.312 ms
24 100.100.16.16 (100.100.16.16) 19.155 ms 100.100.16.28 (100.100.16.28) 19.147 ms 100.100.2.68 (100.100.2.68) 13.718 ms
25 99.83.89.19 (99.83.89.19) 28.929 ms * 21.790 ms
26 104.26.11.229 (104.26.11.229) 11.070 ms 11.058 ms 11.982 ms
26. hop, hedef olan 104.26.11.229 adresidir ve 1 ile 25 arasındaki hop’lar ara yönlendiricilerdir. İki çalıştırma karşılaştırıldığında, ne hop sayısının ne de yol üzerindeki yönlendiricilerin aynı kaldığı görülmektedir. Bu durum, özel
likle Cloudflare ve Akamai gibi CDN’lerin kullanıldığı, anycast ve yük dengeleme mekanizmalarıyla yolları optimize ettiği dış ağ trafiğinde beklenen bir davranıştır.

Bu örneklerden üç temel gözlem çıkarılabilir. Sisteminiz ile hedef arasındaki hop sayısı, komutu çalıştırdığınız zamana bağlı olarak değişebilir. Paketlerin aynı yolu izlemesi garanti değildir; kısa zaman aralıklarında bile yük dengeleme, yedeklilik (failover) mekanizmaları ve dinamik yönlendirme güncellemeleri yolu değiştirebilir. Bazı yönlendiriciler, kapsamına bağlı olarak inceleyebileceğiniz genel IP adresleri döndürebilir; ancak bunlar üçüncü taraflara ait olabilir. Bazı yönlendiriciler ise hiç yanıt döndürmez; bu durum hız sınırlama (rate limiting), güvenlik duvarı kuralları veya ICMP yanıtlarını bastıran yapılandırmalardan kaynaklanabilir.

Ek Teknikler

Gerçek zamanlı ve sürekli bir görünüm için mtr 10.112.131.110 (My Traceroute) komutunu kullanabilirsiniz. Bu araç, traceroute ile ping benzeri istatistikleri birleştirerek her hop için paket kaybı ve gecikme bilgisi sunar. Filtreleri aşmak için TCP modu ile traceroute -T 10.112.131.110 veya ICMP modu ile traceroute -I 10.112.131.110 kullanılabilir. IPv6 için ise bağımsız traceroute6 komutu, çift yığınlı (dual-stack) ağlarla uyumluluk sağlar.

Telnet
TELNET (Teletype Network) protokolü, 1969 yılında uzak bir sistemle komut satırı arayüzü üzerinden iletişim kurmak amacıyla geliştirilmiştir. telnet komutu, bu protokolü uzaktan yönetim için kullanır ve varsayılan olarak 23 numaralı port üzerinden çalışır. Güvenlik açısından telnet, kullanıcı adları ve şifreler dahil olmak üzere tüm verileri düz metin (cleartext) olarak gönderir. Bu durum, iletişim kanalına erişimi olan herkesin giriş bilgilerini kolayca ele geçirebilmesini mümkün kılar. Güvenli alternatif ise tüm trafiği şifreleyen ve günümüzde uzak komut satırı erişimi için standart hâle gelen SSH (Secure Shell) protokolüdür.

Güvenlik eksikliklerine rağmen, telnet istemcisi keşif (reconnaissance) açısından faydalı bir özelliğe sahiptir. TCP üzerinden çalıştığı için herhangi bir TCP portuna bağlanmak ve sunucunun verdiği yanıtı gözlemlemek için kullanılabilir. Bu teknik banner grabbing (banner alma) olarak adlandırılır. Bir servise bağlanılır ve sunucunun gönderdiği ilk yanıt olan "banner" okunur. Bu banner’lar çoğunlukla o portta çalışan yazılımın adı ve sürümü gibi bilgileri ortaya çıkarır.

Sistemde telnet yüklü değilse, Debian ve Ubuntu sistemlerinde apt install telnet komutuyla kurulabilir. Ancak genel olarak benzer işlevleri daha esnek şekilde sunan netcat (nc) ve curl gibi alternatifler tercih edilir.
Aşağıdaki örnek, 80 numaralı portta çalışan bir web sunucusuna karşı banner grabbing işlemini göstermektedir. telnet 10.112.131.110 80 komutu ile bağlantı kurulur, ardından minimum bir HTTP isteği gönderilir. GET / HTTP/1.1 komutunun ardından host: example yazılması ve Enter tuşuna iki kez basılması, yanıt almak için yeterlidir.
Kod:
ejder@CW-ommah:~$ telnet 10.112.131.110 80
Trying 10.112.131.110...
Connected to 10.112.131.110.
Escape character is '^]'.

HTTP/1.1 200 OK
Server: nginx/1.6.2
Date: Tue, 17 Aug 2021 11:13:25 GMT
Content-Type: text/html
Content-Length: 867
Last-Modified: Tue, 17 Aug 2021 11:12:16 GMT
Connection: keep-alive
ETag: "611b9990-363"
Accept-Ranges: bytes
Burada dikkat çeken alan Server: nginx/1.6.2 bilgisidir; bu ifade, web sunucusu yazılımının türünü ve sürümünü ortaya çıkarır. Bu da aktif keşfin (active reconnaissance) tam olarak hedeflediği türde bir bilgidir. Yazılım sürümleri, CVE ve Exploit-DB gibi veritabanlarında bilinen güvenlik açıklarıyla karşılaştırılabilir.

Aynı banner alma tekniği (banner-grabbing), TCP tabanlı tüm servislerde çalışır. Bir mail sunucusuna bağlanıldığında HTTP yerine SMTP veya POP3 komutları kullanılır. Eğer 21 numaralı portta çalışan bir FTP sunucusuna bağlanılırsa, sunucu genellikle herhangi bir komut gerektirmeden bağlantı kurulur kurulmaz banner bilgisini gönderir. Temel prensip her zaman aynıdır: porta bağlan, sunucunun gönderdiği yanıtı oku ve gerekirse protokole özel komutlarla daha fazla bilgi elde et.

Modern ortamlarda birçok servis şifreleme kullanır. Örneğin SMTPS 465 numaralı portta, HTTPS ise 443 numaralı portta çalışır. Telnet şifrelenmiş bağlantıları işleyemez. HTTPS için curl --head https://10.112.131.110 veya openssl s_client -connect 10.112.131.110:443 kullanılabilir. TLS ile sarılmış diğer servisler için ise openssl s_client veya ncat --ssl uygun araçlardır.

NetCat
Netcat (kısaca nc), hem TCP hem de UDP protokollerini destekleyen çok yönlü bir ağ aracıdır. Dinleyen (listening) bir porta bağlanan bir istemci gibi çalışabildiği gibi, istediğiniz bir portta dinleme yapan bir sunucu gibi de davranabilir. Bu çift yönlü yetenek, onu banner alma (banner grabbing), port kontrolü, basit dosya transferleri ve temel istemci-sunucu iletişimi için oldukça kullanışlı hale getirir. Nmap projesine ait ncat gibi modern sürümler ise IPv6 ve SSL şifrelemesini de destekleyerek, telnet gibi eski araçlara kıyasla daha esnek bir kullanım sunar.

Netcat ile Banner Alma

açıklanan banner alma (banner-grabbing) tekniği, nc ile de aynı şekilde çalışır. Kullanım sözdizimi şu şekildedir:
Kod:
nc 10.112.131.110 PORT
Bu komutla hedef portuna bağlanırsınız, ardından sunucunun yanıtını okumak için kullanılan protokole uygun komutlar gönderirsiniz. Dikkat edilmesi gereken nokta, GET satırından sonra bazı durumlarda satır atlamak için Shift + Enter tuş kombinasyonunu kullanmanız gerekebileceğidir.
Kod:
root@CW-ommah$ nc 10.112.131.110 80
GET / HTTP/1.1
host: netcat

HTTP/1.1 200 OK
Server: nginx/1.6.2
Date: Tue, 17 Aug 2021 11:39:49 GMT
Content-Type: text/html
Content-Length: 867
Last-Modified: Tue, 17 Aug 2021 11:12:16 GMT
Connection: keep-alive
ETag: "611b9990-363"
Accept-Ranges: bytes
...
Bu örnekte nc 10.112.131.110 80, 80 numaralı porta bir TCP bağlantısı açar. Ardından gönderilen GET / HTTP/1.1 HTTP isteği ve host: netcat satırı, Server: nginx/1.6.2 bilgisini içeren bir yanıt üretir; bu da web sunucusu yazılımını ve sürümünü ortaya çıkarır.

Aynı yöntem, TCP tabanlı tüm servisler için geçerlidir. 21 numaralı portta çalışan bir FTP sunucusuna nc 10.112.131.110 21 komutu ile bağlanıldığında, genellikle herhangi bir komut gerektirmeden sunucu yazılımını ve sürümünü gösteren bir banner hemen görüntülenir. 25 numaralı portta çalışan bir SMTP sunucusuna bağlanıldığında ise posta sunucusunu tanımlayan bir banner alınır. Temel prensip tüm protokoller için aynıdır: Bağlan, banner’ı oku ve gerekirse protokole özel komutlar gönder.

Netcat ile Dinleme (Listening)

Netcat, belirli bir port üzerinde dinleme yapan bir sunucu gibi de çalışabilir. Bu özellik; bağlantı testi yapmak, basit veri aktarımı gerçekleştirmek veya bir çalışma sırasında temel iletişim kanalları kurmak için kullanışlıdır.
Sunucu tarafında, 1234 numaralı portta dinleme başlatmak için aşağıdaki komut kullanılır:
Kod:
nc -vnlp 1234
İstemci tarafında ise bağlantı kurmak için şu komut çalıştırılır:
Kod:
nc 10.112.136.108 1234
Bağlantı kurulduktan sonra, bir tarafta yazılan herhangi bir metin karşı tarafa iletilir.

SeçenekAnlamı
-lDinleme modu
-pPort numarasını belirtir
-nYalnızca sayısal kullanım; hostname (alan adı) DNS çözümlemesi yapmaz
-vAyrıntılı çıktı (verbose), hata ayıklama için kullanışlıdır
-vvÇok ayrıntılı çıktı
-kİstemci bağlantısı kesildikten sonra dinlemeye devam eder
-p bayrağı, port numarasından hemen önce yer almalıdır. -n bayrağı ise DNS sorgularını ve buna bağlı uyarıları engeller. 1024’ün altındaki port numaralarında dinleme yapabilmek için root yetkileri gereklidir. IPv6 üzerinde dinleme yapmak için nc -6 -lp 1234 komutuyla -6 bayrağı eklenir. Hassas veri aktarımı için şifreleme gerekiyorsa, ncat --ssl kullanılabilir veya nc, stunnel gibi bir araçla birlikte eşleştirilebilir.

Hepisini Bir Araya Getirmek
Bu makale, aktif keşif (active reconnaissance) için kullanılan beş temel aracı ele almıştır. Geliştirici Araçları (Developer Tools) içeren web tarayıcısı; sunucu teknolojilerini, HTTP başlıklarını (headers), JavaScript kaynaklarını ve sertifika detaylarını ortaya çıkarır. ping, bir hedefin erişilebilir olup olmadığını doğrular ve TTL üzerinden işletim sistemi hakkında ipuçları sağlar. traceroute, sizinle hedef arasındaki ağ yolunu haritalandırarak aradaki yönlendiricileri ve olası filtreleme noktalarını gösterir. telnet ve netcat, belirli portlara bağlanarak banner bilgisi almayı ve çalışan servisleri sürümleriyle birlikte tespit etmeyi sağlar.

Bu araçlar tek başlarına basit görünse de, birlikte kullanıldıklarında daha gelişmiş tarayıcılara geçmeden önce hedef hakkında yapılandırılmış bir tablo oluşturmanıza yardımcı olur. Önce ping ile bir sistemin aktif olup olmadığı doğrulanabilir, ardından traceroute ile ağ yolu anlaşılabilir ve sonrasında nc ile belirli portlar test edilerek servisler tespit edilebilir. HTTP tabanlı servislerde banner alma için telnet yerine curl -I 10.112.136.108 veya nc 10.112.136.108 PORT tercih edilmelidir; çünkü bu araçlar daha güvenli ve esnek seçenekler sunar.

KomutÖrnek
pingLinux veya macOS için: ping -c 10 10.112.136.108
pingWindows için: ping -n 10 10.112.136.108
ping (IPv6)ping -6 MACHINE_IPV6 veya ping6 MACHINE_IPV6
tracerouteLinux veya macOS için: traceroute 10.112.136.108
tracertWindows için: tracert 10.112.136.108
traceroute (IPv6)traceroute -6 MACHINE_IPV6 veya traceroute6 MACHINE_IPV6
mtrGerçek zamanlı yol izleme için: mtr 10.112.136.108
telnet (eski)telnet 10.112.136.108 PORT_NUMBER
netcat istemci olaraknc 10.112.136.108 PORT_NUMBER
netcat sunucu olaraknc -lvnp PORT_NUMBER
netcat (IPv6)nc -6 MACHINE_IPV6 PORT_NUMBER
curl ile HTTP bannercurl -I http://10.112.136.108 veya curl -I https://10.112.136.108

İşletim SistemiGeliştirici Araçları Kısayolu
Linux veya WindowsCtrl + Shift + I
macOSOption + Command + I
1780362452033.pngOkuduğunuz için teşekkür ederim



CW-Ommah
Bug Researchers Tim Sundu...

1780362480556.png