Szerteszana²

grin agymenései
Archívum Május 2014

DNS alapú DDoS, avagy ki támad hol hogyan?

2014-05-31 22:29:09 írta grin

A mostani támadások kapcsán többen kértek már egyszerűbb magyarázatot, hogy tulajdonképpen miért is akadoznak a szolgáltatók a napokban, miféle botnetek, milyen dns, és egyáltalán? Megpróbálom nem-informatikusul elmondani, nagyrészt.

A DNS és a névserverek

Röviden a DNS-ről: a DNS (Domain Name System) az az internetes alrendszer ami egy névhez megtalálja a hozzá tartozó IP címet (pl. „yikes.tolna.net” névből kitalálja hogy a gép címe „193.227.196.2”), illetve bizonyos esetekben fordítva ugyanezt; elengedhetetlen hogy az emberek számára megjegyezhető szavakból a gépek számára érthető számok keletkezzenek. Ezeket a neveket a DNS serverek tárolják és válaszolnak a kérésekre, amiket adatcsomagok formájában kapnak.

Műszaki mélységek nélkül két fontos serverfajta dolgozik a DNS-en: a „hivatalos” (authoritatív) és a „gyorsító” (caching) serverek; az előbbi csoport most számunkra nem érdekes, ők tudják a saját adataik minden részletét; a második csoport feladata az hogy a saját ügyfelek, saját gépek DNS forgalmának egy részét helyben szolgálják ki, tárolva az ismétlődő kéréseket, gyorsítva a folyamatot. Ilyen caching névservert szinte minden „router” tartalmaz, vagyis azok a kütyük amikkel „egy internet drótra több gépet lehet dugni”, vagy „meg lehet osztani wifin”, vagy hasonlók.

Mint látható a caching serverek feladata a saját gépek kiszolgálása, de mindenfajta kérést elfogadva (hiszen a felhasználók bármilyen kérést kérhetnek, amit gyorsítani kell). Normális esetben tehát a caching névserverek csak saját gépeknek (bármit) szolgálnak ki, és mindenki mást elutasítanak. Ez így normális.

A problémánk lényege az, hogy bizonyos eszközök ezt az alapvető szabályt megszegik: bárkinek bármit hajlandóak kiszolgálni a DNS rendszeren belül (ezek neve „open resolver”). Ennek oka változatos: igénytelenség és gondatlanság a leggyakrabban, nagyívű leszaromság az óccó kütyülik gyártóckáitól, a gyári alapbeállítások biztonság-tudatosságának teljes hiánya, illetve néha egyszerű emberi hiba a beállítások során. Amikor egy ilyen hibás kütyü kerül a netre akkor ő az egész világ számára nyújt DNS feloldási szolgáltatást.

Ez első ránézésre még nem lenne baj, maximum nem gyorsít nekik semmit.

Erősítéses támadások

Azt, hogy miért támad meg valaki valakit most ne sokat beszéljünk; leggyakrabban azért, mert az illető egy fasz, ezt nem lehet ennél árnyaltabban fogalmazni. Nincs tudatában sem a károkozás nagyságának, sem a várható következményeknek, és nagyjából ez a féltéglával-betöröm-a-kirakatokat informatikai megfelelője. Gyakran történik a támadás politikai okból, és nem ritka a bevétel-orientált támadás valaki ellen vagy valaki mellett sem. A támadások fajtái, műszaki megoldásai nagyon változatosak, ne menjünk most bele.

A támadások egyik típusa a túlterheléses támadás: valamilyen módon olyan adatmennyiség érkezik be egy gépre, szolgáltatóhoz, gerincvonalra vagy az egész világra hogy attól az adott szolgáltatások, a teljes szogláltató, az érintett országok vagy semmi a világon nem érhetők el addig, míg a támadás hatásosan folytatódik. A túlterheléses támadások pedig akkor kivitelezhetőek gazdaságosan ha azt erősítéssel (amplification) teszik: egy kis adatforgalmú „tetű” utasítja a „zombikat” hogy támadjanak meg valakit, így a tetűnek nem kell végtelen erőforrással rendelkeznie.

Az erősítésnek is két fő fajtáját különböztetném most meg: az egyik amikor a zombikon valamilyen kártékony, rejtett program fut (vírus, trójai, …), a másik amikor a zombikon semmiféle változtatás nem történik hanem azok valamilyen hibáját használják ki az erősítésre, vagyis a zombikon van valami ami egy pici adatcsomagra egy hatalmas adatcsomaggal válaszol. Mi most ez utóbbival foglalkozunk.

A erősítés folyamata az utóbbi esetben elég egyszerűen megérthető:

  1. a TETŰ kiszemeli az ÁLDOZATot, megkeresi az IP címét,
  2. a TETŰ küld egy olyan (pici) adatcsomagot minden ZOMBInak amiben meghamisítja a feladó címét, hogy úgy nézzen ki mintha az ÁLDOZAT  küldene egy kérdést a ZOMBInak,
  3. a ZOMBI megkapja a csomagot és válaszol rá egy nagy adatcsomaggal, viszont mivel azt hiszi hogy a kérdést az ÁLDOZAT küldte ezért neki küldi a választ.

Vagyis a tetű kiküld 1000 darab 50 byte-os adatcsomagot mire az áldozatra ráömlik mondjuk 1000 darab 500 byte-os adatcsomag. Másodpercenként 500 kilobyte, ami kb. 5 megabitnek felel meg másodpercenként. Ha mindezt több ezer vagy tízezer zombival és picit nagyobb erősítéssel számoljuk akkor elég gyorsan összegyűlik több tíz vagy száz gigabit is, amit a legnagyobb szolgáltatók is nehezen viselnek, nem beszélve a teljes internetes gerinchálózatról.

A botnet a zombik összessége: egy közös irányítású hálózat, csoport, ami agyatlan robotokból áll, akik teljesítik a vezértetű kéréseit. A közös cél fogja őket össze, így gyakran nem szükséges egyformának lenniük, egyforma software-ekkel rendelkezniük, csupán a támadásra használt eljárás közös, és az irányító.

Vissza a DNS-re

A DNS erősítéses támadások picit más műszaki módszerrel, de lényegében ugyanezt a módszert követik: a tetű ráveszi a zombikat hogy egy pici kérésre bazinagy válaszokat küldjenek valahova. De hogyan tudná rávenni valaki akárhonnan hogy egy gép egyáltalán válaszoljon neki bármit is? Hiszen a caching DNS serverek csak a saját barátaiknak válaszolnak, így hiába is küldenek nekik bármit is, hamisítva persze, semmi nem történik, nincs válasz.

Kivéve persze ha open resolver-ről van szó, aki bárkinek bármilyen DNS adatot megpróbál feloldani. Innentől egyszerű: tetű küld egy speciális módon hamisított pici DNS kérést az open resolvernek (aki innentől zombi névre hallgat), aki generál egy bazi választ az áldozatnak és elküldi (elküldeti) neki.

Mit tegyek, tehetek?

„Ne ess pánikba!” – Galaxis Utikalauz Stopposoknak

Az első, hogy ellenőrizd magad: itt, vagy itt, esetleg itt.

Ha nincs baj, akkor király (vagy királynő) vagy. Nincs több teendő, mehetsz vissza netet nyomkodni. ;-)

Ha a tesztek szerint open resolvert üzemeltetsz akkor jelzem, hogy a te édesanyádat is gyakran emlegettük mi, informatikusok az elmúlt napokban, persze kimondottan kontextusból kiragadva és mindenféle személyes vonatkozást anonimizálva, szemeket fekete négyzettel letakarva, satöbbi. Zombi vagy, és jó eséllyel neked is köszönhetjük hogy az elmúlt napokban-hetekben akadozik az internet. Köszi!

De lépjünk tovább. A probléma megoldása az, hogy egy szakember (informatikus) megszünteti az open resolvert, miután megkereste, hogy mi az. Ez az alap. Ez nem olyan dolog amit egy plázacica a műkörmeivel, hidrogénszőke fanszőrzetével és pincsikutyájával meg tud oldani. Vannak olyan problémák, de ez nem az.

Jó, látom, még mindig olvasol. Nem akartalak megbántani, hidrogéneztesd ha jól esik. ;-)

A megoldás azért az esetek nagy részében sztereotip: van egy kici kínai routereckéd ami nagyon olcsó volt, cserébe viszont szar, és a gyártója vagy ad hozzá javításokat vagy sokkal inkább nem ad. Ez az a doboz amivel megosztod a netedet a több géped között dróton vagy wifivel. Nagyon jó eséllyel ő a bűnös.

Lehetséges megoldások:

  • Kivágod a retekbe és a gépedet közvetlenül dugod a netre. Általában ez nem szokott járható útként funkcionálni.
  • Kivágod a retekbe és veszel egy normális eszközt és informatikusra bízod a beállítását. (És fizetsz érte, nem pedig kuncsorogsz; vagy nyírd le a gyepjét tízszer vagy vegyél neki egy karton sört vagy akármi, ne gondold már hogy az informatikusok a világ ingyenkurvái.) Nem könnyű ajánlani megfelelő eszközt, én legalábbis nem tudok, mert amit ajánlani tudok azt a plázacicák nem tudják feltétlenül beállítani. (Amúgy én mikrotik cuccokat használok most már szinte mindenütt, értelemszerűen Linux alapú.)
  • Keresel hozzá gyári javítást (firmware) és felteszed. Nem egyszerű és el lehet rontani, bár tény hogy az elrontáshoz igazi tehetség kell.
  • Változtatsz a beállításain hogy csak belső irányba szolgáljon ki DNS kéréseket (esetlegesen ilyen beállítása nem lesz, de nem kizárható).
  • Változtatsz a beállításain és megadod a tűzfalában hogy kintről ne fogadjon el DNS kéréseket (műszakilag: bejövő csomagok, protokoll UDP, cél port 53).
  • Változtatsz a beállításain, és kikapcsolod benne a DNS servert (teljesen), és a gépeiden használod a szolgáltató servereit, vagy akár a google dns szolgáltatását (már ha épp minden hálózati tevékenységedet meg szeretnéd velük – meg az amerikai állammal – osztani). Nem ideális, mert kézzel kell baszkurálni a gépek beállításait is, egyenként.
  • Kivágod a gyári firmware-t az előbb említett retekbe (egybként ez egy másik szót helyettesít, nem keverendő össze az ásványokban gazdag zöldséggel) és felteszel egy dd-wrt / openwrt / tetszőleges open source firmware-t. Ez nem mindig lehetséges (az extragagyi cuccokban nincs hozzá elég erőforrás), de amikor igen akkor ez szokott a jó megoldás lenni.

Mint látod valóban nincs triviális megoldás. Ez van, ez egy komplex világ.

Remélem nagyrészt érthető voltam. A fenti probléma (túlterheléses támadások vagy DDoS - Distributed Denial of Service) általánosan létezik, nem csak a DNS-sel kapcsolatban; napjainkban az időszinkronizációtól kezdve (NTP) a nyomtatók lekérdezéséig (SNMP) minden szolgáltatásnál alapvető hogy ne lehessen hamisított pici kérésekkel bazi válaszokhoz jutni. Sok még a probléma, elleszünk vele egy ideig mi, informániákusok.

Ti meg, ha épp ráértek, még segíthettek is nekünk, hogy tudjuk adnia netet – nektek.

Archívum Május 2014

Szerteszana²

grin agymenései