|
GaCCaLL
|
 |
« Yanıtla #1 : Mart 02, 2008, 05:03:27 ÖÖ » |
|
Bu noktada, bazı güvenlik açıklıları hala mevcuttur. Biletlerin tekrar kullanılabiliyor olması, sistem performansını fazlasıyla artıracaktır ancak, aslında güvenliği azaltan bir noktadır. Örneğin bir kullanıcı bilgisayarına girdikten sonra, mail, print ve dosya sunucuları ile işler yaptı. Bu işlemlerden sonra, servislerin biletleri bilgisayarda kalacaktır. Eğer, kullanıcı bu biletleri silmeden bilgisayarını terk ederse, biletleri çalınabilecek ve bu biletler tekrar tekrar kullanılabildiği için, sonsuza kadar işe yarayacaktır.
Bunun gibi tehlikeli durumların önlenmesi basit bir operasyon ile sağlanabilir. Kullanıcı bilgisayardan her çıktığında, küçük bir program, bilgisayarda bulunan biletleri silebilir.
Ancak bu, sadece çok basit bir güvenlik açığını önlemiştir.
İşin daha kötüsü ise, bu biletlerin, bulunduğu bilgisayarda kullanılma zorunluluğu olmamasıdır. Bunun önlenmesi için, biletlerde çalışma bilgisayarının network adresi bulunuyordu. Ancak bu güvenlik önleminin önüne geçilmesi çok kolaydır. (IP Spoofing)
Ağ trafiği sniff edilerek, birçok servis ve kullanıcı için kullanıcı biletleri (şifrelenmiş halleri) ele geçirilebilir. Kullanıcının, sunucu ile kurduğu oturumun bitmesi beklenir, oturumun bittiğine inanıldığı zamanda ise, sniff edilen biletlerdeki şifrelenmiş bilgiler tahmin edilir. Bu tahminin sonucunda, CLIENT programında, kullanıcı tarafından değişiklik yapılır (isim değişikliği). Saldırgan, kendi bilgisayarının ağ yazılımında değişiklik yaparak, bilgisayarın ağ adaptöründen çıkan paketlerin, biletin içinde bulunduğunu tahmin ettiği network adresinden çıktığını gösterebilir (spoofing). Bu tip ataklar replay ataklarıdır.
Bu durumun önüne geçilmesi için, biletlerin kullanım süresi ve kullanım sayısı belirlenmelidir. O zaman biletin içerisinde, kullanıcı ismi, bilgisayarın network adresi, servis isminin yanında, kullanım süresi (lifespan) ve kullanım sayısı (timestamp) bulunmalıdır.
Aslında bu da probleme kalıcı bir çözüm getirmeyecektir. Çünkü, kullanım süresi ve kullanım sayısını aşmadan, saldırganlar hala bu biletleri kullanabilirler. Bu iki kısmın eklenmesi, güvenliği çok az artırmıştır.
Şimdiye kadar özetlersek,
Sunucularda, kullanıcıların kimlik doğrulamasında, sırası ile aşağıdaki testler yapılmaktadır.
1. Servis bileti dekript edebildi mi? 2. Biletin süresi geçmiş mi? 3. Biletteki isim ve network adresleri ile kullanıcıdan gelen aynı bilgiler tutuyor mu?
Bu testler sırasıyla şunları sağlar.
1. Biletin geçerli bir AUTHENTICATION SERVICE makinesinden geldiğini ispatlar. 2. Eski biletlerin kullanılması önlenir. Eski biletler büyük ihtimalle çalıntıdır. (sniff edilmiş) 3. Bu da aynı şekilde, çalıntı biletlere karşı koruyucu bir önlemdir.
Saldırganlar, kolaylıkla bütün bunları sağlayabilir ve replay atakları ile kullanıcı bilgilerine ulaşabilir. Bunun nedeni, sunuculardaki servislerin, bileti gönderenin gerçekten o biletin gerçek sahibi olduğunu bilememesidir.
O halde servis ile istemci ortak bir şey saklamalıdır. Bu amaçla, AUTHENTICATION SERVICE, bir tane kullanıcı bilgisayarına bir tane de servis bilgisayarına (örneğin mail sunucu) SESSION KEY vermelidir. Bu oturum anahtarları kullanılarak, sunucu bilgisayar, bileti gönderenin doğru istemci bilgisayar olduğunu anlayabilir.
AUTHENTICATION SERVICE, istemci bilgisayarına vereceği oturum anahtarını hazırladığı biletin yanında gönderir. Servis bilgisayarı ise, oturum anahtarını, istemci bilgisayardan gelen bilet (istemci bilgisayara da AUTHENTICATION SERVICE vermişti) ile birlikte alır. Yani biletin içine yeni bir bilgi eklenmiştir.
TICKET - {oturum anahtarı : kullanıcı ismi : network adresi : servis ismi : kullanım süresi : kullanım sayısı}
Kullanıcı, bir sunucuya ulaşmak istediği zaman, istemci makinesi AUTHENTICATION SERVICE ile işini bitirdikten sonra, AUTHENTICATOR denen bir paket üretir. AUTHENTICATOR, kullanıcı ismi ve çalışma bilgisayarının network adresini bulundurur. İstemci, AUTHENTICATOR paketini oturum anahtarı ile şifreler ve sunucuya, bilet ile beraber yollar. Sunucu ilk aşamada, AUTHENTICATOR paketini dekript edemez. Çünkü çözmek için gerekli oturum anahtarı yoktur. Oturum anahtarı biletin içerisindedir. Öyleyse öncelikle bileti, sunucu kendi şifresi ile dekript eder. Sonucunda, sunucudaki servis aşağıdaki bilgileri elde eder.
1. Biletin kullanım süresi ve sayısı 2. Biletin gönderen kullanıcı ismi 3. Biletin gönderen bilgisayarın network adresi 4. Oturum anahtarı
Servis öncelikle, biletin süresine bakar. Süresi dolmamış ise, oturum anahtarını kullanarak, AUTHENTICATOR paketini dekript eder. Eğer sorun çıkmaz ise, sonuç kullanıcı ismi ve bilgisayarın network adresi olacaktır. Servis, bu bilgileri, biletin içindeki bilgilerle ve bilet ile AUTHENTICATOR paketini yollayan istemcinin bilgileriyle karşılaştırır. 3 kaynaktan gelen bu bilgiler aynı ise bileti gönderenin, biletin gerçek sahibi olduğu anlaşılmış olur.
Ancak burada da yine bir problem vardır. AUTHENTICATOR ve bilet birlikte gönderilmektedir. Paketlerin ikisi birden sniff edilerek biletin süresi geçmediği sürece kullanılabilir. Bunun için eskiden olduğu gibi kullanıcı ismini ve saldırgan bilgisayarın network adresini değiştirmek yeterlidir.
Buna basit bir çözüm bulunabilir. AUTHENTICATOR paketinin sadece bir defa kullanılabilmesi basit ve güzel bir çözümdür. Örneğin, mail sunudan maillerini almak isteyen istemci hem AUTHENTICATOR paketini hem de bileti ağ üzerinde yollayacaktır. Bu arada saldırgan her iki paketi de alacaktır. Ancak, saldırgan paketi alıp replay saldırısı yapıncaya kadar, sunucu AUTHENTICATOR paketi üzerinde işlemlerini yapıp bitireceğinden, replay saldırısı yapılamayacaktır. Çünkü aynı AUTHENTICATOR paketi sadece bir kere kullanılabilecektir.
Öyleyse, AUTHENTICATOR paketine kullanım süresi ve kullanım sayısı bölümleri eklenebilir. Kullanım süresi dakikalarla ölçülen bir süre olur. İstemci, AUTHENTICATOR paketini üretirken, o anki zamanı paketin içerisine koyar ve sunucuya yollar. Sunucu bu paketi alır ve sonunda AUTHENTICATOR paketini dekript eder. AUTHENTICATOR’ün kullanım süresi ve sayısı kısımlarına bakar. AUTHENTICATOR’ün süresi geçmedi ise kimlik doğrulama gerçekleşir. Bu durumda, saldırganın bileti ve AUTHENTICATOR paketini hattan alması, kullanıcı ismi ve network adresini değiştirmesi yeterince uzun bir süreyi alacaktır.
Saldırganın yine başarılı olabileceği düşünülebilir. Şöyle ki: saldırgan, kullanıcı bilgisayarından (client) sunucuya giden AUTHENTICATOR ve bileti alacağına, sadece AUTHENTICATION SERVICE’den, istemciye giden paketi yakalayabilir. Bu pakette, bilet ve oturum anahtarı bulunuyordu. O halde, saldırgan, bu oturum anahtarını kullanarak, kendi AUTHENTICATOR paketlerini üretebilir.
Aslında durum sanıldığı gibi değildir. Olan işler en baştan sırasıyla izlenirse bunun imkansız olduğu anlaşılır.
Kullanıcı çalışma bilgisayarının başına oturduğu zaman kinit programı çalışır. Kinit programı ticket-granting ticket’i alabilmek için AUTHENTICATOR SERVICE’e kullanıcı ismini yollar. AUTHENTICATOR SERVICE, ticket-granting ticket’i hazırlamaya başlar. Bu biletin içerisine konacak olan oturum anahtarını da hazırlar. Bu anahtarın bir kopyasına biletin içine koyar ve bu bileti ticket-granting servisin şifresi işe enkript eder. Diğer oturum anahtarı kopyasını da bu hazırlanmış biletin yanına koyar. Çalışma bilgisayarına göndermeden önce, kinit programından hangi kullanıcı ismi ile istek geldiyse, o kullanıcının şifresi ile paketi şifreleyip yollar. Sonuç olarak, saldırgan, oturum anahtarını sniff etse de zaten kriptolu olacaktır. Sonunda bu paket istemciye gelir, istemcideki kullanıcı kendi şifresi ile bu paketi dekript eder. Elinde, ticket-granting ticket ve oturum anahtarı vardır.
Bu aşamadan sonra, kullanıcı maillerine bakmak istedi. Bunun için mail servisinin bileti gereklidir. Bunun için istemci, ticket-granting ticket’i kullanarak, ticket-granting servisinden mail sunucu için bir bilet alacaktır.
Bu amaçla istemci, bir AUTHENTICATOR paketi üretir. Bu paket ticket-granting servisine, mail sunucu bileti vermesi için kullanılacaktır. İstemci, bu paketi elinde bulunan ticket-granting servisinin oturum anahtarı ile şifreler. İstemci daha sonra, elinde bulunan ticket granting ticket’i ve AUTHENTICATOR paketini yollar. (Bunlarla beraber, kullanılmak istenen servisin ismi, kullanıcı ismi ve bilgisayarın network adresi de gider.) Ticket-granting servisi, bileti kendi şifresi ile açmaya çalışır. Başarılı olursa, bu biletin içerisindeki oturum anahtarı ile AUTHENTICATOR paketini açar ve bilgilerin doğru olup olmadığını kontrol eder. Doğruluğunu anladıktan sonra, kullanıcının mail servisine ulaşması için, mail servisi bileti hazırlamaya başlar. Bu aşamada mail servisi için yeni bir oturum anahtarı üretir. Sonra bu bileti, mail servisinin şifresi ile enkript eder. Daha sonra, şifrelenmiş olan bu biletin yanına, istemci bilgisayara gidecek olan mail servisi oturum anahtarını koyar ve bu iki paketi, en başta elde edilen ticket-granting servisinin oturum anahtarı ile şifreler. Sonra da bu paketi istemciye yollar. Paket şifreli olduğu için, sniff edilde bile oturum anahtarı elde edilemeyecektir. İstemci kendinde bulunan ticket-granting servisinin oturum anahtarı ile bu paketi açacaktır. Açtıktan sonra, AUTHENTICATOR paketi üretmesi için gerekli oturum anahtarı ve bu oturum anahtarının şifreli bir kopyasının bulunduğu ve mail sunucuya gidecek olan bilet çıkacaktır.
Görüldüğü gibi aslında problem yoktur.
Ancak son bir problem vardır. İstemciler, sunucular tarafından fazlasıyla doğrulanmaktadır ancak sunucular, istemci bilgisayarlar tarafından doğrulanmamaktadır. Örneğin, kullanıcı önemli bir dokümanını print ettirmek istedi. Bu amaçla uygun bileti edindi, AUTHENTICATOR paketini hazırladı ve print sunucuya gönderdi. Gönderilen yol üzerindeki saldırgan, bu bilgileri yönlendirdi, gerçek print sunucuna gelmemesini sağladı. Bu paketleri kendi sunucusuna gönderdi. Bu sunucu, bileti ya da AUTHENTICATOR paketini çözmeye çalışmayacaktır, içeriğiyle ilgilenmeyecektir. Bunun yerine, bu paketin geldiği çalışma bilgisayarına, kimliğinin doğrulandığı söyleyen bir paket yollar. Böylece, kullanıcının dokümanı saldırganın yazıcısına gider. Öyleyse, kullanıcıları, saldırgan sunucularından korumak gereklidir. İstemci bilgisayarın, hassas bilgilerini sunucuya göndermeden önce, sunucunun kimliğini doğrulaması gerekmektedir. Bu karşılıklı kimlik doğrulamasına, MUTUAL AUTHENTICATION denmektedir.
Bu tip bir kimlik doğrulama, oturum anahtarları ile kolayca yapılabilir. Örneğin, kullanıcı AUTHENTICATOR paketini ve bileti print sunucuya yolladır. Print sunucu yasal ise, biletten oturum anahtarını dekript edecektir. Elde ettiği oturum anahtarı ile AUTHENTICATOR paketini dekript edecek ve istemcinin kimlik doğrulamasını başarıyla bitirecektir. Şimdi, sunucunun kendi kimliğini istemciye ispatlaması aşaması gelmiştir. Bu amaçla, sunucu bir cevap paketi hazırlar ve bu paketi elde ettiği oturum anahtarı ile şifreler. Bunu istemci bilgisayara yollar. Oturum anhtarının bir kopyası da istemci de olduğu için, istemci bu cevapı dekript edebilecek ve mutual authentication tamamlanacaktır. Artık, istemci, hassas bilgisini yollayabilir.
Sunucu, bir saldırgana ait olsaydı, istemciden gelen bilet ve AUTHENTICATOR paketine uygun cevabı yollayamayacaktı. Çünkü, elinde valid bir oturum anahtarı olmayacaktı.
Alıntıdır enderunix.org
2000 karakter sorunumuz olduğu için iki mesajda atabiliyoruz. Adminim adminim duy sesimizi (:
|