Sızma (Penetrasyon) Testi Nedir?

Sızma Testi; anonim bir hacker, zararlı bir yazılım ya da kötü niyetli bir çalışan (iş ortağı, tedarikçi, bayi, müşteri, vb.) tarafından kuruma ait sistemlere yönelik yapılabilecek saldırıların kontrollü bir simülasyon yoluyla gerçekleştirilip, açıkların saldırganlardan önce tespit edilmesini sağlayan bir çalışmadır. Bu çalışma sonucunda tespit edilen açıklar kuruma raporlanarak bu açıkların nasıl kapatılabileceği çözüm önerileri ile beraber sunulur.

Yönetmelik ve Standartlara Uyum

Sızma Testi, BDDK ve SPK gibi regülatörler tarafından gerçekleştirilmesi zorunlu tutulan çalışmalardan biri olmakla beraber PCI-DSS, ISO 27001, CoBIT gibi uluslararası standartlar tarafından da gerçekleştirilmesi beklenen güvenlik kontrollerinden biridir. Günümüzde sadece yönetmelik ve standartlar değil aynı zamanda Kişisel Verilerin Korunması Kanunu (KVKK) gibi kanunlar da Sızma Testi çalışmasını önemli bir güvenlik kontrolü olarak görmektedir.

Saldırgan Gözünden Test Türleri

Sızma Testleri genellikle saldırgan gözünden BlackBox yaklaşımla gerçekleştirilse de, kurumun güvenlik postürünün olgunluk seviyesi veya operasyonel hassasiyet gerekliliği arttıkça GrayBox ve WhiteBox gibi yaklaşımlarla da gerçekleştirilebilmektedir. Böylece simülasyon sırasında istisnalar tanımlandıkça simülasyonun kendisi de bir sonraki aşamaya geçtiği varsayılan saldırganların olası senaryoları üzerinde şekillenmeye devam eder.

 
Image by Leon Seibert

Dış Ağ Sızma Testi (İnternet - External Network)

Dünyaya ve dolayısıyla saldırganlara doğrudan açık olan ağınız

Saldırılar her zaman birilerinin kurumları doğrudan ve isteyerek hedef almasıyla gerçekleşmez. Bazen yeni çıkan bir açığı denemek isteyen kişiler, bu yeni açığın çıktığı sistemleri kullanan adresleri internette araştırarak rastgele saldırılar düzenleyebilir veya kurum sistemlerini kullanan biri tesadüfen keşfettiği bir açığı kullanmak için bir motivasyon içine girebilir.

Dış Ağ Sızma Testleri kuruma ait internetteki ayak izlerinin takip edilip toplanarak yorumlanmasıyla (OSINT ile) başlar ve daha sonra açık olan servislere ait zafiyetlerin (Enumeration ile) keşfedilerek (Exploitation ile) kullanılmaya çalışılmasıyla devam eder. 

Typing

Web Uygulaması Sızma Testi

İşinize, operasyonunuza, sistemlerinize ve verilerinize açılan kapı

Kurum içinde veya internette konumlanıyor olmasından bağımsız olarak günümüzde artık Core Sistem olarak adlandırdığımız sistemlerin arayüzleri web uygulamaları olarak tasarlanmaktadır. Bu durum web uygulamlarını operasyona, diğer sistemlere ve buna bağlı olarak da arka taraftaki veriye açılan bir kapı haline getirmektedir. 

Web Uygulaması Sızma Testleri, web servisinin ve bu servisin aracılığıyla sunulan içeriğin zafiyetlerinin tespiti ile beraber yayında olmaması gereken içeriğin keşfedilmesi adımıyla (Enumeration, Discovery ile) başlar ve uygulamadaki farklı yetkilere sahip profillerin (Anonim, Müşteri) yetki yükseltme (Privilege Escalation), çapraz erişim elde etme (iDOR) ve benzeri (SQL Injection, XSS, Command Injection gibi) kullanıcı, sunucu veya doğrudan veriye yönelik yapılabilecek saldırıların test edilmesiyle devam eder.

Image by Markus Spiske

Mobil Uygulaması Sızma Testi

Sistemlerinize açılan bir diğer ama gözlerden uzaktaki kapı

Son kullanıcılara hızlı erişim kolaylığı sağlayan mobil uygulamalar, web uygulamalarının bir uzantısı gibi gözükse de arka planda kullanılan teknolojilerin farklılaşması nedeniyle güvenlik anlamında gözden kaçırılabilecek noktaların en hızlı oluştuğu kurum sistemlerinden birisidir. Bu da saldırganlara gözlerden uzaktaki bir kapıyı kullanarak sistem, sunucu ve veriye yönelik saldırı düzenleme imkanı tanır.

Mobil Uygulaması Sızma Testleri uygulamanın kurulum paketine (APK/IPA) yönelik statik kod analizinin tersine mühendislik (Reverse Engineering) ile uygulanmasıyla başlar ve uygulamanın hem kurulu olduğu cihazla (Local SQL, Data Storage) hem de iletişimde olduğu sunucuyla girdiği etkileşim sırasındaki zafiyetlerin (SSL Pinning, iDOR, SQLi) keşfedilmesiyle devam eder.

 

HİZMETLER

 

SERTİFİKALAR

 

ARAÇLAR

 

Ağ Sızma Testi Yaklaşım Özeti

  • Ağ sızma testi yaklaşımımız, analitik olarak ardı ardına gerçekleştirilen her bir aktivitenin bir sonrakine girdi üretmesi biçimindedir.

  • Bununla birlikte sızma testi çalışmasının ileri adımlarında yer alan bir aktivite gerçekleştirilirken ek bilgiler elde edilebilecek veya yeni bir bilgiye ihtiyaç duyulabilecektir. Bu durumda denetlenen alanın güvenlik açısından kritikliği de göz önünde bulundurularak önceki adımlara dönüp aktivitenin yeni bilgi ışığında veya yeni bilgi ihtiyacını sağlamaya yönelik olarak tekrarı söz konusu olabilecektir.

  • Kullanılacak parola sözlük ve kaba kuvvet saldırıları sızma testi için ayrılmış zaman bütçesi göz önüne alınarak zamanlanacaktır. Bu saldırıların sahip olunan zaman aralığında başarılamaması zafiyeti hafifletici bir durum olmayıp bu bulgular raporda yer alacaktır.

  • Hizmet kesintisi saldırıları sızma testi kapsamında gerçekleştirilmeyecektir.

  • Özellikle sızma testi sırasında saldırı kodlarının denenmesi durumunda risk yönetim prosedürüne uygun biçimde kurum personeli ile koordinasyon halinde bulunulacaktır.

Kurum ve Kurum’a Ait İnternet Servisleri Hakkında Bilgi Toplama

Kuruma ait internet servisleri, teknik personel iletişim bilgileri, kurumun BT ürün ve hizmet sağlayıcıları, kurum tarafından kullanılan teknolojik altyapı (işletim sistemi, web sunucusu, vb. bazında)  ve yazılımlar hakkında saldırı için fayda sağlayabilecek verilerin sızma testi sırasında aşağıdaki araç ve yöntemlerle toplanmasını içerir:

  • Arama Motorları (link verilerinden faydalanılarak web sunucularının ve web uygulamarının tespiti, hassas kurumsal dosyaların, (wardialing çalışması kapsam içindeyse bu çalışmaya baz teşkil edecek) kuruma ait telefon numaraları bilgilerinin, ve yukarıda da sayılan diğer verilerin toplanması için)

  • Netcraft (kurum alanı içinde yer alan web sunucularının, bunların model ve versiyonlarının, kurum alan adlarına benzer alan adlarının tespiti, wayback machine aracı ile web sitelerinin eski görüntülerinin tespiti için)

  • Whois (IP, Alan Adı) Veritabanları (kuruma ait IP adres aralığının, teknik personel bilgilerinin, destek alınan ISP bilgilerinin tespiti için)

  • BGP Sorgulama (internet çıkış bilgilerinin ve komşu otonom sistemlerin sızma testi sırasında belirlenmesi için)

  • DNS Sorgulama (ad kaba kuvvet saldırıları ve alan transferi yöntemleri ile sunucu tespiti, IP adres bloğunda bulunan IP’ler için tersine sorgulamayla sunucu isimleri ve işlevleri hakkında bilgi toplamak için)

  • Web Sunucuları (tüm içeriğin indirilmesi, içeriğin içindeki yorum satırlarının ve içerikteki güvenlik açısından hassas bilgilerinin sızma testi sırasında incelenmesi için)

  • SMTP Mesajı (mevcut olmayan bir e-posta adresine e-posta gönderilmesi suretiyle geri dönen mesajın başlık bilgilerinden faydalanarak kurum ağ mimarisi hakkında sızma testi sırasında bilgi edinmek için)

  • Diğer Halka Açık Bilgiler (kurum fiziksel yerleşimleri, grup şirketleri ve diğer ağ bağlantıları hakkında sızma testi sırasında bilgi toplamak için)

  • Yukarıdaki aktiviteler Shodan gibi bir araç veya doğrudan ilgili bilgiyi sağlayan internet servisi kullanılarak gerçekleştirilebilecektir.

Sunucu ve Servis Tarama

Genel bilgi toplama adımında elde edilen verilerden yola çıkarak ve kurumun sahip olduğu IP adres aralığındaki canlı sistem ve servisleri tespit etmek amacıyla protokol ve servis taramalarını içerir:

  • IP protokol tarama

  • ICMP tarama (Type 8, 13, 15 ve 17 ICMP paket türleri kullanılarak)

  • TCP port tarama (TCP connect bağlantısı yöntemiyle tarama IP yasaklaması doğurmuyorsa sızma testi sırasında tam güvence için connect bağlantı yöntemiyle)

  • UDP port tarama (tarama zamanını sızma testi sırasında çok fazla artırdığından sadece bilinen portlar için ve UDP servisi barındırdığından şüphelenilen sunuculara odaklanılarak)

  • Eğer mevcutsa sızma testi sırasında web proxy ve ftp sunuculara yönelik proxy sıçrama taraması

  • Bu adımın çıktıları işletim sistemi ve ağ servisleri üretici ve versiyon belirleme çalışmasına esas oluşturacaktır. 

Ağ Haritasının Çıkarılması

Kurum ağının derinliği, DMZ ve iç ağ bölümleri, filtreleme kurallarının anlaşılması için gerçekleştirilen aşağıdaki aktiviteleri içerir:

  • Yönlendirme bilgisi toplama (Traceroute, hping2 gibi araçlarla)

  • Filtreleme kurallarının testi (Firewalk ile)

İşletim Sistemi Tespiti (Enumeration)

İşletim sistemi versiyonunun yüksek ihtimalle tespit edilmesi için protokol ve port taramalarından elde edilen verilerin yanı sıra aşağıdaki aktif yöntem ve araçlarla sızma testi sırasında gerçekleştirilen aktiviteleri içerir:

  • Farklı işletim sistemlerinin farklı başlık bilgilerine sahip paketlere verdikleri farklılıklardan yola çıkarak her bir işletim sistemi için aşağıdaki özelliklerin aktif yöntemlerle incelenmesi (fingerprinting):

  • IP protokol özelliklerinin 

  • ICMP protokol özellikleri

  • TCP protokol özellikleri

  • Dinleyen port numaralarından yola çıkarak kabaca işletim sistemi ailesi ve versiyonunun tespiti

  • Her bir servis için “banner” metinlerinin incelenmesi (bu metinler kesin olarak güvenilememekle birlikte versiyon tespiti için önemli bilgi verebilmekte, bazı durumlarda sistem yöneticisi tarafından değiştirilse bile belli başlık alanları veya gönderilen isteklere karşı ürettikleri yanıt özellikleri nedeniyle işletim sistemi veya servis tespitine sızma testi sırasında olanak sağlayabilmektedirler)

  • Servis davranış özellikleri ve uygulama seviyesinde isteklere verilen yanıtlardaki farklılıklar 

Ağ Servisleri ve Sistem Kullanıcılarının Tespiti (Enumeration)

Servis versiyonu ve sistem kullanıcılarının tespiti için aşağıdaki genel ve servise ve işletim sistemine özel aktivitelerin gerçekleştirilmesini içerir:

 

Servis ve servis versiyonu belirleme için genel aktiviteler

  • Banner metinlerinden yola çıkarak tahmin

  • Bilinen port numaralarından yola çıkarak tahmin

  • AMAP (veya NMAP’in servis belirleme özelliği) ile servis versiyon tahmini (application fingerprinting)

Özellikle versiyon ve kullanıcı kodlarının belirlenmesine imkan tanıyabilecek aşağıdaki genel ve işletim sistemine özel servislerin sızma testi sırasında incelenmesi (Not: Sıralanan Windows ve Unix işletim sistemlerine özgü servis isimleri çalışmanın detayı hakkında fikir vermek içindir. Bu işletim sistemlerinin dışındaki sistemler için kendilerine has servisler incelenecektir):

Genel Servisler

  • SNMP (UDP 161)

  • SMTP (TCP 25)

  • POP-3 (TCP 110)

  • IMAP (TCP 143)

  • TFTP (TCP/UDP 69)

  • FTP (TCP 21)

  • Telnet (TCP 23)

  • HTTP/HTTPS (TCP 80/ TCP 443)

  • SSL

  • IPSec (ISAKMP – UDP 500)

  • SSH (TCP 22)

  • VNC (TCP 5800 / 5900)

Unix Servisleri

  • Unix RPC (TCP/UDP 111, 32771)

  • NFS (RPC programı 100003)

  • R-Services (exec – TCP 512, login – TCP 513, shell – TCP 514)

  • NTP (UDP 123)

  • X Windows Server (TCP 6000-6063)

Unix Kullanıcı Tespitine Yardımcı Servisler

  • Finger (TCP/UDP 79)

  • Rwho (UDP 513) ve Rusers (RPC programı 100002)

  • NIS (RPC programı 100004)

  • Auth (TCP 113) (identd servisi)

Windows Servisleri

  • NetBIOS Name Service UDP 137)

  • SMB (NetBIOS Session Service: TCP 139 veya SMB over TCP – CIFS: TCP/UDP 445)

  • LDAP ve Active Directory Global Catalog (TCP 389 / TCP 3268)

  • MSRPC (TCP/UDP 135)

  • NTP (UDP 123)

  • Terminal Services (TCP 3389)

Kullanıcı Parola Tespit Saldırılarının Gerçekleştirilmesi (Kısıtlı Zaman İçin)

Aşağıdaki yöntemlerle tespit edilmiş olan kullanıcı kodlarına yönelik kısıtlı süre için sözlük (dictionary) ve kaba kuvvet saldırıları yöntemleri ile parola tespit ve yetkisiz erişim testlerinin gerçekleştirilmesi:

  • Tespit edilen servislerden sızma testi sırasında kullanıcı kodu sızdırma yoluyla belirlenen kullanıcı kodları

  • Genel bilgi toplama adımında elde edilen kullanıcı kodları

  • Tespit edilen servislerin kurulumunda öntanımlı olarak bulunan kullanıcı kodları

  • Kurum bilgilerinden yola çıkarak tahmin edilebilen kullanıcı kodları

  • Yaygın olarak kullanılan kullanıcı kodları (bilgi, admin, user, helpdesk gibi)

 

Kullanılan parola sözlükleri kuruma özgü ve kurumla ilgili bilgi toplama adımında sızma testi sırasında elde edilen veriler de kullanılarak oluşturulacaktır. Saldırı için kullanılacak araç veya geliştirilecek betikler söz konusu servise yönelik ve bu servisin iletişim kurduğu protokole uygun olarak sızma testi sırasında belirlenecektir. 

Tespit Edilen Servis Versiyonlarına Yönelik Açıklık Tespiti

  • Versiyonu belirlenen servisler için herkese açık açıklık veritabanları taranacaktır. Söz konusu açıklık için yayınlanmış bir POC (proof of concept) saldırı kodu bulunuyorsa bu kod derlenerek söz konusu açıklığın gerçekten bulunup bulunmadığı sızma testi sırasında test edilecektir.

  • Özellikle açıklığın saldırı koduyla denenmesi risk yönetim prosedürümüz gereği kurum temsilcisiyle koordinasyon halinde gerçekleştirilecektir.

  • Hizmet kesintisine yönelik saldırı kodları denenmeyecek, açıklık veritabanlarından söz konusu versiyonla ilgili raporlanmış olan hizmet kesintisi açıklıkları sadece olası açıklık olarak sızma testi sırasında raporlanacaktır.

Genel Ağ Güvenliği Değerlendirmesi

Ağ güvenliği değerlendirmesi sadece yetkisiz erişim zafiyetleri ve hafıza taşma, “format string”, “integer overflow”, “race condition” gibi uygulama açıklıkları yönünden değil sızma testi sırasında aşağıdaki açılardan da gerçekleştirilecektir:

  • Filtreleme kurallarının yeterliliği

  • Parola politikalarının yeterliliği

  • Kaba kuvvet saldırılarına karşı kullanılan yöntemlerin etkinliği 

  • İnternet’e açık servislerin nitelikleri ve gereklilikleri (örneğin veritabanı servisinin doğrudan internet gibi tehlikeli ağ bölümlerine açılmasının neden olacağı riskin değerlendirilmesi gibi)

  • Kullanılan protokollerin güvenlik açısından yeterliliği (örneğin e-posta veya finansal işlem sağlayan servislerde kriptolama kullanılmaması gibi)

  • Kullanılan servislerin kullandığı kriptolama ve özet algoritmalarının yeterliliği

  • Servislerin hatalı işlemler, hatalı kullanıcı tanılama denemelerine karşı verdiği hata mesajlarının kritik veya saldırganın işini kolaylaştırıcı bilgi barındırmaması

  • Servislerin gereğinden fazla bilgiyi banner’larında veya yanıt olarak dışarı sızdırmaması

YAKLAŞIM

Uygulama Sızma Testi Yaklaşım Özeti

Tüm tehditleri göz önüne almayı güvece altına alan adımların izlenmesinde yoğunluk, tekrar ve sıralama konusunda şu prensipler sızma testi sırasında göz önüne alınmaktadır:

  • Uygulama fonksiyonalitesi, mimarisi ve teknolojisi’nin anlaşılması: Yaklaşımımızın da ilk adımını oluşturan uygulamanın anlaşılması ve haritalanması bize muhtemel hedef noktalarını daha net görme imkanı sunmakta, dolayısıyla uygulamaya özgü belli alanlara daha fazla odaklanmamıza izin vermektedir.

  • Sızma testi sırasında tespit edilen açıklıkların önceki adımlara ve diğer açıklık türlerine etkisinin değerlendirilmesi: sızma testi sırasında tespit edilen her açıklık tamamlanmış olsa dahi daha önceki adımların daha etkin gerçekleştirilmesine (örneğin bir erişim kontrolü açıklığı nedeniyle kullanıcı adlarının öğrenilmesi parola saldırısını etkinleştirebilir), veya bir açıklık tespitinin diğer açıklıkların kullanılmasına katkı sağlamasına (örneğin girdi filtrelemedeki bir açıklık uygulamanın geneline etki ediyorsa diğer enjeksiyon saldırıları bu bilgi ile daha etkin gerçekleştirilebilir) imkan tanıyabilir. 

Yukarıda sayılan prensipler, ağ sızma testinde de olduğu gibi seri adımlar olarak ifade edilen denetim yaklaşımının denetlenen uygulamanın niteliklerine uygun olarak özelleştirilmesine neden olabilecektir.

Uygulama İçeriğinin Haritalanması

Link’lenmiş içeriğin tespiti

  • Uygulamanın kendi içinde linklerle erişilebilen görünen içeriğinin tespiti

  • Arama motorlarının hizmetinden faydalanılarak siteye başka sitelerden linklerin ve arama motoru tarafından belirlenmiş linklerin tespiti

Diğer içeriğin tespiti

  • Linklerle ulaşılamayan saklı içeriğin araştırılması

  • Öntanımlı içeriğin araştırılması ve tespiti

Standart dışı erişim metodları ile içeriğe erişim araştırması

  • URL içeriğinde veya POST verisi içinde fonksiyonaliteye ve içeriğin sunulmasına ilişkin kontrol amacıyla kullanılan parametrelerin değiştirilmesi yöntemi ile normalde sunulmayan içerik ve fonksiyonalitenin araştırılması

  • “Debug” parametrelerinin araştırılması ve bu parametrelerin değiştirilmesi suretiyle “debug” içeriğine erişilmeye çalışılması

Uygulama Fonksiyonalite ve Teknoloji Analizi

  • Uygulamanın tüm fonksiyonlarının gözden geçirilmesi suretiyle kendisinin sağladığı ve diğer destek sistemlerinden temin ettiği (e-posta, loglama, vb. Gibi) fonksiyonalitenin anlaşılması

  • Uygulamanın veri girdi noktalarının belirlenmesi

  • Kullanılan teknolojilerin tüm katmanlar (web sunucusu, uygulama sunucusu, istemci betik ve uygulamaları, vd.) için belirlenmesi

  • Tespit edilen fonksiyonalite, girdi noktaları ve teknolojilere yönelik saldırı yüzeyinin haritalanması

İstemci Tarafı Kontrollerinin Testi

İstemci ile sunucu arasında kullanılan veri iletim yöntemlerinin belirlenmesi

  • Saklı alanlar (hidden fields)

  • Çerezler (cookies)

  • URL linklerinin içine gömülü önceden belirlenmiş parametreler

  • ASP.NET ViewState içeriği (ViewState alanına programcı tarafından parametre eklenmesi mümkündür)

İstemci tarafında uygulanan girdi kontrollerinin tespiti, bu kontrollerin sunucu tarafında da gerçekleştirilip gerçekleştirilmediğinin kontrolü

  • Uzunluk limit kontrollerinin testi

  • JavaScript ile yapılan kontrollerin tespiti ve saldırı proxy’leri aracılığıyla geçersiz kılınması

  • Disable edilmiş form elemanlarının değiştirilerek sunucuya gönderilmesi ve uygulama üzerindeki etkisinin gözlenmesi

İstemci tarayıcısında çalışan mobil uygulamaların incelenmesi

  • Java Applet kullanımının tespit edilmesi, bu bileşen aracılığıyla yapılan kontrollerin geçersiz kılınması, applet’in sunduğu metodlar kullanılarak istenilen verilerin kodlanması, applet’in decompile edilerek kaynak kodunun incelenmesi

  • ActiveX kullanımının tespit edilmesi, metodlarının ve kullanım amaçlarının analiz edilerek farklı amaçlarla kullanılması, gerçekleştirdiği kontrollerin geçersiz kılınması

  • Flash nesnelerinin tespiti, ActionScript kaynak koduna disassemble edilerek fonksiyonalitesinin anlaşılması, flash nesnesi ile yapılan kontrollerini saldırı proxy’si ile geçersiz kılınması

Kullanıcı Tanılama Testleri

Kullanıcı tanılama mekanizmalarının anlaşılması

Doğrudan saldırı testi

  • Parola kalitesinin testi (yeni kullanıcı yaratma ve parola değişikliği ile)

  • Kullanıcı kodu tespit etme saldırıları (uygulamanın mevcut ve mevcut olmayan kullanıcı kodlarına verdiği yanıt farklılıklarından yola çıkarak)

  • Sözlük ve kaba kuvvet saldırılarıyla parola tahmin saldırıları

Özel kullanıcı hesap yönetim ve kullanıcı tanılama fonksiyonalitesine yönelik testler

  • Kilitlenme veya parola unutma durumunda hesap kurtarma (reset) fonksiyonalitesinin açıklıklar açısından testi

  • “Beni hatırla” fonksiyonalitesinin istemci tarafında, tahmin edilebilir veya log bilgilerinden dolayı ortaya çıkabilecek riskler açısından incelenmesi

  • Başka kullanıcı haklarıyla çalışan fonksiyonalitenin araştırılması

Kullanıcı kodlarının tekliğinin araştırılması

  • Erişim bilgilerinin (kullanıcı kodu, parola, diğer) tahmin edilebilirliğinin değerlendirilmesi

  • Erişim bilgileri iletim yöntemlerinin güvenliğinin denetlenmesi

  • Kullanıcı erişim bilgilerinin kullanıcılara iletim yöntemlerinin güvenliğinin denetlenmesi

  • Kullanıcı tanılama mantığına yönelik testler

  • Uygulamaya çeşitli girdi manipülasyonlarıyla (kontrol mantığını bozan, uygulamaya hafıza taşma hatası yaşatan, vd.) hata aldırılması durumunda kullanıcı tanılama adımının geçilip geçilemediğinin denetimi

  • Çok aşamalı kullanıcı tanılama yöntemlerinde ara aşamaların atlanıp atlanamayacağının denetimi. Aynı zamanda ara aşamalarda oturum yönetim parametrelerinin değiştirilip değiştirilmediğinin denetimi

Yukarıdaki adımlar neticesinde tespit edilen açıklıkların kullanılması ve yetkisiz erişim gerçekleştirilmeye çalışılması

Oturum Yönetimi Testleri

Oturum yönetim mekanizmasının anlaşılması

“Token” üretim güvenliğinin denetlenmesi

  • Token’ın içeriğinin anlamlandırılıp anlamlandırılamadığının incelenmesi

  • Token’ın tahmin edilebilirliğinin denetlenmesi

“Token” iletim ve kullanımındaki güvenlik açıklıklarının denetlenmesi

  • Token’ların iletim güvenliğinin incelenmesi

  • Token’ların iz kayıtlarında (log kayıtlarında) görülüp görülmeyeceğinin incelenmesi (örneğin URL içinde iletilmesi sonucunda proxy, ISP ve web sunucusu iz kayıtlarında görülmesi)

  • Token’ların oturumlarla ilişkilendirilme yönteminin incelenmesi (aynı token’ın aynı kullanıcıyla farklı oturumlarda ilişkilendirilip ilişkilendirilmediğinin, aynı anda 2 oturum açılması durumunda farklı oturum token’ları üretilip üretilmediğinin denetimi)

  • Oturum sonlandırmanın güvenli biçimde yapılıp yapılmadığının denetimi

  • “Session Fixation” açıklığının test edilmesi (tanılama sonrası oturum token’ının tazelenmemesine karşın denetlenmesi)

  • “XSRF – Cross Site Request Forgery” açıklığının test edilmesi (XSRF özellikle çok kullanıcılı ve bir kullanıcının yüklediği içeriğe diğer kullanıcıların erişmesi durumunda oturum yönetimi için sadece token’a güvenilmesi durumunda ortaya çıkan bir açıklıktır)

  • Çerez (cookie) kapsamlarının yeterli biçimde kısıtlanıp kısıtlanmadığının incelenmesi

Erişim Kontrol Testleri (iDOR vb.)

  • Uygulamanın erişim kontrol ihtiyaçlarının anlaşılması (yatay olarak farklı kullanıcıların erişim kontrol ihtiyaçları ve dikey olarak sistem yöneticisi ve kullanıcı erişim kontrol ihtiyaçlarının anlaşılması)

  • Birden fazla farklı kullanıcı koduyla uygulamaya erişilerek erişim kontrol yeterliliğinin denetlenmesi

  • Sistem yöneticisi haklarıyla erişilebilen fonksiyonalite ve içeriğe kısıtlı haklara sahip kullanıcı olarak erişilip erişilemediğinin denetlenmesi

  • Güvensiz erişim kontrol mekanizmalarının (örneğin saklı bir form sahasında gönderilen bir parametreye veya HTTP referer başlığındaki değere dayanarak yapılan kontrollerin) denetlenmesi

Tüm Parametrelerin “Fuzz” Edilmesi

İstemciden sunucuya giden tüm istek parametrelerinin belli saldırı tiplerine uygun olarak “fuzz” edilmesi, yani beklenmeyen değerler gönderilerek hatalı bir yanıt gelip gelmediğinin incelenmesi yöntemiyle açıklık tespiti yapılması

  • SQL enjeksiyonuna yönelik girdilerin gönderilmesi

  • XSS (Cross Site Scripting) saldırılarına yönelik girdilerin gönderilmesi

  • İşletim sistemi komut enjeksiyonuna yönelik girdilerin gönderilmesi

  • Dizin aşım saldırılarına yönelik girdilerin gönderilmesi

  • Web sunucusunda çalışan (PHP, ASP.NET gibi) betik enjeksiyonuna yönelik girdilerin gönderilmesi

  • Dosya dahil etme (file inclusion) komut enjeksiyonuna yönelik girdilerin gönderilmesi

Fonksiyonalite’ye Özgü Saldırı Testleri

Bilgi toplama ve fonksiyonalite analizi bölümündeki aktiviteler sırasında tespit edilen aşağıdaki türde destek sistemlerine ulaşarak ek fonksiyonalite sağlayan uygulama alanlarına yönelik olarak aşağıdaki testlerin gerçekleştirilmesi

  • SMTP enjeksiyonu (e-posta fonksiyonalitesi için arka tarafta bir e-posta sunucusuna ulaşılıyorsa)

  • Yine işletim sistemi veya veritabanı sunucuları üzerinde çalışan yüksek fonksiyonalite sağlayan destek uygulamalarında yer alabilecek hafıza taşma, “integer”, “format string” açıklıklarının (fonksiyonelitenin tespit edildiği alanlara odaklanılarak) denetlenmesi

  • SOAP enjeksiyonu (ek fonksiyonalite için web servisi kullanılıyorsa)

  • LDAP enjeksiyonu (uygulama bir dizin sunucusundan sorgulama yapıyorsa)

  • XPATH enjeksiyonu (uygulama bir XML veri kaynağından sorgulama yapıyorsa)

Mantık Hatalarının Testi

Uygulama mantık hataları testleri her uygulamaya özel bir yaklaşım gerektirmekte, uygulama fonksiyonalitesi ve işlem akışları anlaşıldıktan sonra uygulama geliştiricinin varsayımlarını tahmin etme ve bu varsayımlardaki güvenlik açıklarını sızma testi sırasında değerlendirme şeklinde gerçekleştirilmektedir. Mantık hatalarının aranacağı temel alanlar şunlardır:

  • Çok aşamalı işlemler ve bu işlemlerin her aşamasında bir önceki aşamadaki kontrollerin uygulandığı varsayımı

  • İstemci tarafında yapılan kontroller sonrası tamlığı sağlanan ancak saldırı proxy’si aracılığıyla bu kontrollerin geçersiz kılındığı durumlarda uygulamanın beklediği girdilerin tamamının gönderilmemesi durumunda uygulama davranışındaki değişiklikler

  • Güven sınırlarının oluşturulmasındaki hatalar, örneğin bir kullanıcı belli bir kontrolü geçerek belli bir işlem için güvenilir statüsüne geçebilir ve bu statü ile erişmemesi gereken başka bir kaynağa da ulaşabilir

  • İşlem mantığında bulunan hatalar, örneğin bir işlem için üst limit konulan bir forma negatif girdi girerek uygulama davranışının değiştirilmesi veya aynı sonuca ulaşmak üzere bir miktar limiti konmasına rağmen çok sayıda işlemle aynı miktar için işlem yapılması gibi

Web Sunucusunun Testi

Web uygulama katmanını destekleyen HTTP sunucusuna yönelik test adımları HTTP sunucusunun model ve versiyonunu tespit etmeyi ve aşağıdaki aktiviteleri içerir:

  • Öntanımlı kullanıcılar ve parolalarının denetimi

  • Öntanımlı içeriğin tespiti

  • Tehlikeli HTTP metodlarının desteklenip desteklenmediğinin denetimi

  • Proxy fonksiyonalitesinin varlığı ve ağdaki başka kaynaklara yönelik saldırı amaçlı kullanıp kullanılamayacağının tespiti

  • Sanal makine (virtual host) ayarlarındaki açıklıkların denetimi (Host HTTP başlık alanına doğru, hatalı ve IP adresleri girilmesi yöntemleriyle)

  • Web sunucu yazılımındaki açıklıkların denetlenmesi (sunucu model ve versiyonuna yönelik bilinen açıklıkların araştırılması ve denenmesi yoluyla) 

Diğer Testler

Daha önce sayılanların dışında aşağıdaki testler de web uygulama sızma testlerinin parçasıdır:

  • Kullanılan tüm JavaScript betiklerinin Document Object Model (DOM)’i hedef alan bir XSS saldırısına imkan tanıyıp tanımayacakları açısından incelenmesi (JavaScript kodu URL içinde yer alan bir parametreyi tehlikeli DOM metodlarıyla işliyorsa DOM temelli bir XSS açıklığı doğabilir)

  • Çerezler (cookies) nedeniyle oluşabilecek lokal mahremiyet açıklıklarının incelenmesi

  • Denetim sırasında tespit edilecek bilgi sızmalarının (örneğin çok detay içeren hata mesajları, uygulama kodu, dizin listesi gibi) sağladığı bilgilerin değerlendirilmesi ve diğer saldırılara girdi sağlaması

  • Zayıf SSL kriptolama ve özet algoritmalarının desteklenip desteklenmediğinin denetlenmesi

  • İsimli “frame”ler kullanılıyorsa frame enjeksiyon açıklığının test edilmesi

Ağ Sızma Testi Araçlarına Örnekler

Ağ sızma testi temel olarak işletim sistemi ve servis üretici ve versiyon tespit çalışmaları üzerine tesis edilecek, daha sonra kullanılacak araçlar tespit edilen işletim sistemi ve servis versiyonlarına bağlı olarak çok çeşitli araçlar olabilecektir. Aşağıda sayılan araçlar bu tür araçlara sadece örnek olarak verilmiştir. Sızma testi sırasında bu araçların dışında araçlar, özel geliştirilmiş betikler, ilgili servis versiyonları için açıklık veritabanlarında yayınlanmış saldırı betikleri kullanılabileceği gibi aşağıda sayılan araçların hepsinin kullanılmasına gerek olmayabilecektir.

  • Genel Bilgi Toplama ve Haritalama Araçları 

  • Genel Açıklık ve Servis Tarama ve Tespit Araçları 

    • Qualys (Ticari Yazılım)

    • Nessus (Proffessional Feed)

    • nmap 

    • Udp scan

    • Telnet

    • NetCat 

    • Snmpwalk 

  • Paket Üretme Araçları

    • Hping 

    • nemesis 

  • Genel Güvenlik Araç ve Saldırı Platformları 

    • Backtrack 4.0 

    • Diğer Linux Platformları 

    • Microsoft Resource Kit

    • Metasploit Framework

    • Exploit Tree

    • Internet Açıklık ve Güvenlik Araç Veritabanları

  • İşletim Sistemi ve Uygulama Versiyon Tespit Araçları

    • nmap/amap (aktif tespit için)

    • XProbe (aktif tespit için)

    • p0f (pasif tespit için) 

  • Web Servisleri ve VPN Servislerine Özel Tespit Araçları

    • sitedigger 

    • httprint / httrack 

    • ikescan 

  • Parola Kırıcılar ve Kaba Kuvvet Saldırı Araçları 

    • L0phtCrack

    • John the Ripper

    • Hydra

    • Brutus 

    • Tsgrinder 

  • Windows’a Özel Servis, Kullanıcı Tespit, Komut Çalıştırma Araçları

    • NBTScan 

    • GFI Languard 

    • DumpSec / enum / sid2user /user2sid vd. 

    • Pwdump 

    • pstools 

  • Unix/Linux’a Özel Servis, Kullanıcı Tespit, Komut Çalıştırma Araçları

    • Rpcinfo 

    • R-Tools (rlogin, rsh, rcp, rexec)

    • finger 

  • Kablosuz Ağ Denetim Araçları

    • Kismet

    • Aireplay-ng

    • Aircrack-ng

Uygulama Sızma Testi Araçlarına Örnekler

Manuel ve Özelleştirilmiş Otomatik Test Araçları:

  • Web uygulama güvenliği sızma testi çalışmasının önemli oranını oluşturacak manuel testler için “Burp Suite – Lisanslı Sürüm” platformu kullanılacak, özelleştirilmiş testler için Burp Suite’in yetersiz kaldığı durumlarda “Ruby” veya diğer betik dilleri kullanılarak test betikleri geliştirilecektir.

Otomatik Test Araçları:

  • Web sunucusunun ve web uygulamasının otomatik açıklık taraması ve web uygulama parametrelerine yönelik otomatik fuzzing denetimi için faydalanılabilecek araçlardan bazıları aşağıdaki gibidir:

  • Paros (Saldırı proxy’si ve SQL ve XSS enjeksiyonlarına yönelik otomatik parametre fuzzing aracı olarak)

  • Webscarab (Saldırı proxy’si ve otomatik denetim aracı olarak)

  • Nikto (Web sunucusuna yönelik kendi veritabanında bulunan öntanımlı dizin ve dosyaların, yönetici sayfalarının tarama yöntemiyle tespiti için)

  • W3AF (Genel web uygulama güvenlik tarayıcısı olarak)

  • Acunetix (Genel web uygulama güvenlik tarayıcısı olarak)

  • Hydra (Parola saldırılarını otomatize etmek için)

  • Httprint ve HTTrack (Web sunucusu parmak izi analizi ve web sunucusu kopyalama için)

e-posta listesine katılın

©eXofen Siber Güvenlik ve Danışmanlık Hizmetleri