Databasen avslöjar vad angriparen gjort
När en WordPress-sajt har blivit hackad räcker det inte att ta bort det som syns. Angriparna lämnar nästan alltid spår i databasen: nya administratörskonton, inlägg som publicerats under falska författare och ändrade inställningar. Business IT Support gör forensiska genomgångar av WordPress-databaser åt företag i hela Sverige, och i den här artikeln går vi igenom hur vi arbetar, med skärmdumpar från en verklig undersökning på en AWS-server. Att lämna konton eller inlägg kvar i databasen innebär att angriparen kan komma tillbaka, eller att sajten fortsätter visa innehåll som skadar företagets rykte. Därför granskar vi databasen systematiskt, och vi gör det med en bevarad kopia, så att inget bevismaterial går förlorat. Genomgången ger också svar på frågor som när intrånget skedde, hur många konton som skapades och om något annat än WordPress ligger bakom, vilket är avgörande för att kunna stänga ingångsvägen på riktigt. Det ger också underlag för att bedöma om personuppgifter kan ha påverkats och om intrånget behöver anmälas vidare.

Steg 1: titta på serverns belastning och larm
Vi började med att kontrollera servern. Kommandot top visar belastning, minne och vilka processer som drar mest resurser. På skärmdumpen var servern i vila med låg belastning, vilket är en bra utgångspunkt för jämförelser. Dessutom granskade vi ett CloudWatch-larm för CPU-användning i AWS, eftersom ett oväntat belastningsmönster ofta är det första tecknet på missbruk, till exempel när en angripare kör utskick eller skript i bakgrunden. Ett larm som utlöses utan att trafiken har ökat är värt att undersöka direkt. Genom att kombinera mätvärden från servern med larm i molnet får man en tidslinje som visar när något började avvika. Den tidslinjen jämför vi sedan med tidpunkterna i databasen, till exempel när konton och inlägg skapades. Stämmer tidpunkterna överens blir bilden av intrånget tydlig, och det blir lättare att avgöra hur länge angriparen har haft åtkomst och vad som kan ha påverkats under tiden. Mätvärden och larm kostar lite att ha på plats men sparar mycket tid när något väl händer, eftersom de visar när avvikelsen började.

Steg 2: sök efter inlägg som angriparen publicerat
Därefter frågade vi databasen efter de senaste publicerade inläggen med ID, titel, status, datum och författare. Resultatet visade två inlägg med titeln Hacked by som var publicerade samma dag, av två författar-ID som inte hörde till sajtens ordinarie redaktörer. De legitima inläggen hade äldre datum och författar-ID 1, så skillnaden var tydlig. Frågan sorterar inläggen efter publiceringsdatum, och därför hamnar nya, okända inlägg överst i listan. Samma upplägg fungerar för sidor och för andra inläggstyper. Vi granskar sedan innehållet i de misstänkta inläggen, eftersom de kan innehålla länkar, script eller omdirigeringar utöver rubriken. Därefter tar vi bort eller återställer dem och kontrollerar även menyer och widgets, där angriparen ibland lägger in extra länkar. Resultatet dokumenteras, så att ni kan se exakt vad som hittades och vad som gjordes, och så att uppgifterna kan användas om händelsen behöver anmälas eller förklaras för kunder. Små detaljer som datum, författar-ID och status räcker ofta för att skilja äkta innehåll från sådant som angriparen har lagt dit i hast.

Steg 3: granska alla administratörer
Sedan listade vi användare med rollen administratör. Listan innehöll ett tjugotal konton som hade registrerats under några få dagar i juli, med automatiskt genererade användarnamn, e-postadresser på domäner som example.invalid och .local samt tillfälliga e-posttjänster. Sajtens egna konton var betydligt äldre. Mönstret avslöjar skapade konton: namn som ser slumpmässiga ut, identiska prefix och registreringsdatum med några sekunders mellanrum. Med WP-CLI kan man lista administratörer med ID, inloggningsnamn, e-post och registreringsdatum i en tabell, och det ger snabbt överblick. Okända konton raderas helst med kommandot för att ta bort användare, så att relaterad data hanteras korrekt. Därefter byter vi lösenord för alla riktiga användare, databasen och hostingkontot och genererar nya säkerhetsnycklar, så att inloggade sessioner ogiltigförklaras. Ett konto som blir kvar ger angriparen en väg in igen, och därför kontrollerar vi listan en andra gång när städningen är klar. Det är ett typiskt tecken på automatiserade attacker, där ett skript skapar konton i bulk för att säkra framtida åtkomst till sajten.

Steg 4: rensa, förhindra och kontakta oss
Före varje ändring tar vi en databasdump och en filkopia. Vi granskar wp_options, bland annat siteurl, home och aktiva plugin, samt schemalagda jobb, och verifierar filerna mot originalen med wp core verify-checksums. Plugin och teman uppdateras, oanvända tas bort och tvåfaktorsinloggning aktiveras. Vi sätter upp larm och logggranskning så att nästa avvikelse upptäcks tidigt, och vi tar reda på hur angriparen kom in, annars skapas samma konton igen. Business IT Support, en del av Datorkirurgen AB, hjälper företag i hela Sverige med molnbackup, serverdrift, e-postsäkerhet och incidenthantering. Vi gör en komplett undersökning av er WordPress-databas och ger en skriftlig rapport. Kontakta oss så går vi igenom er miljö och föreslår åtgärder i prioriterad ordning. Ju tidigare ni agerar, desto mindre blir skadan för sajten, rankingen och kundernas förtroende, och desto lägre blir kostnaden för att återställa allt. Att väja en snabb och enkel lösning leder ofta till att problemet återkommer, medan en grundlig åtgärd håller över tid.

Vanliga supportfrågor
Frågor om obehöriga konton
- Hur hittar jag okända administratörer i WordPress?
- Varför har WordPress skapat konton jag inte känner igen?
- Hur listar man administratörer med WP-CLI?
- Hur tar man bort flera användare på en gång?
- Vad betyder example.invalid i en e-postadress?
- Hur ser man när ett konto registrerades?
- Hur loggar man ut alla användare?
- Hur byter man WordPress säkerhetsnycklar?
- Hur skyddar man administratörskonton?
- Hur aktiverar man tvåfaktorsinloggning i WordPress?
Frågor om hackade inlägg
- Varför finns inlägg med Hacked by på min sajt?
- Hur hittar man inlägg som en angripare publicerat?
- Hur frågar man databasen efter senaste inlägg?
- Hur tar man bort hackade inlägg?
- Kan angripare ändra mina menyer och widgets?
- Hur granskar man wp_options efter intrång?
- Hur kontrollerar man schemalagda jobb i WordPress?
- Hur tar man backup på databasen före städning?
- Vad är en forensisk genomgång?
- Hur dokumenterar man ett intrång?
Frågor om servern och support
- Hur ser man serverns belastning med top?
- Vad är ett CloudWatch-larm för CPU?
- Kan ett intrång öka serverns belastning?
- Hur verifierar man WordPress-filer mot originalen?
- Hur hittar man hur angriparen kom in?
- Hur förhindrar man nytt intrång?
- Hur anmäler man ett dataintrång?
- Kan ni undersöka vår WordPress-databas?
- Får vi en skriftlig rapport efter undersökningen?
- Hur kontaktar jag er om obehöriga administratörer?
[dk_natverk compact=”1″]