Module 3 · 3.2
Nederlands
Domeinen en links lezen
Module 3: Phishing herkennen · Leestijd: 13 minuten
Leerdoel: Na deze les kun je van elke link het echte doel bepalen: je vindt het registreerbaar domein met de publieke suffixlijst en je herkent subdomein-, pad- en @-trucs, lookalikes, punycode, verkorters en open redirects.
Kernbegrippen: URL, schema, host, registreerbaar domein, publieke suffix, subdomein, pad, lookalike, typosquatting, homograaf, punycode (xn--), URL-verkorter, open redirect
De onderdelen van een link
Een webadres heet een URL. Hij bestaat uit vaste onderdelen:
https://inlog.mijnbank.example:443/klant/overzicht?taal=nl#saldo| Onderdeel | In dit voorbeeld | Wat het doet |
|---|---|---|
| Schema | https | Hoe de browser verbinding maakt |
| Host | inlog.mijnbank.example | Met welke server je praat |
| Poort (zelden te zien) | 443 | Het "deurnummer" op die server |
| Pad | /klant/overzicht | Welke pagina op die server |
| Query | ?taal=nl | Extra gegevens voor de pagina |
| Fragment | #saldo | Een plek op de pagina |
De host is het enige deel dat bepaalt van wie de site is. Pad, query en fragment bepaalt de eigenaar van die host zelf. Daar kan dus alles staan, ook de naam van een andere organisatie.
De host lees je van rechts naar links, label voor label. Het eind is het belangrijkst.
Het registreerbaar domein en de publieke suffixlijst
Niet de hele host vertelt wie de eigenaar is, maar één stuk ervan: het registreerbaar domein. Dat is de naam die iemand bij een registrar heeft vastgelegd. Alles links daarvan zijn subdomeinen, en die maakt de eigenaar zelf, zoveel als hij wil.
Om het registreerbaar domein te vinden, moet je weten waar je wél zelf een naam kunt registreren. Zo'n deel heet een publieke suffix. Voorbeelden zijn com, nl en example, maar ook co.uk: in het Verenigd Koninkrijk registreer je als bedrijf een naam onder co.uk. Het registreerbaar domein is dan de publieke suffix plus één label ervoor.
| Host | Publieke suffix | Registreerbaar domein |
|---|---|---|
www.example.com | com | example.com |
inlog.mijnbank.example | example | mijnbank.example |
www.shop.[naam].co.uk | co.uk | [naam].co.uk |
mijnbank.co.uk.example | example | uk.example |
De vuistregel "pak de laatste twee stukjes" gaat dus fout. Bij www.shop.[naam].co.uk zou je co.uk krijgen, en dat is van niemand in het bijzonder. En het laatste voorbeeld laat zien dat co.uk midden in een naam niets betekent: daar is uk.example de eigenaar.
Welke suffixen publiek zijn, staat in de Public Suffix List (publicsuffix.org), een lijst die Mozilla is begonnen en die nu door de gemeenschap wordt bijgehouden. Browsers gebruiken hem onder andere om te bepalen welke sites cookies mogen delen en om het belangrijke deel van een adres te laten opvallen. De lijst heeft ook een deel met "private" suffixen: diensten waar klanten een eigen subdomein krijgen, zoals sommige hostings voor blogs en projectpagina's. Elke klant daaronder telt als een aparte eigenaar.
Staat een suffix niet in de lijst, dan geldt de standaardregel: het laatste label is de suffix. Daarom is bij .example het registreerbaar domein altijd de laatste twee labels.
Trucs met subdomein, pad en @
Nu je weet waar de eigenaar staat, zie je hoe aanvallers je ogen misleiden. Ze zetten de naam die je verwacht ergens anders in de link.
Subdomein-truc.
https://mijnbank.example.inlog-check.example/loginJe ziet mijnbank.example vooraan. Maar lees van rechts: de suffix is example, het registreerbaar domein is inlog-check.example en dat is van de aanvaller. De aanvaller heeft dat domein gekocht en er zelf het subdomein mijnbank.example voor gezet.
Pad-truc.
https://inlog.example/mijnbank.example/klant/loginDe host is inlog.example en verder niets. Alles na de eerste enkele / is het pad, en dat kiest de eigenaar van inlog.example zelf.
@-truc.
https://mijnbank.example@aanvaller.example/inloggenEen URL mag vóór de host een gebruikersdeel bevatten, afgesloten met @ (de standaard voor URL's, RFC 3986, noemt dat userinfo). Alles vóór de @ is dus geen host. De browser gaat naar aanvaller.example en nergens anders. Sommige browsers waarschuwen of halen het gebruikersdeel weg, maar reken daar niet op.
Een handige vaste werkwijze: zoek de eerste / na https://. Wat ervoor staat is de host (met eventueel een gebruikersdeel en @). Staat er een @, dan begint de host pas daarna. Lees de host van rechts naar links tot je het registreerbaar domein hebt.
Lookalikes, typosquatting en punycode
Een lookalike is een eigen domein dat lijkt op dat van een ander:
| Lookalike | Truc |
|---|---|
rnijnbank.example | rn lijkt in veel lettertypen op m |
mijnbnak.example | twee letters omgedraaid (typosquatting: gokken op een tikfout) |
mijnbank-veilig.example | een woord erbij met koppelteken: een totaal ander domein |
mijnbank-example.example | de punt vervangen door een koppelteken |
mijnbank.example.inlog-check.example | het echte domein als subdomein (zie hierboven) |
Een stap verder is de homograaf: een domein met letters uit een ander schrift die er hetzelfde uitzien. De Cyrillische а ziet eruit als de Latijnse a, maar is voor de computer een ander teken. Domeinnamen met zulke tekens heten internationale domeinnamen. Het DNS kent alleen letters a tot z, cijfers en het koppelteken, dus zo'n naam wordt omgezet naar punycode (RFC 3492): een vorm die begint met xn--.
mijnbаnk.example (met een Cyrillische а)
xn--mijnbnk-6fg.example (dezelfde naam in punycode)Zie je xn-- in een adres, dan bevat die naam tekens buiten a tot z. Dat kan heel normaal zijn (veel talen hebben accenten of een eigen schrift), maar bij een naam die verder Nederlands of Engels oogt, is het een sterk signaal. Browsers hebben regels om verdachte combinaties als punycode te tonen; Chrome toont bijvoorbeeld een label met gemengd Latijns en Cyrillisch schrift als xn--. Maar die regels vangen niet alles, en in een mail of chat zie je vaak gewoon de nette letters.
Verkorters en open redirects
URL-verkorters maken van een lange link een korte, zoals https://kort.example/a8Xk2. Handig, maar je ziet het doel niet. Het registreerbaar domein van de link is van de verkorter, niet van de organisatie die je verwacht. Een bank of leverancier die je om een inlog vraagt via een verkorte link: niet doen.
Een open redirect is een pagina op een echte site die bezoekers doorstuurt naar elk adres dat in de link staat:
https://mijnbank.example/doorsturen?naar=https://aanvaller.example/inloggenDe host is echt mijnbank.example, maar na één klik sta je op aanvaller.example zonder het te merken. Ook met een verkorter of een trackinglink van een nieuwsbriefdienst kom je ergens anders uit dan het eerste domein. De les: kijk na het klikken opnieuw naar de adresbalk, voordat je iets invult. En het slotje? Dat zegt alleen dat de verbinding versleuteld is. Ook nepsites hebben een geldig certificaat.
In de praktijk: zo ziet het eruit
Op een computer ga je met de muis over een link zonder te klikken; het echte doel verschijnt linksonder in het venster of in een ballon. In de meeste mailprogramma's en webmail werkt dat ook. Op een telefoon houd je de link ingedrukt: je krijgt een menu met het adres erboven. Kies dan niet "openen".
Let op twee valkuilen:
- De zichtbare tekst is niet het doel. In een mail kan op de knop of in de tekst
https://mijnbank.examplestaan, terwijl de link eronder naar een heel ander adres gaat. Alleen wat je bij de muis of het lang indrukken ziet, telt. - Lange adressen worden afgekapt. Telefoons tonen vaak alleen het begin. Juist het belangrijke eind valt dan weg. Scrol of tik in het adres om het helemaal te zien.
Twijfel je, typ dan zelf het adres dat je kent of gebruik je bladwijzer. Het NCSC verwijst ook naar checkjelinkje.nl om een link eerst te laten controleren.
Samenvatting
- Alleen de host bepaalt van wie een site is. Pad, query en alles vóór een
@kiest de aanvaller zelf. - Het registreerbaar domein is de publieke suffix plus één label. Gebruik de Public Suffix List, niet "de laatste twee stukjes" (denk aan
co.uk). - Lees de host van rechts naar links. Het echte domein vooraan als subdomein is een klassieke truc.
- Lookalikes: letterverwisseling, extra woorden, homografen.
xn--betekent tekens buiten a tot z. - Verkorters verbergen het doel, open redirects sturen je door. Kijk na een klik opnieuw naar de adresbalk.
Quiz
Opdracht
Opdracht A3.2: Het registreerbaar domein vinden. Je krijgt acht links. Vul bij elke link het registreerbaar domein in en geef aan of de link past bij de echte organisatie. Het programma kijkt je antwoord na met de Public Suffix List.
Opdracht A3.2b: Lastige links. Acht links met @-trucs, punycode, verkorters en doorstuurpagina's. Vul per link in op welk domein je uitkomt, of kies "niet te zien".
Verder lezen
De stappen in de WebOké-artikelen gelden voor de omgeving van WebOké; bij andere aanbieders werkt het vergelijkbaar.
- Is deze mail echt van WebOké? Phishing herkennen en de actiecode gebruiken
- DNS-cursus, over domeinnamen en hoe je ze leest: https://www.weboke.nl/dns-cursus
- NCSC, Spoofing: https://www.ncsc.nl/phishing/spoofing
- Public Suffix List: https://publicsuffix.org/
- RFC 3986, de opbouw van een URL (onder andere userinfo): https://www.rfc-editor.org/rfc/rfc3986
- RFC 3492, Punycode: https://www.rfc-editor.org/rfc/rfc3492
- Chromium, wanneer de browser een internationale naam als punycode toont: https://chromium.googlesource.com/chromium/src/+/main/docs/idn.md
