Lapse of Keyboard at Internationalized Domain Name
LOKIDN "Homograph Attacks" türünde daha önce keşfedilmemiş yeni bir saldırı vektörüdür.
EDB-ID: 45567
LOKIDN
1.0. Giriş 2.0. IDN Yapısı 3.0. Özet 4.0. Nasıl Sömürülür? 4.1. Görsel Kaynak Sömürme 4.2. Stil (CSS) Kaynağını Sömürme 4.3. Zararlı Hedefe Yönlendirme 4.4. Hazır Scriptlerle Oluşan LOKIDN Zafiyeti 4.5. Alan Adına Ait Mail Adresini Sömürme 4.6. Ters Mantık ile Sömürme 5.0. Olası Durumların Analizi 5.1. Örnekleme 5.2. Yüksek Riskli IDN 6.0. Nasıl Test Edilir ve Korunulur? 7.0. Hakkımda 8.0. Ekler
1.0. Giriş
Hızla gelişen ve popülerleşen web dünyası ile birlikte özel alan adlarına da ilgi oldukça artmıştır. Günümüzde gerek kurum/kuruluş gerekse birey bazlı düşünecek olursak, markalaşma ve dikkat çekme amaçları doğrultusunda uygun bir alan adı alınması çok önemlidir. Dünyada giderek artan alan adı ihtiyacı, alan adı yetersizliğini doğurmuştur. Popüler TLD(Top Level Domain) uzantılarıyla(.com, .net, .org) istenilen alan adını kiralamak neredeyse imkansız hale gelmiştir. Bu durum dünya çapında yeni bir fikir ortaya atılmasına sebep olmuştur. Ülkelerin kendi ana dilleri ve alfabesiyle alan adı sağlama imkanı sunularak büyük bir problem haline gelen yetersizliğin birazda olsa önüne geçilmek istenmiştir. Bu teknoloji phishing saldırıları ile birlikte, "Lapse of Keyboard at Internationalized Domain Name (LOKIDN)" zafiyetini de beraberinde getirmiştir. Bu zafiyet türü ilk defa şahsım tarafından keşfedilmiştir.2.0. IDN(Internationalized Domain Name) Yapısı
IDN ile ASCII karakter dizisinde yer almayan özel karakterlerin kullanılması mümkündür. Alan adı için kullanılabilecek ASCII karakterler de ayrıca sınırlandırılmıştır. Standart alan adları "a-z, A-Z, 0-9 ve '-'" karakterleriyle kısıtlanmaktadır. IDN mimarisiyle UNICODE karakterlere sahip bir alan adı ASCII karakterlere dönüştürülerek doğru sunucuyla iletişim sağlanır. Aynı şekilde ASCII karakterlere sahip bir alan adını UNICODE karakterlere dönüştürebilmektedir. Bu mimariye örneklem yapacak olursak; tarayıcıya "lokıdn.com" yazıldığında IDN mimarisi alan adının ASCII karakterlerinden oluşan şeklini çözümleyerek DNS'e standart bir alan adı gibi sorgular. IDN kullanıcının görmesi gerektiği gibi tarayıcı üzerinde UNICODE alan adını yansıtır. "lokıdn.com" alan adının ASCII karşılığı "xn--lokdn-p4a.com" dizisiyle eşleşmektedir. Alan adı temelde "xn--lokdn-p4a.com" olarak kiralanmış olunur. IDN mimarisiyle bu ASCII dizisi, tarayıcının da desteklemesiyle birlikte özel karakterlerin yansıtılmasını sağlamış olur. IDN birçok ülke ve bölgede kullanılmaktadır.3.0. Özet
Karmaşık web uygulamaları geliştiricileri uygulama geliştirme veya güncelleme aşamalarında teknik hatalar gerçekleştirebilir. Nitekim güvenlik zafiyetlerinin bir çoğu geliştirici veya yönetici kişiler tarafından yaratılmaktadır. Geliştiriciler uygulama içerisinde kaynak gösterirken klavye yazım hatası gerçekleştirebilir. IDN alan adları bu kaynak hataları doğrultusunda güvenlik zafiyeti oluşturmaktadır. LOKIDN zafiyeti standart alan adı (ASCII) karakterleriyle örtüşen yani latin alfabesinin türlerini kullanan ülkelere ait klavyelerde ortaya çıkabilmektedir. Geliştirici veya yönetici klavyesinin desteklediği alfabe setinden dolayı alan adını yanlış bir şekilde kaynak gösterebilir. Bu tıpkı ufak bir dalgınlık sebebiyle web uygulamaları içerisinde veritabanı sorgularına yönelik güvenlik önlemlerinin alınmayarak injection zafiyetinin oluşturulmasına sebebiyet verilmesine benzemektedir. Dolayısıyla saldırgan bırakılan güvenlik zafiyeti türlerini sömürerek sisteme müdahale edebilir. Sistem yetkilisinin “lokidn.com” alan adı yerine “lokıdn.com” yazmasıyla LOKIDN zafiyeti oluşur. Saldırgan bu zafiyeti keşfederek daha önce hiç kiralanmamış ve kiralama için uygun olan “lokıdn.com” yani “xn--lokdn-p4a.com” alan adını kiralayarak sistem yöneticisinin hata yaptığı kaynaklara müdahale edebilir. Zafiyet ters mantık ile de oluşabilir.4.0. Nasıl Sömürülür?
Lapse of Keyboard at Internationalized Domain Name (LOKIDN) zafiyeti çok farklı alanlarda keşfedilebilir. Zafiyetin bulunduğu alana uygun şekilde sömürme işlemleri gerçekleştirilebilir. Genel başlıklarla hangi sömürme işlemlerinin yapılabileceğini inceleyeceğiz.4.1. Görsel Kaynak Sömürme
Hedef sitede manuel olarak yerleştirilen bir bağlantı görüyoruz. Bu kaynak kod “lokidn.com” alan adlı web sitesine aittir. Klavye hatası yapıldığı için LOKIDN zafiyeti olduğu anlaşılıyor.img class="center" src="http://lokıdn.com/images/banner.jpg"
4.2. Stil(CSS) Kaynağını Sömürme
Saldırgan web sitelerinin vazgeçilmezi olan CSS kaynaklarında keşfedilecek bir LOKIDN zafiyetiyle sitenin görünümünü bozabilir veya şeklini değiştirebilir. CSS kaybından dolayı tamamen şekli bozulmuş bir siteye de istediği şekillendirmeyi yapabilir. Örneğimizde CSS kaybından dolayı “center1” adlı class doğru reaksiyonu göstermiyor. LOKIDN zafiyeti olduğu keşfedilerek dosya yolu sömürülür. Artık sytle2.css dosyasının içerisine ismini bildiğimiz “center1” adlı bir class oluşturarak görsel boyutuyla oynama yapılabilir.img.center1 { display: block; margin-left: auto; margin-right: auto; width: 200%; height: 200%; }Boyutları %200’e kadar arttırıp görselin tüm siteyi kaplayarak sitenin bozulması sağlanabilir. Siteye ait temel CSS dosyası da LOKIDN zafiyetinden dolayı kayıp olabilir. Saldırgan aynı mantıkla siteye ait tüm alanların stillerinde değişiklik yaparak oynayabilir. Siteye ait style.css dosyasının LOKIDN zafiyetinden dolayı çağrılamadığı görülmektedir. Kaynak kod incelendiğinde “menu” ve “body” genel class isimlerinin kullanıldığı tespit edilir. Bu doğrultuda “lokıdn.com/index_files/style.css” dosyasının içeriğine aşağıdaki gibi bir class yerleştirilebilir.
body { background-color: #171b1b; background-image: url(../index_files/Hacked.png); }Bu sayede saldırgan sitenin arka planına istediği görseli yerleştirebilir. Örneklerde gösterildiği üzere saldırgan CSS ile yapılabilecek tüm işlemleri sömürerek LOKIDN zafiyeti içeren siteyi şekillendirebilir.
4.3. Yanlış Hedefe Yönlendirme
LOKIDN zafiyeti sadece kaynak gösterilen dosya yolu bağlantılarında değil, sıradan link ve yönlendirme bağlantılarında da yer alabilir. Web uygulamasının farkı bir bölümüne veya uygulama içerisinde yer alan farklı bir sayfaya yönlendirme yapılırken klavye hatası yapılmış olunabilir. a href="http://lokıdn.com/blog.php” target="_blank">Blog /a
?php
$line = date('Y-m-d H:i:s') . " - $_SERVER[REMOTE_ADDR]";
file_put_contents('ziyaretci.log', $line . PHP_EOL, FILE_APPEND);
?
4.4. Hazır Scriptlerle Oluşabilecek LOKIDN Zafiyeti
Bir çok hazır script ve bu scriptlere ait eklentiler(plugins) İngilizce alfabe haricinde girilen herhangi bir metni otomatik olarak İngilizceye çevirebilmektedir veya tanımlayamadığı özel karakterleri yok sayabilir. Bu tarz scriptler çeviri işlemi esnasında herhangi bir hata vermez ve yönetici tarafından yazılan girdiyi kendine ait mantıkla uygulamaya yansıtır. Dolayısıyla yönetici oluşabilecek LOKIDN zafiyetinden haberdar olmayabilir. Örnek bir input olarak “http://lokıdn.com” yazıldığını varsayarsak, kullanılan özel script veya eklenti bu girdiyi “http://lokidn.com” veya “http://lokdn” şeklinde çevirerek uygulama içerisine yerleştirir. Bu doğrultuda özel scriptler LOKIDN zafiyeti oluşmasına sebebiyet verebilir.4.5. Alan Adına Ait Mail Adresini Sömürme
Alan adlarına özel mail kullanımında da LOKIDN zafiyeti barınabilir. Geliştirici veya yönetici diğer LOKIDN çeşitlerinde olduğu gibi mail adresini belirtirken klavye hatası yapabilir. “lokidn.com” web sitesinde aşağıdaki gibi bir info mail bağlantısı yerleştirildiğini görüyoruz. a href="mailto:info@lokıdn.com">Contact Me /a