Modul 10 Trojaner
Virus och andra elakartade program Datorvirus har senaste tiden fått mycket publicitet Datorvirus är en typ av elakartad programvara Effekterna av ett datorvirus är normalt uppenbar Virusrapporter har figurerat i nyheterna, böcker och filmer (ofta överdrivet) Virus får mer uppmärksamhet än de förtjänar De är dock ett hot! 2
Elakartade program Elakartade program Kräver värdprogram Oberoende Bakdörrar Logiska bomber Trojaner Virus Maskar Zombies 3 Replikerande
Bakdörrar Hemlig ingångspunkt till ett program Låter de som känner till bakdörren att förbigå de normala säkerhetskontrollerna Har traditionellt använts av programmerare Blir till ett hot då de blir kvar i färdiga produkter, som kan utnyttjas av attackerare Mycket svårt att blockera från OS Kräver god programvaruutveckling och uppdateringar 4
5
Logiska bomber En av de äldsta typerna av elakartade program Kod inbäddad i legitima program Aktiveras då speciella villkor uppfylls Om en viss fil finns/inte finns Viss bestämd dag eller tid Viss användare använder datorn Normalt sett skadas systemet då händelsen triggats Filer kan modifieras eller tas bort Diskar kan formateras 6
Trojanska hästar Program med en gömd sidoeffekt Är normalt ett trevligt program (spel eller humor-relaterat) som är attraktivt att använda När det exekveras utförs ytterligare (elaka) åtgärder Låter en attackerare få indirekt tillgång till objekt de inte har direkt Används ofta för att fortplanta ett virus eller mask, eller för att installera en bakdörr Eller helt enkelt för att förstöra data 7
Zombie Program som i all hemlighet tar över en annan dator på nätverket Efter detta används denna dator för att indirekt initiera en attack Används ofta för att skapa en distributed denial of service (DDoS) attack Använder sig av kända buggar i nätverkskopplade system 8
Virus En bit självreplikerande kod som läggs till någon annan form av kod Som ett biologiskt virus Fortplantar både sig självt och innehåller en payload Innehåller kod för att kunna kopiera sig själv Samt kod för att utföra någon form av attack 9
Virusets tillvägagångssätt Virusets faser: dormant : väntar på en triggande händelse propagation : fortplantning till annat program eller disk triggering : aktiveras för att göra sin grej execution : payload exekveras De flesta virus skrivs för att kunna utföra en viss attack på ett visst operativsystem eller ett visst program Använder sig normalt av kända svagheter i en produkt 10
program V := { goto main; 1234567; Ett enkelt virus subroutine infect-executable := { loop: file := get-random-executable-file; if (first-line-of-file = 1234567) then goto loop else prepend V to file; } subroutine do-damage := { whatever damage is to be done } subroutine trigger-pulled := { return true if some condition holds } main: main-program := { infect-executable; if trigger-pulled then do-damage; goto next; } next: } 11
Typer av virus Sedan första viruset upptäcktes har en ständig kamp förts mellan virusmakare och antivirusmakare Virus kan klassificeras efter hur de attackerar Parasit-virus Minnesresistenta virus Bootsektor-virus Stealth-virus Polymorfiska virus Macro-virus 12
Makro-virus Makro-kod som läggs till en viss datafil Tolkas av programmet som använder sig av filen Word/Excel makron Använder sig av automatiska kommando och kommandomakron Koden blir nu alltså plattformoberoende Makrovirus är nu en av de större kategorierna Utsuddningen av vad som är data och vad som är program gör antivirus-uppgiften mycket svårare Den klassiska avvägningen mellan användbarhet och säkerhet 13
E-post virus Sprider sig med hjälp av e-post med ett visst attachment, som innehåller ett makrovirus exempelvis Melissa Triggas när användaren öppnar ett dokument eller värre då användaren använder förhandsgranskning av e-post i sin e-postklient Målet är oftast Microsoft Outlook och Word/Excel dokument 14
Melissa 15
Maskar Fortplantar sig, men infekterar inte program Sprids normalt över ett nätverk Morris Internet Worm 1988 Ledde till skapandet av CERT Använder sig av varje användares distribuerade rättigheter eller genom att utnyttja kända sårbarheter i system Används normalt för att skapa zombies, som skall användas för DOS-attacker Störst sårbarhet finns bland icke-uppdaterade datorer som är ständigt uppkopplade 16
Maskars tillvägagångssätt Maskar har faser som liknar virusens: dormant propagation Söker efter andra system att infektera Skapa en uppkoppling till målsystemet Fortplantar sig på målsystemet triggering execution 17
Mest kända masken Masken Morris Skapades av Robert Morris 1988 Målet var att attackera Unix system Använde flera fortplantningssystem Lösenordsknäckning av lokal lösenordsfil Använde buggar i finger demonen Använde buggar och bakdörrar i sendmail Om någon av attackerna lyckades fortsatte attacken 18
Webb trojaner Uppvisades av Jim Fulton i Maj 2000 Kallades för Client-side Trojans Återupptäcktes på Bugtraq 2001 Kallades för Cross-site Request Forgeries Återupptäcktes igen på Bugtraq 2004 Kallades för Session Riding Går ut på att lura folk att: Följa URL s med vissa sidoeffekter Läsa auto-postande formulär med sidoeffekter Sidoeffekterna innebär att göra någon action på målets webbsajt 19
Typer av lurendrejeri 1 URL-baserad http://discuss.example/add.jsp? head=i+am+a+terrorist Kan döljas med redirects: http://badguy.example/nicejoke.html 20
Typer av lurendrejeri 2 Formulär-baserade <form name="f1" method="post" action="http://discuss.example/add.jsp"> <input type="hidden" name="head value="i am a terrorist"> <input type="hidden" name="text" value="..."> </form> <script language="javascript"> document.f1.submit(); </script> Fungerar nästan överallt! 21
Stjäla pengar <form name="f" method="post action="https://www.bank.example/pay.jsp"> <input type="hidden" name="n_function" value="310 /> <input type="hidden" name="s_choice" value="payment /> <input type="hidden" name="s_account" value="1234 /> <input type="hidden" name="s_message1" value="gift /> <input type="hidden" name="s_duedate" value="2009-02-02 /> <input type="hidden" name="s_amount" value="10.00 /> <input type="hidden" name="s_receiver" value="foo /> <input type="hidden" name="s_to_account" value= 5678 /> </form> <script> document.f.submit(); </script> 22
Lösningar Kräver upprepad autentisering före man utför en action Vill du göra detta, skriv ditt lösenord Kräver att man fyller i viss text Vill du göra detta, skriv nedanstående text Användare vill inte ha detta extra steg Notera att en vanlig Ja eller Nej -ruta inte räcker Attackeraren kan använda frames för att göra många onda saker 23
Att hitta bättre lösningar Problem: Någon erbjuder något å våra vägnar Lösning: När en action tas: se till att den kom från klienten och inte från någon annan Hur? Använd till exempel tickets 24
Tickets 1 För varje request, skapa ett långt slumpat tal, ticket, och knyt det till requesten på webbsidan <input type="hidden name= ticket value= ufnvb5ohimvmcftn /> <a href="vote.jsp?alt=1&ticket= bvgzta78lv00zn9n /> Yes, I agree</a> För varje ticket, addera en sträng som beskriver denna request och spara i en sessions-lokal ticket-burk delnote-1234-ufnvb5ohimvmcftn 25
Tickets 2 För varje inkommande request: skapa en sträng som beskriver denna action och lägg till den inkommande requesten. Kolla efter en matchning i ticket-burken 26
Sammanfattning För att undvika webbtrojaner: Kräv manuell autentisering för varje steg Eller: Implementera ett ticketsystem för att säkerställa att requesten verkligen erbjöds av korrekt webbsida 27