Kerberos Yazı Dizisi – IV
Kerberos
Yazı Dizimizin son makalesinde, Kerberos'un ne kadar güvenli
olduğunu, diğer sistemlere göre artılarının ve eksilerinin neler
olduğunu, bu güvenliğin bize yetip yetmeyeceğini tartışacağız.
Öncelikle
Kerberos'un bize getirdiğine bakalım. Her şeyden önce kullanıcı şifreleri,
şifrelenmiş ya da deşifrelenmiş, hiç bir şekilde ağ üzerinden
gönderilmemektedir. Sunucunun ve istemcinin birbirilerinin kimliklerini
denetlenmesi için gizli anahtarlar şifreli olarak ağ üzerinden gönderilmektedir.
Sunucular ve istemci arasındaki tüm mesajlaşmalarda biletler kullanılmaktadır.
Ağ trafiğini izleyebilen biri bu biletleri ele geçirebilir belki, ama bu
biletlerin geçerlilik süresi, oluşturulma zamanı bilet üzerinde tanımlı
olduğundan kırılma ihtimali daha azdır. Kullanılan timestamp sayesinde
kullanıcılarının kimlik denetiminin ne kadar geçerli olacağı Kerberos
sunucuları üzerinde sınırlandırılabilir. Kimlik denetimleri tekrar
kullanılabilir ve kalıcı olduğundan her mesajda yeniden kimlik denetiminin
yapılması gerekmez. Kerberos halen daha bir çok programcı, kriptografi
bilimcisi ve güvenlik uzmanları tarafından incelenmektedir. Ayrıca Kerberos
güvenliğinin diğer sistemlere de uygulanabilirliği, Kerberos'un bir çok işletim
sisteminin güvenliğinin temelini oluşturmasının nedenidir. Geçen yazımızda XML
Web Servisleri kullanarak geliştirmiş olduğumuz örnek Kerberos uygulaması
sayesinde, programlama dili ve platform bağımlılığını da ortadan
kaldırılabilir. Geliştirilen bu sistemi SOAP header'larına entegre ederek XML
Web Servislerinin güvenliğini arttırmamız da mümkün olmuştur. Hatırlatmakta
yarar görüyorum ki, Microsoft Windows sunucu ailesinin yeni
üyesi Microsoft Windows 2003 Server'in güvenlik sisteminin temelinde
Kerberos vardır.
Şimdi bu kadar övdüğümüz Kerberos'a bir kaç eleştiri getirelim. Şu an için kullanılmamasına karşın Kerberos v4 'te tüm şifrelemeler DES ile yapılmaktaydı. Kerberos v5'te ise tüm şifrelemeler daha güvenli olan IDEA ve Triple-DES ile gerçeklenmektedir. Kerberos 4'te bir çok arabellek aşımı(buffer overrun) saldırısına açıktır. 4. Versiyondaki bu hataları eksiklik olarak saymayabiliriz de.. Ancak Kerberos'un mimarisinden ve çalışma prensiplerinden kaynaklanan bazı sorunlar vardır:
Şimdi bu kadar övdüğümüz Kerberos'a bir kaç eleştiri getirelim. Şu an için kullanılmamasına karşın Kerberos v4 'te tüm şifrelemeler DES ile yapılmaktaydı. Kerberos v5'te ise tüm şifrelemeler daha güvenli olan IDEA ve Triple-DES ile gerçeklenmektedir. Kerberos 4'te bir çok arabellek aşımı(buffer overrun) saldırısına açıktır. 4. Versiyondaki bu hataları eksiklik olarak saymayabiliriz de.. Ancak Kerberos'un mimarisinden ve çalışma prensiplerinden kaynaklanan bazı sorunlar vardır:
- Kerberos tek kullanıcılı
istemciler için tasarlanmıştır. Çok kullanıcılı bir istemci de Kerberos
güvenliği çalışmayacaktır. Bunu önemli bir eksiklik olarak sayabiliriz.
Bunun için Kerberos mimarisinin değişmesi gerekmektedir.
- Kerberos güvenliğini kullanmak
isteyen sistemlerde sunucunun ve istemcinin güvenlik sistemi olarak
Kerberos kullanıldığından haberdar olması gerekmektedir. Yani istemci
tarafından da Kerberos'un desteklenmesi gerekir.
- Kerberos mimarisi Brute Force
saldırılarına bir çözüm getirememiştir.
- Kerberos kullanıcıların kötü şifre
seçmelerine karşı bir çözüm getirmemiştir. Kötü seçilmiş şifreler ile
Kerberos güvenliğini aşmanız mümkündür. Brute Force ile en çok
kullanılan şifreleri içeren bir sözlük yardımıyla tüm Kerberos
sunucularını aşabilirsiniz.
- Kerberos'un en zayıf yeri kullanılan
timestamplerdir. Birazdan daha detaylı olarak inceleyeceğimiz bu hatanın
burada sadece tanımını vereceğim. Kimlik denetiminden önce gönderilen
timestamp bilgisi ASCII olarak yıl-ay-gün-saat-dakika-saniye YYYYMMDDHHMMSSZ(örn: "20031015092843Z") şeklinde kodlanmıştır.
Bu da denenecek şifre için belirli kurala uyacak bir yapı sağlar. Eğer ağ
üzerinden ele geçirilmiş paketin deşifrelenmiş hali bu formatta bir
bilgiye sahipse kullandığımız anahtar çok büyük olasılıkla doğrudur.
Kullanılan şifreleme algoritmalarında aynı türden ikinci bir bilgi olma
olasılığı çok az olduğu göz önüne alınırsa böyle bir bilgiyi ilk
yakaladığımız anda, anahtarı bulmuşuz demektir.
Son saydığımız
Kerberos'un en önemli sorunudur. Şimdi bunu biraz daha detaylı inceleyelim.
Kerberos'daki bu hata yeni, ya da gizli değildir, ya da gerçeklendiği
platforma göre değişmemektedir. Bu eksikliği kullanarak saldırı
gerçekleyebilecek kod İnternetten bulunabilir veya bir günden kısa bir zamandan
sıfırdan oluşturabilirsiniz. Bu açık Kerberos'un ilk versiyonlarından beri
bilinmektedir. Fakat, hata Kerberos mimarisinden kaynaklandığından
çözülememiştir. Bu yüzden ilerki versiyonlarda düzeltilmesi beklenmemektedir.
Kerberos güvenliğine sahip bir sisteminde şifre nasıl ele geçirelebilir ?
Test etmek için bir Window 2000 etki alanında 'frank' kullanıcı adı ve 'frank' şifresine sahip bir kullanıcı ekleyelim. Bu kullanıcının her hangi bir istemciden sisteme girişini ücretsiz olarak bulabileceğiniz sniffing araçları ile gönderilen ve alınan paketleri inceleyelim.
İkinci sekiz bitlik veri çevrim dışı yapılacak saldırı için şifrelenmiş timestamp bilgisi bulunmaktadır. Örnek bir paket bilgisi aşağıda verilmiştir:
Kerberos güvenliğine sahip bir sisteminde şifre nasıl ele geçirelebilir ?
Test etmek için bir Window 2000 etki alanında 'frank' kullanıcı adı ve 'frank' şifresine sahip bir kullanıcı ekleyelim. Bu kullanıcının her hangi bir istemciden sisteme girişini ücretsiz olarak bulabileceğiniz sniffing araçları ile gönderilen ve alınan paketleri inceleyelim.
İkinci sekiz bitlik veri çevrim dışı yapılacak saldırı için şifrelenmiş timestamp bilgisi bulunmaktadır. Örnek bir paket bilgisi aşağıda verilmiştir:
2 30 72: SEQUENCE {
4 A1 3: [1] {
6 02 1: INTEGER 2
: }
9 A2 65: [2] {
11 04 63: OCTET STRING, encapsulates {
13 30 61: SEQUENCE {
15 A0 3: [0] {
17 02 1: INTEGER 23
: }
20 A2 54: [2] {
22 04 52: OCTET STRING
: F4 08 5B A4 58 B7 33 D8 09 2E 6B 34 8E 3E 39 90
: 03 4A CF C7 0A FB A5 42 69 0B 8B C9 12 FC D7 FE
: D6 A8 48 49 3A 3F F0 D7 AF 64 1A 26 3B 71 DC C7
: 29 02 99 5D
: }
: }
: }
: }
: }
Sırayla olası tüm şifreler denenir. Eğer
ki denenen şifre doğruysa deşifre edilmiş hali timestamp yapısına
benzemelidir. Aksi halde denen şifre hatalıdır, bir sonraki ile denenir.
Çok basit bir algoritması olmasına karşın olası
tüm şifre sayısının ne kadar fazla olduğu da unutulmamalıdır.
Şimdi de yapılan testler sonucunda hesaplanan kırılma sürelerine bir göz
atalım:
Saldırı
Tipi
|
Tek
Pentium 300 Mhz İşlemci
|
Tek
Pentium 1.5 Ghz İşlemci
|
100
Pentium 1.5Ghz İşlemci
|
Doğrudan
sözlük saldırısı
(3 milyon kelime) |
2.5
dakika
|
1
dakikadan da az
|
1
dakikadan da az
|
Brute
Force Saldırı
[a-z], 6 karakterli şifreler |
4.2
Gün
|
50
dakika
|
1
dakikadan da az
|
Brute
Force Saldırı
[a-z], 7 karakterli şifreler |
4.6
Gün
|
22
saat
|
13
dakika
|
Brute
Force Saldırı
[a-z], 8 karakterli şifreler |
118.4
Gün
|
23.7
gün
|
5.7
saat
|
Brute
Force Saldırı
[a-z], 9 karakterli şifreler |
8
yıl
|
1.6
yıl
|
5.84
gün
|
Brute
Force Saldırı
[a-z,0-9], 9 karakterli şifreler |
157
yıl
|
31.4
yıl
|
114.6
gün
|
Brute
Force Saldırı
[a-z,A-Z,0-9], 9 karakterli şifreler |
4319
yıl
|
863.8
yıl
|
8.6
yıl
|
Brute
Force Saldırı
[a-z,A-Z,0-9], 9 karakterli şifreler |
21034
yıl
|
4206
yıl
|
4.2
yıl
|
Çıkan sonuçları incelediğinizde kolay tahmin edilebilir bir şifrenin Pentium 1.5 Ghz işlemci ile bulunması 1 dakikadan da kısa bir süre almaktadır. Aynı şekilde 6 karakterli sadece küçük harflerden oluşan bir şifrenin Pentium 1.5 Ghz işlemci ile bulunması 50 dakika almaktadır. Şu an 3 Ghz lik işlemcilerin bile piyasada bulunabildiğini düşünürsek, yarım saatten daha az bir sürede 6 karakter uzunluğundaki sadece küçük harflerden oluşan bir şifreyi bulabilirsiniz.
Bildiğiniz gibi Windows sunucu ailesinin yeni üyesi Windows Server 2003'te güvenliğe ayrı bir önem verilmiş. Kerberostaki bu açığı bilmeyen sistem yöneticilerinin hata yapmasını engellemek amacıyla belirlenecek şifre de ;
- büyük harf
- küçük harf
- sayı
- işaret
dördünden
üçünün seçilmesini zorunlu kılmaktadır. Üstelik bu ayar Windows Server 2003'te
varsayılan bir özellik olarak gelmektedir.
Sistemimizi Bu Saldırılardan Korumak İçin Neler Yapmalıyız?
Sistemimizi Bu Saldırılardan Korumak İçin Neler Yapmalıyız?
- Kerberos mimarisinde değişiklik
yapılabilir. Ya da kullanılan şifreleme metodolojileri değiştirerek
daha güvenli bir hale getirebiliriz.
- Kullanıcılar şifre seçimi
konusunda eğitilmeli, şifrelerin en kısa uzunluğu belirlenmelidir.
Genelde seçilen 6 karakterin yetersiz olduğunu tablomuzda çıkan
sonuçlardan da görebiliyoruz.
- Biletler ve şifreler için zaman
aşımı sürelerinin en uygun şekilde ayarlamalıyız.
- Sözlük saldırısında kullanılabilecek
sözlük şifreleri ve bu şifrelerden türeyen, kullanıcı adı veya
kullanıcı ID gibi şifrelerin seçimi engellenmelidir.
- Veri tabanı, web servisleri,
etki alanı vb sistemlerin yönetici kullanıcı adları ve şifreleri
birbirinden ayrı olmalıdır.
- Ağ üzerinden sniffing yapılmasının
engellenmesi için belirli aralıklarla makinelerin fiziksel olarak kontrol
edilmelidir.
- "Sniffer Detector" adını
verdiğimiz yazılım araçları kurarak sürekli sistemimizi kontrol
etmeliyiz.
4 yazıdan oluşan Kerberos yazı dizimizin sonuna geldik. Bir çok işletim sisteminin güvenliğinin temelini oluşturan Kerberos'un kullanıcıdan kaynaklanan hatalara ve kötü şifre seçimlerine bir çözüm getiremediğine ancak elimizdeki en iyi güvenlik sistemi olduğuna kanaat getirdiğimize inanıyorum. Ayrıca Kerberos'un çalışma prensibinin belli olmasına karşın kodlamasının farklı programlama dilleri ve farklı platformlar için sürekli değiştiğinden bahsettik. Buna çözüm olarak Kerberos'u XML Web Servisleri kullanarak yeniden yazdık. Yeni Kerberos'umuzla XML Web Servislerine Kerberos Güvenliğinin nasıl ekleyebileceğimizi gördük. Sistem Yöneticilerine önerim, yasal olarak ya da yasa dışı yollarla İnternet üzerinden ücretsiz dağıtılan araçlar ile kendi sistemlerini test etmeleridir. Örneğin doğrudan sözlük saldırısı kullanarak kendi sistemlerindeki tüm kullanıcıların şifrelerini test edebilirler, ve buldukları anda bu kullanıcıların hesaplarını bloke etmelidirler. Ne yazıkki, güvenli bir sistemi oluşturmak o sistemi kırmaktan daha zor. Sistem yöneticilerine bu konuda çok iş düşmektedir. Bir başka yazı dizisinde görüşünceye kadar, güvende kalın !!!
Hiç yorum yok:
Yorum Gönder
isterseniz anonim seçeneginden kayıtsız gönderebilirsiniz iyi günler