Salı, Temmuz 22, 2008

DNS Kandirma Zafiyeti


Internet isimleri ile IP adresleri arasında dönüşüm yapmak için Alan Adı Sistemi (Domain Name System, DNS) kullanılmaktadır. Alan adı sisteminin kandırma saldırılarına olanak sağlayan tasarım zafiyetlerine açık olduğu uzun süredir biliniyordu. Ancak araştırmacı Dan Kaminsky tampon DNS sunucularının önbelleklerini zehirlemek (cache poisoning) ve isimleri farklı bir adrese yönlendirmek için pratik bir teknik bulduğunu, ve bu tekniği Ağustos başında yapılacak olan BlackHat konferansında açıklayacağını duyurmuştu.

DNS yazılım üreticileri (BIND, Microsoft, Cisco vb.) tarafından yamalar hazırlanmış ve tüm DNS tampon sunucusu (cache server) işletenlerin acil olarak bu yamaları kurması önerilmiş, yapılandırma önerileri verilmişti.

Üreticilerin hazırladığı yamalar, DNS soru ve cevaplarını eşleştirmek için rastgele işlem numarası yanında rastgele bir kaynak port numarası kullanılması bu sayede kandırma saldırısında tahmin edilmesi gereken bilinmeyenleri arttırmayı sağlamaktaydı.

Olayı zaten çözmüş saldırganlar hariç herkes konferanstaki açıklamayı beklerken, başka bir araştırmacı, Halvar Flake zafiyetle ilgili bir hipotezini yayınladı. Bunun hemen ardından yapılan birkaç yorum sonucunda bu hipotezin doğru olduğu ortaya çıktı.

Zafiyet, bir tampon sunucuya zehirlemek istediğiniz alan adı altında olmayan isimleri sormak ve kandırmak için çok sayıda cevap göndermek üzerine kurulu. Saldırgan her defasında farklı bir isim sorgulayarak, tahmin etme için yeniden şans kazanıyor. Yüksek bir olasılıkla kısa zamanda (kaynak portunu rastgele belirlememiş bir tampon sunucu için yaklaşık 10 saniye) cevabın ve cevaba eklediği bir ek bilginin tampon sunucu tarafından kabul edilmesini bu sayede tampon kayıtların zehirlenmesini sağlıyor.

Bu zafiyet önbellek sunucularını ve bilgisayarlardaki önbellekli çözümleyicileri hedef alabiliyor. Bu nedenle üreticilerin sağladığı yamaların bir an önce uygulanması öneriliyor.

Bu saldırıya karşı alınabilecek diğer önlemler:
  • Tampon DNS sunucusuna sorgu yapabilen adresleri kısıtlayın. İnternet adreslerine alan adı çözümleme (recursion) servisini kapatın, bu servisi sadece yöneticisi olduğunuz IP blokları için aktif hale getirin. Ancak sorgu yapmaya izni olan makinalar (örneğin kotü niyetli bir yazılım aracılığı ile) bu zafiyeti kullanabilirler.
  • Yönettiğiniz ağdan bu tip bir saldırı yapılmasını engellemek için, size ait olmayan kaynak adreslerine sahip (spoofed) paketlerin ağınızdan dışarı çıkmasına izin vermeyin.
  • Tanımadığınız, genel kullanıma açık DNS tampon sunucuları kullanmak yerine kendi (yamanmış ve sağlamlaştırılmış) ön bellek sunucunuzu kullanmayı tercih edin.
  • DNS çözümleme yazılımı geliştiriyorsanız IETF tarafından hazırlanmakta olan ve DNS sunucularını saldırılara karşı sağlamlaştırmayı hedefleyen dokümanı takip edin.

Salı, Nisan 15, 2008

Sahte

"Türk parasının sahte olup olmadığını anlamak için, ışığa tutarız... Eğer içinde Atatürk varsa, o para gerçektir. İçinde Atatürk yoksa, sahtedir. Ne mal olduğunu anlamak için, insanları da ışığa tutun... İçlerinde Atatürk yoksa, sahtedir... İçinden Atatürk geçmeyen insanlara paye vermeyin, iltifat etmeyin."

Ali Poyrazoğlu (Yılmaz Özdil, Hürriyet 2008-4-15)

Perşembe, Kasım 01, 2007

OpenBSD 4.2

OpenBSD 4.2 bugün yayınlandı. Daha güncel donanım desteğine sahip 4.2'nin bana göre en önemli özelliği paket filtreleme ve ağ katmanında gerçekleşen performans artışları. En güvenli işletim sistemi için ön sipariş verenler CD'lerine birkaç hafta önce kavuşmuşlardı. OpenBSD ve OpenSSH projeleri tamamen kullanıcıların desteği ile ayakta durduğu için bağışlar ve CD / t-shirt siparişleri önem taşıyor.

Hoşçakal Samuray

Referans IPv6 kodu olan KAME projesinde aktif olarak görev alan, ve özellikle IPv6 olmak üzere tüm BSD tabanlı özgür işletim sistemlerine, katkıda bulunan Jun-ichiro “itojun” Itoh Hagino 29 Ekim'de aramızdan ayrıldı. Hayatını Samuray felsefesi ile onurlu, dürüst, nazik ve cesur yaşadı. Bıraktığı boşluğu doldurmak hiç de kolay olmayacak.

Cumartesi, Eylül 08, 2007

OpenBSD 4.2 ön siparişleri


1 Kasım'da çıkacak OpenBSD 4.2 için ön siparişler başladı. En sevdiğiniz işletim sistemini desteklemek ve CD'lere herkesten önce kavuşmak için iyi bir fırsat :)

4.2 ile gelen yeniliklerden bazılarını sıralamak gerekirse ...

  • Platform desteği: sparc64, hppa ve alpha platformlarında daha çok donanım desteği önemli iyileştirmeler var. Çeşitli teknik problemler nedeniyle sgi platformu ise bu sürümde yer almıyor.
  • Daha çok ve gelişmiş donanım desteği: Yeni SATA sürücüleri, 10Gb Ethernet sürücüleri, Daha çok donanım sensörü. Daha çok İşlemci için işlemci hızı ayarlama desteği
  • Ağ ve trafik filtreleme (pf) performansında önemli artışlar.
  • FFS2 dosya sistemi desteği.
  • CARP için IP yük dengeleme özelliği.
  • Donanım sensörleri için gelişmiş izleme özellikleri.
  • ...
Henüz 4.2 tema müziği açıklanmadı. Yayınlanana kadar bu sayfadan önceki sürümlerin müzik ve sözlerine ulaşabilirsiniz.

Çarşamba, Eylül 05, 2007

Sandık Sonuçları, 3. bölüm

Önceki bölümde koordinatları olan bir metin dizisi haline getirdiğim sandık sonuç formlarını işlemek için yazdığım C programına bu linklerden erişebilirsiniz: [C] [HTML].

Bu programın açık ve erişilebilir olması, yaptığım analizlerin güvenilirliği açısından büyük önem taşıyor.

Programın nasıl çalıştığını kısaca özetlemek gerekirse, öncelikle tüm metni satırlara bölüyorum. Y koordinat aralığı çakışan tüm kelimeler aynı satırda olacak şekilde. Ardından, sandık sonuçlarının başladığı (başlık satırı) ve bittiği (toplam ve genel toplam satırları) satırları tespit edip, bu aralıktaki tüm satırları benzer bir algoritma ile kolonlara bölüyorum. Satır ve kolon kesişimlerinden tablo hücrelerini oluşturuyorum. Son olarak tüm sayfalardaki toplamı ve en sondaki genel toplamı bu hücrelerdeki değerleri kullanarak hesaplayıp doğruluğunu kontrol ettikten sonra sonucu bir metin dosyasına yazdırıyorum.

Diğer detayları ve sonuçları bir sonraki yazıda inceleyeceğim.

Program OpenBSD altında derlenmektedir. Diğer işletim sistemlerinde derlemek için ağaç ve liste başlık dosyalarına ihtiyaç duyabilirsiniz.

Salı, Eylül 04, 2007

Sandık Sonuçları, 2. bölüm

Önceki bir yazımda YSK'nın yayınladığı sandık sonuçlarının analiz edilmesi zor bir PDF rapor formatında yayınlandığından bahsetmiştim. Bu PDF dokümanları bilgisayarda işlenebilir hale getirmek için yaptığım çalışmayı ise burada anlatacağım.

Öncelikle PDF dokümanları metin formatına çevirmek için bir yazılım arayışına girdim. Bir PDF dokümanı içerisinde metinler okunuş sırasına göre değil, rastgele dağnık olarak bulunabilirler. Her metin "nesnesi" koordinatları ve yönü ile birlikte saklandığı için örneğin her kelime hatta her harf dosya içerisinde farklı bir dizilişte bulunabilir. Bu nedenle, tabloları düz metne çevirmeye çalıştığınızda ortaya bir harf çorbsı çıkabilir.

Denediğim yazılımlardan birincisi xpdf paketi içerisindeki pdftotext programı oldu. Ancak elde ettiğim sonuç pek başarılı değildi...

pdftotext -enc UTF-8 yenimahalle1-P.pdf
298/108 Kanun M;2839/32,Geçici 5.

MİLLETVEKİLİ SEÇİMİNDE İLÇE SEÇİM KURULLARINCA DÜZENLENECEK SİYASİ PARTİLERİN VE BAĞIMSIZ ADAYLARIN ALDIKLARI OYLARIN SAYISINI GÖSTEREN BİRLEŞTİRME TUTANAĞI
SİYASİ PARTİ/BAĞIMSIZ ADAY GÖZLEMCİLERİ Partinin Adı CHP SP MHP Gözlemcileri Soyadı TOKER ÖZTÜRK TÜRKEL ÜNSAL EROL ALİ İHSAN Adı SİYASİ PARTİ/BAĞIMSIZ ADAY GÖZLEMCİLERİ Partinin Adı Gözlemcileri Soyadı Adı SİYASİ PARTİ/BAĞIMSIZ ADAY GÖZLEMCİLERİ Partinin Adı Gözlemcileri Soyadı Adı
...
...
Tüm içerik mevcut olmasına rağmen bunları ayırmak ve hatasız olarak bir tablo haline getirmek mümkün değil.

Denediğim ikinci yazılım bir perl modülü olan CAM::PDF oldu. Bu paketin içerisindeki örnek betiklerden olan renderpdf.pl bana değişik ama kullanılabilir bir çıktı üretti:

renderpdf.pl yenimahalle1-P.pdf 1
( 0.00, 595.00) ( 0.00, 595.00)
( 139.43, 563.76) ( 139.43, 563.76) MİLLETVEKİLİ SEÇİMİNDE İLÇE SEÇİM KURULLARINCA DÜZENLENECEK SİYASİ PARTİLERİN VE BAĞIMSIZ ADAYLARIN ALDIKLARI
( 298.72, 552.91) ( 298.72, 552.91) OYLARIN SAYISINI GÖSTEREN BİRLEŞTİRME TUTANAĞI
( 30.00, 569.27) ( 30.00, 569.27) 298/108
( 30.00, 561.87) ( 30.00, 561.87) Kanun M;2839/32,Geçici 5.
( 784.00, 568.27) ( 784.00, 568.27) Örnek 90
( 33.33, 409.98) ( 33.33, 409.98) KÖY VE MAHALLE
( 50.83, 403.73) ( 50.83, 403.73) ADI
( 90.40, 379.74) ( 104.74, 344.60) Sandık Kurulu Numaraları
( 108.40, 358.20) ( 101.20, 344.60) Seçmen Listesinde Yazılı Seçmenlerin Sayısı
( 126.40, 372.65) ( 133.65, 344.60) Oy Kullanan Seçmenlerin Sayısı
( 141.52, 366.96) ( 145.96, 347.48) İtiraz Edilmeksizin Geçerli Sayılan Oy
( 147.77, 386.27) ( 165.27, 341.23) Pusulalarının Sayısı
( 159.52, 366.96) ( 163.96, 347.48) İtiraz Edilen Fakat Geçerli Sayılan Oy
( 165.77, 386.27) ( 183.27, 341.23) Pusulalarının Sayısı
( 180.40, 371.68) ( 186.68, 344.60) Geçerli Oy Pusulalarının Toplamı
( 480.82, 454.22) ( 480.82, 454.22) SİYASİ PARTİLER
( 192.31, 537.22) ( 192.31, 537.22) SİYASİ PARTİ/BAĞIMSIZ ADAY GÖZLEMCİLERİ
( 183.49, 522.22) ( 183.49, 522.22) Partinin Adı
( 282.50, 527.22) ( 282.50, 527.22) Gözlemcileri
( 259.66, 517.22) ( 259.66, 517.22) Soyadı
Her metin bloğu koordinatları ile birlikte verildiğinde, tabloyu yeniden oluşturmak için tahminlerde bulunmak gerekmeyecekti. Tek sorun, bu betiğin çok yavaş çalışması ve çok bellek tüketmesiydi. Bu nedenle çareyi pdftotext programına benzer bir çıktı üretecek bir yama yapmakta buldum. Bu yama pdftotext programına -dump anahtarı ekleyerek her metin nesnesini koordinatları ile yazdırmayı sağlamaktadır. Bu sayede pdftotext ile metin koordinatlarını almak mümkün oldu:
pdftotext -enc UTF-8 -raw -dump yenimahalle1-P.pdf
139 25 199 33 MİLLETVEKİLİ
201 25 251 33 SEÇİMİNDE
254 25 274 33 İLÇE
276 25 305 33 SEÇİM
307 25 377 33 KURULLARINCA
379 25 452 33 DÜZENLENECEK
455 25 484 33 SİYASİ
487 25 540 33 PARTİLERİN
542 25 554 33 VE
557 25 600 33 BAĞIMSIZ
602 25 653 33 ADAYLARIN
656 25 702 33 ALDIKLARI
299 36 338 44 OYLARIN
341 36 379 44 SAYISINI
381 36 432 44 GÖSTEREN
434 36 494 44 BİRLEŞTİRME
497 36 542 44 TUTANAĞI
30 21 52 27 298/108
30 29 47 34 Kanun
49 29 96 34 M;2839/32,Geçici
Dikkat ederseniz, xpdf metin bloklarını da bölerek her kelime için ayrı bir çıktı oluşturuyor. Bu sonraki işlemleri biraz güçleştirse de hız avantajı ve her kelimeyi çevreleyen kutuyu doğru olarak hesaplaması büyük fayda sağladı.

Bu çıktıyı işleyerek tablo haline getirmek amacıyla yazdığım programı da bir sonraki bölümde anlatacağım.