Als je 9 jaar in de IT & Webdesign zit heb je het ongetwijfeld wel eens meegemaakt dat een WordPress website gehacked is - direct of indirect. Het komt altijd onverwachts en krijgt de hoogste prioriteit. Stuur maar een berichtje naar huis dat je wat later bent, want er moet een boel gebeuren - alleen wat er precies gebeuren?
Belangrijk om te weten is dat een website kan worden geïnfecteerd met malware, waardoor de hacker toegang krijgt tot je website. De meeste payload injecties zijn gemaakt voor WordPress - waar meer dan 42% van de websites op draait - en volledig geautomatiseerd. Dagelijks wordt je website bezocht door talloze bots. Als er een plug-in is waar een lek in zit wordt daar misbruik van gemaakt.
Malware is meestal dormant (Zzz)
Als deze malware gelijk actief gaat en de site overneemt kan een simpele actie als een backup terugzetten het al oplossen. Dit is dan ook de reden dat malware eerst even een tijdje niet actief is. Wij noemen dit dormant. Door deze manier zit de infectie in een hele reeks van backups. Soms wel meer dan zes maanden.

Het gebeurt zo vaak, maar zet alsjeblieft geen backup terug om vervolgens door te gaan met je werkzaamheden. Zo werkt het helaas niet - was het maar zo makkelijk. In de meeste gevallen maak je het alleen maar erger. Dit is dan ook waarom het belangrijk is om te weten dat malware meestal dormant is voor een tijdje.
Stappenplan: dit moet je doen bij een breach
Misschien zijn dit niet de beste stappen om een breach aan te pakken, maar door de jaren heen heeft het voor mij toch aardig goed gewerkt. Hoewel het zeer belangrijk om de gedupeerden en slachtoffers op de hoogte te stellen, moet je eerst het 'gat' dichtmaken. Zo ligt de prioriteit op het beperken van de schade. In grote lijnen zijn er zes stappen wat je moet doen als je WordPress website is gehacked:
1: zet de website in quarantaine
Maak een kopie van de website en zet deze in een quarantaine omgeving of op een DMZ (Demilitarized zone). Zet de huidige website offline. Het is belangrijk dat de site in dit stadium nergens meer toegang tot heeft. Mocht er een backdoor - ofwel een achterdeur - in de website zitten verstopt, dan kan deze in ieder geval niet worden geëxploiteerd. Als deze versie draait verwijder je alle andere bestanden op de live omgeving en zet je er een maintainace file voor - gelieve met statuscode 503, zodat je SEO niet een flinke klap krijgt.

2: wijzig alle wachtwoorden
In dit stadium wijzig je alle wachtwoorden op de website. Later ga je alles migreren naar een nieuwe versie, maar het is best-practice om gelijk alle wachtwoorden aan te passen in het geval dat je het later vergeet.
Het is wel eens voorgekomen bij een partij die wij kennen. Die hebben het probleem opgelost in de quarantaine omgeving en deze klakkeloos weer live gezet - spoiler: deze werd na 6 maanden weer gehacked. En de back-ups? Je raad het al.. die waren ook allemaal geinfecteerd... Hieronder een lijstje van de wachtwoorden die je sowieso moet aanpassen:
- Alle gebruikerswachtwoorden
- Het wachtwoord van je database
- Het wachtwoord van je SMTP server / API key
- Wachtwoord van je caching (Redis/Memedcache)
Het is ó zo belangrijk dat je sterke wachtwoorden gebruikt. Bij voorkeur de standaard gegenereerde wachtwoorden van je wachtwoordenkluis, zoals LastPass, Bitwarden, Apple Keychain of KeePass. Versterk deze met een 2FA (tweeweg authenticatie) waar mogelijk.
3: informeer de gedupeerden
Als het goed is is er een standaard mail te vinden in je calamiteitenplan bij een hack - uuhm. Nouja, als je die niet hebt en het je teveel tijd kost, zorg er dan voor dat je die website weer online krijgt binnen 24 uur. Daarna ben je verplicht om er een melding van te maken, alleen wordt dit vaak niet gewaarborgd. Iedereen wiens gegevens ten prooi is gevallen moet een mail krijgen welke gegevens op straat is komen te vallen.
Zo kreeg mijn moeder afgelopen jaar een mail van het UWV dat haar CV - samen met die van 100.000 anderen - op straat is komen te vallen door een datalek. Oeps.. Het kan de beste overkomen. Op dat moment is meestal de lek gevonden en dichtgemaakt. Je wilt natuurlijk niet tegen de gedupeerden zeggen dat alleen hun naam is gelekt, maar dat de rest nog komt - want 'ze zitten nog in het systeem'.
4: schoon de omgeving op
Dan komt de leukste fase... je moet je website opnieuw opbouwen. Werk je met WordPress, dan zet je er een frisse installatie op en zet je alles over naar je nieuwe omgeving. Nu maar open dat die website niet al te veel pagina's had. Als je geen vertrouwen hebt in je eigen technische kennis en kunde, dan is een frisse installatie de beste optie. Ook

Wanneer je in bezit bent van meer ervaring kan je ook zelf op onderzoek uit gaan om het virus op te sporen. Al zou je dit artikel dan ook niet hoeven te lezen (wordt gewaardeerd ;-). Wees gewaarschuwd, want het virus kan weer dormant zijn en verstopt zitten.
Zelf ben ik in het bezit van een reeks Cisco certificaten, heb ik mijn verdieping server & netwerken op bachelor niveau behaald, beschik ik over gevorderde kennis over IT-Security en heb al heel wat jaren WordPress ervaring. Schouderklopje? Nee, dit zeg ik omdat zelfs ik er nog voor zou kiezen om alles over te zetten naar een fresh install. Malware wordt met de dag slimmer.. En ik niet...
5: verscherp je beveiliging
Iets wat je al gedaan zou moeten hebben, maar dat is natuurlijk altijd achteraf. Zorg voor een firewall, zoals CloudFlare. Gebruik een (betaalde) beveiligingsplug-in, zoals Wordfence en monitor al je activiteiten - het liefst extern. Als iemand heeft ingebroken in je website en zelf alle logs en sporen kan verwijderen is er iets misgegaan.
Wij hebben zelfs eens meegemaakt dat iemand een cronjob had geschreven waarin de credentials zichtbaar waren van de externe FTP server. Even snel verbinden en alle logbestanden waren verwijderd. Denk ook daar goed over na. Deze website is in ieder geval onhackbaar, omdat 99% statisch is gecodeerd en er is geen loginsysteem. Het set-and-forget principe. Artikelen als deze publiceren is dan wel weer een pain in the ...
6: rol de nieuwe versie uit
Als je op een shared hosting zit is het verstandig om aan de provider te vragen of zij alles voor je kunnen verwijderen op de server. Vaak kan jij alleen bij de public_html / private_html en 1 map daarboven. De malware kan nog een laagje dieper zitten dan jij kan zien. Als je de site draait op een VPS raad ik je eigenlijk aan om ook deze te wipen. Als dat allemaal is gedaan rol je de nieuwe versie uit van je website.
Gefeliciteerd! Je website is nu weer malware proef.

Zo voorkom je dat je WordPress website gehacked wordt
Zorgt een zware firewall ervoor dat je niet meer kan worden gehacked? Nee, niet per se. Meerstapsverificatie dan? Dat stopt een hacker ook niet nee. Wat werkt dan wel? IT-security werkt met 7 verschilende lagen. Je zorgt ervoor dat je IT middelen veilggesteld staan en dat het een stuk moeilijker is om in te breken. Zelfs de beste IT-infrastructuur kan niet op tegen een kwaadwillig persoon die fysieke toegang heeft tot de server.
Hup, zo onder de arm
Bij een werkgever hebben wij zelfs wel eens meegemaakt dat een vreemd persoon de server afkoppelde en onder zijn arm probeerde mee te nemen naar buiten. Dat was even schrikken, maar grote respect voor zijn gedurfdheid. Tegenwoordig zit er een slot op die deur met een camera. Geloof het of niet, maar dat is ook al een stukje cyber security.
Je website veilig houden (voorzorgsmaatregelingen)
Natuurlijk is het best-practice om je website vantevoren goed dicht te timmeren. Hieronderstaat een lijstje met voorzorgsmaatregelingen die je kan doen om je website veiliger te houden:
- Monitor en log alle activiteiten van je website (gelieve extern opslaan)
- Zorg dat niemand (eenvoudig) fysieke toegang heeft tot je server
- Stel in dat alleen specifieke IP adressen mogen inloggen op de admin omgeving (whitelist)
- Stel in dat elke aanvraag moet komen van het domein (Referral URI)
- Gebruik je plug-ins? Raadpleeg een 'WordPress vulnerability database' op bekende lekken
- Geef alleen de nodige rechten aan je gebruikers - beslist niet meer
- Alle wachtwoorden moeten sterk zijn en veilig worden opgeslagen
- Zorg voor (meer)dagelijkse back-ups (gelieve extern opslaan)
- Houdt alle WordPress plug-ins en thema's up-to-date
- Zorg voor een stappenplan / plan van aanpak voor je disaster recovery
- Maak je zelf plug-ins? Raadpleeg de OWASP (security by design)
- Gebruik je caching (redis/memcached)? Onderschat deze security niet!
Niets is een garantie om onhackbaar te blijven. De kunst zit hem (helaas) niet alleen in het dichttimmeren van een website of server, maar ook in het herstellen van de schade - ook wel disaster recovery. Deze zijn immers verplicht als je een cyber security verzekering afsluit.