TCP och UDP sårbarheter


Medan vissa attacker riktar sig mot IP-protokollet fokuserar andra på transportlagret, det vill säga TCP och UDP. Hotaktörer utnyttjar informationen i segmentens fält, vilket gör det viktigt att förstå hur dessa är uppbyggda. TCP-segmentets header följer direkt efter IP-headern.

En översikt över TCP-headerns fält, inklusive kontrollbitar (flags), visas i figuren.

TCP Control bits

TCP använder kontrollbitar för att styra kommunikationen mellan två enheter

  • URG (Urgent) – Indikerar att data är brådskande
  • ACK (Acknowledgment) – Bekräftar mottagen data
  • PSH (Push) – Skickar data direkt till applikationen
  • RST (Reset) – Återställer anslutningen (avbryter direkt)
  • SYN (Synchronize) – Startar en TCP-anslutning
  • FIN (Finish) – Avslutar anslutningen

TCP-tjänster

TCP tillhandahåller följande tjänster:

  • Tillförlitlig leverans (Reliable delivery)- Säkerställer att data når fram genom kvittenser och omsändning vid behov. Detta kan dock introducera fördröjningar.
  • Flödeskontroll (Flow control)- Anpassar överföringshastigheten så att mottagaren inte överbelastas.
  • ”Stateful” kommunikation – TCP håller reda på sessionens tillstånd, inklusive sekvensnummer och kvittenser, från uppkoppling till nedkoppling.

TCP Trefas Handskakning

En TCP-anslutning upprättas i tre steg:

  1. Klienten skickar ett SYN-paket för att initiera anslutningen
  2. Servern svarar med SYN-ACK
  3. Klienten bekräftar med ACK

När detta är klart är sessionen etablerad.

Grafiken illustrerar utbytet av meddelanden mellan två kommunicerande parter under TCP:s trevägshandskakning.

  1. Processen börjar när klienten skickar ett meddelande med SYN-kontrollbiten satt (SEQ=100, CTL=SYN).
  2. Servern tar emot detta och svarar med ett meddelande där både SYN- och ACK-kontrollbitarna är satta (SEQ=300, ACK=101, CTL=SYN, ACK).
  3. Klienten tar emot svaret och skickar tillbaka ett meddelande med ACK-kontrollbiten satt (SEQ=101, ACK=301, CTL=ACK). Därefter är sessionen etablerad.

Avslutning av en TCP-session

Avslutningen av en TCP-session sker i fyra steg:

  1. Klienten skickar FIN
  2. Servern svarar med ACK
  3. Servern skickar FIN
  4. Klienten svarar med ACK

TCP-attacker

TCP-attacker riktar sig mot Transmission Control Protocol (TCP), som är ett anslutningsorienterat protokoll på transportlagret. Eftersom TCP använder etablering av anslutningar, sekvensnummer och kontrollmekanismer kan dessa funktioner utnyttjas av angripare.

TCP SYN Flood attack

En TCP SYN flood-attack utnyttjar TCP:s trefas-handskakning (three-way handshake).

Attacken fungerar på följande sätt:

  1. Angriparen skickar ett stort antal TCP SYN-förfrågningar till en server.
  2. Källadressen (source IP) är ofta förfalskad (spoofad).
  3. Servern svarar med ett SYN-ACK och väntar på ett ACK.
  4. Svaret kommer aldrig fram, eftersom IP-adressen är falsk.

Resultatet blir att servern får många halvöppna anslutningar och till slut blir överbelastad. När resurserna tar slut kan servern inte längre hantera legitima anslutningar, vilket är målet med en Denial of Service (DoS)-attack.

TCP Reset-attack

En TCP reset-attack är en typ av nätverksattack där en angripare skickar ett specifikt konstruerat TCP-paket med RST-flaggan (Reset) aktiverad till en eller båda parterna i en etablerad TCP-session. Syftet med RST-flaggan är att omedelbart avbryta en pågående TCP-session.

TCP kan avsluta en anslutning på ett kontrollerat (dvs. normalt) sätt och ett okontrollerat (dvs. abrupt) sätt. Det okontrollerat sättet är när en kommunicerande part tar emot ett TCP-segment med RST-biten satt. Detta är ett abrupt sätt att avbryta TCP-anslutningen och informera den mottagande kommunicerande parten att omedelbart sluta använda TCP-anslutningen.

En hotaktör kan utföra en TCP reset-attack och skicka ett förfalskat paket innehållande en TCP RST till en eller båda kommunicerande parter.

TCP-session Hijacking

TCP-session kapning är en teknik där en angripare tar kontroll över en befintlig och autentiserad TCP-session mellan en klient och en server. Denna typ av attack kräver att angriparen noggrant manipulerar och insätter sig i kommunikationsflödet utan att bryta den ursprungliga sessionen. För att lyckas med detta, behöver angriparen först och främst förfalska klientens IP-adress så att servern tror att trafiken kommer från den legitima klienten.

En kritisk aspekt av attacken är angriparens förmåga att korrekt förutspå TCP-sekvensnumret för de paket som skickas mellan klienten och servern. TCP använder sekvensnummer för att ordna paket och säkerställa att data kommer fram korrekt och i rätt ordning. Genom att korrekt förutspå det nästa sekvensnummer och skicka ett paket med en ACK-flagga (acknowledgement) som svar till servern, kan angriparen effektivt ”fånga” sessionen. Detta gör det möjligt för angriparen att skicka data till servern som om de vore den legitima klienten.

UDP-segmentets Header och funktioner

UDP används ofta av tjänster som DNS, TFTP, NFS och SNMP, samt av realtidsapplikationer som medieströmning och VoIP. UDP är ett protokoll på transportlagret som, till skillnad från TCP, inte upprättar någon anslutning mellan sändare och mottagare innan data skickas.

Det innebär att UDP är anslutningslöst och mycket enklare än TCP. Protokollet innehåller inte funktioner för att säkerställa att data kommer fram i rätt ordning eller utan förlust. UDP saknar alltså mekanismer som återsändning av förlorade paket, sekvenskontroll och flödeskontroll.

Eftersom UDP har färre funktioner än TCP är också headern mindre och paketstrukturen enklare. Det ger lägre overhead, vilket innebär att mindre extra styrinformation behöver skickas med varje paket.

Den stora fördelen med UDP är därför att det möjliggör snabb och effektiv dataöverföring. Det passar särskilt bra i applikationer där hastighet är viktigare än fullständig tillförlitlighet. Exempel på detta är strömmande media, VoIP och vissa typer av onlinespel, där det ofta är bättre att viss data försvinner än att överföringen fördröjs.

Eftersom UDP inte själv hanterar felkorrigering, ordningsföljd eller flödeskontroll, måste sådana funktioner i stället hanteras av applikationslagret, om de behövs. Därför är UDP ett bra val när kommunikationen behöver vara snabb och enkel, och när applikationen kan tåla att vissa paket förloras eller kommer fram i fel ordning.

UDP attacker

UDP har ingen inbyggd kryptering. Det innebär att trafiken som skickas med UDP i grunden är okrypterad och synlig för andra på nätverket. Även om det går att lägga till kryptering via andra protokoll (till exempel TLS i vissa applikationer), är detta inte en del av UDP i sig.

Eftersom trafiken inte är skyddad kan en angripare:

  • avlyssna (sniffa) trafiken
  • ändra innehållet i paket
  • skicka vidare manipulerad data

UDP använder ett 16-bitars checksum för att kontrollera dataintegritet. Detta checksum kan upptäcka fel, men det ger ingen säkerhet. En angripare kan ändra datan och samtidigt beräkna ett nytt korrekt checksum. Mottagaren ser då inget fel och kan inte avgöra att datan har manipulerats.

Det är dock viktigt att förstå att denna typ av manipulation är möjlig i teorin, men används inte lika ofta i praktiken jämfört med andra typer av attacker.

UDP Flood attacker

En UDP flood-attack är en typ av Denial of Service (DoS)-attack där angriparen försöker överbelasta en server genom att skicka en mycket stor mängd UDP-paket.

Hur attacken fungerar:

  1. Angriparen skickar stora mängder UDP-paket till målet.
  2. Paketen riktas ofta mot slumpmässiga eller stängda portar.
  3. När en server tar emot ett paket på en stängd port svarar den med ett ICMPPort Unreachable”-meddelande.
  4. Detta skapar extra belastning på servern eftersom den måste ta emot paketet, bearbeta det
    och generera ett svar.

Verktyg som används

Angripare kan använda verktyg som UDP Unicorn och Low Orbit Ion Cannon. Dessa verktyg kan generera stora mängder trafik, ofta med förfalskade IP-adresser (IP spoofing).

Obs: I praktiken behöver angriparen inte alltid “skanna portar” först – många attacker skickar trafik slumpmässigt för att maximera belastningen.

Effekt av attacken

Resultatet blir att enheten inte längre kan hantera legitima förfrågningar. Detta leder till en tjänstenekning, där användare inte kan nå tjänsten, huvudsyftet med en Denial of Service (DoS)-attack.