Elayv

Sızma testleri sırasında hedefe ait IP adreslerini ortaya çıkarttıktan sonra dışarıya yayın yapan web sunucularını hızlıca tespit etmek, geliştirilen tehdit modeli çerçevesinde önemli bir yol almamıza imkan verebilir. Bir çok testte fabrika ayarlarında (ing. Default configuration) bırakılmış sunucuların internete açık olduğunu ve bu önemli olabilecek zafiyetin ağ ve sistem yöneticilerinin gözünden kaçtığını gördüm.

Çoğumuzun bildiği gibi testlerin (ve siber saldırıların) ilk adımını oluşturan bilgi toplama işlemleri “aktif” ve “pasif” olarak iki aşamada yapılır. Aktif olarak adlandırılan bilgi toplama çalışmalarında siber suçlular (veya sızma testini yapanlar) hedefle doğrudan temas kurarak bilgi toplarlar. Bu doğrudan temas port veya zafiyet taraması gibi görece “agresif” olarak adlandırabileceğimiz tarama yöntemlerinden oluşabilir. Pasif bilgi toplama adımı ise “halka açık” ve herkes tarafından ulaşılabilecek kaynakların derlenmesidir. Google ve Shodan aramaları, RIPE sorguları ve Netcraft hayatımıza hep bu adımla ilgili girmişlerdir.

RIPE araması

Hedefin IP adreslerini bulmak için kullanılabilecek bir kaç yöntem arasından en hızlı sonuç verecek olan büyük ihtimalle RIPE aramalarıdır.

IP adreslerini kıtalararasında adil bir şekilde paylaştıran IANA’dan (Internet Assigned Numbers Authority) sonra IP adreslerinin dağıtımını üstlenen alt kuruluşlar vardır. Afrinic, LATAM, APNIC, ARIN ve RIPE sırasıyla Afrika, Latin Amerika, Asya-Pasifik Bölgesi, Kuzey Amerika ve Avrupa’da IP adreslerinin dağıtımından sorumludurlar. Hedefin sahip olduğu IP adreslerini tespit etmek bu kaynaklardan faydalanabiliriz.

Bu noktada dikkat etmek gereken 2 konu var;

  • Hedef küçükse: Hedef kendi adına IP adresi kullanmıyor olabilir. Bu durumda hedefle ilgili yapacağınız aramalarda çıkacak IP aralığı devasa olabilir, bu büyük ihtimalle internet hizmeti aldıkları firmaya ait IP adresi aralığıdır. Testin kapsamında olmayan sistemleri listeleyip bunları taramaya başlamak istemeyiz.
  • Hedef büyükse: Hedefin çok uluslu olması durumunda birden fazla otoriteden IP adresi almış olabilir. Örneğin; Senegal’de ofisi bulunan bir Türk firması Afrinic’ten de bazı IP adresleri almış olabilir, bunları da araştırmak lazım.

Elayv.py

Bu şekilde ortaya çıkarttığı IP aralıklarında neler olabileceğine bakarak kendine bir saldırı planı geliştirecektir. Tabii ki IP aralıklarını NMAP gibi bir port tarama aracı kullanarak tarayabilirim ama bu durumda arada IPS/IDS (sızma tespit ve engelleme sistemi) benzeri bir sistem olması halinde yaptığımın “illegal” olduğunu tespit edecektir. Aralık çok geniş değilse tarayıcı ile IP adreslerini tek tek ziyaret etmek bir çözüm olabilir ama bunun için de sabır lazım.

Bu sorunu çözmek için kendime elayv.py adında kısa bir betik yazdım. “Alive” gibi ama Türkçe yazılışı. İlk başta adını “OOooOO! Şu IP’ler de buradalarmış :)” koymuştum (Facebook’ta benimle arkadaş olma bahtsızlığını yaşayanlar bilir) ama sonra düşündüm ki… tamam, dönüyorum konuya. 

Python kullandım çünkü bana sorarsanız dünya’da iki tür insan var; Python’u çok sevenler ve Python’la henüz tanışmamış olanlar 🙂

Elayv1

Elayv.py verilen bir IP aralığındaki IP adreslerinin 80 numaralı portuna bir “GET” isteği gönderiyor ve cevap alırsa bunu, aldığı cevap koduyla birlikte, gösteriyor. Cevap alamadıklarına veya hata aldıklarına da “burada bir şey yok:” diyor ve aldığı hata kodunu gösteriyor.

İdeal şartlarda elayv.py o aralıkta bulunan ve internetten port 80 (HTTP) ile ulaşılabilen IP adreslerini gösterecektir.

Elayv.py tamam da ne işime yarar?

Bu kısa kodu kendi IP aralığınız için çalıştırmak size birkaç konuda fayda sağlar;

  • Test için kurulmuş ancak kapatılmamış web sunucuların tespit edilmesi
  • Farkında olmadan (başka bir ürün/cihaz demosu yaparken) açılmış olabilecek ve dışarıyla HTTP üzerinden haberleşen servislerin tespit edilmesi
  • Port 80 üzerinden dışarıya bilgi/veri sızdırmak için saldırganlar tarafından kurulmuş olabilecek basit sunucu düzeneklerinin tespit edilmesi
  • Başka birimlerin (network, sistem, yazılım, vb.) sizden habersiz kurmuş olabilecekleri sunucuların tespit edilmesi

Bu kısa kodu sızma testleri sırasında kullanmak ise hedefin IP aralığında port 80 üzerinden ulaşılabilen sistemleri hızlıca bulmanızı sağlar.

200 – 400 – 304 nedir?

Bunlar HTTP status code (“durum kodu”) olarak adlandırılan ve gönderdiğimiz bağlantı talebi sonucunda gelen cevabın aslında ne anlama geldiğini bize söyleyen koddur. Kullanılan 60’ın üzerindeki durum kodunu uzun uzadıya ezberlemeye gerek yoktur. Başlarındaki rakama göre kabaca ne ifade ettiklerini hatırlamak ilk aşamada yeterlidir. Temek durum kodları 100, 200, 300, 400 ve 500’lü sayılardır, bunlar;

100’lü sayılar: Bilgilendirme amaçlıdır.
Örnek: 102 kodu sunucunun talebi aldığını ve işlemekte olduğu bilgisini verir

200’lü sayılar: Başarılı işlemleri gösterir.
Örnek: 200 kodu başarılı bir HTTP talebini gösterir

300’lü sayılar: Yönlendirme
Örnek: 302 kodu talebin geçici olarak farklı bir URI üzerinden karşılandığını gösterir.

400’lü sayılar: İstemci hatası
Örnek: 404 kodu talep edilen kaynağın bulunamadığını ve talebin yanlış olabileceğini gösterir.

500’lü sayılar: Sunucu hatası
Örnek: 503 kodu sunucunun an itibariyle ulaşılamaz olduğunu gösterir.

Elayv.py’nin bazen yanlış kodu gösterdiği doğrudur ancak kodun ne olduğundan çok, ilgili IP adresinde canlı bir sunucu olup olmadığını bulmakla ilgilendiğim için çok üzerinde durmadım.

Örnekler

Güncel PoC yakında burada.

Sonuç

Elayv’a https://github.com/alperbasaran/elayv adresinden ulaşabilirsiniz.

Her zaman olduğu gibi; kamu kurumları “Alper, bizi bununla uğraştırma, sen bakıver” demek için bana ulaşabilir.