Säkrare hemsida med.se Jörgen Nilsson, Ikyon AB 27 maj 2012
Innehållsförteckning: 3. Inledning 3. Mål och syfte 3. Projektbeskrivning 6. Leverabler 6. Resultat 8. Utvärdering och analys 9. Utvärdering av resultat 10. Förslag på förbättringar 10. Framtida arbeten
Inledning Efter att ha arbetat i flera år med IT-säkerhet och framför allt behandling av abuseärende på webbhotell såg jag behovet av mer regelbunden övervakning över hemsidor, där rapporter om problem rapporterades till de som till viss del har ansvaret men framför allt har kompetensen att åtgärda problem, webbhotellen. Resultatet blev detta projekt och flera tusen rapporter. Mål och syfte Projektets mål har varit att upptäcka och rapportera attacker mot hemsidor på.se-domäner. Syftet har varit att skapa ett tryggare internet, både för personer som äger hemsidor och personer som surfar runt på svenska hemsidor. Det finns redan en del organisationer, bland annat Google och Clean-MX, som regelbundet undersöker hemsidor och kostnadsfritt rapporterar problem men många hemsidor riskerar att aldrig besökas eller besökas mycket sällan. Det fanns behov av regelbunden kontroll av hemsidor och genom att begränsa sig till.sedomäner kunde detta göras effektivt. Projektbeskrivning Flera olika typer av attacker har undersökts. Fokus har legat på SERP-hijacking, malware och virus och kontrollen har skett med program som automatiskt hämtat hem html-koden för alla hemsidor som har.se-domän och kontrollerat denna efter specifika beteenden och mönster. SERP-hijacking Search Engine Result Page hijacking innebär att hemsidan är kapad så att besökare som hittat sidan via en sökmotor automatiskt skickas vidare till en helt annan sida, ofta till en sida som sprider falska antivirusprogram eller virus.
Nedanstående logg visar en attackerad hemsida. Först visas trafiken som skickas och tas emot av webbläsaren när man går in på hemsidan genom att skriva in adressen i webbläsarens adressfält. Sedan visas trafiken när webbläsaren rapporterar att man kommit dit genom att klicka på en länk i Googles sökresultat. HTTP headers sent: HEAD / HTTP/1.1 Host: quicklyfastighetsservice.se Connection: Close HTTP headers recieved: HTTP/1.1 200 OK Date: Mon, 21 May 2012 07:27:44 GMT Server: Apache/2.2.6 mod_auth_kerb/5.3 PHP/5.2.17 mod_fcgid/2.3.6 X-Powered-By: PHP/5.2.17 Connection: close Content-Type: text/html HTTP headers sent: HEAD / HTTP/1.1 Host: quicklyfastighetsservice.se Referer: http://www.google.com/search?q=quicklyfastighetsservice.se Connection: Close HTTP headers recieved: HTTP/1.1 302 Found Date: Mon, 21 May 2012 07:27:44 GMT Server: Apache/2.2.6 mod_auth_kerb/5.3 PHP/5.2.17 mod_fcgid/2.3.6 Location: http://mediccan.ru/ Connection: close Content-Type: text/html; charset=iso-8859-1 Det första svaret från servern är 200, vilket innebär att inga fel inträffade och att servern kommer att skicka ut html-data till webbläsaren. Det andra svaret är istället 302, vilket innebär att webbläsaren får order om att istället gå till en annan adress, i det här fallet till http://mediccan.ru/. Eftersom ägaren av hemsidan och regelbundna besökare antagligen inte går in på sidan genom att söka efter den kan det ta tid innan ägaren upptäcker att något är fel. Malware Malware står för MALicious software och är en bred definition som innefattar virus, maskar, trojanska hästar men även program och kod som försöker sprida
dessa. Det som rapporterats som malware i projektet har främst varit HTML-kod och javascript-kod som får webbläsaren att anropa andra adresser som antingen innehåller skadliga program eller i sin tur skickar vidare till andra adresser med skadliga program. Virus Då det är hemsidor som undersökts i projektet är detta inte virus i vanlig mening, programfiler som ställer till skada, utan HTML-filer som antivirusprogram reagerar på. Ofta innehåller filen krypterad javascript-kod som används för att webbläsaren ska hämta filer med skadlig kod från en annan server men det kan också vara att filen innehåller javascript-kod som direkt försöker utnyttja ett säkerhetshål i webbläsaren. Phishing Phishingsidor är sidor som utger sig för att tillhöra en legitim organisation för att stjäla inloggningsuppgifter eller bankinformation. Defacement Detta är vad man i dagligt tal kallar för en hackad sida där en sida bytts ut eller lagts till med hackerns egen text och budskap. Detta görs ofta av ungdomar som utnyttjar enkla säkerhetshål och strävar efter uppmärksamhet. Övrigt Under projektets gång har jag upptäckt tre större attacker som inte fallit under de andra kategorierna utan behandlats för sig. I samtliga fall var det Wordpressinstallationer som attackerades, i första fallet lades spamlänkar in på sidan, i nästa fall laddades shellscript upp och i sista fallet skapades nya Wordpressinstallationer med reklam för bantningsmedel. Under merparten av projektet har både analys och rapport av hemsidor skett från en enda server. Mot slutet har jag dock gått över till att låta den servern vara ett nav för projektet och använda servrar hos Amazon arbeta med själva analysen.
Projektet har haft utgifter på 3319 kr för serverhyra hos Oderland och 74 kr för serverhyra hos Amazon. Total serverkostnad har alltså blivit 3393 kr. Jag har inte mätt arbetstiden som förutom att användas åt att utveckla systemen också använts för att manuellt kontrollera alla rapporter innan de skickats ut. Leverabler En hemsida sattes upp på http://sakrare.ikyon.se/ och användes för att publicera alla rapporter. På sidan kan man välja att se samtliga rapporter eller enbart de som är registrerade för ett visst IP-nummer, AS-nummer eller kontaktadress. Rapporterna finns även tillgängliga som RSS-feed och på begäran av CERT-SE även i CSV-format enligt deras önskemål. För varje rapport finns en loggfil som anger vilken adress som attackerats, vilken typ av attack det är, när attacken upptäcktes och mer informaton om attacken. Dessa rapporter har också mailats till den eller de kontaktadresser som finns för IP-numret. För att koppla IP-nummer till kontaktadresser har främst Abuse.nets databas använts, men även Abusix, whoisinformation och manuell kontroll. I början mailades rapporterna i X-ARF-format, ett format för abuserapportering avsett att kunna behandlas både maskinellt och manuellt, men då X-ARF bara har stöd för att rapportera en adress per mail gick jag från detta så att de kontaktadresser som skulle få flera rapporter fick det samlat i ett mail. Resultat Under projekttiden har 3 854 rapporter skickats ut för 1 458 unika domännamn. Fördelningen av attacker på de unika domänerna har fördelat sig enligt tabellen nedan.
SERP-hijacking 695 Malware 562 Virus 90 Phishing 57 Defacement 14 Övrigt 99 Summa 1 517 1 De 20 webbhotell som haft flest attacker är angivna i tabellen nedan. Inom parentes står hur stor andel av det totala antalet attacker webbhotellet har. 245 (16%) Surftown 228 (15%) Binero 159 (10%) One.com 110 (7%) Loopia 63 (4%) Levonline 49 (3%) Oderland 34 (2%) Crystone 31 (2%) Servnet 29 (2%) Bahnhof 28 (2%) Servage 25 (2%) Manufrog 22 (1%) Snowpeak 22 (1%) Direktonline 20 (1%) Dreamhost 19 (1%) City Network 14 (1%) Space2u 14 (1%) Internetborder 14 (1%) FS Data 13 (1%) Ipeer 10 (1%) Telenor 1 Att summan inte blir 1 458 beror på att vissa domännamn rapporterats för mer än en typ av attack.
Av dessa är 140 attacker, spridda på 138 domäner, fortfarande aktiva 26 maj 2012. De webbhotell som har mer än två aktiva attacker är angivna i tabellen nedan. Inom parentes står hur stor andel av attackerna som fortfarande är aktiva. 45 (18%) Surftown 29 (46%) Levonline 7 (6%) Loopia 5 (5%) Softlayer (The planet) 4 (29%) FS Data 4 (8%) Oderland 4 (3%) One.com 3 (23%) Ipeer 3 (9%) Crystone Att en hemsida inte återställs efter en attack kan bero på flera olika orsaker. Man kan ha försökt återställa men inte lyckats helt, missat en rapport eller kontaktat kunden och låtit honom eller henne ta ansvaret. I en del fall är det dock sannolikt att hanteringen av abuseärende inte är prioriterat på företaget. När en domän rapporteras flera gånger beror detta ofta på att attacken inte åtgärdats och att attacken på något sätt uppdateras. Om en domän som är attackerad med serp-hijacking ändras så att den istället skickar till en ny adress tolkas det som en ny attack och en ny rapport skapas. Utvärdering och analys Utvecklingen sker fort bland virustillverkare och spammare, när deras tidigare attacker upptäcks och åtgärdas allt för snabbt måste de ta till nya metoder för att sprida sina program, länkar och spam. Under året har jag sett en utveckling där html-koden och javascript-koden som ska sprida malware blivit mer och mer avancerad för att försvåra undersökning. Jag har inriktat mig på metoder som ska fungera på längre sikt och inte kräver en ständig manuell uppdatering. Mest grundläggande är att kontrollera externa
anslutningar med iframes eller javascript mot listor över suspekta adresser. Detta går snabbt men har ingen effekt om javascript-koden på något sätt krypterats så att adressen inte står i klartext. För att komma åt krypterad javascript har jag använt verktyg som laddar in och behandlar html- och javascript-koden precis som en vanlig webbläsare och returnerar den html-kod som skapats. Detta fungerar bra för många av de krypterade javascripten jag stött på men verkyget kan få problem om det finns kod som inte följer vedertagen standard. En annan lösning jag tittat närmare på är att kontrollera hemsidornas kod mot antivirusprogram. Då många antivirusprogram har signaturer inte bara mot suspekta programfiler utan även suspekt javascriptkod kan man hitta infekterade sidor på detta sätt. Antivirusprogram tar dock mycket kapacitet och i praktiken måste man begränsa vilka sidor som ska kontrolleras. Mot slutet har jag också tittat på metoder för att snabbt se om suspekt javascriptkod dykt upp på flera oberoende hemsidor under kort tid, ett tecken på att de är infekterade. Den mest effektiva lösningen är antagligen en kombination av ovanstående metoder, där vissa metoder tar fram vilka hemsidor som bör kontrolleras ytterligare och vissa metoder kontrollerar hemsidan på olika sätt. För serp-hijacking, phishingsidor och defacement är undersökningen enklare då attacken per definition måste göras synlig. Vill man skicka besökare från Google till en annan sida måste man göra det även när ett datorprogram säger att det kommer från Google, vill man stjäla inloggningsinformation måste man se till att adressen till ens phishingsida sprids publikt. Utvärdering av resultat Att nästan var tionde rapporterad attack fortfarande är aktiv är sämre än jag väntat mig. Det är dock stor skillnad mellan de olika webbhotellen och de flesta
webbhotellen tar rapporterna på allvar och vidtar nödvändiga åtgärder. Ett stort antal av de rapporterade attackerna har åtgärdats och efter att ha jobbat med abuse på två av de större svenska webbhotellen under projekttiden vet jag att de attackerna som rapporterats oftast inte rapporterats eller varit kända tidigare. Totalt har 1 320 domännamn som attackerats och rapporterats rensats upp och jag anser att projektets mål har uppfyllts och att hemsidor under.se har blivit tryggare att surfa på. Förslag på förbättringar Ett förslag på hur man ska få fler attacker att åtgärdas är att låta.se kontakta ägarna av de domäner som attackerats. Då e-postadress inte visas i whoisinformation är detta enda möjligheten att kontakta ägaren på rätt adress. I många fall kan ägaren av domänen sakna kompetens för att själv åtgärda problemet men kan då trycka på webbhotellet för att vidta åtgärder eller ge support. Systemet är anpassat så att man enkelt kan söka djupare och inte bara undersöka förstasidan på domänen. Det är helt enkelt en fråga om serverresurser, ju fler och snabbare servrar, desto bredare och djupare kan man söka. Framtida arbeten Förhoppningen är att projektet kan fortsätta i någon form i framtiden. Systemet för att scanna av hemsidor kan även användas för att regelbundet kontrollera alla sidor för ett visst webbhotell eller annat företag. Tanken är också att inom kort lansera en tjänst där ägare av hemsidor själva kan kontrollera sin sida.