.net olarak etiketli yazılar
Dokunmasız Etkileşim (Touchless)
22 Eki
Aranızda .Net le ilgilenipte Mehmet Nuri Çankaya’yı tanımamanız sanırım imkansız en azından ismini bir kere de olsa duymuşsunuzdur. yok ben .net le alakam yok yada hiç duymadım diyenler de Bu adresten kim olduğunu öğrenebilirler. Gerçekten Microsoft Türkiye’nin .Net ayağındaki en bilgili kişi olması blogunu takip etmemin en ufak sebeplerinden biri yine bugün blogunu gezerken ki girdiğinizde sizde göreceksinizdir. “Dokunmasız Etkileşim (Touchless)” isimli yazısını okurken bende şaşırdım ilk başta pek bişi anlamasamda videoyu izleyip programıda şahsen denedikten sonra gerçekten hayran kaldım.
İnsanın bilgisayar etkileşimi konusunda son yıllarda gerçekten büyük gelişmeler var bunlardan biri surface ve Bill Gates in Windows 7 ‘nin tanıtımındaki dokunmatik show’unu da görenleriniz mutlaka olmuştur.
Nedir Bu Touchless?
Bunu anlatmak için çok fazla da beklemek istemiyorum. elinizde bir kalem yada herhangi parlak renkli bir alet (oyuncak,top vb.) ile bilgisayarınızın basit bir webcam yardımıyla yazı yazabilmenize, oyun oynayabilmenize veya resim oynatmanıza (şimdilik ileride geliştirildiğinde bilgisayarı kullanabilmek hiçte uzak durmuyor.) imkan veren bi açık kaynak proje. Fikir babası ve ilk örneği geliştiren vatandaş ise Microsoft Yaz okulu öğrencisi olan Mike Wasserman. Tabik bu Mike arkadaşımız sunumunu Microsoft Labs a götürdüğünde beğeni kazanıyor ve bunu CodePlex yani Microsoft’un açık kaynak proje geliştirme ortamında online olarak yayınlamasını istiyorlar ve proje şu an CodePlex’te online ve bu projeye http://www.codeplex.com/touchless adresinden ulaşabiliyorsunuz.
Projeyi tanıtan kısa bir videoyada Nuri Çankayanın sitesinde izleyebilirsiniz.
F# Çıktı..
14 Eyl
5 dakika önce yazgeliştiri gezerken farkettim ve programlama ile ilgilenlerin kesinlikle ilgisini çekecek bir yazıya rastladım ve sizinle bu makaleyi paylaşmak istedim buyrun yazfeliştir editörlerinden Turhal Temizer makalesini sizlerle baş başa bırakıyorum.
Yeni çıkmış olan bir dili anlatan makaleler genellikle programlama dilini ve dilin oluşmasını sağlayan etmenlere değinerek giriş yapar. Bizde bu makalemizde bu yolu izleyerek başlayacağız. Temel etmenlere de değinmeden önce daha önemli olan “F# nedir” ‘i ve “Fonksiyonel Programlama nedir” ‘i incelemek daha mantıklı olacaktır.
Fonksiyonel Programlama Nedir?
Fonksiyonel programlama (FP) çok eski zamanlardan, ileri düzey programlama dillerinden beri kullanılan bir yapıydı. FP ‘yi 1955 yılında IPL bulmuştur. İlk olarak ise FORTRAN dili tarafından kullanılmıştır. İkinci olarak kullanan dil COBOL olmuştur. FORTRAN ve COBOL prosedürsel bir mantıkla programlarını oluşturabilme olanağı tanıdığı için bilimden mühendisliğe kadar birçok alanda kullanılmışlardır. Bu mantık 1970 ’li yıllara kadar devam ettikten nesne tabanlı programlama çıkarılmıştır. Nesne tabanlı programlama mantığını kullanabilen programlama dilleri günümüzün en popüler dileri arasında yer almaktadırlar. Kullanmayanlar ise büyük oranda arka plana itilmişlerdir.
Mimari mantıklar bu oranda geliştirilirken fonksiyonel programlama dilleri de kararlı ve güçlü bir biçimde geliştirilmeye devam etmişlerdir. En güçlü fonksiyonel programlama dilleri: SML, OCaml, Haskell, Clean ve diğerleridir. En çok sevilen fonksiyonel programlama dilleri ise: APL ve List ‘dir. Tabii bu bahsettiğimiz dillerin yaşadığı zamanlar 1950 lerdir. Fakat akademik çevreler fonksiyonel programlama kavramını birinci öncelik olarak tutarak geliştirmeye devam etmişlerdir. Bu gelişimlerden de en çok söz getirenleri İngiltere Cambridge üniversitesinde gerçekleştiği akademik yayınlar ile bütün dünyaya duyurulmaktaydı. Çok öncelerden tamamlanmış olan bu dil global dünyanın gerçekleri ile karşılaştığında ise on yıllar önce ömrünü tamamlamış olarak görülüyordu. Fakat yurtdışındaki üniversitelerde karmaşık ve oldukça zor problemler fonksiyonel programlama ile çözülmeye devam edilmiştir. Zaten bu gelişimlerin bir yansısı olarak ta günümüzde birçok üniversitede mühendislik bilimleri fakültelerinde ders olarak okutulmakta olan MATLAB programının oluşmasına sağlamıştır. Matlab programının özelliği matematiksel, fiziksel ve mühendisteki birçok işlemi oldukça kolay fonksiyonlarla yapabilmemize olanak tanıyordu. Ayrıca kolay fonksiyonlar ile yapılabilmesinin dışında oldukçada performanslıydı. Fakat matematiksel işlemleri günümüz programlama dilleri ile yapmaya çalıştığımızda performans olarak ne Matlab ‘te ne fonksiyonel programlama da ne de bu yapıda olan programlama dilleri ile alabildiğimiz sonuçları alamıyorduk. Bugün ise, fonksiyonel programlama kavramını net olarak anlayabilmemiz durumunda en karmaşık problemleri bile çok basit yöntemlerle çözebileceğimiz belirtiliyor.
Fonksiyonel programlama, bütün programlama dillerinin derlemlerini (collection) başka fonksiyonlardan etkilenmemiş biçimde alarak bağımsız değişkenlerini geri dönüş değerleri olarak kabul eder. Nesne tabanlı programlama gerek görülmeyen problemlerin döngülerinin sonucunda oluşan yan ektilere izin vermektedir. Veri yapıları olarak kullandığımız tiplerin büyük bir çoğunluğunu, bellek yönetim kodlarımızı ve diğer birçok alıştığımız mantıkları fonksiyonel programlama ile kullanabilmemiz mümkündür.
Basit matematiksel modellerden yararlanılarak çözülebilen uygulamalar az ve öz kod yazılarak, uygulamalarımızı geliştirecek olduğumuz uygulamalarda yalnızca gerekli olan bileşenlerin referansa edilmesi ve görev çubuğunda minimum düzeyde bellek sarfiyatı yapması gibi özellikler fonksiyonel programlamanın temel yapı taşlarını oluşturmaktadır. Günümüzde fonksiyonel programlamayı kullanabileceğimiz dil F# ‘dır. F# ‘da fonksiyonel programlar yardımı ile karmaşık uygulamaları rahatlıkla geliştirebilmemiz mümkündür.
Niçin Fonksiyonel Programlama Önemlidir?
Fonksiyonel programlamayı düşünen insanlar genellikle kusurlu, hatalı, yaklaşılmaması gereken dil olarak görürlerdi. Fakat bunu düşünen insanları fonksiyonel programlananın kendilerine katacağı avantajları düşünmeden bu tür yargıları düşünüyorlar. Tartışılan bir diğer nokta ise günümüz programlama dilleri ile yaptığımız işleri fonksiyonel programlama dili yapamayacağımız yönünde şekillenmiştir. Günümüz dünyasında fonksiyonel programlamanın avantajlarını her durumda reddeden insanlara karşı tartışmalar esnasında verilmiş en iyi cevabı Chalmer teknik üniversitesinden John Hughes vermiştir. ( http://www.math.chalmers.se/~rjmh/Papers/whyfp.html )
John Hughes derki, “Fonksiyonel programcıların(FP) konuştukları orta çağ rahiplerinin konuştuklarına benzetilmemelidir. Çünkü FP ‘cılar bu dili sevdikleri için geliştirmektedirler. Rahipler ise maddi çıkar için işlerini yapmaktadırlar.”
Bir örnek ile fonksiyonel programlamayı anlatmak gerekirse, kendimizin düşünerek oluşturduğumuz fonksiyonların değerlini başka fonksiyonlara aktarabilmemize olanak tanınmaktadır. Bu özellik sizlere ilk görüşte önemsiz gelebilir, fakat değerlerin kullanılmasını olağanüstü oranda arttırmaktadır. Ayrıca veri ve fonksiyonlar arasındaki anlam farklarını da birbirinden rahatlıkla ayırabilmekteyizdir. Fonksiyonel programlama da kullanılan kısa ve basit yapıya nesne tabalı programlamalarda uymak zorundadır ve uymaktadırlar.
Ayrıca, fonksiyonları geri dönüş değerleri çokluda olabilmekte ve çağırılan fonksiyonların boşa kullanılması önlenmektedir. Bu mantığa uygun örnekleri gelecek makalelerimizde vereceğiz.
F# Nedir?
Fonksiyonel programlama çözülmesi zor olan bilgisayar problemlerini basit yöntemler ile çözmemize yarıyor fakat genel programlama teknikleri ile yapılan çözümler için yeterince iyi değildi. Bu nedenle fonksiyonel programlama nesne tabanlı programlama mimarisinin mantıki yapısını da bünyesine katarak işlemlerin daha rahat yapılabilmesine olanak tanır. Nesne tabanlı mimari yapısını bünyesine katarken de fonksiyonel programlama prensiplerinden vazgeçilmeden bu hafif geçiş yapılmıştır. Birleşimlerin sonucunda da karşımıza diğerlerinin özelliklerini taşıyan fakat kendine özgü olan bir dil ortaya çıkmıştır. Bu dilin adı ise F# ‘dır. F#, fonksiyonel programlama dilinin daha da iyileştirilmiş halidir.
Diğer popüler fonksiyonel programlama dillerinden OCaml, Haskell, Lisp ve Scheme dillerinin içerikleri, geleneksel kullanım yapıları ve gereklilikleri F# dilinin içerisine çalışma prensibine zarar vermeyecek şekilde eklenmiştir. Ayrıca F# .NET dilinin gücünü de diğer dillerle birlikte bünyesine katmıştır. F#, yaratıcıları tarafından araştırmalar sonrasında kriterlere uygun ve düzgün görülen üç dilin birleştirilmesi sonucunda oluşmuştur. F# ile problemlerin üzerinden çalışılması ve çözüm yollarını ararken uğraştığımız metotların azalması avantajları arasında yer almıştır. F#, karmaşık fonksiyonların çözüm yöntemlerine getirdiği yaklaşımların çabukluğu açısından fonksiyonel programlamaya benzemesi ile birlikte günümüzün en iyi mimarisi olarak kabul edilen nesne tabanlı programlama tekniğini de problem çözümlerinde kullanabilmesi iyi kabul edilebilecek yaklaşımlarıdır. Üç farklı dilin birleşiminden oluştuğundan bahsetmiştik. F# oluşurken yararlandığı ilk yapı .net olmuştur. .NET ‘in temel sınıf kütüphanelerini kullanılmıştır. Kullanılan .net kütüphaneleri Base Class Libary(BCL) ‘dir. .NET bünyesinde bulunup da temel olarak kullanılan dillerde C# ve VB ’dir.
F# ‘ın nesnesel modelleri oluşturulurken ise OCaml ’i nesnesel programlama mimarisine aykırı olmayacak biçimde kullanılmaya çalışılmıştır. Tekniksel felsefisi ise .NET ‘ten alınmıştır. Derleme işlemleri için kullanılan mimaride Common Language Infrastructure (CLI) ‘dır. .NET ‘in genel yapı tipleri de F# ‘ın bünyesinde kullanılmaya devam edilmiştir.
F# ‘ı geliştiren kişi, England Cambridge üniversitesinden Dr. Don Syme ‘dir. Ayrıca Dr. Syme Microsoft Research Lab(MSL) ‘da da akademik programlama dilleri üzerine çalışma yapmaktadır. Fonksiyonel programlama dilinin .Net mimarisi ve Visual Studio IDE ‘si ile de uyumlu çalışması için oldukça fazla çalışması olmuştur.
F# ‘ı kimler kullanmalıdır sorusuna gelirsek, MSL çalışanlarının C# ile F# arasında yaptıkları testlerin sonuçlarına göre eğer finansal veriler, matematiksel işlemler ve matematik fonksiyonları ile yapacağımız işlemler var ise F# ‘ın performansının C# ‘a göre daha iyi olduğunu söylemektedirler. Ayrıca oldukça büyük verilerle veya Matlab de olduğu gibi matrisler ile matematiksel işlemleri yapmak istiyorsak yine C# yerine F# ile çalışmamız öneriliyor. Çünkü fonksiyonel programlama dilinin mimari yapısından ötürü F# ile yapacağımız karmaşık işlemlerin çözüm süresi oldukça kısalacaktır. Ayrıca .NET 4.0 gelişimlerinde matematik fonksiyonlarının daha ayrıntılı bir biçimde çözümlenebilmesi içinde Linear Algebra sınıflarının geliştirildiği bilinmektedir. Bu gelişimler esnasında yararlanılan yöntem yine fonksiyonel programlama teknikleridir.
Turhal Temizer
Virüsler anında sıkıştırılır
12 Eyl
Virüsler anında sıkıştırılır Tel Aviv Üniversitesi’nden iki araştırmacı, bilgisayarların virüsleri anında tanımlayıp engelleyebilmesini sağlayacak bir sistem geliştirdi.
11/09/2008

Anti-virüs programları ne kadar güncel, ne kadar cevval olurlarsa olsunlar, yeni virüs ve tehditleri bulmalarını sağlayacak güncellemelerin yazılması ve yüklenmesi belli bir zaman alır. İşte o arada bilgisayara bir şeyler bulaştıysa iş bitiktir. Ayrıca, virüs taramasının dosyaları tek tek incelemesi bir hayli zaman ve sistem kaynağı tüketir. Tel Aviv Üniversitesi’nden iki araştırmacı olan Avishai Wool ve Ohad Ben-Kohen, virüse karşı savunmayı bu seviyeden bir adım ileri taşıyacak bir sistem kurmuşa benziyor.
“Korset” adı verilen sistem, işletim sisteminin çekirdeğini yeniden derleyerek bazı “anahtar”lar yerleştiriyor. Bu anahtarlar, bilgisayarın “normal” durumlarda nasıl işlediğini analiz edip öğreniyorlar. Yeni yüklenen yazılımlar için “normal” kabul edilen davranışları da belirliyorlar. Bir yazılım “normal” dışı davranışlar göstermeye, örneğin internete bağlanmaya çalıştığı anda, Korset devreye giriyor ve yazılımı durdurarak kullanıcıyı uyarıyor.
Özellikle sunucular için çok faydalı olması beklenen Korset’in, Linux altında çalışan açık kaynaklı bir deneme sürümü bulunuyor.
DNS Önbellek Zehirlenmesi: Açıklık ve Kapanması
28 Ağu
Yazar: Can Bican 01.08.2008 Internet’in temel protokollerinden olan DNS üzerinde çok ciddi bir açık bulunmuştur.
Son günlerde görünürlüğü, etkisi ve alınan önlemleri açısından çokça tartışılan, Dan Kaminsky tarafından bulunan DNS protokol açığı, belli başlı ürünler için çözülmüş olmasına rağmen, açıklığı suistimal edebilecek saldırı araçlarının ortaya çıkması ve hala tüm ağ ve bilgisayar markaları tarafından çözümlerin sunulmamış olmasından dolayı, daha uzunca bir süre güvenlik açısından bir sorun olmaya devam edecek gibi görünmektedir.
Yazanlar: Bahtiyar Bircan, Can Bican
DNS açıklığı bundan üç yıl önce Ian Green adlı bir SANS öğrencisi tarafından farkedilmiş olsa da, Dan Kaminsky’nin açığın pratik uygulamasını farkederek yamaların yayınlandığının açıklaması 9 Temmuz 2008 tarihine, US-CERT tarafında duyurulmasıysa 7 Temmuz 2008 tarihine denk gelmektedir. Bundan takriben bir ay öncesinden beri bilinmesine rağmen açıklık gizli tutulmuş, belli başlı üreticiler çözümlerini koordineli bir şekilde oluşturana kadar herhangi bir açıklama yapılmayarak, açıklığın genel olarak suistimali ihtimali azaltılmıştır.
Internete bağlı tüm DNS sunucularının www.bilgiguvenligi.gov.tr adresinde yayınlamış olduğumuz açıklık ve saldırıyı anlatan makaleyi inceleyerek gerekli önlemlerin alınması tavsiye edilmektedir.
Son günlerde görünürlüğü, etkisi ve alınan önlemleri açısından çokça tartışılan, Dan Kaminsky tarafından bulunan DNS protokol açığı, belli başlı ürünler için çözülmüş olmasına rağmen, açıklığı suistimal edebilecek saldırı araçlarının ortaya çıkması ve hala tüm ağ ve bilgisayar markaları tarafından çözümlerin sunulmamış olmasından dolayı, daha uzunca bir süre güvenlik açısından bir sorun olmaya devam edecek gibi görünmektedir.
DNS açıklığı bundan üç yıl önce Ian Green1 adlı bir SANS öğrencisi tarafından farkedilmiş olsa da, Dan Kaminsky’nin açığın pratik uygulamasını farkederek yamaların yayınlandığının açıklaması 9 Temmuz 20082 tarihine, US-CERT tarafından duyurulmasıysa 7 Temmuz 20083 tarihine denk gelmektedir. Bundan takriben bir ay öncesinden beri bilinmesine rağmen açıklık gizli tutulmuş, belli başlı üreticiler çözümlerini koordineli bir şekilde oluşturana kadar herhangi bir açıklama yapılmayarak, açıklığın genel olarak suistimali ihtimali azaltılmıştır. Bu açıklığın diğer açıklıklara kıyasla farklı yöntemler kullanarak çözülmesinin en büyük nedenlerinden biri de, Internet altyapısına arz ettiği tehlikedir: “Sıfırıncı gün saldırıları”nın hemen hemen tüm DNS sunucularını etkileyeceği düşünülürse, Internet altyapısında etkili olan başlıca markalar yamalarını üretmeden açıklığın açıklanması, ancak kötü niyetli bir hareket olabilirdi.
Bu yazıda, açıklığın niteliği ve olası tesiri hakkında bilgi verilecek, örnek bir saldırı gösterilecek ve alınabilecek önlemler belirtilecektir.
Açıklığın Doğası
DNS (Domain Name System) Internet’teki alan isimlerinin (www.tubitak.gov.tr gibi) IP adreslerine (192.140.80.201 gibi) ve IP adreslerinin alan isimlerine dönüştürülmesinden sorumludur. Bu göreviyle Internet’e bağlı herhangi bir sistemin normal çalışmasında kritik bir bileşendir. DNS protokolünün tanımı ve gerçeklenmesi RFC 1035′te4 tanımlanmıştır.
DNS kullanılmaya başladığından beri sistemlerde en sık bulunan “önbellek zehirlenmesi”, bu yazının konusu olan DNS açıklığının da saldırdığı zayıflıktır. Önbellek zehirlenmesi, bir DNS sunucusuna yetkisiz bir kaynaktan veri yüklenmesine verilen genel isimdir. Hatalı yazılımla, yapılandırma hatalarıyla ya da DNS protokolünün açıklarıyla başarıyla iletilen özgün olmayan veri, sistem performansını artırmak için saldırılan sunucunun önbelleğine gelir ve böylece önbellek “zehirlenmiş” olur. Alan adının sunucusunun IP adresinin ya da alan adının NS kaydının yönlendirilmesine dayanan değişik yöntemlerle zehirlenme mümkündür. Bir üçüncü yöntem de, gerçek alan adı sunucusu yanıt vermeden, kötü niyetli sunucunun araya girerek yanıt vermesine dayananan, man-in-the-middle (araya girmek) türünden bir saldırıyla DNS sunucusunun önbelleğinin zehirlenmesidir. Bu tür saldırılar, sorgu yapıldığında asıl yanıt vermesi beklenen DNS sunucusundan önce saldırganın yanıt vermesi esasına dayanır.
Bir DNS mesajı, header (başlık), question(soru), answer(yanıt), authority(yetki), additional(ekler) olmak üzere beş bölümden oluşur. Bunlardan konuyla ilgili olan “header” bölümünün ilk 16 biti ID olarak isimlendirilmiş bir “nonce”5 olarak tanımlıdır ve sorguyu düzenleyen program tarafından doldurulan bir alandır. Bu alan, sorguya verilen yanıta da birebir kopyalanır ve böylece soru-yanıt eşleştirmesi sağlanabilir. Araya girilerek yapılan önbellek zehirlenmesi saldırıları, bu sayının tahmin edilmesine dayanır.
Önce Ian Green’in farkettiği ve Dan Kaminsky’nin farkındalığı artırarak uygulama seviyesinde çözümleri koordine ettiği açıklık, kullandığı yöntemler ve zafiyetler açısından yeni olmamasına rağmen, olası nonce’ların azlığı, sorguların kaynak kapılarının rastgele seçilmemesi ya da yetersiz rastgelelikte seçilmesi gibi durumların bir arada araştırılması sonucunda, etkili bir yöntem bulunduğunun görülmesinden sonra açıklık olarak belirlenmiştir.
Aşağıda gösterilen örnek bir saldırı sonrasında saldırılan DNS sunucusu sorgulara hatalı yanıtlar verebilir ve kullanıcıları istedikleri sunucular yerine saldırganın istediği sunuculara aktarabilir. Bunun sonucunda web trafiği, e-posta iletileri ve diğer önemli ağ üzerinden iletilen veriler saldırganın kontrolündeki sistemlere yönlendirilebilir.
Kullanılan DNS sunucusunun açıklığının bulunup bulunmadığı Dan Kaminsky’nin sayfasından (http://www.doxpara.com/) kontrol edilebilir.
Örnek Bir Saldırı
1. Saldırı öncesi keşif :
(1) 192.168.1.26 IP adresli saldırgan hedef DNS sunucu üzerinden www.ntvmsnbc.com sayfasını sorgular.
(2) DNS sunucu , www.ntvmsnbc.com alan adı kendi üzerinde olmadığı için ntvmsnbc.com alan adından sorumlu olan ns1.ntvmsnbc.com sunucusundan alan adını sorgular.
(3) ns1.ntvmsnbc.com sunucusu, www.ntvmsnbc.com alan adı için geçerli olan 88.255.82.100 IP adresini yanıt olarak hedef DNS sunucusuna döndürür.
(4) DNS sunucusu da saldırgana www.ntvmsnbc.com alan adının IP adresi olan 88.255.82.100 adresini döndürür. Burada dikkat edilmesi gereken hedef DNS sunucusunun saldırgan ile haberleşirken istek ve cevaplarda aynı kaynak portu (6134) kullanması ve tahmin edilebilir TXID (0×6749) değerini kullanmasıdır. Hedef DNS sunucusundan gelen cevabın geçerli olması için istekte bulunurken kullanılan TXID değerinin cevap kısmında da aynen dönmesi gerekmektedir.
Yapılan sorgulamanın dig çıktısı aşağıdadır. :
Bu şekilde DNS sunucuda açık olduğu tespit edildikten sonra asıl saldırıya geçiyoruz.
2. Saldırı
Saldırı 3 adımda gerçekleştirilecektir.
2.1 Birinci aşamada saldırgan hedef DNS sunucuya ntvmsnbc.com alan adına ait bir çok alt alan ismi (abc1.ntvmsnbc.com , abc2.ntvmsnbc.com ….. xyz9832.ntvmsnbc.com ) için DNS sorgusu göndermektedir. Burada amaç hedef sunucunun ntvmsnbc.com alan adı için yetkişi sunucuya birçok sorguda bulunmasını sağlamaktır.
2.2 İkinci aşamada hedef DNS sunucu tüm alt alan isimleri için ns1.ntvmsnbc.com sunucusuna istekte bulunmaktadır. Ns1.ntvmsnbc.com sunucusu da tüm alanlar için geri cevaplarda bulunmaktadır. Fakat aynı zamanda saldırgan da hedef DNS sunucuya sanki ns1.ntvmsnbc.com sunucusundan geliyormuş gibi cevaplar göndermektedir. Bu cevaplarda www.ntvmsnbc.com alan adı için IP adresini kendisi göstermektedir ve her seferinde TXID alanını arttırarak tahmin etmeye çalışmaktadır.
Nihayet abc4.ntvmsnbc.com alan adı için saldırganın gönderdiği cevap paketlerinde TXID alanı tahmin edilmekte ve hedef DNS sunucu bu cevabın gerçek ns1.ntvmsnbc.com sunucusundan geldiğini Kabul etmektedir. Bu sayede saldırgan hedef DNS sunucusunun belleğini zehirlemiş oluyor.
2.3 Üçüncü adımda kurban zehirlenen DNS sunucuna www.ntvmsnbc.com adresini sorgulamaktadır (1) . DNS sunucu da önbelleğinde www.ntvmsnbc.com adresine ait kayıt olduğu için gerçek ns1.ntvmsnbc.com sunucusuna sormadan zehirlenmiş önbelleğindeki 192.168.1.26 adresini cevap olarak vermektedir (2) . Bu durumdan habersiz kurban gerçek www.ntvmsnbc.com sayfası yerine saldırganın oluşturduğu tuzak sayfayı ziyaret etmektedir. (3)
Saldırı yapıldıktan sonraki dig çıktısı aşağıdadır.
Tedbirler
Sistemlerin Yamanması
Sistemlerde recursive(özyinelemeli) DNS sunucularının hepsinin yamanması gerekmektedir. http://www.bilgiguvenligi.gov.tr/index.php?option=com_content&task=view&id=277&Itemid=16 adresindeki TR-CERT ve http://www.kb.cert.org/vuls/id/800113 adresindeki US-CERT uyarısında etkilenen sistemler, yamaların mevcut olup olmadığı ve nasıl edinileceği üzerine bilgi bulunmaktadır. Başta ADSL modem, access point cihazları gibi gömülü sistemlerde güncellemenin donanımca mümkün olmaması ya da güncelleme imkanının bulunmaması ve bazı markaların henüz sorunun çözümünde adım atmamasından dolayı, yamanın mümkün olmadığı durumlarda, aşağıda belirtilen önlemlerin uygulanabilirliği gözden geçirilmelidir.
Erişimin Engellenmesi
Yamaların uygulanamadığı durumlarda, sunuculara özyinelemeli sorgu yapacak sistemler sınırlandırılarak saldırı kaynakları azaltılabilir. Fakat bu türden bir önlemden sonra bile sorgulamaya izni olan sistemlere erişimi olan saldırganlar açıklığı kullanarak önbellek zehirlemesi saldırısı yapabilirler.
Trafiğin Filtrelenmesi
Saldırının gerçekleşmesi için IP spoofing (aldatma) tekniği kullanılması gerektiğinden, sahte IP adreslerinin filtrelenmesi gerekmektedir. Filtrelemenin ayrıntıları için önerilebilecek RFC belgeleri aşağıdadır:
- http://tools.ietf.org/html/rfc2827 – RFC2827
- http://tools.ietf.org/html/rfc3704 – RFC3704
- http://tools.ietf.org/html/rfc3013 – RFC3013
Yerel DNS Önbelleği Kullanılması
Erişimin ve trafiğin engellenmesi gibi önlemlerle birlikte, hem istemci hem de sunucu tarafında yerel önbellekler kullanılarak, Internet üzerindeki açıklığı olan sunuculara yapılan saldırılardan yerel ağdaki kullanıcıların en az düzeyde etkilenmesi sağlanmalıdır.
Özyinelemenin Kapatılması
Güvenilmeyen sistemlerden gelen, özyineleme gerektiren sorgular engellenmelidir.
NAT/PAT Uygulanması
Port Address Translation (Kapı adresi tercümesi) uygulayan cihazlar genellikle bağlantı durumunu izleyebilmek için kaynak kapı adreslerini değiştirirler. NAT/PAT uygulamasında kullanılan bazı gömülü cihazlar, saldırıya karşı önerilen kaynak kapısının rastgeleliğinin uygulama tarafında artırılmasıyla kazanılan korumayı, kapı adreslerini yeniden ve daha etkisiz bir şekilde değiştirerek azaltabilir. Bu yüzden ağ üzerindeki NAT/PAT uygulamaları gözden geçirilmelidir.
Buna rağmen, uygun bir NAT uygulaması, rastgele kapı atanmasını sağlayabilir ve yamanmamış DNS sunucuları için de bir çözüm oluşturabilir. Iptables kullanarak önerilen bir çözüm http://cipherdyne.org/blog/2008/07/mitigating-dns-cache-poisoning-attacks-with-iptables.html adresinde bulunabilir. OpendBSD PF kullanılarak önerilen bir çözüm de http://blog.spoofed.org/2008/07/mitigating-dns-cache-poisoning-with-pf.html adresinde bulunabilir.
DNS trafiğinin başka bir sunucuya yönlendirilmesi
DNS açıklık bulunan sunucular yamanamıyorsa tüm sorguları yamaları uygulanmış ve açıklıkları kapatılmış başka bir sunucuya yönlendirilmesi sağlanabilir. Yaygın kullanılan Microsoft DNS ve BIND sunucuları için bu işlemin nasıl yapılacağı aşağıdaki adreslerden bakılabilir :
http://www.isc.org/index.pl?/sw/bind/docs/forwarding.php
DNSSEC kullanımı
DNS tarafından sunulan bilgilerin güvenli hale getirilmesi için, DNS verisinin kaynağını doğrulayan, ve veri bütünlüğünü sağlayan genişletmeler içeren DNSSEC, bu ve benzeri saldırılara karşı en etkili çözüm olarak görülmekle birlikte, henüz bir standart olarak yaygınlaşmamıştır. Buna rağmen, DNSSEC kullanan iki ağ arasında güvenli veri paylaşımının ve olası saldırıların önüne geçilmesi mümkündür. DNSSEC uzantıları hakkında daha geniş bilgiye http://www.dnssec.net/ adresinden ulaşılabilir.
Sonuç
Internetin sağlıklı çalışması için kritik protokollerden olan DNS in uygulanmasında çok ciddi bir açıklık bulunmuştur. Bu açıklık sayesinde recursive(özyinelemeli) özelliği bulunan DNS sunucular önbellek zehirlenmesi saldırısına maruz kalabilmektedir. Bu açıklığı kullanan araçların da ortaya çıkması ile durum daha da ciddi bir hal almıştır. Başarılı bir saldırı sonrasında bu DNS sunucuları kullanan kurbanlar istekte bulundukları sayfalar yerine saldırganların belirlemiş olduğu sayfalara yönlendirilebilmektedirler. Açıklık kapatılması için yaygın yazılım üreticileri tarafından çıkartılan yamaların uygulanması tavsiye edilmektedir. Yamalar uygulanamiyorsa veya yama mevcut değilse bu sunuculara erişimin kısıtlanması , yerel (internetten doğrudan ulaşılamayan ) DNS önbelleğinin kullanılması , DNS sunucuları önüne saldırıyı kesebilecek Linux Iptables veya OpenBSD PF yerleştirilmesi veya tüm trafiğin yamanmış, açıklığı olmayan bir sunucuya yönlendirilmesi tavsiye edilmektedir.
1Bkz: http://www.sans.org/reading_room/whitepapers/dns/1567.php , “DNS Spoofing by The Man In The Middle”
2Bkz: http://www.doxpara.com/?p=1162 , “An Astonishing Collaboration”
3Bkz: http://www.kb.cert.org/vuls/id/800113 , “Multiple DNS implementations vulnerable to cache poisoning”
4Bkz: ftp://ftp.rfc-editor.org/in-notes/rfc1035.txt “Domain Names – Implementation and Specification”
5Nonce: “number used once” (bir kere kullanılan numara) deyiminin kısaltması. Genellikle yetkilendirme sırasında kullanılan ve ağ trafiğinin tekrarlanarak iletişimin ele geçirilmesine dayanan saldırıları engellemeye yarayan rastgele sayılara verilen isimdir.
Youtube sınırsız erişim.
14 Ağu
Geçen gün antalyadan ikariam vastasıyla tanıştığım hades arkadaşımın blogunda gördüm.
Malumunuz youtube uzun zamandır türktelekom tarafından türkiye girişleri kapalı ve ne zaman açılacağı konusundada kimse fikir yürütemiyor. Bu konuda okuduğum son haberler ise youtube un bu sorunu yerelleşmeye giderek yapmayı planladığı yönüde idi tabiki buda zaman isteyen bir çözüm hal böyle oluncada halkımızın gerçekten zaman harcadığı bir sosyal video paylaşım sitesine girişinin olmamsı insanları farklı çözümlere itti bunlardan en sonuncusu ise Youtube Jacker programı programda yapmanız gereken sadece indirdiğiniz rar dosyası içindeki setup.exe yi çalıştırmak ve sonra browserınıza www.youtube.com yazmak :) program youtubenin kullandığı portu açarak direk youtube ye girmenizi sağlıyor hiç bir dns sorgusundan geçmeden ve buda siteye giriş yapmak için sizi proxy sitelerden uzak tutuyor. hız olarakta eskisinden hiç bir farkı olmuyor.
Programı Download Etmek için: http://www.ozeraksoy.com/youtube.rar linkini kullanabilirsiniz.









