Denial of Services attacker en översikt
Tobias Rogell Säkra datorsysten, HT-04 Vad är en DOS attack En Denail of Service attack går ut på att en attackerare vill hindra en webbserver, router eller någon annan form av server/dator som utför någon service att inte kunna utföra den. Detta görs genom att överbelasta servern med onödig datatrafik och utnyttja svagheter i operativsystem och Internetprotokollen. Exempel på det är webbserver som kan attackeras så den inte kan nås, en privatpersons dator kan attackeras och överbelastas så man inte kan surfa på Internet eller överbelasta en router med trafik så att det inte går att skicka data via den. Jag har valt att beskriva den distribuerade formen av en Denail of Service attack, en sk DDoS attack. I en vanlig Denail of Service attack så använder man bara en dator som skickar data och attackpaket. För att man ska kunna utföra en attack på sådant sätt så måste man ha en väldigt snabb uppkoppling med hög bandbredd och andra resurser för att kunna störa offret. I en distribuerad attack så använder man flera olika servrar/datorer som skickar stora mängder information samtidigt till offret. I en Denail of Service attack så använder man sig av TCP, ICMP, UDP eller en mix av alla tre som attackpaket. Men det vanligaste är att man använder TCP. Olika sätt att använda TCP, ICMP och UDP för att attackera En attack som använder TCP som grund utnyttjar trevägs-handskakningen som sker när man etablerar en uppkoppling. Man skickar ett TCP SYN paket till en öppen port hos offret med en spoofad IP-adress (Spoofad betyder att adressen är falsk och det inte är avsändarens riktiga adress). Offret svarar då och skicka ett TCP SYN- ACK paket tillbaka. Men eftersom IP-adressen är falsk så kommer offret inte få något svar tillbaka (den tredje och sista delen i trevägs-handskakningen). Offret kommer då att fortsätta att skicka TCP SYN-ACK paket och försöka få ett svar och detta innebär att man har en halvt öppnad uppkoppling (tills man når det satta timeout värdet och offret avslutar uppkopplingen). Ett resultat av detta är att om man skickar väldigt många TCP SYN paket till offret så kommer det finnas stora mängder halvt avslutade uppkopplingar. Vid varje uppkoppling så allokeras resurser i form av bl.a. minne. När man allokerat de resurser som finns så kan inte nya uppkopplingar accepteras och servern kan t.o.m. krascha. En annan effekt är att all bandbredd tas upp av inkommande TCP SYN och utgående a TCP SYN- ACK paket så att offret inte blir nåbar p.g.a. det (tar lång tid att skicka paketen så det sker en timeout). En annan variant på hur man kan använda TCP paket på är att skicka TCP SYN paket till portar som inte är öppna. Offret måste då skicka TCP RST paket tillbaka. Om man skickar tillräckligt många SYN så sker samma överbelastning som när man skickar till en öppen port (d.v.s. tar upp all bandbredd och resurser) ICMP används vanligtvis för att skicka ICMP excho begäran (ping). En sådan attack kan t.ex. gå till så att man skriver offrets adress som avsändare på ICMP paketet och skickar det till en broadcast adress i ett nätverk. Denna skickas då ut till alla datorer i nätverket och dom skickar ett svar till offret (dom är inte medvetna om att dom är en del i en attack). Offrets bandbredd eller systemresurser kan då bli överbelastad. Detta kallas för en Smurf-attack. När man använder UDP för att attackera så skickar man stora mängder UDP paket till offret. Offret försöker då behandla alla paket men eftersom de kommer i så stora mängder så hinner den inte med och kan inte besvara andra uppkopplingsförsök och all bandbredd tas upp av UDP paketen. Ibland har även DNS förfrågningar används vid attacker. Dessa attacker är väldigt effektiva eftersom själva förfrågan bara är några bytes stor och svaret är mycket större. Detta gör att man behöver skicka färre antal för att överbelasta offrets bandbredd. Hur en DDoS attack styrs Eftersom en DDoS attack använder sig av ett stort antal datorer (flera hundra) för att skicka attackpaket till offret så måste detta koordineras på nått sätt. Datorerna som används är hackade datorer som har trojan-program eller andra program som ligger och väntar på att attackeraren skickar ett startkommando. Det finns idag två huvudtyper av varianter. Direkt attack
I en direkt attack använder sig attackeraren av två olika slav-program, Masters och Agenter. Attackeraren kommunicerar med master-programmen och dom kommunicerar i sin tur med agenterna som utför själva attacken. I en attack så kanske attackeraren har tio master-program och varje sådant kontrollerar tio agenter. Attackeraren kan då få 100 slavprogram att utföra själva attacken. Detta gör att även om ett master-program och dess aganter upptäcks under själva attacken så kan den fortfarande utföras med gott resultat. Att man använder denna form av styrning av attacken gör det väldigt svårt att spåra vem som utförde själva attacken. Paketen som agenterna skickar kan också vara spoofade med falska IP-adresser som gör det ännu svårare att spåra. Direkt Attack Reflektor Attack Reflektorattack I en reflektorattack så går man ett steg längre och använder sig av vanliga DNS och HTTP servrar och lurar dom att vara en del av attacken. Agenterna spoofar då sina attackpaket med offrets IP-adress och skickar dom till DNS och http servrar som tolkar det som vanlig trafik och skickar ett svar till offret. Detta innebär att attacken blir ännu svårare att spåra eftersom trafiken till offret kommer från servrar som inte är hackade. Försvar mot DdoS och DoS attacker. Det är väldigt svårt att skydda en server på nätet från DoS attacker och samtidigt fortsätta att tillhandahålla den service som servern har. Det enklaste sättet att skydda sitt system är att inte ha det anslutet till Internet, men då har den som attackerar uppnått sitt syfte med att utföra en DoS attack. Det är också svårt att skilja en DoS attack från stora mängder vanlig laglig trafik vid speciella tillfällen. Exempel på sådana tillfällen som uppstått på Internet är terrorist attacken i New York 9/11 då ett stort antal Internetanvändare försökte ta reda på information om vad som hänt. Andra exempel på stora trafikmängder är under sportevenemang t.ex. fotbolls VM då en mängd Internet användare från många länder försöker få fram information. Nedan presenteras några olika sätt som man idag kan använda för att skydda sig i olika skeden av DDoS attacker. Före attacken: Förebygga attacker och oskadliggöra dom Första linjen i försvaret mot DDoS attacker är att förebygga dom så att dom inte ens sker. Ett sätt att göra det på är att förhindra hackers att installera agenter eller masterprogram på olika servrar. Men detta är svårt. Det kommer
alltid finnas servrar där administratören inte har kunskap i hur man säkrar systemet eller ens bryr sig om att uppgradera för att skydda sig mot nya sårbarheter. Ett annat sätt är att övervaka trafiken på Internet och leta efter kända meddelanden som skickas mellan attackeraren och master-programmen. Attacken skulle då kunna förhindras innan den blir omfattande och man skulle kunna filtrera bort DDoS-paket i routrar och brandväggar. Men detta skulle kräva stora resurser och kommunikationen mellan attackeraren och master-programmen skulle kunna ändras så den inte går att upptäcka. Under Attacken: Upptäcka attacker och filtrera bort DoS-paket Under själva attacken så kan man bara identifiera att det sker en attack och filtrera bort de paket som hör till attacken så att offret kan fortsätta tillhandahålla sin service. Men eftersom att en attack oftast är distribuerad och paketen inte kommer från samma källa så kan man även ta bort vanliga paket om man börjar filtrera trafiken. Det bästa är om man kan filtrera bort attackpaketen innan dom når fram till offret. Det finns i huvudsak fyra ställen där den filtreringen kan ske, hos offrets nätverk, hos offrets ISP (Internet service provider), hos en ISP mellan offret och attackeraren och i nätverket hos källan. Men eftersom det är få paket hos källan och ISP:s på vägen så är det svårt att filtrera där och filtrerar man paket hos offret eller offrets ISP så kan även många vanliga paket tolkas som attackpaket. Ett alternativ är att offret kan undersöka vilka paket som är en del av attacken och sedan låta sin ISP filtrera dessa paket och ISP:n kan i sin tur begära att andra ISP:er filtrerar bort vissa paket. Men filtrering är ingen fullständig lösning på DDoS attacker. En annan metod är att halvera timeout perioden för halvöppna TCP uppkopplingar, detta skulle reducera mängden halvöppna uppkopplingar vid en TCP SYN attack. Men genom att halvera tiden så kan även vanliga uppkopplingsförsök avslutas eftersom tiden det tar för att skicka paketen överstiger timeout-tiden. Offret kan även ta bort icke nödvändiga applikationer och information så att inte bandbredd tas upp av sådant och färre portar är öppna. Samtidigt kan offret stänga av ICMP echo reply funktioner så att attackpaket som utnyttjar ICMP inte får ett svar. Man kan även ändra offrets IP-adress så att attackerare som inte använder sig av DNS för att spåra offrets IP inte kan nå fram En bra lösning för att förhindra att offret behöver hantera halvöppna TCP uppkopplingsförsök är att låta en proxyserver eller brandväggar ta hand om uppkopplingsförsöket och inte skicka vidare trafiken innan en uppkoppling etablerats. Detta visas i figuren nedan. Två sätt att använda en brandvägg för att försvara sig mot en DoS attack som använder sig av TCP Efter Attacken: Spåra och hitta attackeraren Efter en attack så bör man försöka förhindra att attackeraren kan utföra en till attack med samma resurser och eventuellt kunna gripa attackeraren. För att kunna göra det så behövs en metod för att spåra paketen utan att lita på
den IP-adress som det står vart dom kom ifrån (de är vanligtvist spoofade). Ett sätt att göra detta på är att logga information i routrar om vart paketen kom ifrån så man kan spåra upp avsändare den vägen. Ett annat sätt är att låta routrar skicka mer information om vart paketet kom ifrån till destinationsservern via paketen eller mha. ICMP meddelanden. Men även om man lyckas spåra paketen till en avsändare så kan de befinna sig innanför NAT:s (Network Adress Translator) eller brandväggar där det blir svårare att identifiera dom. Vid reflektorattacker så blir det också svårare genom att attackpaketen skickas visa reflekterande servrar som inte vet om att dom är med i en DDoS attack. Framtida försvarsmekanismer Dagens försvar mot DDoS attacker är inte tillräckliga utan det behövs mer utvecklade metoder för att kunna försvara sig mot olika attacker. En metod som studeras nu är att bygga upp ett globalt försvar mot attacker så att attackpaket kan filtreras bort innan dom når en användare. Två sådana metoder är the routebased packet filtering och distributed attack detection. Båda metoderna använder sig av distribuerade noder på Internet som undersöker trafiken. Routebased packet filtering går ut på att man undersöker alla paket som passerar genom routern. Om ett paket är spoofat och kommer från ett nätverk där den inte ska kunna komma ifrån så raderas paketet. Men denhär metoden kan även radera vanliga paket, men kan vara väldigt nyttig vid en stor attack där det skickas många spoofade paket. Den här metoden är inte heller så användbar vid en reflektorattack eftersom då skickas paketen från vanliga servrar och kan inte tolkas som spoofade. Ett exempel på detta visas i figuren nedan En attack på nod 4 från nod 7 genom att använda sig av nod 2:s adress blockeras av nod 6 Distributed attack detection använder sig av distribuerade övervakningsnoder placeras på strategiska ställen (t.ex. accesspunkter backbone ISP nätverk) och undersöker på trafiken och upptäcker orimligt hög trafikmängd. För att kunna göra det så måste systemet övervaka och upptäcka ett normalt mönster om trafiken vanligtvis beter sig. Nackdelen med denna metod är att vid en reflektor attack så kan det tolkas som en vanlig trafikökning eftersom den kommer från vanliga servrar. Dessa noder bör även kunna övervaka och identifiera trafik som hör till attacker. Ett exempel på sådant är att man vet att kommunikationen med ett speciellt masterprogram sker via TCP på port 27665 och att master-programmet kommunicerar med agenterna via UDP på port 27444. Sådan trafik skulle alltså gå lätt att upptäcka och tas bort. Dessa noder bör även kunna kommunicera med varandra för att kunna dela med sig information om att en attack är på gång och de kan filtrera stora trafikmängder. Källor http://www.itso.iu.edu/staff/krulewit/ddos/ http://www.icir.org/vern/papers/reflectors.ccr.01/index.html IEEE Communications Magazine - October 2002, page 42-51, Rocky K. C. Chang, "Defending against Flooding-Based Distributed Denial-of-Service Attacks: A Tutorial" www.ieft.org/rfc/rfc2827.txt www.adelphi.edu/~spock/lisa2000-shaft.pdf www.pentics.net/denial-of-service/white-papers/smurf.cgi stuff.washington.edu/dittrich/misc/trinoo.analysis.txt
Kurose & Ross, TCP chapter 3 Haining Wang, Danlu Zhang, Kang G. Shin, http://www.eecs.umich.edu/~hxw/paper/attack.pdf, Proceedings of IEEE INFOCOM'2002 (21st), Page(s): 1530-1539 vol.3, June 2002. Kihong Park and Heejo Lee, http://www.acm.org/sigs/sigcomm/sigcomm2001/p2-park.pdf, Proceedings of ACM SIGCOMM'2001, August 2001. Stefan Savage, David Wetherall, Anna Karlin and Tom Anderson, http://www-cse.ucsd.edu/~savage/papers/ton01.pdf, ACM/IEEE Transactions on Networking, 9(3):226-237, June 2001.