Sunday, September 22, 2013

Zafiyet Yönetimi

Doğrudur, zafiyet taraması, sızma testleri kadar "fantastik" değil. 

Zafiyet Taraması (temsili) "Güvenlik kamerası gibi zafiyetleri izlemek"

Hatta çoğu zaman işini iyi yapmadığını iddia ettiğimiz bazı firmaları aşağılamak için bile kullanırız; "sızma testi değil, zafiyet taraması yapmışlar" cümlesini duyduysanız tam olarak bunu kastediyorum.

Tek doğrunun sızma testleri olduğuna inananların daha fazla zaman kaybetmelerini önlemek için belirteyim: Yazının devamında zafiyet taramasının ne kadar gerekli olduğunu ve kurum içerisinde kalıcı bir zafiyet taraması yapısının nasıl oluşturulabileceğini anlatacağım.

İnternet ortamındaki saldırganları 2 farklı gruba ayırabiliriz: belirli bir hedefi olanlar ve fırsatçılar. Belirli hedefi olanlar için dünyada iki türlü ağ vardır, sızdıkları ve sızacakları. Bu nedenle bu saldırgan profiline karşı sızma testi bile kesin bir çözüm değil, sadece işlerini zorlaştırmak için atılabilecek adımların ortaya çıkartılmasından ibarettir. Pareto kuralı, her alanda olduğu gibi, bilgi güvenliği konusunda da geçerlidir ve görüldüğü üzere saldırıların %20'si kendilerine bir hedef belirlemiş saldırganlar tarafından gerçekleştirilirken, %80'i fırsatçı olarak adlandırabileceğimiz saldırganlarca gerçekleştirilmektedir.
Fırsatçı saldırganlara verebileceğim en iyi örnek "pen tester" olmak için mülakata gelen 15 yaşında bir çocuktur. Saldırı metodolojisi gayet basitti, basit ama etkili. PHP shell yükleyebileceği bir siteyi Google araması ile buluyordu. Bing ile aynı IP üzerinde çalışan sitelere bakıp, içlerinden birini "hacklemek" için kendince bir bahane buluyordu ve eylemini gerçekleştiriyordu.

Zafiyet Taraması Metodolojisi
Sızma testlerini birkaç "cana yakın heykır arkadaşın" bir araya gelip ağ ve sistemlerinizi "kurcalamasından" fazlası olarak gördüğümden beraber çalıştığım insanların beni pek sevmediğini söyleyebilirim. Öyle ya, bulduğumuz ilk açıktan ağa sızabilecekken belki de hiçbirşey vermeyecek 78 daha az önemli ve sıkıcı noktayı test etmelerini istemem bazılarına ağır gelebilir. Sızma testini bilgi işlem tehditlerinin kurumun iş süreçlerine ve bilgi güvenliğine etkilerini ölçmek için yapıyorsak, ne yazık ki bunu bu şekilde ele almak zorundayız. Değilse, işimizi sadece teknik olarak bir ağa sızılabileceğini kanıtlamak olsaydı, bunun ticari bir değeri olmazdı.

Son günlerde sıkça konuştuğumuz NSA (National Security Agency) istihbarat görevlerinin yanı sıra A.B.D. hükümetinin internet altyapısının güvenliğini sağlama konusunda da çeşitli görevler üstlenmiştir. Benzer şekilde İngiliz hükümetinin GESC CHECK girişimi devlete ait sistemlerdeki zafiyetlerin belirlenmesi konusunda bir yol haritası çıkartmaktadır. PCI DSS ise bunlardan farklı olarak sivil ve ticari bir girişim olarak değerlendirilebilir. Bu 3 programın amacı da zafiyetleri belirli bir metedoloji izleyerek ortaya çıkartmak, takip etmek ve düzeltmektir.

Zafiyet taraması metodolojisi temelde 3 aşamadan oluşan bir döngüdür. Bu aşamalar, zafiyet taraması öncesi, zafiyet taraması ve zafiyet taraması sonrasıdır.

Zafiyet taraması öncesi adımları:
Zafiyet taramasının kapsamın belirlenmesi
Tarama sırasında gerekli olacak süreçlerinin oluşturulması
Kritik varlıkların belirlenmesi ve ölçülmesi

Zafiyet taraması adımları:
Ağ mimarisinin analizi
Tehditlerin ortaya konulması
Zafiyet taramasının gerçekleştirilmesi
Bulunan zafiyetlerin teyit edilmesi
Güvenlik politikalarının ve süreçlerinin incelenmesi
İş etki analizinin yapılması
Risk modellemesinin yapılması
Kapsamda ise fiziksel zafietlerin belirlenmesi

Zafiyet taraması sonrası adımları:
Tarama sonuçlarının önceliklendirilmesi
İyileştirme önerilerinin belirlenmesi ve önceliklendirilmesi
Tavsiye edilen iyileştirmeler için bir eylem planının oluşturulması
Sonraki taramaların etkisini artırmak için öneriler

Yukarıdaki iş akışı bünyesinde izlenebilecek çeşitli metodolojiler vardır. Aralarında büyük farklar yoktur ve genellikle aşağıdaki gibi bir yol izlerler:

Hedef ağ ve ağ üzerindeki sistemlerle ilgili bilgi toplama
Hedef ağ üzerindeki sistemlerin taranması
Taranan sistemler üzerindeki zafiyetlerin tespit edilmesi
Tespit edilen zafiyetlerin istismar yöntemlerinin belirlenmesi

Zafiyet taraması için kullanılabilecek araçlar
Yukarıda belirttiğim gibi bir zafiyet taraması yapmak için kullanılabilecek bazı araçlar şunlardır:

Komut satırı
Whois, Dig, traceroute, Hping3 gibi komut satırı araçları sayesinde bilgi toplanır. Zafiyet taramasını kurum personeli gerçekleştiriyorsa, sahip olunan IP adresleri gibi konular hakkında bilgi sahibi olunacağından bu tarz bir araştırma gereksiz görünebilir. Ancak, büyük yapılarda bilgi işlem biriminin bilgisi dışında bazı gelişmeler yaşanabilmektedir (Örn: bir reklam kampanyasının sunucularının açılması) bu nedenle bu adımı atlamamakta fayda vardır.
Bu araçlar kullanılarak kurum IP adresleri, sahip olduğu sunucular, DNS bilgileri gibi önemli konularda bilgiler toplanır.

Nmap
Nmap kullanılarak kurumun IP adresleri arasında dışarıya açık (dış taramalar için) veya kurum içerisinde açık (iç taramalar için) cihazlar tespit edilir.
Nmap aynı zamanda ayakta olan cihazların işletim sistemleri, dışarıya açık servisleri gibi önemli bilgiler elde edilebilir. Aşağıdaki tarama sonucuna bakacak olursak Nmap ile taranan bir sistem hakkında elde edilebilecek bilgileri görebiliriz.




Nmap ile farklı parametreler kullanılarak hedef sistem üzerinde çalışan servisler hakkında daha detaylı bilgi de elde edilebilir.


Nmap tek bir hedef için kullanılabileceği gibi bir alt ağ için de kullanılabilir.

Nessus
En yaygın olarak kullanılan zafiyet tarama araçlarından biri Nessus'tur.
Nessus bilinen zafiyetlerin hedef sistem üzerinde bulunup bulunmadığını denetler ve olduğunu düşünürse raporuna ekler. Bunun gibi zafiyet tarama çözümleri konusunda unutulmaması gereken bazı önemli noktalar vardır. Öncelikle bu sistemler sadece yaygın olarak bilinen zafiyetleri aramaktadır. Dolayısıyla 0-day olarak adlandırılan yeni zafiyetler bu taramalarda bulunmayabilir. Bunun yanında raporlarda "false positive" olarak adlandırılan ve aslında olmayan bir zafiyetin varmış gibi raporlanması da sıkça görülmektedir.
Web uygulamalarında bulunabilecek zafiyetleri taramak için Acunetix gibi bu konuda biraz daha uzmanlaşmış bir araç kullanılabilir.
Daha etkili bir zafiyet taraması için birden fazla tarama aracı kullanılması ve sonuçların el ile teyit edilmesi gereklidir.

Zafiyet taraması sürecinin önemli noktaları
Zafiyet tarama sürecinin en önemli aşaması, şüphesiz, doğru kapsamın belirlenmesidir. taranacak veya incelenecek sistem sayısının az olması veya bu sistemlerin yaygın olarak kullanılan sistemlerden farklı özelliklerde olmaları yanıltıcı sonuçlar doğuracaktır.
Zafiyet taraması konusunda bir diğer önemli nokta ise belirli aralıklarla tekrar edilmesidir. Senede bir gün yapılan bir taramanın faydası çok az olacaktır. Bu nedenle eldeki kaynakların el verdiği ölçüde sık tekrarlanması çok önemlidir.
Zafiyet taraması sürecinin en değerli çıktısı ise rapordur. Rapor okunabilir, doğru veriler içeren ve mantıklı öneriler taşıyan bir içeriği olması gerekmektedir. Ne yazık ki hayatımda gördüğüm çoğu sızma testi raporu okunmamıştı, bunun nedeni raporu teslim alan kişinin tembel olması değil, raporda okumaya değer çok az yer olmasıydı. Sayfalarca Nmap çıktısı raporu kalın ve önemli gösterebilir ancak raporu okuyan kişiyi ilgilendiren kısım bu olmayacaktır. Zafiyet analizi raporları da benzer şekilde okunabilir ve anlaşılabilir olmalıdır.