|
1. DDoS-attackgrunderna DDoS-attacker (Distributed Denial of Service) är några av de mest kraftfulla och svåraste attackerna att försvara sig mot eftersom huvudsyftet med DDoS-attacker är att förhindra att ett utsett mål tillhandahåller normala tjänster eller till och med försvinner från Internet. DDoS kan enkelt delas in i tre kategorier beroende på hur de initieras. Den första kategorin vinner med våldMassiva datapaket svärmar från alla hörn av Internet, blockerar ingången till IDC, gör olika kraftfulla hårdvaruförsvarssystem och snabba och effektiva nödsituationer värdelösa. Typiska exempel på denna typ av attack är ICMP Flood och UDP Flood, som numera är ovanliga. Den andra kategorin vinner genom skicklighet, smart och omärklig, kan skicka ett paket var några minuter eller till och med bara behöva ett paket göra att den lyxiga konfigurationsservern inte längre svarar. Denna typ av attack startas främst genom att utnyttja sårbarheter i protokoll eller mjukvara, såsom Slowloris-attacker, hashkollisioner med mera, och kräver specifika miljömässiga sammanträffanden. Den tredje kategorin är en blandning av ovanstående tvåDen utnyttjar inte bara protokollets och systemets brister, utan har också en stor mängd trafik, såsom SYN Flood-attacker och DNS Query Flood-attacker, vilket är den nuvarande mainstream-attackmetoden. Den här artikeln kommer att beskriva dessa vanligaste och mest representativa anfallsmetoder en efter en och presentera deras försvarsalternativ. 1.1. SYN-översvämningenSYN Flood är en av de mest klassiska DDoS-attackerna på internet, som först dök upp omkring 1999, där Yahoo var det mest kända offret vid den tiden. SYN Flood-attacker utnyttjar TCP:s trippelhandskakningsfel som kan göra målservern oresponsiv och svår att spåra till en liten kostnad. Den standardiserade TCP-trevägshandskakningsprocessen är som följer: - Klienten skickar ett TCP-paket som innehåller SYN-flaggan, SYN synkroniseras, och synkroniseringspaketet anger vilken port klienten använder samt det initiala serienumret för TCP-anslutningen.
- Efter att ha mottagit SYN-paketet från klienten kommer servern att returnera ett SYN+ACK-paket (dvs. bekräftelse), vilket indikerar att klientens begäran är accepterad, och TCP:s initiala serienummer läggs automatiskt till med 1.
- Klienten returnerar också ett bekräftelsemeddelande ACK till servern, och TCP-serienumret läggs också till med 1.
Efter dessa tre steg upprättas TCP-anslutningen. För att uppnå tillförlitlig överföring har TCP-protokollet upprättat vissa undantagshanteringsmekanismer under de tre handskakningarna. I det tredje steget, om servern inte tar emot det sista ACK-bekräftelsepaketet från klienten, kommer servern att förbli i SYN_RECV-tillståndet, lägga till klientens IP-adress på väntelistan och skicka SYN+ACK-paketet igen i det andra steget. Återpostningar görs vanligtvis 3–5 gånger, och väntelistan pollas en gång med cirka 30 sekunders intervall för att försöka om alla klienter. Å andra sidan, efter att servern skickat ut SYN+ACK-paketet, förallokerar den resurser för att lagra information för den kommande TCP-anslutningen, som behålls medan väntan på omförsöket. Viktigare är att om serverresurserna är begränsade, kommer det SYN_RECV tillstånd som kan upprätthållas inte längre att acceptera nya SYN-paket efter att gränsen överskridits, det vill säga nya TCP-anslutningar kommer att avvisas. SYN Flood använder TCP-protokollinställningarna ovan för att uppnå syftet med attacken. Angripare döljer ett stort antal IP-adresser för att skicka SYN-paket till servern, och eftersom de förfalskade IP-adresserna är nästan omöjliga att existera kommer nästan ingen enhet att svara servern. Som ett resultat har servern en lång väntelista och försöker upprepa SYN+ACK-paket, vilket förbrukar mycket resurser och inte kan släppas. Viktigare är att den SYN_RECV kön på den attackerade servern fylls med skadliga paket, nya SYN-förfrågningar accepteras inte längre, och legitima användare kan inte genomföra tre handskakningar för att etablera TCP-anslutningar. Med andra ord nekades servern service av SYN Flood. Om du är intresserad av SYN Flood kan du ta en titt på http://www.icylife.net/yunshu/show.php?id=367, som jag skrev 2006, och senare gjorde flera ändringar, fixade buggar och minskade aggressiviteten, och som användes enbart för testning. 1.2. DNS-frågeflodSom den mest grundläggande och kärntjänsten på Internet är DNS naturligtvis ett av de viktiga målen för DDoS-attacker. Att slå ner en DNS-tjänst kan indirekt dra ner hela företagets verksamhet, eller en nätverkstjänst i en region. För en tid sedan meddelade den populära hackergruppen anonymous också att de skulle attackera 13 DNS-servrar på det globala Internet, men till slut lyckades de inte. UDP-attacker är den enklaste attackmetoden för att initiera massiv trafik, och slumpmässig käll-IP-förfalskning är svår att spåra. Filtrering är dock enklare eftersom de flesta IP-adresser inte tillhandahåller UDP-tjänster, så du kan bara kassera UDP-trafik. Därför är rena UDP-trafikattacker relativt sällsynta nu, och de ersätts av DNS Query Flood-attacker som bärs av UDP-protokollet. Enkelt uttryckt, DDoS-attacker som startas på ju högre protokoll det är, desto svårare är det att försvara sig mot eftersom ju högre protokollet är, desto mer affärsrelaterat är det och desto mer komplext är försvarssystemet. DNS Query Flood är när en angripare manipulerar ett stort antal sockpuppet-maskiner för att starta ett stort antal domännamnsförfrågningar till målet. För att förhindra ACL-baserad filtrering måste paketslumpmässigheten förbättras. En vanlig praxis är att slumpmässigt smida käll-IP-adressen, slumpmässigt smida källporten och andra parametrar på UDP-lagret. På DNS-protokolllagret förfalskas fråge-ID:t slumpmässigt tillsammans med domännamnet som ska lösas. Förutom att förhindra filtrering kan slumpmässigt förfalskade domännamn som ska lösas också minska sannolikheten att träffa DNS-cachen och förbruka så mycket CPU-resurser som möjligt från DNS-servern. När det gäller koden för DNS Query Flood skrev jag en kod i juli 2011 för att testa serverprestanda, och länken är http://www.icylife.net/yunshu/show.php?id=832. På samma sätt är denna kod konstgjort mindre aggressiv och är endast till för teständamål. 1.3. HTTP-flodSYN Flood och DNS Query Flood som beskrivs ovan kan effektivt försvaras mot i detta skede, och den verkliga huvudvärken för stora tillverkare och internetföretag är HTTP Flood-attacker. HTTP Flood är en attack mot en webbtjänst på ett protokoll på sjunde lagret. Dess stora skada visar sig främst i tre aspekter: bekväm initiering, svår filtrering och långtgående konsekvenser. Både SYN Flood och DNS Query Flood kräver att angripare kontrollerar ett stort antal botar med root-behörigheter. Det tar tid och ansträngning att samla in ett stort antal root-privilegier, och under attacken är dockmaskinen långsam att fylla på på grund av den snabba resursförlusten från angriparen på grund av onormal trafik som administratören upptäcker, vilket resulterar i en betydande minskning av attackintensiteten och som inte kan upprätthållas under lång tid. HTTP Flood-attacker skiljer sig, angripare behöver inte kontrollera ett stort antal botar, utan använder istället portskannrar för att hitta anonyma HTTP-proxyer eller SOCKS-proxies på Internet, genom vilka angriparen initierar HTTP-förfrågningar till attackmålet. Anonyma proxyer är en relativt rik resurs, och det är inte svårt att få proxys på några dagar, så attacker är lätta att initiera och kan pågå länge. Å andra sidan startas HTTP-floodattacker på HTTP-lagret, som kraftfullt efterliknar vanliga användares webbsidesförfrågningsbeteende, vilket är nära kopplat till webbplatsverksamheten, vilket gör det svårt för säkerhetsleverantörer att erbjuda en gemensam lösning som inte påverkar användarupplevelsen. Regler som fungerar bra på ett ställe, förändrade scenarier kan leda till många vållande till annans död. Slutligen kan HTTP-flood-attacker orsaka allvarliga kedjereaktioner, inte bara direkt orsaka långsam respons från den attackerade webbfrontenden, utan också indirekt attackera back-end Java och annan affärslagerslogik och backend-databastjänster, öka deras tryck och till och med påverka logglagringsservrar. Intressant nog har HTTP Flood också ett historiskt smeknamn som kallas CC-attack. CC är en förkortning för Challenge Collapsar, som är en DDoS-skyddsanordning från ett välkänt säkerhetsföretag i Kina. Att döma av den nuvarande situationen utmanas inte bara Collapsar, utan all utrustning och försvarsutrustning, och risken har inte lyfts. 1.4. Långsamma anslutningsattackerNär det gäller attacker är den första reaktionen massiv trafik och enorma paket. Men det finns en attack som gör motsatsen, känd för att vara långsam, så att vissa attackmål dödas utan att veta hur de dör, vilket är slow connection-attacken, den mest representativa är Slowloris uppfunnen av rsnake. HTTP-protokollet föreskriver att HTTP-förfrågningar slutar på \r\n\r\n, vilket indikerar att klienten har avslutat sändningen och servern har börjat bearbeta. Så vad händer om du aldrig skickar \r\n\r\n? Slowloris utnyttjar detta till sin fördel i DDoS-attacker. Angriparen sätter anslutningen till Keep-Alive i HTTP-begäransökningsheadern, ber webbservern att hålla TCP-anslutningen ofrånkopplad, och skickar sedan långsamt ett nyckelvärdeformat till servern var några minuter, såsom a:b\r\n, vilket får servern att tro att HTTP-headern inte har mottagits och väntar. Om en angripare använder multitrådning eller en marionett, kommer serverns webbcontainer snabbt att bli överväldigad av angriparen och accepterar inte längre nya förfrågningar. Snart började olika varianter av Slowloris dyka upp. Till exempel skickar POST-metoden in data till webbservern, fyller ett stort innehållsinnehåll men långsamt byte för byte POST-innehåll med verklig data, etc. När det gäller Slowloris-attacken ger rsnake också en testkod, se http://ha.ckers.org/slowloris/slowloris.pl. 2. DDoS-attacken avancerade2.1. HybridattackerOvanstående introducerar flera grundläggande attackmetoder, som alla kan användas för att attackera nätverket och till och med besegra jättestora webbplatser som Alibaba, Baidu och Tencent. Men det är inte allt, olika nivåer av angripare kan starta helt olika DDoS-attacker, och användningen av dem är samma sak. Avancerade angripare använder aldrig en enda vektor för att attackera, utan kombinerar dem flexibelt beroende på målmiljön. Vanlig SYN Flood är lätt att filtrera bort av trafikrensningsenheter genom omvänd detektion, SYN-cookies och andra tekniska metoder, men om SYN+ACK-paket blandas i SYN Flood, så att varje förfalskat SYN-paket har ett motsvarande förfalskat klientbekräftelsepaket, avser motsvarande IP-adress, källport, destinations-IP, destinationsport, TCP-fönsterstorlek, TTL osv. som alla är i linje med egenskaperna hos samma värd och samma TCP-flöde. Trycket på prestandan för omvänd detektering och SYN-cookies i flödesrengöringsutrustning kommer att öka avsevärt. Faktum är att SYN-datapaket och olika andra flaggbitar har speciella attackeffekter, vilka inte introduceras här. Det finns också unika tekniker för DNS Query Flood. För det första kan DNS delas upp i vanlig DNS och auktoriserad domän-DNS, vilket attackerar vanlig DNS, IP-adressen måste slumpmässigt förfalskas och servern kräver rekursiv upplösning; Men när man attackerar den auktoriserade domänens DNS bör den förfalskade käll-IP-adressen inte vara helt slumpmässig, utan bör vara DNS-adresser från internetleverantörer runt om i världen insamlade i förväg, för att uppnå maximal attackeffekt, så att trafikrensningsenheten hamnar i den pinsamma situationen att lägga till IP-svartlista eller inte lägga till IP-svartlista. Att lägga till det leder till ett stort antal dråp, och om du inte lägger till en svartlista måste varje paket reverse-probas, vilket ökar prestandapressen. Å andra sidan, som nämnts tidigare, för att öka trycket att rengöra enheten är det nödvändigt att slumpa det begärda domännamnet utan att nå cachen, men det bör noteras att domännamnet som ska lösas måste ha en viss regelbundenhet i förfalskningen, såsom att förfalska endast en viss del av domännamnet och att en del fastnar för att bryta igenom vitlistan som rengöringsenheten sätter in. Anledningen är enkel: Tencents servrar kan bara lösa Tencents domännamn, och helt slumpmässiga domännamn kan kastas direkt bort och behöva fastställas. Men om den är helt fixad är det lätt att kasta bort den direkt, så den måste smidas. För det andra bör attacker mot DNS inte enbart fokusera på UDP-portar, som också är standardtjänster enligt DNS-protokollet. Vid en attack kan både UDP- och TCP-attacker genomföras samtidigt. Fokus för HTTP Flood är att bryta igenom cachen på frontend och direkt nå webbservern via fältinställningarna i HTTP-headern. Dessutom är HTTP Flood också mycket kritiskt för valet av mål, och vanliga angripare väljer sidor som kräver många datasökningar som sök som attackmål, vilket är mycket korrekt och kan förbruka så många resurser som möjligt från servern. Men denna attack är lätt att identifiera genom att rengöra utrustning genom mänsklig och maskin-identifiering, så hur löser man detta problem? Det är väldigt enkelt, försök välja sidor som vanliga användare också får tillgång till via appen, generellt sett olika webb-API:er. Vanliga användare och skadlig trafik kommer från APPEN, och skillnaden mellan människa och maskin är mycket liten, och det är svårt att skilja på grundläggande integration. Varje TCP-anslutning finns på serversidan och på sig själv, och den måste också förbruka resurser för att upprätthålla TCP-tillståndet, så anslutningen kan inte upprätthållas för mycket. Om detta kan lösas kommer aggressiviteten att öka avsevärt, det vill säga att Slowloris kan starta attacker på ett tillståndslöst sätt, fånga TCP-serienumret och bekräfta underhållet av TCP-anslutningar på klienten genom att sniffa, och systemkärnan behöver inte ta hänsyn till olika tillståndsändringar i TCP, och en notebook kan generera upp till 65 535 TCP-anslutningar. De tidigare beskrivningarna är alla tekniska attackförbättringar. På den mänskliga sidan finns det andra metoder. Om SYN Flood skickar ut ett stort antal paket och åtföljs av Slowloris långsamma anslutningar, hur många kommer då att upptäcka hemligheten? Även om servern går ner kan endast SYN-attacker hittas, vilket försöker stärka TCP-lagrerensningen och ignorera applikationslagrets beteende. Alla typer av attacker kan samarbeta för att uppnå maximal effekt. Valet av attacktid är också en nyckelpunkt, såsom att välja underhållspersonal när de äter lunch, när underhållspersonal fastnar på vägen efter slut eller när det inte finns någon signal på trådlösa nätverkskortet i tunnelbanan, och när målföretaget håller ett storskaligt evenemang och trafiken ökar. Detta är en ren attack, så ingen kod eller djupgående förklaring tillhandahålls. 2.2. Attacker från P2P-nätverkDe tidigare attackmetoderna kräver mer eller mindre några bottar, till och med HTTP Flood kräver att man söker efter ett stort antal anonyma proxyer. Om det sker en attack behöver du bara ge några instruktioner, och maskinen kommer automatiskt upp för att utföra den, vilket är den perfekta lösningen. Denna attack har redan dykt upp, och det är från P2P-nätverk. Som vi alla vet är P2P-användare och trafik på internet ett extremt stort antal. Om de alla går till en särskild plats för att ladda ner data och koppla tusentals riktiga IP-adresser kan ingen enhet stödja det. Ta BT-nedladdning som exempel, att förfalska torrents av populära videor och lägga upp dem på sökmotorer räcker för att lura många användare och trafik, men detta är bara en grundläggande attack. Avancerade P2P-attacker är direkt förfalskning av resurshanteringsservrar. Till exempel kommer Thunder-klienten att ladda upp de resurser den hittar till resurshanteringsservern och sedan skicka dem till andra användare som behöver ladda ner samma resurser, så att en länk publiceras. Genom protokollomkastning förfalskar angripare en stor mängd populär resursinformation och distribuerar den genom resurshanteringscentret, vilket omedelbart kan spridas över hela P2P-nätverket. Det som är ännu mer skrämmande är att denna attack inte kan stoppas, inte ens av angriparen själv, och attacken fortsätter tills P2P-tjänstemannen hittar problemet och uppdaterar servern och nedladdningsanvändaren startar om den nedladdade mjukvaran. 3. SammanfattningDet är allt som finns i introduktionen till DDoS-attacker, och jag vill inte gå längre – det räcker att förstå att så mycket försvar räcker. Generellt kan DDoS-attacker vara smidiga och graciösa. Skönheten i tillämpning ligger i sinnets enhet. |