Oiva Moisio

BitTorrent?-protokollan haavoittuvuuksia

1 Johdanto

BitTorrent?-protokolla (BitTorrent?-protokollaan viitataan myöhemmin nimellä BT tai BT-protokolla) on nykyään yksi suosituimmista P2P?-protokollista ja vastaavasti P2P?-protokollat vievät suurimman osan internet liikenteestä.[1] Joten on hyvinkin kiintoisaa, että voiko näitä massoja vastaan hyökätä tai onko mitään keinoa käyttää hyväkseen tallaista suurta verkkoliikennettä esimerkiksi DDOS (Distributed Denial of Service) hyökkäykseen (DDOS hyökkäystä käsitellään yksityiskohtaisemmin toisessa harjoitustyössä). Itse BitTorrent?-protokollaa tarkastellaan protokollan ymmärtämisen kannalta oleellisista kohdista ja tarvittaessa tarkennetaan protokollaan liittyviä ominaisuuksia omassa asiayhteydessään. BT-liikenteen salauksesta kerrotaan sillä tasolla mikä on tarpeellista salauksen toimivuuden ymmärtämisen kannalta. Lopuksi käydään läpi mahdollisia hyökkäyksiä BT-verkkoon ja BT-verkon sisällä.

2 BitTorrent?-protokolla

BitTorrent?-protokolla on suosittu P2P?-protokolla, joka perustuu nk. "trackerin" ja asiakasohjelman keskenäiseen kommunikaatioon, sekä asiakasohjelmien väliseen tiedonsiirtoon.[1]

2.1 Trackerit

"BitTorrent-trackerit" eli seurantapalvelimet ovat palvelimia, jotka auttavat asiakasohjelmien välisessä kommunikaatiossa. Periaatteessa asiakasohjelman tarvitsee ainoastaan kerran kysyä käyttäjäinformaatiota seurantapalvelimelta (ja mahdollisesti myös tunnistautua seurantapalvelimelle). Koska informaatio paloista voidaan saada suoraan toisilta käyttäjiltä, niin on mahdollista, että enää koskaan ei tarvitse ottaa yhteyttä seurantapalvelimeen tämän tiedoston latauksen yhteydessä. Käytännössä kuitenkin käyttäjät sulkevat omat asiakasohjelmansa joskus, josta seuraa asiakasohjelmien katoaminen verkosta (huomaa myös, että palaset voivat kadota samalla kun käyttäjät poistuvat verkosta). Käyttäjien katoamisen seurauksena asiakasohjelma joutuu ottamaan yhteyden seurantapalvelimeen ennalta määrätyin väliajoin päivittääkseen käyttäjäinformaation. Toisaalta, seurantapalvelimet ovat BT-protokollan ainoa kriittinen piste (eli ainoa verkon node, joka on keskitetty). [3][6]

Seurantapalvelimet jakautuvat kahteen osaan, julkisiin ja yksityisiin seurantapalvelimiin. Julkiseen seurantapalvelimeen voi kukatahansa ottaa yhteyden ja saada haluamansa käyttäjäinformaation. Vastaavasti yksityisellä seurantapalvelimella on yleensä hyvin rajattu käyttäjäyhteisö (esim. tietylle verkkosivustolle rekisteröityneet käyttäjät). Yksityinen seurantapalvelin voi tietoturvan ja/tai anonyymiyden kannalta olla varteenotettavampi vaihtoehto. [6]

2.2 DHT

Yleisesti DHT:lla (Distributed Hash Table) tarkoitetaan käyttäjien kesken jaettua hajautustaulua (Hash Table). DHT-tekniikka itsessään ei ole rajoittunut vain BT-verkon käyttöön vaan sitä on käytetty esmierkiksi Storm-botverkossa.[8][9] DHT:llä BT:n tapauksessa tarkoitetaan nk. peer-tiedon jakamista hajautetusti (tiedot muista lataajista ja jakajista). Hajautuksen tarkoituksena on tehdä BT-verkko vähemmän riippuvaiseksi seurantapalvelimista. Toinen vähän filosofisempi syy on, että seurantapalvelimet ovat viimeinen jäänne keskitetystä P2P?-verkosta BT-protokollassa ja DHT on yksi keino poistaa näitä seurantapalvelinriippuvuuksia. [7]

DHT:ssä tarvittava informaatio onkin hajautettu asiakasohjelmille (niin kuin tiedostojen palaset ovat hajautettu ympäri BT-verkkoa). Asiakasohjelmat jakavat tätä informaatiota niiden asiakasohjelmien kanssa, joihin kyseinen asiakasohjelma on tällä hetkellä yhteydessä. Tosin vain sillä tavalla, että mahdolliset häiriöt ovat minimaalisia. BT-protokollan DHT toteutuksen tarkat speksit löytyvät bittorrent.orgin sivuilta. [7][10]

2.3 Torrent-tiedostot

Kaikki tarvittava informaatio seurantapalvelimista ja tiedostoon kuuluvista palasista jaetaan .torrent tiedostossa (huomioi, että seurantapalvelin ei välttämättä tiedä mitä palasia kyseinen tiedosto sisältää). Torrent-tiedostot ovat pieniä, joten niiden jakamisesta aiheutuva rasitus verkkoliikenteelle on suhteellisen pieni (vertaa: jos itse tiedostoja jaettaisiin palvelimella).

Seuraavassa on .torrent-tiedostossa olevat kentät lyhyine selityksineen (huomioi, että tiedostossa on ennen merkkijonoa kerrottu sen pituus syntaksilla "pituus:(merkkijono)") [11]

  • info: Sisältää tiedostojen/kansioiden nimet
  • announce: Seurantapalvelimen osoite
  • announce-list: Erillinen lista vaihtoehtoisista seurantapalvelimista (vaihtoehtoinen)
  • creation date: Torrent-tiedoston luontipäivä (vaihtoehtoinen)
  • comment: Mikä tahansa kommentti (vaihtoehtoinen)
  • created by: Asiakasohjelman automaattinen merkintä (vaihtoehtoinen)

Tiedostoon liittyvät kentät

  • piece length: Kuinka pieniin palasiin itse tiedosto on jaettu (ilmoitetaan tavuina)
  • pieces: yhteen merkkijonoon on yhdistetty jokaisesta palasesta 20 tavun mittainen SHA-1 tiiviste (eli jos torrent-tiedosto muodostuu 2 palasesta on merkkijonon pituus 40 tavua (merkkiä))
  • name: Tiedoston nimi (vastaava hakemistoille)
  • length: tiedoston pituus tavuina
  • files: lista sanakirjoja (kaksi seuraavaa kenttää selittää mikä on sanakirja)
  • length: tiedoston pituus tavuina (sanakirja)
  • path: suhteellinen polku tiedostoihin (sanakirja)

2.4 Jaetut tiedostot

Fyysiset tiedostot ovat hajoitettu pieniin paketteihin (yleensä jokin kahden potenssi) ja nämä paketit sitten jakautuvat vielä pienempiin osiin jotta lataus näyttäisi suhteellisen tasaiselta (mitä se käytännössä ei välttämättä ole). Kun tiedostoa aletaan jakamaan ja oletetaan, että lataajat (leech) saavat tarpeeksi informaatiota seurantapalvelimelta latauksen aloitamiseksi. Alussa kuitenkin ongelmaksi muodostuu jakajien pieni määrä, koska sillä pienellä määrällä ei ole niin paljon kapasiteettia verrattuna myöhempään ajankohtaan, milloin kaikki lataajat ja jakajat voivat lähettää paketteja toisilleen. BT-protokolla yrittää jakaa paketteja useaan eri paikkaan mahdollisimman varhaisessa vaiheessa, jotta suuret latausnopeudet realisoituisivat mahdollisimman nopeasti. Suurimmat nopeuden saadaan suurinpiirtein latauksen puolivälissä, missä iso osa palasista on jo lataajilla. [3]

3 BitTorrent? ja salaus

Useat BitTorrent?-asiakasohjelmat tukevat liikenteen- ja otsikkotietojensalausta, jotta ulkopuolinen ei pääsisi "kuuntelemaan" tai tunnistamaan minkä tyyppistä liikennettä verkossa kulkee. Seuraavissa alivuvuissa käsitellään näiden asiakasohjelmien liikenteensalausmetodeja ja niiden murtamista (kuitenkin nykyään melkein kaikki asiakasohjelmat käyttävät ainoastaan MSE/PE-tekniikkaa salaamiseen). [2][12][13]

3.1 MSE/PE

Message Stream Encryption tai Protocol Enctryption (tarkoittavat tässä tapauksessa historiallisista syistä samaa tekniikkaa) on käytössä lähes kaikissa yleisimmissä BT-asiakasohjelmissa. MSE/PE salaa liikenteen käyttäen RC4 vuosalausalgoritmia niin, että siinä on korjattu Fluhrer, Mantin ja Shamir-hyökkäys jättämällä ulostulon ensimmäiset tuhat tavua huomiotta. Salausavaimet vaihdetaan käyttäen Diffie-Helman avaintenvaihtoa. [12][13][14]

RC4 on valittu MSE/PE:n salausalgoritmiksi koska se on nopea ja aiheuttaa tarpeeksi sekoitusta niin, että liikennettä ei voida kovinkaan helposti tunnistaa BT-liikenteeksi. Myös AES:ia on harkittu liikenteen salaukseen, mutta AES-salaus on on hyvin raskas salausalgoritmi, joten sitä ei pidetty BT-protokollan hengen mukaisena silloin kun salausalgoritmia päätettiin. RC4:n turvallisuus on kuitenkin todettu riittäväksi, koska BT-protokollaa ei ole alunperinkään tarkoitettu turvalliseksi tiedonsiirtokanavaksi vaan sen tarkoituksena on aina ollut mahdollisimman nopea tiedonsiirtokanava. [12][13][15]

3.2 MSE/PE murtaminen

Nykyään palveluntarjoajat (ISP) ovat löytäneet hienostuneempia metodeja BT-protokollan havaitsemiseen RC4-sekoituksesta. Joten palveluntarjoaja voi mahdollisesti estää tai rajoittaa BT-liikennettä kyseisen asiakkaan kohdalla, vain analysoimalla tarpeeksi RC4 salattua liikennettä. Mutta myös helpompi ja tehokkaampi tapa on löydetty BT-liikenteen havaitsemiseen. Palveluntarjoaja voi hankkia listan käyttäjistä suoraan seurantapalvelimelta (BT-protokolla mahdollistaa tämän ilman sen kummempia toimia), sen jälkeen vain tutkia asiakkaan liikennettä ja vertailemalla ip-osoitteita seurantapalvelimelta saatuun listaan. Tästä ongelmasta tosin päästään eroon salaamalla myös seurantapalvelimelta lähtevä liikenne, mutta tälläkin ratkaisulla on omat heikkoutensa resurssien käytön kannalta. [12]

4 Hyökkäykset P2P?-verkkoon BitTorrentin? näkökulmasta

Tässä luvussa tarkastellaan lähinnä Kirkmanin ja Dezhgoshanin turvallisuuskatsausta vuodelta 2011 ja tarkemmin sen lukua 3 "Attacks on P2P? networks". Ja tarkastellaan miten tällaiset hyökkäykset voisivat toteutua BitTorrent?-verkossa ja miten niitä vastaan olisi mahdollista suojautua. Myös joihinkin oleellisiin hyökkäyksiin perehdytään vähän tarkemmin. [4]

4.1 Sybil

Sybli-hyökkäys on hyökkäys missä yksi verkon asiakas hallitsee useita identiteettejä verkossa ja käyttää näitä identiteettejä saadakseen suhteettoman suuren vaikutusvallan verkossa. Tämä voisi BT-verkon kannalta tarkoittaa sitä, että suuri osa harvinaisista tiedoston palasista joutuisi usean identiteetin haltijalle (hyökkääjälle). Toisin sanottuna kyseisen tiedoston BT-verkko olisi vielä suhteellisen keskittynyt. Eikä esimerkiksi tiedoston eri osien nopeaa leviämistä eri käyttäjille tapahtuisi, koska iso osa palasista olisi vain hyökkääjän hallussa. Hyökkääjä voisi tässä tapauksessa olla esimerkiksi tekijänoikeuksienhaltija, joka haluaa hidastaa tiedoston leviämistä. [4][16]

Toinen mahdollinen hyökkäys olisi, että useita identiteettejä hallitseva hyökkääjä onnistuu panttaamaan tietoa tarpeeksi kauan. Jolloin alkuperäinen tiedoston jakaja ehtii kadota verkosta luullen, että tiedosto on jo levinnyt tarpeeksi laajalle. Jolloin identiteettienhaltija kontrolloisi suurta osaa harvinaisista tiedostoista ja yhtäkkiä lopettaisi niiden jakamisen. Tässä tapauksessa tiedoston kaikkia osia ei välttämättä enää ole jaossa. Motivaatio tällaiseen hyökkäykseen voisi olla sama kuin edellisen kappaleen tekjänoikeuksienhaltijalla. Tällainen hyökkäys tunnetaan myös tiedoston myrkyttämisen yhteydestä "Uncooperative-Peer Attack". [16]

Sybil-hyökkäys ei kuitenkaan ole kovinkaan oleellinen BT:n tapauksessa, koska itse BT-protokollan toimintaperiaate on puolustuskeino tällaista hyökkäystä vastaan. Myöskään kovinkaan suurta tuhoa ei sybil hyökkäyksellä voi saada aikaan vaikkakin hitaampi tiedoston leviäminen voi olla harmillista. Myöskään identiteettien haltija ei voi kovinkaan helposti jakaa vääriä/korruptoituneita palasia koska kaikista tiedostoista on SHA-1 tiiviste torrent-tiedostossa (tietysti jos murtaa SHA-1:n niin silloin voi tämän korruptoinnin tehdä). [11]

4.2 DDOS

DDoS? hyökkäykseen perehdytään hieman tarkemmin kuin sybil-hyökkäykseen ja annetaan esimerkkejä minkälaisia mahdollisia hyökkäyksiä vielä vuonna 2006 oli BT-protollassa (jotkin "ominaisuudet" ovat säilyneet vielä nykyiseen versioonkin asti). DDOS hyökkäyksessä hyökkääjä haluaa syöttää väärää informaatiota seurantapalvelimelle ja näin ohjata BT-liikennettä kohteeseen aiheuttaen DDOS hyökkäyksen. Hyökkääjän motivaatio tehdä DDOS hyökkäys BT-verkossa on suhteellisen kyseenalainen ainakin vielä tällä hetkellä. Koska harvemmin mikään tärkeä kohde on "rekisteröitynyt" BT-verkkoon. Mutta koska DDOS on hyvinkin mahdollinen ja suhteellisen helppo hyökkäys toteuttaa niin sen analysointi on kuitenkin tärkeää. [5]

4.2.1 IP-ilmoitus

IP-ilmoitus toimii varsin yksinkertaisesti niin, että kun seurantapalvelin pyytää käyttäjän tietoja, niin annetaan vastauksena vapaaehtoisessa IP-kentässä hyökkäyksen kohteen IP-osoite. Täten seurantapalvelin luulee, että hyökkääjällä olevat tiedoston palaset ovat itseasiassa hyökkäyksen kohteella. Joten useammat asiakasohjelmat yrittävät ottaa yhteyden kohteeseen, mistä seuraa sitten DDOS-hyökkäys jos tarpeeksi moni haluaa kyseiset palaset. Vielä nykyisessäkin BT-protokollan versiossa kyseessä oleva IP-kenttä on olemassa ja vielä vuonna 2006 hyvinkin moni seurantapalvelin hyväksyi kyseisen kentän parametrina. [5]

* Sivuhuomautuksena voidaan mainita, että kyseinen IP-kenttä on tarkoitettu alkuperä IP:nä jos asiakasohjelma sijaitsee samalla koneella kuin seurantapalvelin. [17]

4.2.2 DHT Ping

Kun käytetään DHT:ta IP-ilmoitus hyökkäys ei enää toimikkaan koska IP-kenttä on kokonaan otettu pois käytöstä, mutta DHT:stäkin löytyy heikkous, jossa käytetään DHT:n ping ominaisuutta. DHT:ssä asiakas lähettää ping lähetteen DHT-verkolle, jotta muut tietäisivät, että kyseinen asiakas haluaa osallistua DHT verkon toimintaan. Eli ping on todella oleellinen osa DHT-verkkoa.

Hyökkäyksen idea on lähes täsmälleen sama kuin IP-ilmoituksessa, ainoastaan hyökkäyksen toteutus muuttuu hieman. Ping lähetteen parametrissa on mahdollista muokata nopeaan tahtiin lähde IP-osoitetta. Jonka seurauksena ping pyyntöjä voi lähettää uhrin koneelle hyvinkin nopeassa tahdissa. Ja näin voidaan rasittaa kohdekoneen prosessori- ja/tai verkkokapasiteettia.[5]

4.2.3 DDOS käytännössä

Kuitenkin edellämainittujen tekniikoiden seurauksena ei saadakkaan tukittua uhrikoneen verkkoliikennettä. Vaan, koska BT-protokollassa tehdää aina täysi TCP-yhteys, niin se vie hyvinkin paljon suorituskykyyn liittyviä resursseja (prosessori tehoa). Eli uhrin kone saadaan laskemaan jopa tuhansia TCP-yhteyksiä samaan aikaan. Tältä nk. SYN-hykkäykseltä voidaan suojautua normaalein DDOS tekniikoiden avulla, esimerkiksi SYN-cookie tekniikka toimii jos huomataan, että otsikkokenttä onkin BT eikä HTTP. DDOS-hyökkäyksestä kerrotaan toisen opiskelijan harjoitustyössä tarkemmin. [5][19][20]

4.3 Torrentin-myrkyttäminen

Torrentin-myrkyttäminen tarkoittaa korruptoituneen datan jakamista BT-verkossa jollain houkuttelevalla nimellä. Esimerkkinä voidaan mainita tekijänoikeusjärjestöjen yritystä estää kopiosuojatun materiaalin leviämistä ja samalla lataajien IP-osoitteiden keräämistä BT-verkosta. Tiedoston myrkyttäminen jakautuu useisiin eri kategorioihin joista suuri osa on seuraavassa listassa (suluissa on mainittu oikea englanninkielinen termi). [16]

  • Tiedoston korruptoiminen (Decoy Insertion)
  • Luettelon myrkyttäminen (Index Poisoning)
  • Väärentäminen (Spoofing)
  • Estäminen (Interdiction)
  • Svarmaus (Swarm), huomioi, että tätä tavallan jo sivuttiin Sybil-hyökkäyksen esimerkkien yhteydessä
  • Valitun sisällön myrkyttäminen (Selected Content Poisoning)
  • Pimennys hyökkäys (Eclipse Attack), tunnetaan myös reititin taulun myrkyttämisenä
  • Ei yhteistyökykyinen vertais hyökkäys (Uncooperative-Peer Attack)

Vaikka P2P?-verkoissa on paljon tällaista sisällön myrkyttämistä niin, kuitenkin BT-verkko on yksi vastustuskykyisimmistä P2P?-verkoista myrkytystä vastaan. Esimerkkinä suositussa priatebay palvelussa postetaan sisältöä jos tiedoston nimi ei vastaa sen sisältöä (myös muilla palveluilla on vastaavan kaltaisia systeemejä). [18]

5 Yhteenveto

Olemme käyneet läpi jonkin verran BitTorrent?-protokollaa ja miten se suurinpiirtein toimii. BitTorrent?-verkon toiminta ja nopeus perustuu hyvin hajautettuun verkkotopologiaan, missä on vain yksi kriittinen piste, joka on seurantapalvelin. Seurantapalvelin antaa tietoa muista käyttäjistä ja näin saadaan muodostettua yhteys muihin käyttäjiin ja periaatteessa seurantapalvelinta ei tarvita mihinkään muuhun.

BitTorrent? protokollalla ei ole virallisesti minkäänlaista liikenteensalausmekanismia. Kuitenkin ajan kuluessa, jonkinlaista salausmekanismia on kaivattu. Ja jossain vaiheessa BitTorrent?-asiakasohjelmat ottivat käyttöön MSE(/PE) menetelmän ja jopa nykyisessä nk. "Mainline (µTorrent)" BitTorrent?-asiakasohjelmassa käytetään tätä liikenteensalausmekanismia.

P2P?-verkkoihin on aikojen saatossa keksitty monia hyökkäyksiä ja osa näistä hyökkäyksistä toimii myös BT-verkossa. Vaikkakin useat hyökkäykset ovat melko akateemisia ja todennäköisesti ne eivät ole vaivan arvoisia toteuttaa. Kuitenkin, jos BitTorrent?-verkossa on jokin tärkeämpi entiteetti, jonka kaatuminen tai hidastuminen on rahan arvoista on BitTorrent?-verkkoa avuksi käyttäen esimerkiksi suhteellisen helppoja DDOS hyökkäysvaihtoehtoja.

Lähteet

[1] [Schulz, Hendrik; Klaus Mochalski (2009). "Internet Study 2008/2009". Leipzig, Germany: ipoque. (viitattu 2.11.2011)] "Peer-to-peer file sharing (P2P?) still generates by far the most traffic in all monitored regions – ranging from 43 percent in Northern Africa to 70 percent in Eastern Europe."

[2] [http://torrentfreak.com/how-to-encrypt-BitTorrent-traffic/ (viitattu 2.11.2011)] Kuinka laittaa encryptaus päälle useassa BitTorrent?-asiakasohjelmassa

[3] [http://www.bittorrent.org/bittorrentecon.pdf (viitattu 2.11.2011)] "Incentives Build Robustness in BitTorrent?"

[4] [Stephen S. Kirkman; Kamyar Dezhgosha (2011). Security Review of P2P? Applications and Networks.]

[5][Ka Cheung Sia (2006). DDos Vulnerability Analysis of BitTorrent? Protocol]

[6][http://en.wikipedia.org/wiki/BitTorrent_tracker (viitattu 30.11.2011)] Wikipedia-artikkeli BitTorrent?-seurantapalvelimista

[7][http://en.wikipedia.org/wiki/Distributed_hash_table (viitattu 30.11.2011)] Wikipedia-artikkeli DHT:stä

[8][http://en.wikipedia.org/wiki/Kademlia (viitattu 1.12.2011)] Artikkeli eräästä DHT-verkon rakenteesta

[9][Carlton R. Davis; jose M. Fernandez; Stephen Neville, John McHugh?: Sybil attacks as a mitigation strategy against the Storm botnet]

[10][http://bittorrent.org/beps/bep_0005.html (viitattu 30.11.2011)] BitTorrent? protokollan DHT-spesifikaatio

[11][http://fileformats.wikia.com/wiki/Torrent_file (viitattu 30.11.2011)] Yksinkertaistettu .torrent tiedoston spesifikaatio

[12][http://en.wikipedia.org/wiki/BitTorrent_protocol_encryption (viitattu 30.11.2011)] Wikipedia-artikkeli BitTorrentin? salauksesta

[13][http://wiki.vuze.com/w/Message_Stream_Encryption (viitattu 1.12.2011)] MSE:n spesifikaatio

[14][http://en.wikipedia.org/wiki/Diffie-Hellman_key_exchange (viitattu 1.12.2011)] Wikipedia-artikkeli D-H avaintenvaihdosta

[15][http://en.wikipedia.org/wiki/Fluhrer,_Mantin_and_Shamir_attack (viitattu 30.11.2011)] Wikipedia-artikkeli Fluhrer, Mantin ja Shamir vuosalaushyökkäyksestä

[16][http://en.wikipedia.org/wiki/Torrent_poisoning (viitattu 1.12.2011)] Wikipedia-artikkeli jossa on lueteltu erilaisia tapoja myrkyttää torrentteja

[17][http://www.bittorrent.org/beps/bep_0003.html (viitattu 1.12.2011)] BitTorrent?-protokollan spesifikaatio

[18][http://thepiratebay.org/about (viitattu 1.12.2011)] Piratebayn oma kuvaus heidan toiminnastaan

[19][http://en.wikipedia.org/wiki/Syn_cookie]Wikipedia-artikkeli SYN-cookie tekniikasta

[20][http://en.wikipedia.org/wiki/SYN_attack] Wikipedia-artikkeli SYN-hyökkäyksestä

SivuTiedotLaajennettu edit

Vaativuus Jatko
Valmius Valmis
Tyyppi Ydin
Luokitus Uhkat
Mitä Luottamuksellisuus
Miltä Ihmisetön uhka
Missä Organisaatio
Kuka Titu-ammattilainen
Milloin Ennakolta
Miksi Hyvä tapa
Print version |  PDF  | History: r10 < r9 < r8 < r7 | 
Topic revision: r10 - 01 Dec 2011 - 20:21:53 - OivaM?
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback