Sızma Testlerinde Metodolojinin Önemi

 İşinin ehli bir hacker kendisine hedef olarak belirlediği sisteme sızmak için daha önce edindiği tecrübeler ışığında düzenli bir yol izler. Benzeri şekilde sızma testlerini gerçekleştiren uzmanlar da çalışmalarının doğrulanabilir, yorumlanabilir ve tekrar edilebilir olmasını sağlamak için metodoloji geliştirirler veya daha önce geliştirililen bir metodolojiyi takip ederler.

Metodoloji kullanımı bir kişilik olmayan sızma test ekipleri için hayati önem taşımaktadır ve sızma testlerinde daha önce denenmiş ve standart haline getirilmiş kurallar izlenirse daha başarılı sonuçlar elde edilir

Bu yazıda kısaca sızma testlerinde BGA olarak takip ettiğimiz  metodoloji kısa açıklama ve örneklerle anlatılmıştır.

Internet üzerinde ücretsiz olarak edinilebilecek çeşitli güvenlik testi kılavuzları bulunmaktadır.

Bunların başında ;
•    OWASP(Open Web Application Security Project)
•    OSSTMM(The Open Source Security Testing Methodology Manual)
•    ISSAF(Information Systems Security Assessment Framework)
•    NIST  SP800-115

gelmektedir. Internetten ücretsiz edinilebilecek bu test metodojileri incelenerek yapılacak güvenlik denetim testlerinin  daha sağlıklı ve tekrar edilebilir sonuçlar üretmesi  sağlanabilir.

Metodoloji hazırlanmasında dikkat edilmesi gereken en önemli hususlardan biri sızma test metodolojisinin araç tabanlı (X adımı icin Y aracı kullanılmalı gibi) olmamasına dikkat edilmesidir.

BGA Sızma Test Metolodolojisi

Sızma testlerinde ISSAF tarafından geliştirilen metodoloji temel alınmıştır.  Metodolojimiz üç ana bölümde dokuz alt bölümden oluşmaktadır.

1.1 [Bilgi Toplama]

Amaç, hedef sistem hakkında olabildiğince detaylı bilgi toplamaktır. Bu bilgiler firma hakkında olabileceği gibi firma çalışanları hakkında da  olabilir. Bunun için  internet siteleri haber gruplari e-posta listeleri , gazete haberleri vb., hedef sisteme gönderilecek çeşitli paketlerin analizi  yardımcı olacaktır.

Bilgi toplama ilk ve en önemli adımlardan biridir. Zira yapılacak test bir zaman işidir ve ne kadar sağlıklı bilgi olursa o kadar kısa sürede sistemle ilgili detay çalışmalara geçilebilir.

Bilgi toplamada aktif ve pasif olmak üzere ikiye ayrılır. Google, pipl, Shodan, LinkedIn, facebook gibi genele açık kaynaklar taranabileceği gibi hedefe özel çeşitli yazılımlar kullanılarak DNS, WEB, MAIL sistemlerine yönelik detaylı araştırmalar gerçekleştirilir.

Bu konuda en iyi örneklerden biri hedef firmada çalışanlarından birine ait e-posta ve parolasının internete sızmış parola veritabanlarından birinden bulunması ve buradan VPN yapılarak tüm ağın ele geçirilmesi senaryosudur.

Sızma testlerinde bilgi toplama adımı için  kullanılabilecek temel araçlar:

  • FOCA
  • theharvester
  • dns
  • Google arama motoru
  • Shodan arama motoru
  • E-posta listeleri, LinkedIn, Twitter ve Facebook

1.2 [Ağ Haritalama]

Amaç hedef sistemin ağ yapısının detaylı belirlenmesidir. Açık sistemler ve üzerindeki açık portlar, servisler ve servislerin hangi yazılımın hangi sürümü olduğu bilgileri, ağ girişlerinde bulunan VPN, Firewall, IPS cihazlarının belirlenmesi, sunucu sistemler çalışan işletim sistemlerinin ve versiyonlarının belirlenmesi ve tüm bu bileşenler belirlendikten sonra hedef sisteme ait ağ haritasının çıkartılması Ağ haritalama adımlarında yapılmaktadır.

Ağ haritalama bir aktif bilgi toplama yöntemidir. Ağ haritalama esnasında hedef sistemde IPS, WAF ve benzeri savunma sistemlerinin olup olmadığı da belirlenmeli ve gerçekleştirilecek sızma testleri buna göre güncellenmelidir.

Ağ Haritalama Amaçlı Kullanılan Temel Araçlar

  • Nmap, 
  • unicornscan

1.3 [Zafiyet/Zayıflık Tarama Süreci]

Bu sürecin amacı  belirlenen hedef sistemlerdeki açıklıkların ortaya çıkarılmasıdır. Bunun için sunucu servislerdeki bannerler ilk aşamada kullanılabilir. Ek olarak birden fazla zayıflık tarama aracı ile bu sistemler ayrı ayrı taranarak oluşabilecek false positive oranı düşürülmeye çalışılır.

Bu aşamada hedef sisteme zarar vermeycek taramalar gerçekleştirilir. Zayıflık tarama sonuçları mutlaka uzman gözler tarafından tekrar tekrar incelenmeli, olduğu gibi rapora yazılmamalıdır. Otomatize zafiyet tarama araçlar ön tanımlı ayarlarıyla farklı portlarda çalışan servisleri tam olarak belirleyememktedir.

Zafiyet Tarama Amaçlı Kullanılan Temel Araçlar

  • Nessus
  • Nexpose
  • Netsparker

2.1 [Penetrasyon(Sızma) Süreci]

Belirlenen açıklıklar için POC kodları/araçları belirlenerek denelemeler başlatılır. Açıklık için uygun araç yoksa ve imkan varsa ve test için yeteri kadar zaman verilmişse sıfırdan yazılır. Genellikle bu tip araçların yazımı için Python, Ruby gibi betik dilleri tercih edilir.

Bu adımda dikkat edilmesi gereken en önemli husus çalıştırılacak exploitlerden önce mutlaka yazılı onay alınması ve mümkünse lab ortamlarında önceden denenmesidir.

Sızma Sürecinde Kullanılan Temel Araçlar

  • Metasploit, Metasploit Pro
  • Core Impact, Immunity Canvas
  • Sqlmap
  • Fimap

2.2 [Erişim Elde Etme ve Hak Yükseltme]

Sızma sürecinde amaç sisteme bir şekilde giriş hakkı elde etmektir. Bu süreçten sonra sistemdeki kullanıcının haklarının arttırılması hedeflenmelidir. Linux sistemlerde çekirdek (kernel) versiyonunun incelenerek priv. escelation zafiyetlerinin belirlenmesi ve varsa kullanılarak root haklarına erişilmesi en klasik hak yükseltme adımlarından biridir.

Sistemdeki kullanıcıların ve haklarının belirlenmesi, parolasız kullanıcı hesaplarının belirlenmesi, parolaya sahip hesapların uygun araçlarla parolalarının bulunması bu adımın önemli bileşenlerindendir.

Hak Yükseltme

Amaç edinilen herhangi bir sistem hesabı ile tam yetkili bir kullanıcı moduna geçişttir.(root, administrator, system vs)

Bunun için çeşitli exploitler denenebilir.

Bu sürecin bir sonraki adıma katkısı da vardır. Bazı sistemlere sadece bazı yetkili makinelerden ulaşılabiliyor olabilir. Bunun için rhost, ssh dosyaları ve mümkünse history’den eski komutlara bakılarak nerelere ulaşılabiliyor detaylı belirlemek gerekir.

2.3 [Detaylı Araştırma]

Erişim yapılan sistemlerden şifreli kullanıcı bilgilerinin alınarak daha hızlı bir ortamda denenmesi.  Sızılan  sistemde sniffer çalıştırılabiliyorsa  ana sisteme erişim yapan diğer kullanıcı/sistem bilgilerinin elde edilmesi.
Sistemde bulunan çevresel değişkenler ve çeşitli network bilgilerinin kaydedilerek sonraki süreçlerde kullanılması.

Linux sistemlerde en temel örnek olarak grep komutu kullanılabilir.
grep parola|password|sifre|onemli_kelime -R /

3.1 [Erişimlerin Korunması]

Sisteme girildiğinin başkaları tarafından belirlenmemesi için bazı önlemlerin alınmasında fayda vardır.  Bunlar giriş loglarının silinmesi, çalıştırılan  ek proseslerin saklı olması , dışarıya erişim açılacaksa  gizli kanalların kullanılması(covert channel), backdoor, rootkit yerleştirilmesi vs.

3.2 [İzlerin silinmesi ]

Hedef sistemlere bırakılmış arka kapılar, test amaçlı scriptler, sızma testleri için eklenmiş tüm veriler not alınmalı ve test bitiminde silinmelidir.

3.3 [Raporlama]

Raporlar bir testin müşteri açısından en önemli kısmıdır.  Raporlar ne kadar açık ve detaylı/bilgilendirici olursa müşterinin riski değerlendirmesi ve açıklıkları gidermesi  de o kadar kolay olur.

Testler esnasında çıkan kritik güvenlik açıklıklarının belgelenerek sözlü olarak anında bildirilmesi test yapan takımın görevlerindendir. Bildirimin ardından açıklığın hızlıca giderilmei için çözüm önerilerinin de birlikte sunulması gerekir.

Ayrıca raporların teknik, yönetim ve özet olmak üzere üç  farklı şekilde hazırlanmasında fayda vardır.
Teknik raporda hangi uygulama/araçların kullanıldığı, testin yapıldığı tarihler ve çalışma zamanı,  bulunan açıklıkların detayları  ve açıklıkların en hızlı ve kolay yoldan giderilmesini amaçlayan tavsiyeler bulunmalıdır. 

*Yöntembilim ya da metodoloji, belirli bir alanda kullanılan bütün metodlar; geniş anlamı ile, metodların bilim ve felsefesi olarak açıklanabilir.