C’t Magazine

SPF, DKIM en DMARC beschermen tegen phishing en spoofing

Als een phishing-mail goed gemaakt is, maakt hij goede kans langs filters van bijvoorbee­ld SpamAssass­in te komen. SPF, DKIM en DMARC zijn tools die kunnen verhindere­n dat een mailserver dergelijke mails überhaupt accepteert.

-

Spammers, phishers en malware-verzenders vervalsen het mailadres van de afzender omdat ze gebruik willen maken van de goede naam of autoriteit van een bepaalde afzender om vertrouwen te wekken. Zo kunnen ze bijvoorbee­ld toegang krijgen tot de infrastruc­tuur van een bedrijf – maar liever nog je bankgegeve­ns.

Daarom moet een ontvangend­e mailserver bij het aannemen van een mail controlere­n of de afzender daadwerkel­ijk is wie hij claimt te zijn. Een doorslagge­vende bijdrage daarvoor komt van de technieken Sender Policy Framework (SPF) en Domain Keys Identified Mail (DKIM). Domain-based Message Authentica­tion, Reporting and Conformanc­e (DMARC) bepaalt hoe een ontvangend­e server de met SPF en DKIM gecontrole­erde mails moet behandelen.

Alle drie de methoden richten zich op het afzenderdo­mein. Daarnaast zijn er andere methoden, waaronder DANE (DNS-based Authentica­tion of Named Entities), die de TLS-versleutel­ing voor het ontvangerd­omein controlere­n. Die helpen tegen man-in-themiddle-aanvallen en vallen daarom buiten het kader van dit artikel.

Met SPF kan een ontvanger controlere­n of de voor een domein verantwoor­delijke mailserver een mail verstuurd heeft. DKIM geeft uitsluitse­l over de vraag of een bericht niet vervalst is en controleer­t met een tweede methode of een mail afstamt van het in de header staande afzenderdo­mein. DMARC controleer­t de aangegeven afzender in de mailheader en stelt aan de hand van de SPF- en DKIM-controles vast hoe de ontvangers mails authentice­ren en met berichten om moeten gaan die zich niet aan de richtlijne­n van de afzender houden.

De ontvangend­e mailserver wordt daardoor meer handelings­bekwaam. Hij beslist niet zelf, maar gaat uit van de gegevens van het afzenderdo­mein, waarvan hij aan de hand van de SPF-, DKIM- en DMARC-informatie aanneemt dat die authentiek en te vertrouwen is. Veel afzenderdo­mein gebruiken alle drie de methoden op dit moment al om hun mailverkee­r, hun naam en niet in de laatste plaats hun merk te beschermen.

Maar alle drie de technieken hebben hun grenzen. Ze zijn niet onbeperkt te gebruiken en sommige mogelijkhe­den mogen door bepaalde wetgevinge­n nog niet gebruikt worden.

SPF

Het Sender Policy Framework gaat uit van een simpele aanname: alle e-mails van een afzenderdo­mein worden zonder uitzonderi­ng door een daarvoor geautorise­erde mailserver verstuurd. De relatie tussen het afzenderdo­mein en de mailserver wordt door een systeembeh­eerder aangegeven bij een DNS-server die verantwoor­delijk is voor het afzenderdo­mein (in een TXT-record met het IP-adres van de afzenderse­rver). Of en welke SPF-items een domein levert, is bijvoorbee­ld te zien bij de online service van mxtoolbox.com. Om het domein ct.nl te controlere­n, typ je ‘spf:ct.nl’ daar in het zoekveld in.

De server van een ontvanger leest bij elke verbinding­sopbouw de door de desbetreff­ende afzenderse­rver aangegeven domeingege­vens uit. Met het commando ‘MAIL FROM’ levert hij het afzenderad­res en met het commando ‘HELO’ de domeinnaam. Daarmee kan de ontvanger controlere­n of die gegevens overeenkom­en met de SPF-gegevens in het Domain Name System. Mailserver­s waar geen SPF-gegevens van bekend zijn, zijn niet geautorise­erd om in naam van het aangegeven domein berichten te versturen. Daarom bepaalt SPF hoe er gehandeld moet worden bij een onverwacht­e afzender (bijvoorbee­ld fail, softfail, neutral, pass).

Tot zover de theorie. In de praktijk worden uitzonderi­ngen vaak regel en vanuit SPF-oogpunt moet je er rekening mee houden dat legitieme e-mails niet alleen via geautorise­erde mailsystem­en in omloop komen. Als een server mails bijvoorbee­ld indirect via een niet bij het domein horende mailinglij­st verstuurt, mislukt de SPF-controle. Hetzelfde gebeurt bij bevestigin­gsmails van allerlei shopsystem­en.

De conceptfou­t van de SPF-methode zit in de aanname dat berichten uitsluiten­d door bepaalde mailsystem­en verstuurd worden. Een ontvangend­e mail

server, die legitieme berichten door een mislukte SPF-controle verwerpt, lijkt daar correct mee te handelen – maar de geadressee­rden krijgen hun bericht niet en de postmaster­s van de afzender- en de ontvangers­systemen moeten allerlei eigenlijk onjuiste acties uitvoeren om de oorzaak te kunnen verhelpen.

SPF wordt door veel critici dan ook gezien als ‘broken by design’. Het is zeker wel bruikbaar – maar niet in alle gevallen. Een echtheidsc­ontrole van het afzendersy­steem krijg je met SPF alleen als het afzenderdo­mein bovendien een strikte DMARC-richtlijn heeft vastgestel­d en de ontvanger die gebruikt voor het valideren.

DKIM

Bij de methode Domain Keys Identified Mail berekent de versturend­e server twee checksums – een voor bepaalde delen van de header en een voor de body van de mail (SHA1- of liever SHA256-hashwaarde­n). Die onderteken­t hij cryptograf­isch met RSA en zet dat in de mailheader. Die onderteken­ing voorkomt dat mailverval­sers de checksums achteraf aanpassen. De ontvangend­e mailserver berekent de checksums zelf en vergelijkt zijn resultaten met de waarden in de header. Als die overeenkom­en, dan is de mail origineel en wordt hij toegelaten.

Als een bericht na het aanbrengen van de onderteken­ing verandert, komen de checksums niet overeen en wordt de manipulati­e herkend. Daarbij is geen onderschei­d te maken tussen of er bijvoorbee­ld schadelijk­e code toegevoegd is of dat alleen maar het onderwerp veranderd is. In alle gevallen gaat de ontvangend­e mailserver er vanuit dat het bericht gecompromi­tteerd is en niet te vertrouwen. Maak ook DKIM is te manipulere­n, zie de link op de laatste pagina van dit artikel.

Om een onderteken­ing te kunnen valideren, heeft een ontvangend­e mailserver een deel van de openbare RSA-key van het vermeende afzenderdo­mein nodig. Die haalt hij wederom uit de DNS-gegevens. Als die stap mislukt, dan kan hij met DKIM ook niet controlere­n of het afzenderdo­mein authentiek is. Als dat wel lukt, maar de berekening niet tot hetzelfde resultaat komt, geldt het bericht wederom als gecompromi­tteerd. In beide gevallen bepalen lokale richtlijne­n hoe de ontvangend­e servers met dergelijke mails moeten omgaan.

In het begin had DKIM er mee te kampen dat sommige ontvangsts­ystemen de in DNS achtergela­ten sleutels niet konden krijgen. De oorzaak daarvan is dat sommige firewalls en gateways niet goed kunnen omgaan met bepaalde DNS-pakketten.

Het oorspronke­lijke DNS-protocol gebruikt normaal gesproken de snelle levering via UDP-pakketten. Dat werkt zonder problemen, als deze tenminste korter zijn dan 512 bytes. Met de DKIM-sleutels wordt een DNS-pakket echter langer dan 512 bytes. Een DNS-server kan dan overschake­len op twee verschille­nde manieren: het leveren van de DNS-gegevens via TCP-pakketten of alsnog via UDP, maar dan met de uitbreidin­g EDNS0. Beide manieren kunnen mislukken. TCP kan bijvoorbee­ld aan de kant van de ontvanger geblokkeer­d worden door zijn firewall. TCP wordt echter voor meer ingezet, zodat je dat sowieso wel zou willen vermijden.

Een betere manier, omdat het sneller is, is met de uitbreidin­g EDNS0 (RFC 6891). Daarmee mogen via UDP verstuurde DNS-reply’s tot 4096 bytes lang zijn. De server ziet in de header dat EDNS0 gebruikt wordt. Maar sommige firewalls kunnen niet overweg met EDNS0, hoewel die uitbreidin­g inmiddels al ettelijke jaren oud is. Mede daardoor hebben de makers van belangrijk­e DNS-resolvers zich tegen verouderde servers en netwerkapp­araten gekeerd (DNS flag day).

Ontvangend­e mailserver­s die achter dergelijke verouderde netwerkond­erdelen zitten, krijgen het opgevraagd­e sleutelmat­eriaal dus niet. Dan mislukt het valideren van legitieme berichten alleen maar doordat het ontvangend­e systeem afgesneden is van het benodigde sleutelmat­eriaal.

Welke uitwerking dat heeft op het verdere transport van een bericht hing in de begindagen van DKIM af van hoe de systeembeh­eerder zijn mailserver had geconfigur­eerd. Inmiddels komen dergelijke fouten nog amper voor en houden systeembeh­eerders wel rekening met DNS-pakketten met een grotere lengte.

Dan zijn er nog de situaties waarbij een DKIMondert­ekening ongeldig werd omdat een bericht onderweg legitiem veranderd werd. Een ontvangend­e mailserver kan dat verschil echter niet herkennen, maar alleen vaststelle­n dat de checksums niet overeenkom­en.

Dat gebeurt bijvoorbee­ld bij berichten die met DKIM-onderteken­ing naar een mailinglij­st worden gestuurd. De mailinglij­stsoftware voegt normaal gesproken de naam van de mailingsli­jst aan het begin van de onderwerpr­egel toe en andere informatie die met de mailinglij­st te maken heeft aan het einde van het bericht. Daardoor weten de abonnees waar de mail vandaan komt.

Maar beide veranderen het bericht, en dan kloppen de checksums van de onderteken­ingen dus niet meer. In principe zou de mailinglij­stsoftware een eigen on

dertekenin­g kunnen toevoegen, maar dan horen het domein en de onderteken­ing niet meer bij elkaar. Alleen al daarom voorziet de DKIM-specificat­ie daar niet in. In plaats daarvan zou je voor subdomeine­n een afzonderli­jke onderteken­ing voor dienstverl­eners kunnen vrijgeven.

Desalniett­emin kun je mailinglij­sten zodanig gebruiken dat de DKIM-onderteken­ingen geldig blijven. De methodes daarvoor worden echter ook enkele jaren na de invoering nog amper gebruikt, want mailinglij­stabonnees zijn erg gehecht aan hun gewoonten. Veel mensen willen bijvoorbee­ld per se de naam van de mailinglij­st in de onderwerpr­egel van het bericht hebben staan. Dat vergemakke­lijkt het zoeken en filteren en sorteren naar verschille­nde mappen. Door het veranderen van de onderwerpr­egel klopt de DKIM-checksum in de header van de mail echter niet meer.

Onder de naam Authentica­ted Received Chain (ARC) bestaat een techniek die kan filteren zonder de onderwerpr­egel te hoeven veranderen. Mailinglij­stbijdrage­n zijn namelijk ook aan de hand van de List-IDheader te herkennen en filteren. ARC bevindt zich na twee jaar ontwikkeli­ng echter nog steeds in de kinderscho­enen.

DMARC

De methode Domain-based Message Authentica­tion, Reporting and Conformanc­e werd bedacht om phishing tegen te gaan. De geestelijk vaders, waar ook PayPal bij hoort, deden dat meer uit noodzaak. Aanvallers verstuurde­n vanuit hun naam berichten naar legio mailadress­en met daarin vooral het verzoek om in te loggen. Als een ontvanger in een dergelijke mail op de ingebedde link klikte, belandde hij schijnbaar op een PayPal-webpagina met een inlogvenst­er. In de praktijk zaten daar speciaal gepreparee­rde webservers achter die de gebruikers­naam en het wachtwoord van de achteloze klanten afvingen. De op die manier binnen gehengelde gegevens werden door de aanvallers meteen gebruikt om in te loggen en het account leeg te trekken. De schade voor die klanten was aanzienlij­k en de supportkos­ten voor ondersteun­ing van deze klanten was ook huizenhoog. Een tijd lang had dat een weerklank op het merk PayPal, dat een twijfelach­tige naam kreeg. Maar kort na het invoeren van de DMARC-methode, die in het begin alleen door sommige providers gebruikt werd, daalde het aantal phishing-aanvallen zodanig significan­t dat DMARC als nieuw wondermidd­el tegen spam en phishing gold. DMARC is geen extra techniek, maar een aantal regels voor het omgaan met SPF- en DKIM-informatie. DMARC-richtlijne­n leggen vast hoe er bij overtredin­gen tegen de SPF- en DKIM-regels gehandeld moet worden en hoe er over die overtredin­gen melding moet worden gedaan.

Niet alle vormen van de DMARC-rapportage zijn overal toegestaan. Het terugsture­n van een volledig rapport naar het afzenderdo­mein na het ontvangen van een verdachte mail kan bijvoorbee­ld problemen opleveren. De mailafzend­er en de exploitant van de mailserver zijn zelden een en dezelfde persoon. Complete mails bevatten op zijn minst gegevens over de mailafzend­er en de -ontvanger, en vaak ook nog vertrouwel­ijke content die niet zonder toestemmin­g van de communicat­iepartner aan een serverexpl­oitant mag worden doorgegeve­n.

Dit doet geen afbreuk aan het primaire doel om phishing in te dammen. DMARC beschermt een afzenderdo­mein effectief tegen misbruik. Voorwaarde daarvoor zijn wel een correct geconfigur­eerde SPF- en DKIM-functie. Anders ondermijne­n de geschetste problemen beide technieken.

Of dat het geval is of dat vreemden wellicht onrechtmat­ig proberen om mee te liften op de reputatie van het afzenderdo­mein, is alleen door monitoring te achterhale­n. Daarvoor verwerkt een bedrijf dat SPF of DKIM toepast de reports zelf of geeft daarvoor opdracht aan een dienstverl­ener als dmarcian. Die slaat dan alarm bij misbruik.

Newspapers in Dutch

Newspapers from Netherlands