Alan adı üretme algoritması (DGA), zararlı yazılımlar tarafından yeni bir alan adı üretmek amacıyla kullanılan algoritmalardır. Zararlı yazılım geliştiricileri, bu algoritma sayesinde geliştirmiş oldukları zararlı yazılımın haberleştiği komuta kontrol merkezinin şikayet üzerine ve/veya güvenlik firmaları tarafından yapılan müdahale üzerine (sinkhole) kapatılması durumunda tekrar zararlı yazılımı kontrol edebilmektedirler.

Örneğin 2008 yılında MS08-67 zafiyetini istismar ederek dünyayı kasıp kavuran Conficker.A solucanı, barındırdığı DGA sayesinde günde 250 tane yeni alan adı üretiyordu. Aynı solucanın 2009 yılındaki güncellenmiş olan C varyantı ise günde 500 ile 50.000 alan adı üretecek bir DGA’ya sahipti. Conficker zararlı yazılımı ile mücadele esnasında, zararlı yazılımın oluşturduğu trafiği izlemek ve zararlı yazılım bulaşmış olan sistemleri tespit etmek amacıyla conficker çalışma grubu tarafından günde 500 adet alan adı kayıt ediliyor ve analiz sistemlerine (sinkhole) yönlendiriliyordu.

Günümüz zararlı yazılımlarında ise DGA, çoğunlukla ana haberleşme yönteminden ziyade yedek yöntem olarak kullanılmaktadır. Örneğin GameOver Zeus zararlı yazılımı DGA’yı, kullandığı ilk iki yöntem çalışmadığı taktirde üçüncü yöntem olarak kullanmaktadır. DGA’nın birincil yöntem olarak kullanılmamasının temel sebebi, zararlı yazılım analistleri, siber güvenlik uzmanları tarafından kod analizi ile zararlı yazılımda tespit edilen DGA’nın yani alan adlarının, yazılım geliştiricinden önce kayıt edilebilmesine imkan tanımasıdır. Bu sayede uzmanlar, Conficker örneğinde olduğu gibi zararlı yazılımlar ile ilgili çeşitli bilgileri toplayabilmekte, kimi zaman ise zararlı yazılımları kontrol altına alabilmektedirler.

Gündemi, analiz yazılarını takip edenler, ileri seviye Hesperbot bankacılık zararlı yazılımının, 1.5 yıldır ülkemizin ve vatandaşlarımızın üzerinde kara bulut gibi dolaştığını biliyordur. Geçtiğimiz ayın başında Tübitak, Hesperbot ile ilgili yeni bir yazı yayınlayarak bu zararlı yazılımın ülkemizde hala aktif olduğunu ve vatandaşımız için ciddi bir tehdit olduğunu açıkladı.

Bu vesileyle Tübitak Bilgem Siber Güvenlik Enstitüsü’ne, Hesperbot ile mücadele adına verdiği emeklerinden dolayı teşekkür etmek isterim.

5 Eylül tarihinde INTELRAD ekibi, Hesperbot’un hedef aldığı bankalara ait kural dosyasını ve ilave modüllerini indirmek için kullandığı alan adına (followtweetertag.com) siber operasyon düzenledi. Bu operasyon sonrasında Hesperbot zararlı yazılımı bulaşmış tüm sistemler, ilgili alan adına sahip web sitesine erişemedikleri için (http durum kodu 502) Hesperbot’un DGA’sı tarafından üretilen alan adları ile bağlantı kurmaya başladı.

Hesperbot, kural dosyası olmadan kullanıcının internet tarayıcısı ile internet bankacılığı sunucusunun arasındaki trafiğe müdahale edememektedir.

Bildiğiniz gibi hem işim gereği hem de ilgi alanıma girmesinden dolayı Hesperbot üzerinde zaman zaman çalışma fırsatı yakalıyor ve ilginç bulduğum noktaları sizlerle paylaşıyorum. Hesperbot’un DGA’sı da uzun zamandan beri merakımı cezbediyordu fakat DGA ile ilgili fonksiyona hata ayıklayıcının donmasından dolayı çok defa deneyip ulaşamayınca, havlu attığım zamanlar oldu. İnadım inat, gel zaman, git zaman, günün birinde bunun analiz için kullandığım sistemden kaynaklı olabileceğini düşünerek bu defa üzerinde sadece üzerince hata ayıklayıcı yüklü olan tertemiz bir Windows XP ile analizi gerçekleştirmeye karar verdim ve herhangi bir sorun yaşamadığımı görünce Yeni Zelanda’nın HAKA dansını yapmaya başladım :)

DGA fonksiyonunu aramamdaki temel amaç en kısa sürede Hesperbot’un üreteceği alan adlarına ve hangilerinin Hesperbot geliştiricileri tarafından kayıt edildiği bilgisine en kısa sürede ulaşmaktı. Fonksiyona ulaşamadığım taktirde izleyeceğim yol, Hesperbot’un öncelikle ilgili komuta kontrol merkezi adresine bağlanmasını beklemek, ardından bağlanamamasını sağlamak ve üreteceği alan adlarını teker teker kayıt altına almak olacaktı. Hesperbot’un ilk adrese bağlanmaya çalışması (followtweetertag.com) ve bağlanamaması durumunda, yeni alan adını üretmesi için belli bir süre ve bağlantı isteğinin adet bazında geçmesini beklemesinden ötürü bu yöntem, saatler belki günler sürebilirdi.

DGA’nın fonksiyonunu bulup incelediğimde ve dallanıp budaklanan alt fonksiyonlarını gördüğümde önümde izlemem gereken iki yol vardı. Birincisi ya tüm fonksiyonların ve komutların üzerinden teker teker geçecektim ve DGA’ya göre alan adı üreten bir kod yazacaktım veya DGA fonksiyonunu yamayarak (patching), limit ve adet kontrollerini devre dışı bırakarak seri bir şekilde Hesperbot’un yeni alan adlarını üretmesini sağlayacaktım. Şayet zararlı yazılım analisti olsaydım ve attığım taşın ürküteceği kurbağaya deyeceğine inansaydım kesinlikle birinci yolu seçerdim dolayısıyla pratik ve kısa yolu seçmeye karar verdim.

Hesperbot paketlenmiş (packed) bir zararlı yazılım olduğu için DGA fonksiyonunu yamamak için ya paketini açıp, çalışabilir hale getirecek ve gerekli değişiklikleri (patching) disk üzerindeyken yapacaktım ya da bellekte çalışır haldeyken yapacaktım. Yine fazla zahmete girmek yerine (sanırım tembelim) ikinci yolu, bellek üzerinde değişik yapmayı seçtim. Bellek manipülasyonu için eskiden pydbg aracını kullanıyordum fakat zaman içinde geliştirimesine ara verilmesi nedeniyle yeni araçlara doğru yelken açtım ve kısa bir araştırmadan sonra aradığım aracı buldum, WinAppDbg.

WinAppDbg, Windows işletim sistemi için geliştirilmiş ve Python ile yazılmış bir hata ayıklayıcısıdır.

WinAppDbg modülü ile DGA fonksiyonunda gerekli değişiklikleri yapan ufak bir araç hazırladıktan sonra Hesperbot’un çalıştığı bir sistemde aracı çalıştırdım ve Hesperbot’un kısa bir süre içinde yeni alan adlarını üretmesini sağlayarak mutlu sona ulaştım. (Hesperbot geliştiricilerinin ekmeğine yağ sürmemek için bazı kısımlar sansürlenmiştir.)

Kurban Bayramı’nızı en içten dileklerimle kutlar, bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.