“De scan zegt dat de site schoon is, maar Google waarschuwt nog steeds.” Die zin horen we regelmatig van ondernemers die zelf al een beveiligingsplugin hebben geïnstalleerd en een scan hebben gedraaid. Ze hebben het goed gedaan, en toch klopt het resultaat niet. Dat ligt niet aan hen, maar aan wat een scan wel en niet kan.

Een malwarescan van uw website is een nuttig hulpmiddel, mits u weet hoe hij werkt en waar zijn grenzen liggen. In dit artikel leggen we in gewone taal uit wat er gebeurt als u op “scan starten” klikt, welke soorten scans er zijn, waarom ze dingen missen en wat u doet om die gaten te dichten.

Wat malware op een website eigenlijk is

Malware op een WordPress-site is bijna altijd gewoon code: een stuk PHP dat in een bestand is geplakt, een JavaScript-regel in de database, een extra bestand met een onschuldige naam in de uploads-map. Die code doet dingen die u niet wilt: bezoekers doorsturen naar gokwebsites, spampagina’s aanmaken, wachtwoorden onderscheppen of een achterdeur openhouden zodat de aanvaller later terugkomt.

Omdat het gewone code is, lijkt het vaak sprekend op legitieme code. Een regel die een bestand van internet ophaalt en uitvoert, kan onderdeel zijn van een updatemechanisme of van een inbraak. Dat is de kern van het probleem waar elke scanner mee worstelt: het verschil tussen goed en kwaad staat niet in de code zelf, maar in de bedoeling erachter.

Drie manieren waarop een scanner zoekt

Scanners gebruiken meestal een combinatie van drie technieken.

1. Handtekeningen

De scanner heeft een lijst met bekende stukjes kwaadaardige code, zogeheten handtekeningen. Elk bestand wordt vergeleken met die lijst. Vindt hij een overeenkomst, dan slaat hij alarm. Dit werkt goed tegen malware die al eerder ergens is gevonden en geanalyseerd. Het werkt niet tegen nieuwe varianten, en aanvallers weten dat: ze verhaspelen hun code net genoeg om niet meer op de lijst te lijken.

2. Integriteitscontrole

WordPress zelf, en de plugins en thema’s uit de officiële bibliotheek, zijn openbaar. De scanner kan dus elk bestand van uw site vergelijken met het origineel. Wijkt een bestand af, dan is er iets aan de hand: óf iemand heeft het aangepast, óf er is malware in geplakt. Dit is een sterke methode voor kernbestanden. Zwak punt: premium plugins en maatwerkcode hebben geen openbaar origineel, en juist daar verstopt malware zich graag. Hoe u deze controle ook handmatig uitvoert, staat in ons artikel over het controleren van kernbestanden.

3. Heuristiek en gedrag

De scanner zoekt naar patronen die verdacht zijn: code die zichzelf ontcijfert bij het laden, functies die op afstand commando’s kunnen uitvoeren, bestanden met een .php-extensie in de uploads-map, of pagina’s die pas verschijnen als Google langskomt. Dit vangt onbekende malware op, maar levert ook valse meldingen op. Een goede scanner geeft daarom een waarschijnlijkheid, geen zekerheid.

Waar de scan vandaan komt maakt uit

Er zijn twee plekken waar een scanner kan draaien, en het verschil is groot.

Van binnenuit (een plugin op uw site): de scanner heeft toegang tot alle bestanden en de database en kan dus grondig zoeken. Nadeel: hij draait op dezelfde site die mogelijk is gehackt. Malware die al binnen is, kan de plugin uitschakelen, resultaten manipuleren of zichzelf onzichtbaar maken voor de scan. Dat klinkt vergezocht, maar wij zien het regelmatig.

Van buitenaf (een externe dienst die uw site bezoekt): de scanner bekijkt uw site zoals een bezoeker of zoekmachine dat doet. Hij ziet doorverwijzingen, ingevoegde scripts en spampagina’s, maar niet de bestanden op de server. Een achterdeur die niets zichtbaars doet, vindt hij niet. Voordeel: de malware kan deze scan niet saboteren.

Een serieuze controle combineert beide. Bij hackherstel doen wij daarnaast nog iets derde: we halen een kopie van alle bestanden en de database naar een schone omgeving en scannen daar. Dan kan de malware sowieso niet meer tegenwerken.

Waarom “geen malware gevonden” niet “schoon” betekent

Zet de bovenstaande punten op een rij en u ziet waarom een schone scan geen garantie is:

  • Nieuwe of aangepaste malware staat nog niet in de handtekeningenlijst.
  • Malware in premium plugins of maatwerkcode valt buiten de integriteitscontrole.
  • Malware in de database (bijvoorbeeld een script in de instellingen van het thema) wordt door veel bestandsscanners overgeslagen.
  • Een achterdeur die niets doet totdat hij wordt aangeroepen, valt gedragsmatig niet op.
  • De scanner kan door de besmetting zelf zijn uitgeschakeld of misleid.
  • Sommige malware toont zich alleen aan bepaalde bezoekers, bijvoorbeeld op mobiel of vanuit Google, en niet aan de scanner.

Dat laatste punt verklaart de situatie uit de inleiding: Google ziet iets wat de scan niet ziet. Vooral achterdeuren zijn hardnekkig; waarom een opgeschoonde site daardoor vaak opnieuw wordt gehackt, leest u in ons artikel over backdoors in WordPress.

Hoe u een scan wél zinvol inzet

Een scan is geen eenmalige gebeurtenis maar een gewoonte. Praktisch:

  1. Laat een interne scanner dagelijks of wekelijks draaien en zorg dat de meldingen bij iemand terechtkomen die ze leest.
  2. Laat daarnaast een externe dienst uw site periodiek bekijken; veel hostingpartijen en onderhoudsbureaus doen dit standaard.
  3. Controleer regelmatig Google Search Console op beveiligingsmeldingen. Google is in feite een derde scanner, en een strenge.
  4. Vergelijk de scanresultaten met een recente schone back-up. Een bestand dat vorige week nog niet bestond, verdient aandacht.
  5. Behandel elke melding als een vraag, niet als een vonnis. Valse meldingen komen voor, maar negeren zonder te kijken is riskanter.

Een praktijkvoorbeeld: bij een installatiebedrijf uit Apeldoorn gaf de scanner wekenlang “schoon”, terwijl bezoekers uit Google op een nepwinkel belandden. De malware zat in de database en toonde zich alleen aan bezoekers met Google als herkomst. Pas een externe scan met een Google-verwijzer en een handmatige controle van de database brachten het aan het licht. Twee bestanden en één databaseregel later was het opgelost, plus het lek in een verouderde plugin gedicht.

Conclusie

Een malwarescan is een goede eerste controle en een onmisbaar onderdeel van doorlopend beheer. Het is geen eindoordeel. Als u vermoedt dat er iets mis is terwijl de scan niets vindt, vertrouw dan uw vermoeden en laat iemand met ervaring meekijken. Bij WebMaintor is de combinatie van interne en externe scans onderdeel van het beveiligingspakket dat wij voor websites verzorgen, en bij twijfel kijken wij handmatig mee.

Wilt u eerst zelf een indruk krijgen, dan kunt u een gratis websitecheck aanvragen; daarin nemen we ook een externe scan mee.