IDN Homograph Saldırıları: Gözle Ayırt Edilemeyen Sahte Siteler

Yukarıdaki iki adrese bakın. Aradaki farkı görebiliyor musunuz?
Eğer “ikisi de aynı” dediyseniz, testi geçemediniz. Biri gerçek site, diğeri bir saldırganın tuzağı… İşin korkunç tarafı ise, gözünüzle aralarındaki farkı görmeniz neredeyse imkânsız.
Bu yazıda, zamanında birçok kişinin — hatta dünya devi Apple’ın kullanıcılarının bile — kandığı bir saldırıyı ele alacağız: IDN Homograph Attack
Önce işin mantığını kuracağız, sonra kendi izole lab ortamımızda çalışan bir homograph tuzağı hazırlayıp bir kullanıcının bilgilerinin nasıl çalındığını adım adım göstereceğiz.
⚠️ Bu yazıdaki tüm uygulamalar internete kapalı, izole bir sanal lab ortamında, yalnızca eğitim amacıyla yapılmıştır. Sahtesi yapılan “shopeko” markası tamamen kurgusal bir firmadır. Bu tekniklerin gerçek kişi veya sistemlere karşı kullanılması suçtur.
İnternet Aslında Sadece “ASCII” Konuşur

Hiç fark ettiniz mi: internetteki adreslerin hiçbiri aslında bir dile özel değil?
Düşünün; Japonların, Rusların, Arapların alfabeleri bizimkinden tamamen farklı. Ama dünyanın neresinde olursak olalım, hepimiz aynı siteleri, aynı adreslerle kullanabiliyoruz. Bir Japon da google.com yazıyor, bir Rus da, biz de. Peki bu nasıl mümkün oluyor?
Çünkü alan adı sistemi (DNS) ilk tasarlandığında yalnızca tek bir ortak “dil” tanıyordu: ASCII. Yani a-z harfleri, 0-9 rakamları ve tire (-). Bu ortak dönüştürme sayesinde internet global olarak çalışabildi, herkes aynı sınırlı karakter setini kullanıyordu.
Ama bu ortak zeminin bir bedeli vardı: erenonder.com adresini alabiliyorken erenönder.com ya da 日本.jp alamazdık. Çince, Arapça, Rusça kullanan milyarlarca insan bir yana, bizim Türkçe’deki ö, ü, ş, ğ, ç, ı harflerimiz bile bu sisteme sığmıyordu. İnsanların kendi dillerinde alan adı alabilmesi gerekiyordu.
IDN Nedir?
İşte bu ihtiyaçtan IDN (Internationalized Domain Names) doğdu: alan adlarında Unicode karakterlerin, yani neredeyse tüm dünya dillerinin kullanılabilmesini sağlayan standart. Artık bir Japon kendi alfabesiyle, bir Rus Kiril harfleriyle, biz de Türkçe karakterlerle alan adı alabilecektik.

IDN sayesinde internet gerçekten global hale geldi. Artık adres çubuğu yalnızca Latin alfabesine mahkûm değildi. Ama bu esneklik, beraberinde yeni bir tehlike de getirdi.
Punycode: ASCII’ye Giden Köprü
Peki koca DNS altyapısını baştan yazmak mümkün müydü? Değildi. Bunun yerine akıllıca bir çözüm bulundu: Unicode karakterli bir alan adını, arka planda tamamen ASCII’den oluşan bir karşılığa çeviren bir kodlama. Buna Punycode denir.
Mantık şu: kullanıcı alan adının güzel, okunabilir halini görür; DNS ise perde arkasında onun ASCII’ye çevrilmiş halini çözer. Bu dönüşüm her zaman xn-- ön ekiyle başlar.
Birkaç örnek:
- münih.de → xn--mnih-kva.de
- 日本.jp → xn--wgv71a.jp
Yani tarayıcınıza münih.de yazdığınızda, tarayıcı bunu arka planda xn--mnih-kva.de’ye çevirip DNS’e öyle sorar. Bu tamamen meşru, her gün milyonlarca kez çalışan bir mekanizmadır. Sorun, bu mekanizmanın kötüye kullanılabilmesinde.
Asıl Tehlike: Görsel İkizler (Homoglyph)
Şimdi işin tehlikeli kısmına geliyoruz.
Unicode’da, farklı alfabelerden gelen ama ekranda birebir aynı görünen karakterler vardır. Bunlara homoglyph denir. En bilinen örnekleri Kiril alfabesindeki bazı harflerdir:
+ - - - - - - - - + - - - - - - - - - + - - - - - - - - - + | Gözle görünen | Latin (gerçek) | Kiril (sahte) | + - - - - - - - - + - - - - - - - - - + - - - - - - - - - + | a | U+0061 a | U+0430 а | | e | U+0065 e | U+0435 е | | o | U+006F o | U+043E о | | p | U+0070 p | U+0440 р | | c | U+0063 c | U+0441 с | + - - - - - - - - + - - - - - - - - - + - - - - - - - - - +
Bu tablodaki sağ ve sol sütun ekranda tıpatıp aynı görünür. Ama bilgisayar için bambaşka karakterlerdir; farklı Unicode değerlerine, farklı byte’lara sahiptirler.
Saldırının mantığı tam da buraya oturuyor. Diyelim ki apple.com’u taklit etmek istiyorsunuz. Yapmanız gereken tek şey, içindeki Latin a harfini, görsel ikizi olan Kiril а (U+0430) ile değiştirmek. Göz hâlâ “apple.com” görür. Ama bu artık bambaşka bir alan adıdır. Punycode’a çevrildiğinde:
- Gerçek: apple.com
- Sahte: аpple.com → xn--pple-43d.com
İkisi tamamen farklı sunuculara gider. Kurban “apple.com’dayım” sanır, oysa saldırganın sunucusundadır.
Peki tarayıcılar bunu neden engelleyemiyor?
Aslında engelliyorlar fakat bu engelleme kısmen olabiliyor ve işin en ilginç kısmı burası.
Modern tarayıcıların bir savunması var: karışık alfabe (mixed-script) tespiti. Bir alan adı etiketinde birden fazla alfabe karışıyorsa (örneğin аpple kelimesinde bir Kiril, beş Latin harf varsa), tarayıcı bundan şüphelenir ve adresi güzel Unicode haliyle değil, çıplak xn--pple-43d.com haliyle gösterir. Böylece kullanıcı o tuhaf xn-- önekini görüp “burada bir terslik var” diyebilir.
Ama bu savunmanın bir açığı var: saldırgan kelimenin tüm harflerini tek bir alfabeden yazarsa, karışık alfabe kontrolü devreye girmez. İşte 2017’de Xudong Zheng’in yaptığı tam olarak buydu. аррӏе.com adresini tamamen Kiril karakterlerle yazdı (xn--80ak6aa92e.com), hiç Latin harf karıştırmadı, ve o dönemin Chrome, Firefox ve Opera tarayıcıları adres çubuğunda kusursuz bir apple.com gösterdi.
Bu detayı aklınızda tutun, birazdan bu savunmanın duvarını yakından inceleyeceğiz.
Saldırıyı Baştan Sona Uygulayalım
Teoriyi oturttuğumuza göre, artık işin keyifli kısmına geçebiliriz. Bu bölümde, bir homograph saldırısının bir kurbanın gözünden nasıl işlediğini adım adım takip edeceğiz.
Senaryomuz şöyle: Kurgusal bir e-ticaret sitesi olan shopeko.com’un kullanıcısıyız. Birazdan göreceğimiz gibi, tek bir e-postaya tıklamak, hesabımızı kaptırmamız için yeterli olacak.
⚠️ Buradaki tüm adımlar, internete kapalı izole bir sanal ortamda, yalnızca eğitim amacıyla canlandırılmıştır. “shopeko” kurgusal bir markadır.
Her Şey Bir E-posta ile Başlıyor
Gelen kutumuzda shopeko’dan geldiğini düşündüğümüz bir e-posta var. Konu dikkat çekici: hesabımıza tanımadığımız bir cihazdan giriş yapılmaya çalışılmış. “Güvenliğiniz için kimliğinizi doğrulayın” diyor ve altında bir buton var.

Butonun ya da linkin üzerine geldiğimizde ne görüyoruz? shopeko.com. Tam da beklediğimiz adres. Panikle, hesabımızı korumak için tıklıyoruz.
İşte saldırının en sinsi tarafı burada. E-postadaki link gözümüze shopeko.com gösteriyor, ama tıkladığımızda bizi götürdüğü yer o değil — arkasına gizlenmiş homograph adres.
Gözümüzün Gördüğü Gerçekten Doğru mu ?
Peki bu link bizi tam olarak nereye götürüyor? E-postadaki adres shopeko.com gibi görünüyor, ama içindeki masum görünen e harfi aslında Latin değil, Kiril е (U+0435). Göz bu farkı yakalayamaz, ama makine için bu bambaşka bir adrestir. Arka planda Punycode’a çevrildiğinde ortaya şu çıkıyor:

İşte saldırının tüm sırrı burada. Gözümüz shopeko.com görüyor, ama makine xn--shopko-6of.com diye tamamen başka bir adres görüyor. O tek Kiril harf, Punycode’da koca bir -6of ekine dönüşmüş. Yani tıkladığımız an, “shopeko.com’a gidiyorum” sanırken aslında saldırganın sunucusuna gidiyoruz.
Tuzağın İçine Düşüyoruz
Linke tıkladığımızda karşımıza çıkan sayfa, gerçek shopeko giriş ekranının birebir kopyası: aynı logo, aynı renkler, aynı “Hesabınıza giriş yapın” formu. İki sayfa göz için tıpatıp aynıdır.

Tek fark adres çubuğunda ve birazdan göreceğimiz gibi, o fark bile her zaman belli olmuyor.
“Hesabım tehlikede” telaşıyla, hiç düşünmeden kullanıcı adımızı ve parolamızı giriyoruz. “Giriş Yap”a bastığımız anda iki şey oluyor: girdiğimiz bilgiler saldırgana ulaşıyor ve biz anında gerçek shopeko sitesine yönlendiriliyoruz.
Bu yönlendirme tesadüf değil, saldırının incelikli bir parçası. Gerçek siteye düşünce “galiba şifremi yanlış girdim” deyip tekrar deniyoruz, bu kez başarıyla giriyoruz ve hiçbir şeyin ters gitmediğini sanıyoruz. Oysa parolamız çoktan çalındı.
Perdenin Arkası: Saldırgan Ne Görüyor?
Biz bütün bunları yaşarken, saldırgan tarafında girdiğimiz bilgiler saniyeler içinde ekrana düşüyor:

Sitede “●●●●●●●●” olarak gizlediğimiz parola, saldırganın elinde apaçık duruyor. Üstelik biz hâlâ gerçek shopeko’da geziniyoruz. Hiçbir uyarı, hiçbir hata mesajı yok. Saldırının en korkutucu yanı da bu fark edilmemesi.
Peki Bu Gerçekten Oluyor mu?
Belki “bunlar lab senaryosu, gerçek hayatta kim uğraşır” diye düşünüyorsunuz. Oysa bu, sahada en çok kullanılan tekniklerden biri.
Gerçek saldırganlar, hedefledikleri markaların homograph ya da benzer alan adlarını gerçekten satın alır; çoğu zaman tek bir hedef için toptan, yüzlerce varyasyonu birden kaydeder, sahiplerini de gizlerler. Bu teknik MITRE ATT&CK çerçevesinde T1583.001 (Acquire Infrastructure: Domains) olarak sınıflandırılır ve APT38, FIN7 gibi bilinen tehdit gruplarının aktif olarak kullandığı bir yöntemdir.
Yani burada canlandırdığımız şey, bir zekâ oyunu değil. Dünyanın dört bir yanında her gün yaşanan bir saldırının birebir aynısı.
Peki Kurban Gerçekten Kanar mı?
Burada dürüst olmamız gerekiyor, çünkü bu yazının en öğretici kısmı belki de bu.
Lab’de sahte adrese girdiğimizde, güncel tarayıcılar (bizim testimizde Firefox ve Chrome) adresi shopeko.com diye değil, çıplak haliyle xn--shopko-6of.com olarak gösterdi:

Bu aslında iyi haber: demek ki tarayıcılar bu saldırıya karşı bir savunma geliştirmiş durumda. Hatırlarsanız teori kısmında bahsetmiştik — modern tarayıcılar karışık alfabe (mixed-script) tespiti yapıyor. Bizim shopeko kelimemizde beş Latin harf ve bir Kiril harf (е) karışık olduğu için, tarayıcı bunu şüpheli bulup adresi Punycode haliyle ifşa etti.
Yani dikkatli bir kullanıcı, adres çubuğundaki o tuhaf xn-- önekinden tuzağı fark edebilir.
Ama bu, saldırının bittiği anlamına gelmiyor. 2017’deki Apple örneğini hatırlayın: Xudong Zheng, kelimenin tüm harflerini tek bir alfabeden (Kiril) seçerek bu savunmayı atlatmıştı. Yani saldırgan, harfleri Kiril ikizi olan bir markayı hedef alırsa, kurban hâlâ adres çubuğunda kusursuz bir shopeko.com görebilir.
Buradan çıkan ders önemli: Tarayıcı savunması gerçek ve değerli ama mükemmel değil.
Nasıl Korunuruz?
IDN homograph saldırısına karşı tek bir sihirli çözüm yok, korunma birkaç alışkanlığın toplamından geliyor.
1. Adres çubuğunu dikkatle okuyun. Özellikle giriş bilgisi ya da ödeme bilgisi girmeden önce adrese bir kez daha bakın. xn-- ile başlayan bir adres görüyorsanız, o siteye bir kez daha bakmak gereklidir.
2. Linklere doğrudan güvenmeyin. Bir e-postadaki ya da mesajdaki linke tıklamadan önce üzerine gelin; tarayıcı ya da istemci, linkin gerçekte nereye gittiğini altta gösterir. Görünen metin shopeko.com olsa bile, gittiği adres bambaşka olabilir.
3. Önemli siteleri doğrudan yazın ya da yer imlerinden gidin. Bankanıza, e-ticaret hesabınıza bir e-postadaki link üzerinden değil, adresi kendiniz yazarak veya kayıtlı yer iminden girin.
4. Kilit simgesine (HTTPS) kanmayın. Yeşil kilit yalnızca bağlantının şifreli olduğunu söyler; sitenin gerçek olduğunu değil. Saldırganlar da sahte siteleri için sertifika alabilir.
5. Tarayıcınızı güncel tutun. Homograph savunmaları tarayıcı güncellemeleriyle geliyor. Güncel bir tarayıcı, eski bir tarayıcıya göre sizi çok daha iyi korur.
Peki Ya Savunan Taraf?
Buraya kadar saldırıyı ve bireysel kullanıcı olarak korunma yollarını gördük. Peki bir kurumda, SOC ekibi bu saldırıyı nasıl yakalar?
Bu tam da işin benim en sevdiğim tarafı ve ayrı bir yazının konusu. DNS loglarında Punycode (xn--) avı, bu domainlerin bilinen markalara benzeyip benzemediğini kontrol eden tespit mantığı, ve tüm bunları Acı Piramidi perspektifinde nereye koyduğumuz… Bunları bir sonraki yazıda, savunan tarafın gözünden ele alacağım.
Sonuç
IDN homograph, basit bir fikre dayanan ama şaşırtıcı derecede etkili bir saldırı: gözün kandırılması. İnternetin çok dilli olabilmesi için geliştirilen meşru bir teknoloji (IDN), yanlış ellerde bir aldatma aracına dönüşebiliyor.
İyi haber şu ki modern tarayıcılar bu saldırıya karşı ciddi savunmalar geliştirdi; kötü haber ise bu savunmaların sınırları olduğu ve saldırganların hâlâ bu sınırları zorlayabildiği. Bu yüzden en sağlam savunma, teknolojiye körü körüne güvenmek yerine, bilinçli bir göz ve birkaç basit alışkanlıktan geçiyor.