Malafide .nl-websites ontdekken met behulp van logodetectie

LogoMotive ondersteunt bij de strijd tegen internetcriminaliteit door oneigenlijk logogebruik op te sporen

Close-up van de handen van een programmeur op een toetsenbord

Logo’s vergroten de herkenbaarheid van een website en scheppen vertrouwen. Oplichters plaatsen daarom vaak de logo’s van bekende organisaties op hun misleidende website. Nietsvermoedende internetgebruikers denken hierdoor bijvoorbeeld dat ze te maken hebben met een legitieme overheidswebsite of webshop, terwijl ze eigenlijk een website bezoeken die desinformatie verspreidt, een phish bevat of namaakgoederen of helemaal niets levert. Bij SIDN Labs ontwikkelden we daarom LogoMotive: een prototype waarmee abuse-analisten verdachte domeinnamen mogelijk sneller in het vizier krijgen, door te kijken naar oneigenlijk logogebruik op .nl-websites. In deze blog bespreken we waarom we LogoMotive ontwikkelden, welk onderzoek we ervoor uitvoerden en hoe het systeem werkt.

Malafide websites gebruiken vaak logo’s van gezaghebbende organisaties

Bij SIDN Labs zijn we continu op zoek naar nieuwe manieren om domeinnaammisbruik aan te pakken en de gebruikers van .nl-domeinnamen zo te beschermen tegen internetcriminaliteit. We zien dat phisingwebsites, nepwebwinkels en andere malafide websites vaak logo’s van gezaghebbende organisaties laten zien. Denk bijvoorbeeld aan het logo van de overheid op een phishingwebsite waarop de loginpagina van DigiD is nagemaakt (Figuur 1a) of het logo van een keurmerk op een nepwebwinkel (Figuur 1b). Door het laten zien van deze logo’s scheppen malafide websites onterecht vertrouwen, waardoor ze internetgebruikers kunnen oplichten of voorzien van valse informatie.

Een phishingwebsite waarop de loginpagina van DigiD is nagemaakt.

Figuur 1a: Een phishingwebsite waarop de loginpagina van DigiD is nagemaakt.

Een screenshot van een nepwebwinkel waar linksonder een Trustpilot- en ISO-logo zijn geplaatst, terwijl deze webwinkel hierbij niet is aangesloten of voor gecertificeerd is.

Figuur 1b: Een nepwebwinkel waar linksonder een Trustpilot- en ISO-logo zijn geplaatst, terwijl deze webwinkel hierbij niet is aangesloten of voor gecertificeerd is.

Detecteren van potentieel verdachte websites door logogebruik

Ons doel is om abuse-analisten te helpen bij het vinden van verdachte websites in de .nl-zone door te kijken naar oneigenlijk gebruik van logo’s. Het prototype dat we hiervoor ontwikkelden noemen we LogoMotive. We bouwen hierbij verder op de inzichten die we vorig jaar opdeden in een pilot die we samen met Currence deden.

SIDN en Currence samen in actie tegen nepwebwinkels

Algoritme

Voor LogoMotive hebben we twee belangrijke componenten nodig. De eerste is een algoritme dat automatisch logo’s op .nl-websites detecteert. De .nl-zone bestaat uit ruim 6.2 miljoen domeinnamen die doorlopend veranderen. Dit betekent dat het algoritme efficiënt moet zijn, omdat het anders te veel tijd kost om de hele zone regelmatig te analyseren.

Daarnaast moet het algoritme verschillende logo’s kunnen herkennen en willen we later semiautomatisch nieuwe logo’s kunnen toevoegen. Deze flexibiliteit is belangrijk, omdat oplichters niet altijd dezelfde logo’s gebruiken op hun websites. De laatste tijd zien we bijvoorbeeld steeds vaker de logo’s van postbedrijven in phishingwebsites, waarschijnlijk omdat mensen nu meer online winkelen.

Dashboard

De tweede LogoMotive-component is een dashboard waarmee abuse-analisten de gevonden websites eenvoudig kunnen analyseren. Analisten moeten bijvoorbeeld op het dashboard kunnen aangeven of een gevonden domeinnaam bonafide of malafide is en een vervolgactie toevoegen, zoals het offline halen van een malafide domeinnaam of koppelen van een bonafide domeinnaam aan een organisatie.

Bewuste beperkingen o.b.v. ethische overwegingen

Vanuit ethisch oogpunt willen we LogoMotive op een aantal vlakken bewust beperken. Zo willen we dat het algoritme alleen logo’s herkent en geen andere visuele objecten zoals gezichten. Dit bereiken we door het algoritme zelf te trainen en hiervoor alleen afbeeldingen van logo’s te gebruiken. Ook moet LogoMotive zich beperken tot het analyseren van schermafbeeldingen van webpagina’s die publiek beschikbaar zijn.

Een andere eis die we aan LogoMotive stellen is dat het werkt op basis van het principe van ‘human in the loop’. Dit betekent dat het net als onze andere anti-abuse-tools geen geautomatiseerde besluiten moet kunnen nemen over domeinnamen, zoals het deactiveren ervan. De output van LogoMotive is dus adviserend van aard en we tonen de output in een dashboard, zodat abuse-analisten potentieel verdachte domeinnamen zorgvuldig en efficiënt kunnen beoordelen.

LogoMotive onder de motorkap

We beschrijven nu eerst op hoofdlijnen hoe LogoMotive werkt. Daarna gaan we dieper in op de twee belangrijkste componenten; het logodetectie-algoritme en het dashboard.

Een lijst met domeinnamen is het startpunt van LogoMotive, in ons geval de lijst met domeinnamen in de .nl-zone. De eerste stap is het maken van schermafbeeldingen. Het systeem bezoekt hiervoor geautomatiseerd de websites die aan de domeinnamen in de lijst gekoppeld zijn en maakt meerdere schermafbeeldingen van iedere website. Het kost veel tijd om schermafbeeldingen te maken, omdat de webpagina inclusief plaatjes, achtergronden en andere opmaak eerst geladen moet worden. Daarom proberen we zo slim mogelijk te beslissen welke websites het systeem moet bezoeken. Zo slaan we bijvoorbeeld websites over als de inhoud niet is veranderd ten opzichte van het vorige bezoek, of als precies dezelfde pagina al op een andere website is gevonden.

Tijdens de tweede stap worden de schermafbeeldingen geanalyseerd met ons logodetectie-algoritme (zie verderop). Op dit moment ondersteunt het algoritme de logo’s van 16 organisaties die vaak worden gebruikt in phishes waaronder iDEAL, Rijksoverheid, SIDN diverse banken, keurmerken en postbedrijven.

De uitkomst van deze analyse is een lijst met logo’s die zijn gevonden op de schermafbeeldingen van een website. We slaan deze resultaten op in een database. Ten slotte kan een abuse-analist met behulp van een eenvoudig dashboard door de resultaten gaan en deze beoordelen (zie verderop).

Logo’s detecteren met YOLO

Het hart van LogoMotive is het logodetectie-algoritme. We hebben gekozen voor het bestaande YOLO (You Only Look Once) algoritme, omdat dit neurale netwerk speciaal is ontworpen voor objectdetectie. YOLO is ook sneller dan de meeste andere neurale netwerken voor objectdetectie. Daarnaast hadden we al positieve ervaringen opgedaan met YOLO tijdens de eerdere pilot in samenwerking met Currence.

Machine learning methode die bepaalt of nepwebwinkels merklogo’s gebruiken

Gedurende het ontwikkelproces hebben we ook een andere aanpak overwogen op basis van SIFT. Dit is een algoritme dat kenmerkende elementen in afbeeldingen vindt en berekent hoeveel elementen twee afbeeldingen gemeen hebben. In ons geval zou een schermafbeelding een logo bevatten als de schermafbeelding en het logo voldoende overeenkomstige elementen zouden hebben. SIFT heeft als voordeel dat het minder rekenkracht vereist dan neurale netwerken en geen trainingdata nodig heeft. We kwamen er echter al snel achter dat SIFT ondermaats presteerde en langzaam was.

Automatisch genereren van trainingdata

YOLO herkent pas objecten op afbeeldingen nadat het is gevoed met een grote hoeveelheid trainingdata. In ons geval bestaat trainingdata uit schermafbeeldingen waarvan bekend is dat er een of meer logo’s te zien zijn is, en bijbehorende labels die beschrijven waar op de afbeeldingen de logo’s te zien zijn. Deze trainingdata zouden we handmatig kunnen verzamelen door schermafbeeldingen te annoteren. Dit zou echter tientallen uren per logo kosten, om een redelijke dataset op te bouwen. Dit is een behoorlijke investering die het niet makkelijk maakt om LogoMotive uit te breiden met nieuwe logo’s. We hebben daarom een slimme methode bedacht om automatisch trainingdata te genereren.

Onze methode heeft twee inputs nodig, namelijk het logo van een organisatie en schermafbeeldingen van een paar duizend willekeurige websites. Beide zijn makkelijk te verkrijgen: het logo staat altijd op de website van een organisatie en we kunnen makkelijk een willekeurige subset van de .nl-zone crawlen om aan schermafbeeldingen te komen.

We plakken vervolgens de logo’s op willekeurige plaatsen op de schermafbeeldingen. Hierbij passen we aspecten als grootte, scherpte, kleur en het deel dat zichtbaar is steeds willekeurig aan. Deze aanpassingen zorgen ervoor dat het neuraal netwerk robuust wordt tegen dit soort veranderingen in logo’s die op echte webpagina’s ook voorkomen. Onze methode zorgt ervoor dat we snel grote en kwalitatief goede datasets genereren, zonder dat daar manuren aan te pas komen. Figuur 2 geeft een voorbeeld van hoe we een dergelijk datapunt genereren.

Screenshot van het geautomatiseerd genereren van trainingdata

Figuur 2: We genereren geautomatiseerd trainingdata door logo’s te combineren met willekeurige schermafbeeldingen tot een trainingdatapunt.

Het LogoMotive-dashboard voor analisten

Figuur 3 laat het LogoMotive-dashboard zien, met daarop al voorbeelden van websites die het SIDN-logo bevatten (namelijk www.sidn.nl en www.sidnlabs.nl). Het dashboard gebruikt de output van het YOLO-algoritme dat we hebben getraind zoals hierboven beschreven.

Screenshot van de Logomotive webapp

Figuur 3: Het LogoMotive-dashboard toont websites waarop een logo is gevonden.

Figuur 4 toont het scherm dat abuse-analisten te zien krijgen als ze doorklikken op een van de resultaatregels van Figuur 3, in dit geval sidn.nl. Op het scherm staat de schermafbeelding met daarop het gedetecteerde logo en de zekerheid (in dit geval 0.98, ofwel 98%). Ook toont het dashboard aanvullende informatie die helpt bij het zorgvuldig en efficiënt beoordelen van een website. Analisten kunnen het resultaat onder in het scherm labelen en hier eventueel een vervolgactie kiezen. De labels kunnen we per logo eenvoudig aanpassen, afhankelijk van de voorkeuren van de analist.

Screenshot van de LogoMotive-webapp waarop het gevonden logo zichtbaar is, voorzien van ruimte om een annotatie met commentaar in te vullen.

Figuur 4: Voor elke website zijn de details te bekijken. Je ziet de schermafbeelding(en) waarop het logo is gevonden en ruimte om een annotatie met commentaar in te vullen.

Hoe goed werkt het?

Een belangrijke vraag is natuurlijk hoe goed LogoMotive logo’s detecteert. Het antwoord is echter niet zo eenvoudig, omdat er altijd een balans is tussen het aantal logo’s dat niet wordt gedetecteerd (false negatives) en onterechte detecties (false positives). Deze balans is afhankelijk van hoe zeker het algoritme moet zijn voordat het de beslissing maakt dat een afbeelding een logo bevat (de ‘confidence threshold’). Daarnaast is het totaal aantal false negatives onbekend, omdat we niet weten hoeveel logo’s er in de hele .nl-zone te vinden zijn.

We stellen het systeem daarom zo in dat we ongeveer 10% false positives verwachten. Dit percentage gebruiken we ook voor andere detectiesystemen en is acceptabel voor abuse-analisten die de uitkomsten verwerken. Een afstelling die minder false positives oplevert is mogelijk, maar het systeem mist dan meer logo’s.

We bepalen de confidence threshold per logo door handmatig een kleine steekproef van websites te bekijken. Voor het Rijksoverheid-logo zagen we bijvoorbeeld dat een confidence threshold van 90% goede resultaten leverde, en voor het Thuiswinkel Waarborg-logo bleek 85% het best. We weten niet precies waarom het Rijksoverheid-logo een hogere threshold nodig heeft, maar denken dat dit komt doordat dit logo voor een deel bestaat uit een donkerblauwe rechthoek die niet erg onderscheidend is. Het systeem herkent logo’s zelfs als ze maar half in beeld zijn, een andere kleur hebben, of erg klein op de achtergrond staan. Daardoor vermoeden we dat het aantal logo’s dat gemist wordt minimaal is, maar dat gaan we later in meer detail uitzoeken.

Evaluatie met Rijksoverheid en toekomstplannen

De afgelopen maanden hebben we het prototype van ons logodetectiesysteem sterk verbeterd. Met LogoMotive hebben we het fundament gelegd voor verschillende vervolgonderzoeken.

De komende tijd evalueren we hoe het systeem in de praktijk werkt. We richten ons hierbij op onze eigen anti-abusedesk, maar kijken ook naar grote organisaties met een gezaghebbend logo dat vaak wordt misbruikt. Zo zijn we onlangs een pilot gestart met de Dienst Publiek en Communicatie (DPC) van de Rijksoverheid. De verwachting is dat DPC met LogoMotive malafide websites kan vinden die het Rijksoverheid-logo onterecht tonen, zoals de phishingwebsite in Figuur 1a, maar ook legitieme overheidswebsites die nog onder de radar waren. We publiceren binnenkort een blog met resultaten over deze pilot.

Daarnaast zijn we van plan ook machine-learning vraagstukken verder te onderzoeken. Wat is bijvoorbeeld het maximumaantal logo’s dat het neurale netwerk tegelijkertijd kan herkennen? Een ander plan is te onderzoeken of we het motief van het logogebruik automatisch kunnen classificeren met behulp van andere databronnen. Op basis van eerder onderzoek naar nepwebwinkels weten we dat bepaalde gegevens, zoals de tijd van domeinregistratie, een voorspellende waarde kunnen hebben bij het herkennen van misbruik. Mogelijk vinden we een vergelijkbaar patroon bij logo’s die met malafide intenties worden getoond. In toekomstige blogs gaan we hierop in. Ten slotte zijn we van plan om de resultaten van LogoMotive te integreren met DEX, de tool die we eerder ontwikkelden om inzicht te krijgen in het ecosysteem rondom een verdachte domeinnaam.