Security - Güvenlik Testi
Açık bir sistemde %100 güvenlik oluşturulamaz, Genel olarak Security testing’i sistemi , saldırı sonucu elde edilebilecek değerin , saldırı sırasında harcanacak maliyetten daha az değerli olduğu konuma getirmek olarak değerlendirebiliriz .
Temel olarak 2 amaca hizmet eder. Yazılım güvenliği ve Network Güvenliği;
Yazılım Güvenliği;
Testler Risk-Based yaklaşımı ile sistemin mimari güvenilirliğine karşı , sistemin güvenliğinin yeterliliğini değerlendirmek amacı ile gerçekleştirilmeli.
Yazılım sürecinde risk noktaları belirlenmeli ve bu noktalara karşı yazılımsal önlemler alınmalıdır.
Örnek:Authentication
Login ve Şifre Değiştir sayfalarının SSL desteği var mı?
Güçlü Şifre Policy’e sahip mi?(Boş Password,Max Password,Min Password,Şifre Karakter,Numerik karışımı)
İlk loginde şifre değiştirmeye zorluyor mu?
Şifre Değiştiriken Eski şifre zorunlu mu?
Remember me özelliği mevcut mu? Mevcutsa şifre nerde saklanıyor?
Remember me isteğinden önce uyarı veriyor mu?
Kayıt İşleminde CAPTCHA sorgulanıyor mu?
Uyarı mesajları görüntüleniyor mu? (invalid user/invalid Password)
Authentication bazı özel url lelerle by pass edilebiliyormu
Form için Browserın auto complete özelliği kapatılmış mı?
Şifre browserın Back/Refresh ı ile re-submit yapılıyor mu?
SQL Injection yapılabiliyor mu?
Network Güvenliği;
Network güvenliği testi ise altyapı, firewall ve port dinleme üzerine yoğunlaşır.Temel sistemdeki açıkları tanımlamak ve gidermek amaçlıdır.
________________________________________
Bu yöntem test outside-in yaklaşımına göre gerçekleştirilir. Bu yaklaşımda belirlenen hedefin dışa açık servisleri bir tool aracılığıyla belirlenir ve belirlenen servislerin özelliklerine göre açıkları aranır.
Örnek:Password Cracking;
Password cracking programları zayıf şifreleme olasılığı için kullanılır. Şifreler genellikle hash denilen encripted verilerle tututlur, Kullanıcı şifresini girdiğinde hash üretilir ve saklanmış hashle karşılaştırılır. Bu tür saldırılar genellikle root şifresini elde etmek için kullanılır.
En hızlı metod dictionary attack olarak bilinen , internet çeşitli özellikdeki varyosyanları bulunabilen(ülke,dil, tv programları ..vs) dictionary dosyalarındaki hash leri teker teker denemektir.
Bir diğeri ise hybrid attack denilen dictionary metoduna çeşitli sembol ve karakterler ekleyerek deneme yöntemidir.
Bu saldırıdaki en güçlü metod ise brute forced. Bu yöntemde rastgele şifreler üretilir. Teorik olarak yeterli zaman ve işlem gücü sağlandığında kırılamayacak şifre yoktur.
Security Testing Teknikleri;
Network Mapping
Fuzzing
Log Reviews
Penetration Testing
……… vb
Network Mapping;
Çeşitli toolar aracılığıyla( nmap ) belirlenen hedef network içideki tüm hostlar ve ve bu hostlar üzerindeki açık servisleri belirleme amacıyla yapılır.Scanner öncelikle belirlenen hedefe TCP/IP protokolü üzerinde ICMP(Internet Control Message Protocol) ECHO_REPLY paketi ile identification yapar, Host belirlendikden sonra tüm açık TCP ve UDP (User Datagram Protocol) portlarını tarar ve açık olan portları listeler. Açık portlar aynı zamanda host üzerinde çalışan uygulamalar içinde bilgiler veriri. Örneğin 135 ve 139 nolu portlar açıksa host üzerinde Windows NT yada 2000 çalışmaktadır, port 80 açıksa host üzerinde ISS yada appachi çalışıyordur.
Fuzzing;
Sisteme(uygulama,network) rastgele (fuzz) datayı input olarak vererek , uygulamanın bu durum karşısındaki davranışını test edilmesidir.
Log Review;
Sistem tarafından üretilen çeşitli loglar, organizasyonun güvenlik politikası dışında bilgiler içerebilir . Sistemin ürettiği logarın bu tür açıklar için review edilmesi gereklidir
Penetration Testing;
Açığı bulunan uygulamanın açığını kulanarak hak sahibi olmak yada tamamen sistemi çökertmek üzerine hazırlanmış kod,script veya yöntemle sistemin test edilmesidir.
Oldukça fazla sayıda çeşit ve yöntemi mevcuttur( comunication sniffer, Buffer Over Flow,Social Engineering…vs)
Bu testler çeşitli toolarla(metasploit) gerçekleştirilebilir. İnternet üzerinde bu toolarla kullanılabilen exploit(uygulamalara özel hazırlanmış saldırı paketleri) frameworkleri mevcuttur.
Temel olarak 2 amaca hizmet eder. Yazılım güvenliği ve Network Güvenliği;
Yazılım Güvenliği;
Testler Risk-Based yaklaşımı ile sistemin mimari güvenilirliğine karşı , sistemin güvenliğinin yeterliliğini değerlendirmek amacı ile gerçekleştirilmeli.
Yazılım sürecinde risk noktaları belirlenmeli ve bu noktalara karşı yazılımsal önlemler alınmalıdır.
Örnek:Authentication
Login ve Şifre Değiştir sayfalarının SSL desteği var mı?
Güçlü Şifre Policy’e sahip mi?(Boş Password,Max Password,Min Password,Şifre Karakter,Numerik karışımı)
İlk loginde şifre değiştirmeye zorluyor mu?
Şifre Değiştiriken Eski şifre zorunlu mu?
Remember me özelliği mevcut mu? Mevcutsa şifre nerde saklanıyor?
Remember me isteğinden önce uyarı veriyor mu?
Kayıt İşleminde CAPTCHA sorgulanıyor mu?
Uyarı mesajları görüntüleniyor mu? (invalid user/invalid Password)
Authentication bazı özel url lelerle by pass edilebiliyormu
Form için Browserın auto complete özelliği kapatılmış mı?
Şifre browserın Back/Refresh ı ile re-submit yapılıyor mu?
SQL Injection yapılabiliyor mu?
Network Güvenliği;
Network güvenliği testi ise altyapı, firewall ve port dinleme üzerine yoğunlaşır.Temel sistemdeki açıkları tanımlamak ve gidermek amaçlıdır.
________________________________________
Bu yöntem test outside-in yaklaşımına göre gerçekleştirilir. Bu yaklaşımda belirlenen hedefin dışa açık servisleri bir tool aracılığıyla belirlenir ve belirlenen servislerin özelliklerine göre açıkları aranır.
Örnek:Password Cracking;
Password cracking programları zayıf şifreleme olasılığı için kullanılır. Şifreler genellikle hash denilen encripted verilerle tututlur, Kullanıcı şifresini girdiğinde hash üretilir ve saklanmış hashle karşılaştırılır. Bu tür saldırılar genellikle root şifresini elde etmek için kullanılır.
En hızlı metod dictionary attack olarak bilinen , internet çeşitli özellikdeki varyosyanları bulunabilen(ülke,dil, tv programları ..vs) dictionary dosyalarındaki hash leri teker teker denemektir.
Bir diğeri ise hybrid attack denilen dictionary metoduna çeşitli sembol ve karakterler ekleyerek deneme yöntemidir.
Bu saldırıdaki en güçlü metod ise brute forced. Bu yöntemde rastgele şifreler üretilir. Teorik olarak yeterli zaman ve işlem gücü sağlandığında kırılamayacak şifre yoktur.
Security Testing Teknikleri;
Network Mapping
Fuzzing
Log Reviews
Penetration Testing
……… vb
Network Mapping;
Çeşitli toolar aracılığıyla( nmap ) belirlenen hedef network içideki tüm hostlar ve ve bu hostlar üzerindeki açık servisleri belirleme amacıyla yapılır.Scanner öncelikle belirlenen hedefe TCP/IP protokolü üzerinde ICMP(Internet Control Message Protocol) ECHO_REPLY paketi ile identification yapar, Host belirlendikden sonra tüm açık TCP ve UDP (User Datagram Protocol) portlarını tarar ve açık olan portları listeler. Açık portlar aynı zamanda host üzerinde çalışan uygulamalar içinde bilgiler veriri. Örneğin 135 ve 139 nolu portlar açıksa host üzerinde Windows NT yada 2000 çalışmaktadır, port 80 açıksa host üzerinde ISS yada appachi çalışıyordur.
Fuzzing;
Sisteme(uygulama,network) rastgele (fuzz) datayı input olarak vererek , uygulamanın bu durum karşısındaki davranışını test edilmesidir.
Log Review;
Sistem tarafından üretilen çeşitli loglar, organizasyonun güvenlik politikası dışında bilgiler içerebilir . Sistemin ürettiği logarın bu tür açıklar için review edilmesi gereklidir
Penetration Testing;
Açığı bulunan uygulamanın açığını kulanarak hak sahibi olmak yada tamamen sistemi çökertmek üzerine hazırlanmış kod,script veya yöntemle sistemin test edilmesidir.
Oldukça fazla sayıda çeşit ve yöntemi mevcuttur( comunication sniffer, Buffer Over Flow,Social Engineering…vs)
Bu testler çeşitli toolarla(metasploit) gerçekleştirilebilir. İnternet üzerinde bu toolarla kullanılabilen exploit(uygulamalara özel hazırlanmış saldırı paketleri) frameworkleri mevcuttur.
Yorumlar