- Ön tanımlı portlar (http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers):
- NTP ==> UDP 123
- Telnet ==> TCP 23
- SMTP ==> TCP 25
- DNS ==> TCP 53 & UDP 53
- SMTP ==> TCP 25
- Printer ==> TCP 515
- TFTP (Trivial FTP) ==> UDP 69
- Syslog ==> UDP 514
- SNMP ==> UDP 161
- SMB ==> TCP 445
- LDAP ==> TCP & UDP 389
- POP3 ==> TCP 110
- Kerberos ==> TCP & UDP 88
- PCI-DSS (Payment Card Industry Data Security Standard), senede en az 1 kez ve her kayda değer değişiklik ve güncelleme sonrası iç ve dış sızma testleri ihtiyacı olduğunu söyler.
- Saldırgan makinesinden zombi bilgisayara gönderilen IPID'ye, zombi bilgisayar talep kapalı porta geldiyse IPID+1, açık porta geldiyse IPID+2 olarak yanıt döner.
- Akıllı kartlar, sertifikalarını güvenli bir şekilde transfer etmek için EAP (Extensible Authentication Protocol) protokolünü kullanır.
- İnternetten kurum içine yapılacak bir testte, sınır uyarı sistemlerini alarma geçirmeden test yapabilmek için en etkili yol, taramayı SSH üzerinden tünellemektir.
- Smurf attack: Büyük miktarda ICMP paketini, hedeflenen kurban makinenin spoofed IP adresi ile oluşturup, IP broadcast adresi kullanarak bir networkte broadcast ederek yapılan DoS saldırısıdır. Bu, networkteki tüm hostların kurban mekineye yanıt dönmesine ve kurban makine üzerinde hatırı sayılır bir trafiğe neden olur. Bunu önlemenin yolu, router'ın broadcast ping mesajlarını kabul etmesinin engellenmesidir (disable).
- Fingerprinting VPN firewalls ==> Ike-scan
- Bir router'a TTL değeri 1 olan bir ICMP paketi geldiğinde router
- Paketi discard eder
- Paketi gönderen (kaynak) makineye "time exceeded" mesajı gönderir.
- Windows sistemlerde çalışan servisler, "sc query" komutu ile listelenebilir (Çok sayıda servis olduğundan terminalin buffer'ı hepsini göstermeye yetmeyebilir; komutu "| more" ile kullanmakta fayda var).
- Windows sistemlerde Microsoft tarafından imzalanmış kritik dosyaların bütünlüğü, "sigverif.exe" sistem aracı ile kontrol edilebilir.
- PKI, 1024-bit RSA algoritması kullanır.
- OSI modeli ve bazı süreçlerin yer aldığı katmanlar:
- 7. Application Layer
- 6. Presentation Layer
- 5. Session Layer
- 4. Transport Layer ==> TCP/IP Session hijacking, Circuit-level gateway
- 3. Network Layer
- 2. Data Link Layer ==> PPTP encryption
- 1. Physical Layer
- CISCO VPN config dosyalarının uzantısı "pcf"dir. Bu dosyalar bağlanma parolalarını içeriyor olabilir ve bu parolalar Cain and Abel ile decode edilebilir.
- Ethereal/Wireshark, TCPDump ve Snort, aynı paket yakalama özelliğine sahiptirler.
- Bir Windows makinede built-in firewall'ın ayarlarını command prompttan şu komutla öğrenebilirsiniz: "netsh.exe firewall show config"
- WPA2, 128 bit ve CCMP seviyesinde AES kullanır.
- Rubber Hose kriptografi saldırısı, genellikle bir bilgisayara ihtiyaç duyulmadan yapılır.
- Syskey, 128 bit encryption kullanır.
Önceleri web uygulama güvenliğine özel olması düşünülen blog, daha sonra diğer sızma testleri konularını da kapsayacak şekilde genişletilmiştir.
5 Mart 2013 Salı
CEH v7 Sınavına Çalışırken
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
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
ICMPv6
- 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ı
- 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.
- IPSec, bütünleşik olarak gelmekte.
- Güvenlik için ek başlıklar mevcut.
- 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 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:
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:
- 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.
- 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.
- 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.
- 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.
- 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.
- 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ı.
- 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.
Kaydol:
Kayıtlar (Atom)
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....
-
OWASP'ın 2010 yılı için açıkladığı en önemli 10 güvenlik riski ve bunlar için en faydalı araçlardan birer örnek, bu yazının konusunu ol...
-
Checklist for Web App Pentesting - V 6. Veri Denetimi (Data Validation) Testleri 6.1 Girdi Denetimi Bütün girdiler denetlenmelidir....
-
Dizin gezinimi denetimi için Perl'de hazırlanmış bir uygulama: DotDotPwn (ddpwn.pl) HTTP::Lite ve Net::FTP desteği olan Perl gerekiyor...