Merhabalar,
Bu sayıda, Punycode’un oltalama e-postalarında kullanımı
konusundan bahsedeceğim. Punycode nedir sorusunun cevabı ile başlayalım.
Punycode, Unicode karakterleri ASCII karakterlere çevirmek
için kullanılan bir yöntemdir. Kayıt edilecek alan adında ASCII’de yer almayan
karakterler kullanılacaksa, bu karakterler punycode ile ASCII karakterlere
çevirilmelidir. Örnek olarak, kril alfabesi karakterleri verilebilir.[1]
Geçtiğimiz aylarda, punycode kullanılarak kayıt edilen bazı
web adreslerinin gerçeği ile aynı görünüme sahip olabileceğini görmüştük.
Saldırganlar, ücretsiz SSL sertifikası kullanarak senaryolarını daha gerçekçi
hale getirmekteler.[2] Bu örnekte, saldırganlar kril alfabesindeki “a” harfinin
latin alfabesindeki “a” harfine benzerliğinden faydalanmışlar.
Biz de bu yazıda, punycode’u oltalama saldırılarını daha
gerçekçi kılmak için nasıl kullanabileceğimizi göreceğiz.
E-postalarda, iki farklı gönderen kısmı bulunmaktadır.
Bunlardan birincisi SMTP komutlarından MAIL
FROM: komutunun parametresi olarak girilen protokol gönderenidir. İkincisi
ise mailin DATA komutundan sonra kullanılan From:
alanında girilen zarf gönderenidir.
Kullanıcı tarafından kullanılan e-posta uygulamaları
genellikle zarf gönderenini kullanmaktadır. Bu parametre manipülasyona açık
olması sebebi ile saldırganlar tarafından oltalama saldırılarında sıklıkla
tercih edilmektedir.
Aşağıdaki örnekte, msesli@gmail.com
adresinden gelen e-posta kullanıcı tarafında sesli@mehmet.com adresinden gönderilmiş gibi görünmektedir.
Ekran Görüntüsü 1: Data kısmındaki From: parametresi manipüle edilmiş
e-posta
Ekran Görüntüsü 2: Gönderilen e-posta’nın SMTP komutları
Bu senaryoda, mehmet.com alan adını kullanan bir e-posta
adresine sesli@mehmet.com adresinden
e-posta geliyormuş gibi gösteriyoruz. Normal şartlar altında, mehmet.com
adresine mehmet.com e-posta sunucuları dışında bir sunucudan, gönderen kısmında
mehmet.com olan bir mail gönderilemiyor olması gerekir.
SMTP Gateway ürünleri burada bu iki parametreyi de kontrol
edebilir. Protokol göndereni de, zarf göndereninde de mehmet.com geçen
maillerin bloklanması sağlanabilmektedir.
İşte bu noktada, punycode devreye giriyor. Zarf göndereninde
yer alan adres punycode ile manipüle edildiğinde, SMTP gateway ürünleri bu
kontrolleri varsayılan olarak yapmadığı için e-postalar sunuculara iletilmektedir.
Aşağıdaki örnekte punycode kullanılan e-posta’nın SMTP
komutlarını görüyoruz.
Ekran Görüntüsü 4:Punycode kullanılan e-posta’nın kullanıcı tarafındaki
görünümü
Ekran görüntüsü 3’ten de görülebileceği gibi, Zarf
göndereninde sesli@mehmet.com yerinde sesli@--xnmhmet-zwe.com kullanılmıştır. Bu iki adreste
kullanıcı tarafında aynı şekilde görünmektedir. Bu yöntem ile SMTP gateway
ürünlerinin yaptığı kontroller atlatılıp, kullanıcıya legal görünümlü e-posta
ulaştırılabilmektedir.
Alınabilecek Önlemler;
--Öncelikle maillerin gerçek adreslerden kontrolünü sağlamak
için SPF, DKIM kontrolü kullanılabilir.
-- Punycode kullanılan alan adlarının (IDN:Internationalized
Domain Names) da kontrol edildiği bir siber istihbarat servisi kullanılabilir.
Böylece saldırıda kullanılacak alan adını, Siber İstihbarat
servisinin sağladığı liste üzerinden kontrol ederek, oltalama e-postalarının
engellenmesini sağlayabilirsiniz.
Nebula Siber İstihbarat servisi ile ilgili bilgi almak için
aşağıdaki bağlantıyı kullanabilirsiniz.
--SMTP gateway ürününüzde, zarf göndereni de kontrol
edilebilir.
Varsayılan olarak bu kontrol, bazı SMTP gateway ürünlerinde
gerçekleştirilmeyebiliyor.
-- Aşağıdaki adresten alan adınızda yer alan karakterlerin
diğer alfabelerdeki eşleniklerini belirleyip, kendi sözlüğünüzü
hazırlayabilirsiniz. http://www.unicode.org/cldr/utility/confusables.jsp?a=&r=IDNA2008
Gelen postaların gönderen kısmındaki alan adını hazırlamış
olduğunuz sözlük ile kontrol ederek oltalama e-postalarını engelleyebilirsiniz.
-- Sözlük yerine regex ile de bu kontrolü sağlayabilirsiniz.
Senaryomuz için örnek regex;
^(?:xn--).*(?:m|e|h|t)(?:-)?
Burada
alan adımızda yer alan m,e,h,t harflerini alternatifli olarak bir punycode
kullanılmış bir alan adında geçip geçmediğini kontrol ediyoruz.
Saldırganlar,
alan adlarında her seferinde farklı karakterin punycode alternatifini
kullanabilmektedirler. Bu yüzden, alan adında yer alan her harfin latin
alfabedeki halini içeren alan adlarını kontrol ediyoruz.
Ayrıca,
SMTP gateway ürününde bu kontrolü yaparken, adres “–xn” ile başlıyorsa ve
regexte yer alan şablonumuz ile eşleşiyorsa blokla şeklinde yapılandırırsak her
mailde regex kontrolü yapılmayacağı için performans açısında da iyileştirme
sağlayacaktır.
--Yapmış
olduğum araştırmalarda, protokol göndereni ile zarf göndereni birbirinden
farklı olan e-postaların engellenmesi için e-posta güvenlik ürünlerinde
anti-spam kuralları olabilmektedir. Konu ile ilgili üreticinize danışmanızı
öneririm.
Bir sonraki yazıda görüşmek üzere.
Kaynaklar;
[1]https://www.punycoder.com
[2]https://www.xudongz.com/blog/2017/idn-phishing/
Not: Bu makale BeyazŞapka dergisinin Ağustos 2017 sayısında yayınlanmıştır.
Bu köşede anlatılan yöntemler, bilgi güvenliği farkındalığını arttırmak adına anlatılmaktadır. Doğabilecek yasal sorumluluklar bu yöntemleri uygulayan kişilere aittir.
Hiç yorum yok:
Yorum Gönder