Ständigt denne Snowden. Tack vare Edward Snowden känner vi idag till flera typer av attacker och verktyg som tidigare var okända utanför en smal krets av personer inom säkerhetstjänsterna. När Snowden i 2013 avslöjade den amerikanska säkerhetstjänstens cyberaktiviteter kom det även fram att NSA använt (och kanske fortfarande använder) så kallade man-på-sidan-attacker (man-on-the-side attack) eller mots. NSA kallade sitt verktyg för mots-attacker för Quantum.

Mots-attacker skiljer sig från man-i-mitten-attacker, mitm, som namnet antyder, genom att trafiken mellan offer och legitim tjänst inte helt och hållet behöver gå via angriparen, utan det räcker att angriparen kan avläsa trafiken för att kunna injicera tcp-segment från en annan server, gärna nära offret eftersom tidsfaktorn är kritisk.

Vid mitm-attacker kan angriparen läsa, ändra och kasta tcp-segment i en tcp-session, medan vid mots-attacker kan angriparen läsa och lägga till tcp-segment i en tcp-session. Offret tar, i mots-fallet, med andra ord emot både de legitima segmenten och de falska; det är därför tidsfaktorn är kritisk – de falska segmenten måste komma fram före de legitima för att attacken ska lyckas. Om det legitima tcp-segmentet kommer fram efter det falska, kommer det helt enkelt slängas.

Att tcp beter sig så här har varit känt länge, men det var först efter Snowdens avslöjanden som det blev känt att svagheterna utnyttjats i praktiken.

mtim attack
Foto: Erik Hjelmvik, Netresec.Det falska tcp-segmentet injiceras med samma sekvensnummer men ett annat innehåll. Det falska segmentet måste komma fram till mottagaren före det äkta segmentet.

Tanken med mots-attacker är alltså att byta ut legitima tcp-segment mot falska i syfte att dirigera om http-trafiken, så kallad html redirection, från den legitima servern mot en falsk. När väl tcp-sessionen riktats om kan angriparen injicera i stort sett vilken kod som helst, till exempel skadlig Javascript-kod. Denna typ av attack är av naturliga skäl mycket selektiv och riktad mot specifika mål, och vilken tcp-session som ska väljas ut baseras på specifika selektorer, exempelvis beständiga tracking-kakor som kan identifiera en användare.

Injektionen av det falska tcp-segmentet görs genom att avlyssna nätverkstrafik och observera http-förfrågningar. När målet identifierats skickas ett meddelande till en annan dator, låt oss kalla den injektorn, helst så nätverksmässigt nära offret som möjligt, och injektorn skickar det falska tcp-segmentet till offret. För att detta ska lyckas måste injektorn få reda på ip-adresserna och tcp-portarna för klienten och den legitima servern, samt tcp-sessionens sekvens- och ack-nummer. Och allt detta måste alltså ske så snabbt att det falska tcp-segmentet kommer fram till offret före det riktiga, och det är som de flesta förstår inte snutet ur näven.

I teorin kan vem som helst som kan avlyssna nätverkstrafik och skicka falska paket utföra mots-attacker, men i praktiken är det få som har tillgång till allt som krävs för att lyckas med en attack. Att NSA påstås kunna genomföra storskaliga och framgångsrika mots-attacker beror förstås på att de är NSA, med allt vad det innebär, för det krävs både tillgänglighet till nätverken och resurser för att kunna analysera stora mängder trafik. Om attackerna däremot ska genomföras i mindre skala mot ett specifikt offer räcker det att angriparen kan avlyssna trafiken till/från offret genom att placera sin avlyssningsutrustning någonstans mellan offret och det legitima målet, exempelvis:

  • Mellan målet och dess isp – detta är vanligt vid polisiära insatser.
  • I ett backbone- eller transmissionsnät på internet – svårt, men en isp kan i vart fall teoretiskt genomföra mots-attacker.
  • På gränsen till ett land (Kinas stora brandvägg).
  • Nära en webbserver som offret förväntas besöka, till exempel en extremistwebbplats, webbforum eller chattplatform.
  • På ett öppet wifi-nät.
  • På en satellitlänk.

Det råder idag enighet om att Kina genomförde en attack mot Github 2015 just med hjälp av sin stora brandvägg. Det som behövdes var att offren skulle passera brandväggen av någon anledning, vilket gjorde att myndigheterna dels kunde avlyssna trafiken och leta efter rätt selektorer, dels fördröja den legitima trafiken lagom lite för att kunna se till att de falska tcp-segmenten kom fram till offren först.

mtim attack
Foto: Erik Hjelmvik, Netresec.Angriparen kan skicka ett tcp-segment som både omdirigerar trafiken till en falsk server, dels avslutar den äkta sessionen med "TCP FIN", vilket gör att alla efterföljande äkta segment ignoreras.

Attacken mot Github gjordes för att infektera klienter med en Javascript-kod som sedan användes för att genomföra en ddos-attack mot Github som ”straff” för att de härbärgerade två av de kinesiska myndigheterna illa sedda tjänster – Greatfire.com och kinesiska versionen av tidningen New York Times. Bägge använder Github för att runda den kinesiska brandväggen.

Github-attacken genomfördes genom att vissa sajter skickar ett javascript till besökarna. Scriptet kommer inifrån Kina och används av Baidu Analytics, en kinesisk variant av analysverktyget Google Analytics. Kinas brandvägg kunde så upptäcka förfrågningar efter skriptet, skicka ett falsk javascript från en annan server och detta falska script instruerade sedan maålmaskinerna att ständigt ladda om github-sidorna för de bägge av kina avskydda tjänsterna.

Hur skyddar man sig mot mots-attacker?

Det enda sättet att upptäcka mots-attacker är att vara observant på dubletter av tcp-segment. Segmenten har samma sekvensnummer men skiljer sig i nyttolasten eftersom det falska segmentet typiskt sett innehåller ett ”http 302 redirect” (eller en html iframe), vilket förstås det äkta segmentet inte borde göra. Tcp-segmenten måste inte innehålla just en ”302”, även om det är vanligast, utan kan innehålla i stort sett vilket nyttolast som helst, men oavsett vilket kommer storleken på nyttolasten antagligen att skilja sig åt.

Det är också vanligt att ttl-värdet (time to live) skiljer sig mellan det falska och äkta tcp-segmentet, men det är heller inget ovanligt att segment tar olika vägar, och det är inget skyddssystem normalt reagerar på. Angriparen kan egentligen välja att stoppa in sina falska tcp-segment var som helt i sessionen, men det är tveklöst vanligast att det sker precis efter den http get-förfrågan som matchar de selektorer som eftersöks av angriparen, alltså alldeles i början av sessionen.

Eftersom en ”http 302 redirect” har ”Content Length: 0” kommer nyttolasten i det efterkommande äkta tcp-segmentet att ignoreras. Det är också vanligt att angriparen, i det tcp-segment som skickar "http 302 redirect”, även sätter tcp-flaggan "tcp fin”, vilket avslutar tcp-sessionen med den äkta servern. Även detta gör att efterföljande segment från den äkta servern ignoreras av mottagaren.

Den enklaste metoden att upptäcka mots-attacker är antagligen att använda Suricata – en öppen källkods-licensierad ids – med följande signatur:

alert tcp any any -> any any (msg:"SURICATA STREAM reassembly overlap with different data"; stream-event:reassembly_overlap_different_data; classtype:protocol-command-decode; sid:2210050; rev:2;)

Denna signatur (#2210050) bryr sig egentligen inte om storleken på paketen, utan undersöker bara om redan mottagna data har ändrats mellan två paket. Säkerhetsexperten Erik Hjelmvik, som driver it-säkerhetsföretaget Netresec, har dock hittat vissa mots-attacker som Suricata inte upptäcker, så det är tyvärr inte en tillförlitlig metod.

Erik Hjelmvik har dock utvecklat ett Python-script (findject.py) som enligt honom är en mer tillförlitlig metod. Findject.py kräver dock att nätvekrstrafiken finns i en pcap-fil (en loggfil över nätverkstrafik sparad av till exempel Wireshark), men Erik Hjelmvik säger att det skulle kunna gå att skriva om skriptet så att det avsöker trafiken i realtid istället för att läsa en pcap-fil. Erik Hjelmviks python-script finns att ladda ned här.

Hur orolig bör man då vara för att utsättas för mots-attacker?

– Jag anser inte att företag och organisationer bör lägga någon större vikt vid att specifikt försöka upptäcka mots-attacker, främst eftersom de troligtvis är ganska ovanliga, säger Erik Hjelmvik.

– Jag tycker däremot att risken att bli utsatt för en mots-attack bör användas som motivation för att gå över till kommunikationsprotokoll som stödjer autentisering/signering, exempelvis dnssec och tls. Jag skulle däremot vilja se mer forskning som syftar till att upptäcka mots-attacker och mäta hur vanliga de är samt för att veta i vilket syfte de används.

Läs också:
VPN-appar från tunga leverantörer sårbara för attacker
Gisslanattackerna som slagit hårdast – här är de sex värsta