TCP och UDP sårbarheter

Medan vissa attacker primärt riktar sig mot IP, fokuserar andra på TCP och UDP. Hotaktörerna koncentrerar sig på informationen som finns inom varje segment, vilket gör det avgörande att förstå vilken information som lagras i de olika fälten. Information om TCP-segmentet följer direkt efter IP-headern. En översikt över fälten i TCP-segmentet, inklusive flaggorna i fältet för kontrollbitar, presenteras i figuren.

TCP-tjänster

TCP tillhandahåller följande tjänster:

  • Tillförlitlig leverans – TCP inkluderar kvittenser för att garantera leverans, istället för att förlita sig på protokoll i högre lager för att upptäcka och lösa fel. Om en kvittens inte mottas, sänder avsändaren om paketen. Kravet på kvittenser för mottagen data kan orsaka betydande förseningar. Exempel på applikationslagerprotokoll som använder TCP:s tillförlitlighet inkluderar HTTP, SSL/TLS, FTP, DNS-zonöverföringar och andra.
  • Flödeskontroll – är en mekanism som säkerställer att en avsändare inte skickar mer data än vad mottagaren kan hantera vid en given tidpunkt. Detta är viktigt för att undvika överbelastning hos mottagaren och för att optimera användningen av nätverksresurser. Flödeskontrollen justerar dynamiskt hastigheten på dataöverföringen baserat på mottagarens kapacitet och kvittens förmåga.
  • ”Stateful” kommunikation – avser en kommunikationsprocess där kommunikationsstatusen mellan två parter bevaras genom sessionen. Det innebär att systemet håller reda på alla tidigare interaktioner och kan hantera varje nytt datautbyte inom kontexten av denna historik. Inom TCP är detta tydligt i hur protokollet hanterar sekvensnummer, kvittenser, och sessionstillståndet från uppkoppling till nedkoppling. TCP är ett exempel på ett stateful-protokoll eftersom det upprätthåller en stadig förbindelse och tillståndsinformation mellan två enheter under hela kommunikationsprocessen.

TCP Trefas Handskakning

En TCP-anslutning upprättas i tre steg:

  1. Den initierande klienten begär en klient-till-server-kommunikationssession med servern.
  2. Servern bekräftar klient-till-server-kommunikationssessionen och begär en server-till-klient-kommunikationssession.
  3. Den initierande klienten bekräftar server-till-klient-kommunikationssessionen.

Grafiken är en illustration av utbytet av meddelanden mellan två kommunicerande parter under TCP:s trevägshandskakning. Den börjar när klienten skickar ett meddelande med SYN-kontrollbiten satt (SEQ=100 CTL=SYN). Detta tas emot av servern som svarar genom att skicka ett meddelande med SYN- och ACK-kontrollbitarna satta (SEQ=300 ACK=101 CTL=SYN, ACK). Klienten tar emot SYN, ACK och svarar genom att skicka ett meddelande med ACK-kontrollbiten satt (SEQ=101 ACK=301 CTL=ACK) och sessionen är etablerad.

Avslutning av en TCP-session

Avslutningen av en TCP-session använder följande fyrstegsprocess:

När klienten inte har mer data att skicka i kommunikation skickar den ett segment med FIN-flaggan satt.
Servern skickar ACK för att bekräfta mottagandet av FIN för att avsluta sessionen från klient till server.
Servern skickar ett FIN till klienten för att avsluta server-till-klient-sessionen.
Klienten svarar med ett ACK för att bekräfta FIN från servern.

TCP-attacker

Nätverksapplikationer använder TCP- eller UDP-portar. Hotaktörer utför portskanningar för att upptäcka vilka tjänster är tillgängliga via portarna.

TCP SYN Flood attack

Attacken utnyttjar TCP:s trefas handskakning. Figuren visar hur en hotaktör kontinuerligt skickar TCP SYN-session förfrågningspaket med en slumpmässigt förfalskad source-IP-adress till en server. Servern svarar med ett TCP SYN-ACK-paket till den förfalskade IP-adressen och väntar på ett TCP ACK-paket. Dessa svar anländer aldrig. Till slut överbelastas servern av halvöppna TCP-anslutningar, och TCP-tjänster nekas till legitima användare.

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 för tjänster som DNS, TFTP, NFS och SNMP, samt för realtidsapplikationer som medieströmning och VoIP. Till skillnad från TCP är UDP ett protokoll för transportlagret som inte upprättar någon anslutning mellan sändare och mottagare. Detta gör UDP mindre komplicerat än TCP, eftersom det saknar TCP:s funktioner för att säkerställa att data kommer fram i rätt ordning och utan förlust, såsom återsändning vid förlorade paket, sekvenskontroll och flödeskontroll. På grund av detta är UDP:s paketstruktur enklare och tar upp mindre utrymme än TCP:s, vilket visas i figuren.

UDP, eller User Datagram Protocol, är ett protokoll för transportlagret som möjliggör snabb och enkel överföring av data mellan enheter i ett nätverk. Till skillnad från det mer komplexa TCP (Transmission Control Protocol), etablerar UDP ingen anslutning mellan sändare och mottagare innan data skickas. Detta innebär att kommunikationen är ”anslutningslös” och att paket (datagram) skickas direkt till mottagaren utan att först säkerställa att mottagaren är redo att ta emot dem eller att paketen kommer fram i den ordning de skickades.

UDP protokollets huvudfördel är dess enkelhet och låga overhead (styrinformation), vilket gör det till ett utmärkt val för applikationer som kräver hög överföringshastighet och där det är acceptabelt med en viss risk för paketförlust. Exempel på sådana applikationer inkluderar strömmande medietjänster, VoIP (Voice over IP) och vissa typer av onlinespel, där snabbhet prioriteras framför absolut tillförlitlighet.

Eftersom UDP inte automatiskt hanterar felkorrigering, ordningsföljd av paket eller flödeskontroll, ligger ansvaret för att hantera dessa aspekter hos applikationslagret. Detta gör UDP mindre komplicerat och snabbare i situationer där tid är en kritisk faktor, men det kräver samtidigt att applikationen själv kan hantera eventuella förlorade eller felordnade paket.

UDP attacker

UDP skyddas inte av någon kryptering som standard. Du kan lägga till kryptering till UDP, men det finns inte tillgängligt från början. Avsaknaden av kryptering innebär att vem som helst kan se trafiken, ändra den och skicka den vidare till dess destination. Att ändra datan i trafiken kommer att förändra det 16-bitars checksummet, men checksummet är valfritt och används inte alltid. Dessutom kan hotaktören skapa ett nytt checksum baserat på den nya datan och sedan registrera det i headern som ett nytt checksum. Mottagande enhet kommer att finna att checksummet matchar datan utan att veta att datan har ändrats. Denna typ av attack används inte brett.

UDP Flood attacker

En UDP flood-attack är en typ av Denial of Service (DoS)-attack där angriparen översvämmar ett mål, ofta en server, med ett överväldigande antal UDP-paket. För att genomföra attacken använder angriparen verktyg som UDP Unicorn eller Low Orbit Ion Cannon. Dessa verktyg genererar en massiv mängd UDP-paket, vanligtvis från en dator med förfalskad IP-adress, riktade mot servern inom ett nätverkssegment.

Dessa program söker igenom serverns portar för att identifiera vilka som är stängda, vilket ger angriparen information om potentiella portar för attacken. När UDP-paketen riktas mot serverns stängda portar, tvingas servern att svara med ICMP-meddelanden som indikerar att portarna är otillgängliga.

Effekten av en sådan attack är att legitima förfrågningar till servern inte kan hanteras på grund av överbelastning av UDP-paket, vilket resulterar i en tjänstenekad situation liknande effekterna av en traditionell DoS attack.