[Frissítve] Bit-squatting - a domain tulajok legújabb mumusa?

A phising (adathalászat), cybersquatting (másvalaki védjegyét képező domain regisztrálása, rosszhiszemű, üzleti célú felhasználása) és typosquatting (a cybersquatting egyik alfaja, amely arra alapoz, hogy az emberek egy része félre fogja gépelni az ismert domain-ek nevét) után új fenyegetés lehet a vezető domain-ek tulajdonosai számára a bit-squatting.

Artem Dinaburg, aki az Egyesült Államok fegyvergyártó óriásánál, a Raytheon-nál dolgozik, vasárnap beszél a Def Con 19 konferencián kutatásának eredményeiről "Bit-squatting: DNS Hijacking Without Exploitation" előadásában.

Frissítés: Dinaburg prezentációja itt.

Miről is van szó? Dinaburg szerint a RAM chip-ek különböző behatások során képesek rendellenes működést produkálni. A bennük tárolt értékek (0,1) képesek átbillenni. Mivel a DNS ASCII-t használ, egyetlen átbillentett bit elegendő ahhoz, hogy az áldozat teljesen máshova menjen, mint ahova eredetileg szándékozott.

Rakjuk össze például a 'microsoft' szót e táblázat alapján. Az eredmény:


   m        i         c        r        o        s        o        f        t
01101101 01101001 01100011 01110010 01101111 01110011 01101111 01100110 01110100

Mi lesz az eredmény, ha egy bitet átbillentünk?


   m        i         c        2        o        s        o        f        t
01101101 01101001 01100011 00110010 01101111 01110011 01101111 01100110 01110100

Magyarul, ha sikerül a támadónak akár csak egy bitet is átbillentenie, akkor az áldozat máris a bit-squatter domain-jének küldi az adatokat a Microsoft hivatalos oldala helyett.

Kérdés, hogy ezt meg lehet-e csinálni? Dinaburg azt állítja, hogy számos népszerű domain-t bit-squattelt meg és logolta az összes HTTP és DNS forgalmat. Az eredmény? Dinaburg szerint "sokkoló és meglepő":

To verify the seriousness of the issue, I bit-squatted several popular domains, and logged all HTTP and DNS traffic. The results were shocking and surprising, ranging from misdirected DNS queries to requests for Windows updates.

Dinaburg előadásával be szeretné bizonyítani, hogy komolyan kell venni ezt a fenyegetést és tippeket is ad majd arra nézve, hogy hogyan lehetne az ilyen támadás ellen védekezni.

A részletek itt és itt.

Hozzászólások

Amióta volt egy hír a javascriptben írt virtuális gépről én már semmin se lepődöm meg.

Viszont lehet h ideje visszatérnem valamelyik régi szakmámhoz, az IT kezd túl misztikussá lenni... ehe.

Ezt konkrétan hogy csinálta?
Ha egy RAM modul a normál háttérsugárzástól vagy a "szobahőmérséklettől" ilyet csinál, akkor az rossz, és (remélhetőleg) a memteszt megtalálja.
Ha odamegy egy géphez egy hőlégfúvóval vagy egy radioaktív anyaggal, akkor szerintem sokkal egyszerűbb megoldások is vannak, amivel el lehet "téríteni" egy DNS kérést.
(Meg lehet, hogy feltűnő, ha valaki sugárvédő ruhában matat a gép körül :-) )

Ezt konkrétan hogy csinálta

Ha jól sejtem, egyáltalán nem "csinálja". Csinálja azt magától is rengeteg rossz hardver. Ő csak alájuk rakja a domain-eket, hogy hozzá csorogjanak be a félrement request-ek, amelyeket jelenleg nem oldanak fel a névszerverek.

A memtesztet futtató felhasználó meg saccra ezerszer ritkább az ECC RAM-ot vásárló felhasználónál.

sztori

az új memória szerinted nem használódik el szép lassan, évek alatt? az, hogy újonnan megy rajta egy napig a memtest, azt jelenti, hogy öt év múlva is hibátlan lesz?

egyébként meg a "normális" ember nem használja a memtestet. és sokan vannak. na, erről szól ez a támadás. statisztika, semmi más.

Statisztikailag mennyi esélye van, hogy egy memória annyira hibás, hogy már egy begépelt URL se jön vissza belőle helyesen? Mennyi az esélye, hogy pont eltalálod az eltérítő domaineddel ezt a hibát?

Hány elírt domaint kéne regisztrálni? Elgépelés esetén vannak jól bevált minták.
A memóriahibára építő eltérítésnél hihetetlen mennyiségű domaint kéne bejegyezni 1 db cím eltérítéséhez is, hogy bármi eredmény legyen.

Más: szerinted egy ilyen hiba mennyire befolyásolja a számítógép működését? Lejjebb írta is valaki, random fagyások, állandó filekorrupció, stb. Egy ilyen rosszul működő gép már a legbutább laikus szerint is teljesen megbízhatatlan, kukaérett...

Ja meg persze hiába a memóriahiba miatt sikeresen félreirányított kérés, ha a következő percben úgyis csontra fagy a böngésző/egész gép (mert hibás a memória...), még mielőtt bármi értelmes információt el tudott volna küldeni...

Ez az egész "kutatás" vihar egy pohár vízben, kb az C-x M-c M-butterfly színvonala, csak sajnos ezt nem viccnek szánták... éljenek a brittttudósok :p

Ne feltétlenül asztali számítógépekben gondolkodj (bár annál is gond nélkül előfordulhat). Kis SOHO routerekből például majdnem minden internetes háztartásban van egy. Elég ha ezek csak nagyon ritkán tévesztenek egy ilyet, a nagy számok törvénye alapján (2 milliárd internetező a világon) ez még így is elég jó halászatra ad lehetőséget.

Emberünknek meg nincs más dolga, csak bereggelni néhány ilyen bitflippes domaint és várni... elég, ha csak pár naponta esik be valaki és már nyert a bolton. ;)

Hm, érdekes, az enyémben nem, hacsak nem transzparensen működik(aminek mi értelme volna?). De persze ez csak annyit jelent, hogy az enyém valami rossz kínai :D

Amúgy simán elképzelhetőnek tartom, hogy normális routerekben tényleg van, de nekem még így is kétségeim vannak afelől, hogy ez a bit-flipping olyan gyakori probléma lenne.

A tipikus router (mondjuk úgy, hogy eddig az összes, amit láttam, ami nem túl sok, kb. 6 darab), az felépíti a kapcsolatot a szolgáltatóval, eltárolja az onnan kapott IP címet, a rácsatlakozó klienseknek ő oszt IP címet, és saját magát állítja be gw-nek és DNS szervernek is.

Vagyis minden DNS lekérés a routeren megy át.

Feltételezve, hogy mindig ugyanoda allokálja a memóriát, mindig ugyanazon bájt ugyanazon bitje fog ugyanúgy átbillenni. Mert ha nem, akkor kis esély van arra, hogy kétszer ugyanoda megy a kérés, ami vagy azt jelenti, hogy mocskos sok domaint le kell foglalni minden bithiba esetére, vagy az ima ereje segít.

Miért számít hányan látogatják? Miért kell kevés lehetőségre felkészülni? Mivel nem tervezhető a bithiba, a példa esetében a 9*8 bit (valójában +3*8 a com miatt) közül bárhol lehet a bithiba, tehát ennyi különböző domain-re mehet a kérés, arról nem is beszélve, hogy a 9*8 bit közül lehet, hogy több bithibád lesz. És igazából még statisztika sem készíthető róla, hogy minek van nagyobb esélye. Félregépelésnél inkább lehet ilyet készíteni.

Miért számít, hogy hányan látogatják? Ez komoly kérdés? Ha van mondjuk 1 milliárd lehetőség, de 10 milliárd próbálkozás van, akkor valószínű, hogy az adott, amit kinéztél, legalább egyszer elő fog fordulni. Ráadásul ha a bithiba miatt értelmetlen lesz a cím, akkor a felhasználó újra fogja próbálni.

Értem én, hogy itt mások a léptékek, de én sem értem, máshogy hogy van értelme a dolognak.
----
Hülye pelikán

Ah. Azt értettem, hogy minél többen látogatják, annál nagyobb esélye van, hogy egy adott hibás domain beleesik a lekérésekbe, ez totál logikus, de ahhoz nincs köze a látogatók számának, hogy hány helyen lehet bithiba, ergo hány domain lefoglalásával tudod lefedni a hibás domain-eket.

Vagy nem értettem meg, hogy miről van szó, vagy ez egy baromság. Ha mondjuk 1M RAM van a DNS-ben, és olyan rossz, hogy biteket téveszt, akkor mekkora az esélye, hogy pont a domain név romlik el, és nem bármi más, ami azonnali elszállást okoz? És miért nem a PC rontja el az URL-t?
Másképp fogalmazva: ha létezik olyan DNS, amelyik a "microsoft.com" kérésre valamelyik hasonló domain címét adja vissza, az biztosan nem véletlen RAM-hibák miatt csinálja ezt.

Typo error: "Mivel a DNS ACSII-t használ, ..."
ACSII->ASCII

Az egész egy kicsit fura, scareware-nek tűnik. Mégis hogyan billenti át azokat a biteket? Ráadásul úgy, hogy pont a bit-squatter domain-re ugurjon a gép? Dinaburg előadása olyan hatást akart elérni, mint a Swordfish filmben amikor közlik főhekkerrel, hogy nemis vírust kell írnia hanem hidrát.
:-))

Elég fura humor is helyet kap az ilyen rendezvényeken.
Egy kedves kollégája egyszer egy hosszas cikket szentelt annak, hogy miért Commodore 64-et érdemes használni távoli szerverek crackelésére. :-) A mai modern processzorok túl sok felesleges műveletet végeznek, még a C64 MOS 6510-ese csak pont azokat a műveleteket végzi amire szükség van...
és haszonló okfejtések voltak még. :-)

"Vagy például nézzük azt az esetet, mikor valaki úgy gondolja, megcsalja a barátnője, és szeretne a hölgyemény e-mail fiókjához hozzáférni. Ezt egyetlen módon teheti meg, ha ellopja az illető e-mail jelszavát. Hasonló helyzetben mindenki így cselekedne, ebben biztos vagyok."

Na, ebben én nem vagyok olyan biztos. Nekem erről a KFT egyik slágere jut eszembe.

Ha valaki civilizált és van egy kevés intelligenciája
És tudja, hogy mi fán terem a tolerancia
Az a legritkább esetben se mondja, hogy lefejellek, köcsög!

Ha a 8 bites UTP-C64 Ethernet crosspatch kábel végére forrasztasz egy programozható irányított X-ray emittert, egy remote nano-capacitor scannerrel (azaz dram scannerrel), akkor jó eséllyel el tudod találni a távoli gép ram chipjének megfelelő bitjét.
Ehhez egy módosított YAGI antennára és egy neutronforrásra lesz szükség.
Sajnos ilyen eszközt boltban nem lehet beszerezni, csakis otthon lehet előállítani. Már a 8 bites UTP-C64 Ethernet crosspatch kábel beszerzése sem egyszerű feladat. Ráadásul az X-ray emitterhez szükség lesz urán-235 fűtőelemre. A BME raktárából sajnos az összeset elvitték, Pakson érdemes próbálkozni, csak nem könnyű lefizetni a biztonsági őröket ha nincs belsős kapcsolatod.
:-D

Ki kell fejleszteni egy olyan WGA-t (BaT hozzászólásában a link), ami nem a tranzisztorok saját frekvenciájával dolgozik, hanem a ram chipekben a kondenzátorok fegyverzetei közt megbúvó dielektrikumok saját frekvenciájával dolgozik, így a dielektrikum rezonanciába jön, és a kondenzátor kapacitása megváltozik...

Amúgy mi köze van a röntgensugárzásnak az uránhoz?

szerk.: a dielektrikum a mozgás hatására felmelegszik...

Az amcsik készpénznek veszik annak a szavait, akinek köze van a "hadsereghez". Nekem egyszer volt szerencsém beszélni egy ex-military computer security experttel (vagy vmi ilyesmivel). Az első órában még csak hüledeztem, a másodikban alig tudtam visszafojtani a röhögésem. Valaki valakit nagyon átverhetett: vagy a fickó a céget, ami felkérte, vagy a fickót a "sereg", amikor kiképezte :) de hogy nem engem, abban biztos vagyok.
Mondjuk röhögtünk már fed-eken is. Véleményem szerint amúgy sem volt keresnivalójuk itt, de így legalább vicces volt.

Ez csak a jó öreg boolean hijacking egy újabb modifikációja. Az eredeti úgy működött, hogy egy if(!0) else ágába írták be a malicsusz kódot, ami a feltétel egy bitjének random átbillenése után futott le. Ennek az is előnye volt, hogy ha megfelelő fordítóval fordították le a forráskódot, a víruskereső sem tudta detektálni a kártékony kódrészletet.

mar miert kene a tamadonak bitet modositania? ha jol ertem modosul az magatol is. pl a www.bank.com helyett csinal egy www.bznk.com-ot ami ugyanugy nez ki mint az eredeti. az user meg elteved a fake oldalra, es mar meg is adta az adatait. de fixme.

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Naja, de épp ez a gond, hogy rengeteg domain-t kellene regisztrálnia a bit-squatter-nek. Elég sok variáció létezhet csak a bank.com-ra is, pláne a www.bank.com-ra.

Persze ha csak vakon találgat, akkor nem nagy történet, eddig is voltak oldalak, amik az elírt nevekre utaztak.

A 8. (legmagasabb) bit nem játszik, mert ha az 0-ról 1-re billen, akkor olyan karakter lesz belőle, amelyik nem felel meg a domain nevek kritériumainak: {a-z,0-9,-}.


   m
01101101

   Ý
11101101

Egyébként igazából 6 bit játszik (de még ott se minden bitflip lesz jó), ugyanis az egyik bit (6.) jórészt csak a kisbetű-nagybetű eltolást jelenti, amely így nem okoz másik domain név kialakulást:


   m
01101101

   M
01001101

A 8. (legmagasabb) bit nem játszik

Jah, ezért számoltam 7-tel, mint felső becslés. Mindegy, lényeg az, hogy nem kell nagyon sok domain-t regisztrálni.

Egyébként igazából 6 bit játszik (de még ott se minden bitflip lesz jó), ugyanis az egyik bit (6.) jórészt csak a kisbetű-nagybetű eltolást jelenti, amely így nem okoz másik domain név kialakulást:

Vagyis még kevesebb domain kell. Egy tíz betűs domain név esetén elég kb. 10*5=50-et beregisztrálni.

Az egész minek?

Ha egy bithiba valószínűsége mondjuk 10^-6, és egy domainre egy hónap alatt van 10^6 lekérdezés, akkor jó eséllyel megvan egy áldozat. Ha 10^7 lekérdezés van, akkor az kb. 10 áldozat.

Kettő bithibás domain-eket már nem érdemes regisztrálni, mert kettő bithiba valószínűsége független eseményeket feltételezve 10^-12. Ezt max. akkor érdemes lefedni, ha 10^12 körüli DNS lekérdezés van a domainre, valami emberi időn belül. Három, négy vagy öt bithibára meg még ennyire sem érdemes számítani.

Szóval nem érdemes lefedni az összes lehetőséget.

Egyébként "az egésznek" nem kicsi a valószínűsége, pont ez volt az említett előadásban, hogy sok kipróbált domain esetén működött a dolog a gyakorlatban.

Nem ismerem a bithibák mechanizmusát, és így valóban, már nem is olyan esélytelen. Viszont ha a hithibák olyanok, hogy szeretnek egy csomóban előfordulni, akkor már probléma van. Az oké, hogy az egyes bitek más-más csipben vannak, de ha két bájt egymás mellett van, akkor nyomor lehet. De gondolom majd erről fog szólni az előadás :D

Ha ez így működik, akkor az internet sokkal nagyobb, mint képzeltem.

Nem teljesen értem a helyzetet... ha "magától" átbillen a bit, akkor ez nem csak itt okoz(na) problémát, hanem egy csomó más esetben is, de nem nagyon van erre példa. Ha a bit nem magától billen át, akkor meg a kérdés az, hogy mitől billen át? Ha pedig a bit átbillenthető, akkor bármi más is átírható...
--
http://wiki.javaforum.hu/display/~auth.gabor/Home

"a kérdés az, hogy mitől billen át?"

A bit-flip ténylegesen előfordulhat DRAM modulok esetén is (ez a soft error), ennek többféle oka lehet:

1. Radioaktív bomlás: az ennek során keletkező pozitív töltésű alfa részecskék (0 spinű, 2 protonból és 2 neutronból álló részecsketípus) megváltoztathatják a félvezetőben található elektronok eloszlását.

2. Kozmikus háttérsugárzás: a neutronok nem rendelkeznek elektromos töltéssel, de a félvezető adott atomja atommagjával összeütközve neutronelnyelés következhet be, ez töltéssel rendelkező részecskék keletkezéséhez vezet.

3. Termális neutronok: a többnyire radioaktív bomlással létrejövő, alacsony szintű (0.025 elektrovolt) kinetikus energiával, környezetükkel hőegyensúlyban álló neutronok részvételével nagyságrendekkel nagyobb eséllyel következik be a neutronelnyelés, ami töltéssel rendelkező részecskék keletkezéséhez vezet.

Ezzel együtt a mostani DRAM gyártástechnológiák mellett a bit-flip előfordulása szórványos, bár ténylegesen csak az ECC jelent védelmet ellene.

Azt ugyanakkor sehogy sem tudom elhinni, hogy ez ténylegesen kihasználható DNS squattingre, végtelenül valószínűtlennek tűnik.

Ha ez sokszor előfordulna nem kellene észrevennünk a radom fagyások, adatvesztés miatt? Vagy hogy csak 3.-ra jön be egy oldal?
Mellesleg egy normálisabb https-es oldalnál a böngésző kiírja, hogy melyik cégé a domain.

A végtelen valószínűtlenségről meg csak annyit, hogy

Ha egy ilyen szerkezet megépítése lényegében lehetetlen, szükségszerűen véges a lehetetlensége. Ahhoz tehát, hogy megkonstruálhassak egy ilyen gépet, először ki kell számolnom, mennyire valószínűtlen a megépítése

Öregem és ilyenért valaki pénzt kap... Mindig tudtam, hogy rossz helyre születtem...

Kurva jó lehet Merikában "mérnökként" dolgozni.

--
GPLv3-as hozzászólás.

Gondolkoztam egy sort. Megengedve, hogy a DNS adatok jóval sűrűbben forognak a memóriában mint pl. az URL-el, akkor is, egy nagyobb forgalmú oldalon lennie kellene pár 404-nek, olyanoknak, amik vélhetően nem elírásból származnak.

Nekem nincs nagy forgalmú oldalam, de kb. 21.000 404 között csak olyanokat találtam, amik pl. phpmyadmin-t kerestek, olyat - szemmel végignézve legalábbis - nem, ami betűhiba lett volna. Persze valami tudományosabb megoldás kéne(*), de így egyelőre kissé szkeptikus lettem.

Nappal lehet h összeütök egyet, mert viszonylag könnyen tudok mintát illeszteni a "rendes" url-ekre.

Engem egy dolog foglalkoztat a témával kapcsolatban: amíg a user typo miatt téveszti el a meglátogatandó oldalt, addig viszonylag könnyű őt figyelmeztetni a hibájára. Egyrészt gondoljunk a böngészők urlbar módosításaira amik kiemelik a domaint, vagy olyan biztonsági mechanizmusokra, amik ellenőrzik, hogy az adott domain nincs-e blacklistelve. Egy ilyen bithiba viszont a felhasználó képernyőjén nem feltétlenül fog megjelenni, hiszen a hiba a dns kérés útvonalán bárhol bekövetkezhet. Persze ha a fenti blacklist alapú biztonsági mechanizmust nem domain hanem ip alapúra tervezzük meg, egy ilyen támadásra is figyelmeztethetjük a felhasználót. Vagy több, egymástól eltérő hálózatban levő dns szerver használatával is lehet védekezni, ha a sikeres dns kérések alkalmával is összehasonlítjuk a dns szerverek által visszaadott ip-ket, és csak akkor tekintjük sikeresnek a kérést, ha az összes szerver ugyanazt adta vissza. Nyilván ez csak akkor működhet, ha tudjuk, hogy a használt dns szerverek egyébként jól működnek.

--
Don't be an Ubuntard!

A HTTP/1.1 szabvany minden egyes requestben elkuldi hogy szerinte mi a Host. Ergo ez csak es kizarolag a bongeszoben hulyulhet meg, es az is valami olyan modon, hogy az urlbarban nem frissul a domainnev, tehat amikor kattint valamire, akkor valami fura update zajlik a mezoertekre.

Hiaba van caching DNS, a headerben minden egyes keressel elmegy a domainnev ujra.

Ez nagyon jo esellyel kamu, de ugye mindenki beveszi ahelyett hogy vegiggondolna, hogy mi tortenik a protokollban.

Szerintem teljesen mindegy, hogy mi van a http headerben. Sőt, az a támadónak csak segítség, ha tudja, hogy az áldozat melyik domaint keresi, mert így növelheti a szervere kihasználtságát.

Gondolj csak bele. Először van egy dns kérés, kap a kliens egy ip-t. Erre elmegy a http request, benne a meglátogatandó domain. Ezt a headert a támadó gépéig senki nem fogja értelmezni, így senkit nem fog zavarni, hogy a http headerben más van, mint ahova a csomag megy. A támadó pedig megkapja a headert, látja, hogy a kliens melyik domaint kérte le, és az ennek megfelelő oldalt küldi neki vissza. A trükk a dns kéréskor van, a http kommunikáció már teljesen szabályos, tudok mutatni is erre egy remek példát:


C:\>nslookup hup.hu 8.8.8.8
Kiszolgáló:  google-public-dns-a.google.com
Address:  8.8.8.8

Nem mérvadó válasz:
Név:     hup.hu
Addresses:  2001:4c48:2:a33e::6
          195.228.252.138


C:\>nslookup 195.228.252.138 8.8.8.8
Kiszolgáló:  google-public-dns-a.google.com
Address:  8.8.8.8

Név:     portal.fsn.hu
Address:  195.228.252.138
Aliases:  138.252.228.195.in-addr.arpa


C:\>

A hup webszervere is a host alapján tudja, hogy te a hup.hu-t kérted le, épp ezért nem is a hup jön be, ha a böngésződben a http://195.228.252.138 oldalt látogatod meg.

--
Don't be an Ubuntard!

Azért páran rácuppantak már a módszerre, mert alexa szerint top5 oldalra (google,facebook,youtube,yahoo,blogger) már az összes 1 bit eltérésű domaint bereggelték.
Próbaként én a wikipedia egy variánsával tettem kírérletet, az eddigi eredmény:
12 óra alatt 4 uniqe (abból egy msn bot volt). Szerintem a memória bithiba helyett itt inkább a lúzer júzer és a gépelési képességei okolhatók a találatokért.