TryHackMe — Active Reconnaissance Walkthrough — giselle

Merhaba, bugün TryHackMe’nin Active Reconnaissance odasının çözümünü anlatacağım.
Görev 1 Giriş
Network Security Modülü’nün ilk odasında pasif keşif (passive reconnaissance) konusuna odaklandık. Bu ikinci odada ise aktif keşif (active reconnaissance) ve bununla ilgili temel araçları ele alıyoruz. Hedefimiz hakkında daha fazla bilgi toplamak için web tarayıcısını nasıl kullanacağımızı öğreneceğiz. Ayrıca ping, traceroute, telnet ve nc gibi basit araçlarla ağ, sistem ve servisler hakkında nasıl bilgi edineceğimizi de inceleyeceğiz.
Önceki odada öğrendiğimiz gibi, pasif keşif hedefle herhangi bir doğrudan etkileşim veya bağlantı kurmadan bilgi toplamamızı sağlar. Uzaktan izliyor ya da kamuya açık bilgilere bakıyor gibiyiz.
Aktif keşif ise hedefle bir şekilde temas kurmayı gerektirir. Bu temas, sosyal mühendislik kapsamında daha fazla bilgi toplamak için yapılan bir telefon görüşmesi veya şirkete ziyaret olabilir. Alternatif olarak, hedef sisteme web sitesini ziyaret etmek veya güvenlik duvarında SSH portunu kontrol etmek gibi doğrudan bir bağlantı kurulabilir. Tıpkı kapı ve pencere kilitlerini yakından incelemek gibidir. Bu nedenle aktif keşif çalışmasına başlamadan önce müşteriden imzalı yasal yetkilendirme almanın şart olduğunu unutmamak gerekir.
Bu odada aktif keşfe odaklanıyoruz. Aktif keşif, hedef makineyle kurulan doğrudan bağlantılarla başlar. Her bağlantı; istemci IP adresi, bağlantı zamanı ve bağlantı süresi gibi bilgileri günlüklerde bırakabilir. Ancak tüm bağlantılar şüpheli değildir. Aktif keşfinizi normal istemci trafiği gibi göstermeniz mümkündür. Web gezintisini düşünün; tarayıcının yüzlerce meşru kullanıcı arasında hedef web sunucusuna bağlandığından kimse şüphelenmez. Red team (saldırgan) üyesi olarak blue team’i (savunucu) alarma geçirmek istemediğinizde bu tekniklerden yararlanabilirsiniz.
Görev 2 Web Tarayıcısı
Web tarayıcısı, özellikle her sistemde hazır bulunması nedeniyle kullanışlı bir araç olabilir. Bir hedef hakkında bilgi toplamak için web tarayıcısını çeşitli şekillerde kullanabilirsiniz.
Taşıma katmanında tarayıcı şu şekilde bağlanır:
- Web sitesine HTTP üzerinden erişildiğinde varsayılan olarak TCP 80 portuna
- Web sitesine HTTPS üzerinden erişildiğinde varsayılan olarak TCP 443 portuna
80 ve 443, HTTP ve HTTPS için varsayılan portlar olduğundan web tarayıcısı bunları adres çubuğunda göstermez. Ancak bir servise erişmek için özel port kullanmak mümkündür. Örneğin https://127.0.0.1:8834/, localhost’a (127.0.0.1) 8834 portundan HTTPS üzerinden bağlanır. O portta bir HTTPS sunucusu çalışıyorsa bir web sayfası alırız.
Bir web sayfasına göz atarken Firefox’ta Geliştirici Araçları’nı açmak için PC’de Ctrl+Shift+I, Mac’te Option + Command + I (⌥ + ⌘ + I) tuşlarına basabilirsiniz. Benzer kısayollar Google Chrome veya Chromium için de geçerlidir. Geliştirici Araçları, tarayıcınızın uzak sunucuyla alıp verdiği pek çok şeyi incelemenizi sağlar. Örneğin JavaScript (JS) dosyalarını görüntüleyip değiştirebilir, sisteminizdeki çerezleri inceleyebilir ve site içerik yapısını keşfedebilirsiniz.

Penetrasyon testinde yardımcı olabilecek Firefox ve Chrome için pek çok eklenti mevcuttur:
- FoxyProxy, hedef web sitesine erişirken kullandığınız proxy sunucusunu hızlıca değiştirmenizi sağlar. Bu tarayıcı eklentisi, Burp Suite gibi bir araç kullanırken ya da proxy sunucularını sık değiştirmeniz gerektiğinde pratiktir.
- User-Agent Switcher and Manager, web sayfasına farklı bir işletim sistemi veya farklı bir tarayıcıdan erişiyormuş gibi görünmenizi sağlar.
- Wappalyzer, ziyaret edilen web sitelerinde kullanılan teknolojiler hakkında bilgi verir. Bu eklenti, siteyi sıradan bir kullanıcı gibi gezerken tüm bu bilgileri toplamanızı sağladığından oldukça kullanışlıdır.

Zamanla iş akışınıza mükemmel uyan birkaç eklenti keşfedebilirsiniz.


Görev 3 Ping
Ping sizi ping-pong (masa tenisi) oyununu hatırlatmalıdır. Topu atarsınız ve geri gelmesini beklersiniz. Ping’in temel amacı, uzak sisteme ulaşıp ulaşamayacağınızı ve uzak sistemin size geri ulaşıp ulaşamayacağını kontrol etmektir. Başlangıçta ağ bağlantısını kontrol etmek için kullanılan bu komut; burada daha çok uzak sistemin çevrimiçi olup olmadığını kontrol etme amacıyla ilgilidir.
Ping komutu basitçe uzak bir sisteme paket gönderir ve uzak sistem yanıt verir. Bu sayede uzak sistemin çevrimiçi olduğunu ve iki sistem arasındaki ağın çalıştığını anlayabilirsiniz.
Daha teknik bir tanım vermek gerekirse, ping bir ICMP Echo paketi gönderir. Uzak sistem çevrimiçiyse ve ping paketi doğru yönlendirilmişse, herhangi bir güvenlik duvarı tarafından engellenmemişse uzak sistem bir ICMP Echo Reply göndermeli ve bu yanıt ilk sisteme ulaşmalıdır.
Böyle bir komutun amacı, hedef sistem üzerinde çalışan işletim sistemi ve servisleri keşfetmeye yönelik daha ayrıntılı taramalar yapmadan önce hedef sistemin çevrimiçi olduğundan emin olmaktır.
Linux sistemde ping MACHINE_IP veya ping HOSTNAME komutuyla ping gönderebilirsiniz. Linux’ta sayıyı belirtmezseniz durdurmak için Ctrl+C tuşlamanız gerekir. Sadece on paket göndermek istiyorsanız ping -c 10 MACHINE_IP komutunu kullanabilirsiniz. Bu komut, MS Windows’taki ping -n 10 MACHINE_IP komutuna eşdeğerdir.
Ping, teknik olarak ICMP (İnternet Kontrol Mesajı Protokolü) protokolü kapsamında yer alır.
Aşağıdaki örnekte toplam paket sayısını 5 olarak belirledik:
1user@AttackBox$ ping -c 5 MACHINE_IPPING MACHINE_IP (MACHINE_IP) 56(84) bytes of data.64 bytes from MACHINE_IP: icmp_seq=1 ttl=64 time=0.636 ms64 bytes from MACHINE_IP: icmp_seq=2 ttl=64 time=0.483 ms64 bytes from MACHINE_IP: icmp_seq=3 ttl=64 time=0.396 ms64 bytes from MACHINE_IP: icmp_seq=4 ttl=64 time=0.416 ms64 bytes from MACHINE_IP: icmp_seq=5 ttl=64 time=0.445 ms--- MACHINE_IP ping statistics ---5 packets transmitted, 5 received, 0% packet loss, time 4097msrtt min/avg/max/mdev = 0.396/0.475/0.636/0.086 msHedef sistemin yanıt verdiği açıkça görülüyor. Ping çıktısı sistemin çevrimiçi ve erişilebilir olduğunu gösteriyor. Beş paket gönderdik ve beş yanıt aldık. Yanıtın sistemimize ortalama 0.475 ms, maksimum 0.636 ms’de ulaştığını görüyoruz.
Ping yanıtı alınamadığında bunun birkaç olası nedeni vardır:
- Hedef bilgisayar yanıt vermiyor; muhtemelen hâlâ açılıyor, kapalı ya da işletim sistemi çökmüş.
- Ağdan kopmuş veya yol üzerinde arızalı bir ağ cihazı var.
- ICMP paketlerini engelleyecek şekilde yapılandırılmış bir güvenlik duvarı var. Not: MS Windows güvenlik duvarı ping’i varsayılan olarak engeller.
- Sisteminiz ağdan kopmuş.

Görev 4 Traceroute
Adından da anlaşılacağı gibi traceroute komutu, paketlerin sisteminizden başka bir ana bilgisayara giden rotayı izler. Traceroute’un amacı, bir paketin sisteminizden hedef ana bilgisayara giderken geçtiği yönlendiricilerin veya atlamaların (hop) IP adreslerini bulmaktır.
Linux ve macOS’ta traceroute MACHINE_IP, MS Windows’ta ise tracert MACHINE_IP komutu kullanılır.
Rotayı keşfetmenin doğrudan bir yolu yoktur; bunun için TTL (Time To Live) değerini küçük tutarak yönlendiricileri IP adreslerini açıklamaya “kandırırız”. IP başlık alanındaki TTL değeri, bir paketin düşürülmeden önce geçebileceği maksimum yönlendirici/atlama sayısını belirtir. Bir yönlendirici paketi aldığında TTL’yi bir azaltır ve bir sonraki yönlendiriciye iletir. TTL 0’a ulaştığında paket düşürülür ve “ICMP Time-to-Live exceeded” mesajı orijinal gönderene iletilir.


Traceroute’un iki farklı çalıştırmasında aynı komutun farklı rotalar izleyebileceğini görüyoruz:
1user@AttackBox$ traceroute tryhackme.comÖzet olarak şunlara dikkat etmek gerekir:
- Sisteminizden hedef sisteme giden yönlendirici/atlama sayısı, traceroute’u çalıştırdığınız zamana göre değişir.
- Bazı yönlendiriciler kamuya açık IP adresi döndürür.
- Bazı yönlendiriciler yanıt döndürmez.

Görev 5 Telnet
TELNET (Teletip Ağı) protokolü, komut satırı arayüzü (CLI) aracılığıyla uzak bir sistemle iletişim kurmak amacıyla 1969’da geliştirilmiştir. Telnet, varsayılan olarak 23 portunu kullanır. Güvenlik açısından telnet, kullanıcı adları ve parolalar dahil tüm verileri şifresiz metin olarak gönderir. Bu durum, iletişim kanalına erişimi olan herkesin giriş bilgilerini çalmasını kolaylaştırır. Güvenli alternatifi SSH (Güvenli Kabuk) protokolüdür.
Ancak telnet istemcisinin sadeliği sayesinde başka amaçlarla da kullanılabilir. TCP protokolüne dayanan telnet istemcisini, çalışan herhangi bir servise bağlanarak banner bilgisi toplamak için kullanabilirsiniz.
1pentester@TryHackMe$ telnet MACHINE_IP 80Trying MACHINE_IP...Connected to MACHINE_IP.Escape character is '^]'.GET / HTTP/1.1host: telnetHTTP/1.1 200 OKServer: nginx/1.6.2...Özellikle kurulu web sunucusunun türünü ve sürümünü öğrenmek açısından Server: nginx/1.6.2 bilgisi bize yararlıdır.


Görev 6 Netcat
Netcat veya kısaca nc, bir penetrasyon testçisi için büyük değer taşıyan farklı uygulamalara sahiptir. Netcat hem TCP hem de UDP protokollerini destekler. Bir dinleme portuna bağlanan istemci olarak ya da seçtiğiniz bir portu dinleyen sunucu olarak işlev görebilir.
Önce nc MACHINE_IP PORT ile bir sunucuya bağlanarak banner bilgisi toplayabilirsiniz:
1pentester@TryHackMe$ nc MACHINE_IP 80GET / HTTP/1.1host: netcatHTTP/1.1 200 OKServer: nginx/1.6.2...Server: nginx/1.6.2 çıktısına göre 80 portunda Nginx 1.6.2 gelen bağlantıları dinliyor.
Netcat’i bir TCP portunu dinlemek ve başka bir sistemdeki dinleme portuna bağlanmak için de kullanabilirsiniz.
Sunucu tarafında nc -vnlp 1234 komutunu kullanabilirsiniz.


Görev 7 Hepsini Bir Araya Getirmek
Bu odada pek çok farklı araç ele aldık. Bu araçlardan birkaçını bir shell script ile bir araya getirerek basit bir ağ ve sistem tarayıcısı oluşturmak mümkündür. Hedefe giden yolu haritalandırmak için traceroute, hedef sistemin ICMP Echo’ya yanıt verip vermediğini kontrol etmek için ping, hangi portların açık ve erişilebilir olduğunu görmek için ise telnet kullanabilirsiniz.

Bu araçlar temel düzeyde olsa da çoğu sistemde hazır bulunur. Özellikle bir web tarayıcısı neredeyse her bilgisayarda ve akıllı telefonda yüklü gelir; alarm vermeden keşif yaparken cephaneliğinizdeki önemli bir araç olabilir.

Son sorumuzu bulduk ve odayı tamamladık. Hacklemaya devam!
Pratik mükemmelleştirir. :)