27 Aralık 2011 Salı

IPv6 - Saat 3

IPv4 - IPv6 İletişim - Çeviri
IPv4 bir cihaz ile IPv6 bir cihaz doğrudan haberleşemez.
Çeviri
  • Çevirici, üzerinde çeviriyi yapan bir betik çalıştıran alelade bir bilgisayar.
  • Uçtan uca bağlantıyı kesen - bozan bir yapı
    • Video konferans, uzaktan erişim vb. durumlarda sıkıntı var.
  • IPSec çalışmaz bu yöntemle. Göndericide hesaplanan bütünlük değeri ile alıcıda hesaplanan farklı olacak, arada çevirdik çünkü.
  • Bu başlık altındaki yöntemler:
    • NAT64 - DNS64
      • Belirlenen önek arkasına IPv4 adresi eklenerek çeviri yapılıyor.
      • IPv4 adresi, hexa olarak da decimal olarak da eklenebiliyor, ikisi de kabul ediliyor.
      • Belirlenen ön ek: 64:FF9B::/96
    • TRT
    • IVI

26 Aralık 2011 Pazartesi

IPv6 - Saat 2

IPv6 Adres Tipleri
  • Unicast. Tek bir interface tanımlar
  • Multicast. Bir gruba gönderilir
  • Anycast. Paket sadece aynı adresi kullanan, bize en yakın üyeye gönderilir.

  • IPv6'de
    • Broadcast yok (Multicast var)
    • NAT yok
  • Küresel yönlendirilebilir IPv& adresleri, 2 ile başlıyor!
  • 0::/8 bloğu
    • Belirsiz adres: 0:0:0:0:0:0:0:0
    • 0:0:0:0:0:0:0:1
  • 001::/3 => Global unicast (Mantıken "küresel NAT" gibi düşünülebilir)
    • Bir interface'e istediğimiz kadar adres verebiliriz
    • Kernel seviyesinde "bu interface'e şu kadar adres verilebilir" diye ayarlamakta fayda var!
    • Küresel yönlendirme öneki
      • ISP'ler içim 32
      • Diğer için 48
  • FE80::/10 => Link local unicast - link local adres.
    • Sadece lokalde bu tür adresler olması lazım, dışarıda görmememiz lazım aslında. Ama görülüyormuş...
  • FF00::/8 => Multicast
    • Streaming
    • Lokal ağda kullanılacak gibi görünüyor.
    • "Tüm multicast adresler" oluşturulduğunda v4'teki broadcast'e karşılık oluyor.
  • IPv6 adreslerini
    • Üniversitelere Ulakbim verecek
    • Kamu kurumları ISP'lerden temin edebilecek
    • Türk Telekom, IPv6 hizmeti sunmaya başladı
Başlık Yapısı
  • Ek başlıklar kullanılmadıysa "paketin ilk şu kadarı başlıktır" diyebiliyoruz.
  • Başlık paketleri
    • Version
    • Traffic class
    • Flow label
    • Payload length <==
    • Next header <==
    • Hoop limit <==
    • Source address
    • Destination address  
  • Fragmentation işi, ek başlıklarla hallediliyor.
  • IPv6, fragmentation'ı aradaki hiçbir cihaz yapmasın, source ile destination bilsin sadece. Böylece statement vs.'ye ihtiyaç kalmıyor
  • UZANTI BAŞLIKLARI

ICMPv6
  • Aradaki FW vb. cihazların, ICMP tiplerine göre filtreleme yapıabiliyor olması gerekecek.
  • Tip alanı (ilk 8 bit)
    • İlk bit 0 ise (0-127) => hata mesajı
    • İlk bit 1 ise (128-255) => bilgi mesajı

  • "goforit" projesi: Dünya çapında IPv6 destekleyen cihazlar
  • Komşu keşfi (Neighbor discovery) protokolü
    • ICMPv6 mesajlarını kullanır
    • ARP + ICMPv4 router discovery + ICMPv4 redirect
  • 2 tip adres yapılandırması
    • Statik. Sunuculara yaparız, sonra o sunucuya otomatik ip yapılandırmasına girme deriz.
    • Otomatik
      • Stateless (durum denetimsiz). Kime ne IP verildiğini tutan bir şey yok. İlan edilen prefix'i (ilan eden muhtemelen router) alan cihaz, IP  üretir ve kullanır. Üretim MAC adresi kullanılarak yapılır.
        • Yeni uygulamada, IP'den MAC adresi anlaşılmasın diye MAC kullanımından vazgeçiliyor.
      • Stateful (durum denetimli). Dağıtılan IP'lerin tutulduğu durum.
        • DHCPv6 kullanılabilir.
        • Bir sıkıntı: Router advertisement ile gateway dağıtamıyoruz.
        • Çok düşünülerek tasarlanmamış, durum denetimsiz kullanılması öngörülerek tasarım yapılmış.

IPv6 - Saat 1


 IPv6 Temelleri

  • RFC 2460 - 2461
  • Her ne kadar "Yeni Nesil IP yapılandırması" diyorsak da yaklaşık 10 yıllık bir teknoloji.
  • En temel ihtiyaç sebebi: IPv4 32 bitlik adres yapısı (adresleme için yetersiz)
  • 3 Şubat 2011: IANA, elinde kalan son /8 IPv4 aralıklarını bölgesel IP adresi dağıtım yetkililerine (RIR) paylaştırmış.
  • NAT'ın temel sıkıntısı, uçtan uca bağlantı yapısını bozuyor olması.
  • IPSec ya da uygulama seviyesinde IPv4'ün açıklarını kapatmaya çalıştık.
  • "Otomatik IP yapılandırması"
    • Durum denetimcisiz IP yapılandırması
    • Örnek: Kablosuz sensör ağları
      • ABD'nin Afganistan'da kullandığı iddiaları var.
  • Servis kalitesi (QoS)
  • Yeni teknolojilere adaptasyon kolaylığı sağlaması için esnek başlık parçası düşünülmüş. Yeni bir teknoloji için başlığın değişmesi düşünüldüğünde bu ek başlık, başlığa iliştiriliyor... diye anladım.
  • IPv6, 128 bitlik adres yapısına sahip.
Yeni Güvenlik Özellikleri
  • IPSec, bütünleşik olarak gelmekte.
  • Güvenlik için ek başlıklar mevcut.
 Getirdikleri
  • Sadeleştirilmiş başlık yapısı. Kullanmadığımız parametreleri kaldırıp ihtiyaç duyduğumuz yeni başlıkları ekleme.
  • Otomatik adres yapılandırması 
  • Neighbor Nodes ile etkileşim için yeni protokol
    • ICMPv6
    • Multicast
  • Dolaşılabilirlik. Farklı ağlar içinde aynı IP adresinin kullanılması.


  • IPv6 kısaltma kuralları (RFC-5952)
    • Solda kalan 0'lar atılır
    • 4 hexa basamağı da 0 olan blokları komple atalım ve yerine ":" koyalım. DİKKAT: Bu kısaltma 1 kez yapılmalı, yoksa o ":" ile kısaltılan aralıklarda kaçar 0 atıldığını bilemeyiz.
    • Örnek
      • 2001:0db8:0000:0000:0000:0000:0000:0c50
      • 2001:db8::c50
  • CIDR gösterimi kullanılmaktadır.
    • Ağ adresini belirleyen bit sayısı / işareti kullanılarak adres sonuna yazılır
      • 2001:db8::2aa:ff:fe28:9ce5 /32
      • Ağ adresi: 2001:db8::
  • Subnetleme
    • 4'ün katı olsun maskelerimiz. Yoksa işleri karıştırabiliriz
    • En uzun 64 bit maske
    • Kalan 64 bit, arayüz tanıtıcı olacak. Cihaz, 48 bitlik MAC adresine 16 bit daha ekleyerek tanıtıcı yapacak kendisine.
    • ISP, 56 bitlik aralık verdiyse, 64 - 56 = 8 bitlik subnet adresleme aralığın olacak; 2 üzeri 8 subnet tanımlayabilme demek bu da.
    • Daha çok subnet istiyorsak, ISP'den 52 bitlik ya da daha düşük bitlik aralık alacağız paraya kıyıp.

15 Eylül 2011 Perşembe

Form Authentication Brute Forcing w/Hydra

Hydra kullanarak POST talebi yapan bir kullanıcı girişi ekranına kaba kuvvet saldırılması için düzenlenmesi gereken parametreler:
# hydra
- l ya da -L: login (kullanıcı adı) bilgisi. -l ile tek bir kullanıcı adı verilirken, -L ile bir dosya verilir (loginWordList).
-p ya da -P: password bilgisi. -p ile tek bir parola verilirken, -P ile bir dosya verilir (passwordWordList).
-f: İlk başarılı denemede uygulamanın sonlanmasını sağlar (finish)
-t 10: Paralelde çalıştırılacak task sayısı. Ön tanımlı değer 16'dır, ön tanımlı kalmasında bir sakınca göremedim.
server: Hedef sunucu (192.168.4.158 gibi)
service: POST talepli bir form authentication için bu değer "http(s)-post-form"dur. Bu parametre, arkasından çift tırnak içinde ve iki nokta ile ayrılacak şekilde 3 parametre alır: "<URL>:<Form parametreleri>:<Başarısız denemede alınan mesaj parçası>". Form parametreleri, & ile ayrılır ve kullanıcı adının geleceği yere ^USER^ ve parolanın geleceği yere ^PASS^ karakter kümesi konur.

Örnek bir hydra komutu şu şekilde gerçekleşir:
hydra -L /pentest/passwords/john/user.lst -P /pentest/passwords/john/user.lst 192.168.4.158 http-post-form "/authentications/login:data%5BAuthentication%5D%5Busername%5D=^USER^&data%5BAuthentication%5D%5Bpassword%5D=^PASS^:recognized" -f

25 Ağustos 2011 Perşembe

HTTP Verb Tampering

HTTP Filleri Kurcalama
http://jeremiahgrossman.blogspot.com/2008/06/what-you-need-to-know-about-http-verb.html adresindeki Jeremiah Grossman'ın konu ile ilgili yazısı temel alınarak hazırlanmıştır:


  1. Bir web uygulamasının ne tür HTTP talepleri almayı umduğu manipülasyonu, GET talebini POST'a çevirmek ya da tersi gibi, yıllardır yapılagelen bir kurcalama. Web uygulamamız sadece gelmesini beklediğimiz taleplere izin vermeli, fazlasına değil. İlginç olan bu taleplerin ne zaman ve hangi amaçlarla kullanılabileceği.
  2. HTTP fiilleri kurcalama, genellikle söz dizimsel (SQLi, XSS gibi) ve anlamsal/semantik (kimlik doğrulama ya da yetkilendirme atlatma gibi) saldırılarla birlikte, defansif önlemleri atlama yöntemi olarak kullanılır. Arshan Dabirsiaghi'nin çalışması, anlamsal saldırılarla birlikte kullanmaya odaklanmıştır.
  3. Söz dizimsel saldırılarda HTTP filleri kurcalama, bir oturum nesnesinden kötü niyetli veriyi (DROP TABLE...) almada kullanılabilir. Mesela sorgu parametreleri ayıklanmıştır (sanitize / steril edilmiş); ama saldırgan parametreyi POST kullanarak POST parametresi olarak mesaj gövdesi içinde gönderebilir ve bu verinin sterilizasyonu da uygulama tarafından gözardı edilmiş olabilir. Bu durum SQLi, XSS vb teknik zafiyetlere neden olabilir.
  4. Söz dizimsel HTTP fiil kurcalamalarından korunmak için, kullanıcıdan sadece beklenen formatta ve beklenen parametre isimlerinde girdiler kabul edilmelidir. Saldırganın keyfi isim/değer çiftleri eklemesine izin verilmemelidir.
  5. Anlamsal ataklarda HTTP fiil kurcalama, özel HTTP filleri (GET gibi mesela) ve özel alanlar için var olan  yetki ve kimlik denetimi korumalarını atlatmak için kullanılabilir. Bir ayar, /admin/* dosyalarına yapılan GET taleplerinin admin oturum rolüne sahip olması gerektiğini söyleyebilir. Bu ayarda listelenmeyen bir metodun (POST ya da HEAD gibi) otomatik olarak reddedildiği (default-deny mode) varsayılmış olabilir; gerçekte böyle olmak zorunda değildir. HEAD metodu, GET gibi düşünülmelidir, tek fark, HEAD metoduna bir yanıt dönmez. Saldırgan, /admin/delete_user.cgi?id=1 talebini, HEAD metodu ile, yukarıdaki ayardaki eksiklik/hata nedeniyle gönderebilir. Her hangi bir yanıt dönmesine ihtiyacı yoktur saldırganın.
  6. Kişinin kendisini koruması için yapabileceği birkaç şey var. En doğrudan olan yol, tüm HTTP metodlarının / fiillerinin aksi tanımlanmadığı sürece default-deny modda olması.
  7. Söz dizimsel zafiyetlerin taranması mümkün, ancak zafiyetin sömürülebilmesi için birkaç talep gönderilmesi gerekliliği de her zaman olasıdır. Anlamsal zafiyetlerin taranması ise çok daha zordur ve çoğu zaman manüel tarama / çalışma gerekir. Tarayıcılar teknik olarak zafiyeti yakalayabilseler de bu tür zafiyetler temelde iş mantığı hatalarıdır; tarayıcılar bu testin çıktılarının neler olabileceğini bilemezler.

26 Temmuz 2011 Salı

Pentest in Practice - XI: Firewall/IPS Evasion

Firewall, IPS vb Atlatma

  • IPS'lerin çok başarılı olamamasının 2 nedeni:
    • Webden gelen saldırılar
    • Post-exploitation'da SSL üzerinden (socat, netcat, meterpreter) reverse-shell
  • Firewall, kural tablosuna (iptable) top-down bakar; bulduğu duruma uyan ilk kuralı çalıştırır ve tabloya bakmayı bırakır.
  • hackvertor.co.uk/public => Encoding ile ilgili akla gelen tüm yöntemlerin olduğu site.
  • Firewall var mı kontrolü:
    • Telnet ile bloklanacak bir talep (GET/POST) gönderilir. Mesela ../../../etc/passwd gibi
    • Sunucudan cevap dönmemesi (Connection closed by foreign host benzeri bir kesilme) durumunda web sunucuya ulaşmadan istek engelleniyor demektir.
    • Talebe sunucudan yanıt (response, 404 not found vb) dönmesi, isteğin sunucuya kadar ulaştığını, bir cihaz tarafından kesilmediğini / engellenmediğini gösterir.
    • Bu kontrolü yaparken telnet kullanmakta fayda var. Doğrudan browser üzerinden yapılacak denemelerde browserlar girilen URL üzerinde gerekli düzenleme yaparak (mesela /etc/./passwd gibi girilecek deneme stringini /etc/passwd olarak düzenleyip göndermek gibi) gönderebilir; istediğimiz kalıbı deneyememiş oluruz.
  • Atlatma Yöntemi: Packet Fragmentation.
    • IP fragmentation'ı kullanabilmek için "rp_filter" disable edilir.
      • $ echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter; ya da
      • $ echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
    • Daha sonra fragmentation:
      • $ fragroute -f /usr/local/etc/fragroute.conf 95.173.123.112
    • Sonra telnet ile talep gönderilir. IPS doğru yapılandırılmadıysa sonuç sunucudan gelecektir; IPS'i atlattık demektir.
  • Atlatma Yöntemi: Encoding
  • Atlatma Yöntemi: SSL Kullanımı
    • telnet akbank.com 80 yerine
    • ncat --ssl akbank.com 443 kullanmak.
    • Layer-7 IPS ile SSL el sıkışma işi IPS tarafından yapılmadığı sürece SSL ile gönderilen taleplerin içeriğini IPS göremeyecek ve dolayısıyla talepler üzerinde kuralları işletemeyecektir.
  • Yanıtın IPS'ten mi, web/uygulama sunucudan mı döndüğü kontrolü:
    •  Normal bir talep gönderilir; TTL değeri tespit edilir (WireShark vb kullanılabilir)
    • IPS tarafından engellenecek bir talep gönderilir; TTL değeri tespit edilir
    • İkisi karşılaştırılır. Sunucu TTL'i 256'dan, IPS 128'den düşüyor olabilir mesela, TTL değerleri oldukça farklı olacaktır bu gibi durumlarda.
  • LoadBalancer varlığı kontrolü:
    • Resimvb içerik, varsa loadbalancer cihaz üzerinden servis edilir. Sunucu ile LoadBalancer cihazların TTL politikaları farklıysa yanıtı kimin döndüğünü yorumlayabiliriz.
    • LoadBalancer atlatma yöntemi: Search. LoadBalancer buna birşey yapamaz. Eş zamanlı birçok arama gönderildiğini düşün.

Pentest in Practice - X: Social Engineering

Sosyal Mühendislik

  • www.social-engineer.org => Social engineering toolkit
  • set (Social Engineering Toolkit)
    • BackTrack5'te kurulu geliyor => /pentest/exploits/set
    • set-update => Sık güncellendiğinden kullanmadan önce bunu yapmakta fayda var.
    • ./set => console UI; ./set-web => graphical UI
    • # use /exploit/multi/handler

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....