Alla angrepp av hackare sker med hjälp av olika typer av skadlig kod, ofta i kombination med social manipulation. Men det finns oss veterligen ingen skadlig kod som gör allt arbete på en gång, en typ av allt-i-ett-verktyg som tar angriparna genom alla steg och faser innan de nått sitt mål. Varje steg har sina verktyg, i många olika varianter för varje steg, och angriparna sätter antingen ihop ett paket av vad de behöver för just ett specifikt uppdrag, eller så agerar de mer dynamiskt och sätter in olika verktyg vartefter de tar sig djupare in i organisationens nätverk, beroende på vilken miljö de ser att de befinner sig i.
Vi går igenom de fyra stegen ett angrepp oftast består av och beskriver de verktyg angriparna använder, och hur du kan skydda dig.
1. Fotfästet – någonstans börjar det
Alla angrepp måste börja någonstans. Att få ett fotfäste, om än aldrig så litet, är det första steget mot att angriparen biter sig fast ordentligt och kan sprida den skadliga koden vidare, eller introducera ny kod som kanske gör det angriparen egentligen är ute efter.
Steget att få fotfäste är på olika sätt både enkelt och svårt att skydda sig mot. Det är på sätt och vis enkelt eftersom det finns gott om verktyg, som antivirus, brandväggar bra metoder för autentisering med mera, och genom att utbilda organisationens medarbetare kan man arbeta upp en vaksamhet mot okända avsändare av kommunikation, att inte öppna länkar och bifogade filer. Att få alla medarbetare tillräckligt vaksamma är kanske inte så enkelt, men i grund och botten krävs det inte mer än förståelse för organisationens utsatthet och situationens allvar. Det är inte tekniskt svårt att vara på sin vakt.
Den attackerade organisationen har också lite bättre odds att motverka attacken genom att rätt konfigurerade klienter har, eller borde ha, begränsade möjligheter att installera och exekvera kod eller komma åt viktiga resurser. Klienter ska endast ges de rättigheter som krävs för att medarbetaren ska kunna utföra sitt jobb. Det har flera orsaker, men inte minst för att den kod angriparna försöker exekvera bara får den system-kontext som den lokala användaren kan få.
Men fotfästet är också svårt att skydda sig mot eftersom angriparen har en myriad av klientsystem, enheter, användare, operativsystem, applikationer, nätverk och så vidare till sitt förfogande. De flesta större organisationer utgör ett smörgåsbord av attackvektorer. Har angriparen dessutom rekognoserat under en längre tid, inte minst genom social informationsinhämtning och manipulation, eller kommit över ett förlupet lösenord, är det lätt att se hur komplicerat det blir för organisationen att skydda sig. Det är i princip omöjligt att ha tillräcklig koll på allt och alla som rör sig inom organisationen.
Att skaffa sig ett fotfäste behöver inte nödvändigtvis handla om att utnyttja sårbarheter i olika system. Fotfästet kan komma genom helt normala processer, det är i själva verket ofta på det sättet angriparna försöker att få ett fotfäste: genom att först ta reda på vad som är normalt, för att sedan dölja sin attack i det flöde av normalitet som organisationens vanliga processer utgör. Hackarna vet att det avvikande väcker misstänksamhet och undviker att sticka ut.
2. Att höja användarrättigheterna
När angriparen väl fått fotfäste befinner sig denne i en ganska prekär situation. Det är långt ifrån dags att hurra. Det är relativt sällan angriparna får fotfäste i en användarkontext där användaren har fulla administratörsrättigheter eller att de lyckats få ett fotfäste hos precis den användare som sitter på den information (eller har åtkomst till system) som angriparna vill åt. Dels är dessa användare (förhoppningsvis) verkligen på sin vakt och har djupare kunskaper inom it-säkerhet än de flesta andra, och applicerar dessa kunskaper på sina egna klientsystem, dels är de få till antalet. Det normala är att angriparna får fotfäste i en klientenhet med begränsade rättigheter och trångt svängrum.
För att komma vidare och infektera fler datorer, eller för att installera skadlig kod, behöver angriparen ofta höja sina systemrättigheter, helst till administratör eller root på den lokala enheten. Det är inte så att angriparen åstadkommer att den egentliga användaren helt plötsligt blir lokal administratör – sådant märks – utan angriparen vill kunna exekvera kod som processer med administratörsrättigheter, och helst processer i operativsystemets kärna.
Jämför med kommandot ”sudo” i Linux: den lokala användaren, med sina begränsade användarrättigheter, kan köra program eller kommandon som root genom att skriva ”sudo” framför kommandot och sedan ange root-lösenordet. Det resulterar i att den aktuella processen körs med administratörsrättigheter, men användaren i sig blir förstås inte administratör för det.
Angriparen, för att komma vidare, måste alltså på något sätt få sin kod att exekvera med administratörsrättigheter. Om allt fungerar som det ska är detta mycket svårt, men allt fungerar ju inte som det ska. Det finns sårbarheter, buggar, och nu sätter angriparen in metoder för att exploatera dessa sårbarheter. Är det lokala systemet uppdaterat med de senaste uppdateringarna, patcharna, och angriparens metoder är väl kända, kommer angriparen att gå bet, men det är inte så verkligheten ser ut, tyvärr. I själva verket ligger de flesta större organisationer långt efter systemleverantörernas uppdateringscykler, ibland med veckor eller månader, ibland värre än så.
Dessutom, som om detta inte vore nog, har välorganiserade och resursstarka angripare tillgång till kunskap om och verktyg för sårbarheter som systemleverantörerna helt enkelt inte känner till – zero-day-attacker. Det finns alltså gott om sårbarheter i olika system för angriparna att exploatera för att öka sina systemrättigheter – på engelska kallas detta privilege escalation attacks. Andra sätt att skydda sig är att använda härdade operativsystem som kräver Mandatory Access Controls (MAC) som SELinux, eller att kräva att all kod i kärnan måste vara signerad.
Otillåten höjning av användarrättigheterna kommer i två former, dels i en vertikal riktning och dels i en horisontell riktning. Det vi talar om här är den vertikala riktningen, alltså att höja de lokala rättigheterna, även kallat privilege elevation, och den horisontella riktningen handlar om att utföra handlingar som en annan användare, men fortfarande på samma (låga) rättighetsnivå. Ett annat ord som förekommer i sammanhanget är jailbreak, vilket ursprungligen kommer från Iphone och IOS, och handlar om att komma åt funktionalitet i operativsystemet som en normal användare vanligtvis inte ska ha, men jailbreaks har även förekommit för Sonys Playstation-konsoler.
3. Snoka runt och hitta mer
Efter att angriparen fått ett fotfäste och lyckats öka sina systemrättigheter är det dags för det tredje steget – att snoka runt efter det man egentligen är ute efter. Detta kallas på engelska för lateral movement, alltså att röra sig i sidled, och det är precis det man gör. Med utgångspunkt i den lokala infekterade datorn eller mobilen börjar angriparna att rekognosera omgivningen i nätverket. Anledningen är att kartlägga organisationen ur ett nätverksperspektiv och hitta de resurser man är ute efter.
Det finns i huvudsak två metoder angriparen använder, och kan använda bägge om det behövs. Den första metoden går ut på att läsa av nätverket efter andra datorer och nätverksresurser. Angriparna letar efter öppna protokoll-portar och försöker hitta datorer med kända eller okända (zero-day) sårbarheter. När angriparna väl hittat en sårbar dator kan de infektera den för att ta sig vidare ännu längre i nätverket.
Det andra sättet är att komma över inloggningsuppgifter med hjälp av en så kallad keylogger (som snappar upp tangentbordstryckningar) eller använda ett verktyg som Mimikatz för att stjäla lösenord. För att denna metod ska få avsedd verkan för angriparna måste datorn tillhöra en användare som regelbundet loggar in på andra datorer, gärna servrar, annars finns där inga värdefulla lösenord att stjäla. Även med denna metod arbetar angriparna med fler och fler datorer och repeterar metoden om och om igen tills de hittat rätt.
Den här typen av aktivitet från angriparnas sida kommer att skapa spår, om inte angriparna är riktigt skickliga. Att en dator som normalt bara kommunicerar med ett fåtal andra datorer början scanna hela nätverket kommer att märkas. Likaså om den försöker ansluta till en resurs den normalt inte ansluter till, eller använda användaruppgifter den normalt inte använder. Sånt syns både i nätverkstrafiken och det skapar loggar på till exempel Active Directory-servrar. Ett sätt att skydda sig är alltså att hålla koll på loggarna eller använda ett EDR-verktyg (Endpoint Detection and Response).
Problemet är att detta är naturligtvis angriparna fullt medvetna om. Dels fastnar inte allt i loggarna (för att allt inte loggas, det vore överväldigande), dels är det ett stort och tråkigt arbete att läsa loggar. Även EDR-verktyg går att runda. Verktygen är installerade på klienterna, men för en angripare som infekterat en klient och skaffat sig administratörsrättigheter är det ju en smal sak att stänga av EDR-verktyget eller på andra sätt gå under dess radar.
Det säkraste sättet är helt enkelt att analysera nätverkstrafiken och leta efter avvikelser från mönstret, vilket i sin tur kräver att man vet hur det normala mönstret ser ut. Problemet med denna metod är att de flesta avvikelser är ofarliga. Vad som krävs är att kunna skilja ofarliga avvikelser från farliga avvikelser, och det är inte alltid enkelt. Man måste känna till hur de farliga avvikelserna ser ut.
4. Permanent fotfäste
Vid det här laget har angriparna kommit ganska långt. Det vore ju snöpligt för dem om de förlorade resultatet av all möda om användaren till exempel startar om datorn eller stänger av den för dagen. Angriparna kanske har nått sitt mål och lyckats infektera en server, databas, kommit över användaruppgifter och så vidare.
Även dessa system startas om ibland, till exempel i samband med uppdateringar eller service, men det finns en uppsjö andra anledningar till att angriparna kan kastas ut – det kan vara medvetet efter en upptäckt eller ofrivilligt till exempel efter ett lösenordsbyte. Alltså gäller det för angriparna att skaffa sig ett permanent fotfäste som gör att deras process, deras skadliga kod, startas och körs så fort datorn startas. På engelska kallas detta persistence, att få till ett beständigt fotfäste. Lyckas angriparna med detta är organisationen så gott som dömd; det är ofta fråga om ett oerhört kostsamt arbete att rensa alla system från den skadliga koden, om den ens upptäcks. I detta läge gör angriparna i stort sett vad de vill eftersom de har en permanent bakdörr in till organisationens it-system.
Det finns lite olika sätt för angriparna att skaffa sig ett permanent fotfäste. Ofta handlar det om att antingen infektera eller byta ut existerande kod som körs vid varje uppstart, eller att lägga till egen kod och se till att den körs vid varje uppstart. I Windows riktar angriparna ofta in sig på DLL:er och systemregistret och på unix-liknande system som Linux eller Mac är det olika start-script man vill åt. Men det är bara ett par exempel – it-säkerhetsorganisationen Mitre listar exempelvis 63 olika kända metoder för de vanligaste operativsystemen.
Det är inte helt enkelt att upptäcka eller försvara sig mot en motståndare som fått ett permanent fotfäste. Om inte annat har angriparna nu alla möjligheter att undvika upptäckt och att hela tiden byta taktik och metoder, och har inte den försvarande organisationen tur, exempelvis att man upptäcker märkliga filer eller beteenden, så är det återigen analys av nätverkstrafiken som är den taktik organisationen kan ta till.
Angriparna vill och behöver kommunicera med omvärlden, speciellt med sin så kallade C2-server (Command and Control), eller med andra entiteter där man kan dumpa stora datamängder, till exempel. Denna trafik går att upptäcka om man har rätt verktyg och kunskap. När den försvarande organisationen väl upptäckt ett permanent fotfäste återstår ofta endast att installera om hela operativsystemet, och allt annat, från början.
Som vi sett i denna artikel blir ett angrepp värre i form av skador, och svårare att upptäcka, ju längre angreppet fortskrider. Det gäller med andra ord att upptäcka attacker så tidigt som möjligt. En eller ett fåtal infekterade men annars harmlösa klienter i händerna på vanliga användare är ganska enkelt att åtgärda – har å andra sidan angriparna fått ett permanent fotfäste i organisationens kritiska infrastruktur är situationen prekär. Det senare kommer, så gott som garanterat, att leda till avslöjanden, arga kunder, enorma kostnader och tappat förtroende – till och med rättsliga åtgärder. Med andra ord: att utbilda alla inom organisationen om hur de undviker att bli infekterade med skadlig kod är en god investering.
Läs också:
Hacking med dödlig utgång – och hur vi stoppar det
Historiska jätteläckan: Equifax använde lösenordet ”admin”