Modulul 3 · 3.2
Citirea domeniilor și a linkurilor
Modulul 3: Recunoașterea phishingului · Timp de citire: 13 minute
Obiectiv: După această lecție veți putea determina destinația reală a oricărui link: veți găsi domeniul înregistrabil cu ajutorul listei publice de sufixe și veți recunoaște trucurile cu subdomenii, căi, @, lookalike, punycode, scurtătoare de linkuri și redirecționări deschise.
Noțiuni-cheie: URL, schemă, host, domeniu înregistrabil, sufix public, subdomeniu, cale, lookalike, typosquatting, omograf, punycode (xn--), scurtător de URL, redirecționare deschisă
Componentele unui link
O adresă web se numește URL. Aceasta are componente fixe:
https://inlog.mijnbank.example:443/klant/overzicht?taal=nl#saldo| Componentă | În acest exemplu | Ce face |
|---|---|---|
| Schemă | https | Modul în care browserul se conectează |
| Host | inlog.mijnbank.example | Cu ce server comunicați |
| Port (rareori vizibil) | 443 | "Numărul ușii" de pe acel server |
| Cale | /klant/overzicht | Ce pagină de pe acel server |
| Query | ?taal=nl | Date suplimentare pentru pagină |
| Fragment | #saldo | Un loc anume de pe pagină |
Hostul este singura componentă care determină cui îi aparține site-ul. Calea, query-ul și fragmentul sunt alese chiar de proprietarul acelui host. Acolo poate sta orice, inclusiv numele unei alte organizații.
Hostul se citește de la dreapta la stânga, etichetă cu etichetă. Finalul este cel mai important.
Domeniul înregistrabil și lista publică de sufixe
Nu întregul host arată cine este proprietarul, ci doar o parte din el: domeniul înregistrabil. Acesta este numele pe care cineva l-a înregistrat la un registrator. Tot ce se află în stânga acestuia sunt subdomenii, pe care proprietarul le poate crea după bunul plac.
Pentru a găsi domeniul înregistrabil, trebuie să știți unde puteți înregistra chiar dumneavoastră un nume. O astfel de parte se numește sufix public. Exemple sunt com, nl și example, dar și co.uk: în Regatul Unit, o companie înregistrează un nume sub co.uk. Domeniul înregistrabil este atunci sufixul public plus o etichetă în fața lui.
| Host | Sufix public | Domeniu înregistrabil |
|---|---|---|
www.example.com | com | example.com |
inlog.mijnbank.example | example | mijnbank.example |
www.shop.[nume].co.uk | co.uk | [nume].co.uk |
mijnbank.co.uk.example | example | uk.example |
Regula empirică "luați ultimele două bucăți" dă deci greș. La www.shop.[nume].co.uk ați obține co.uk, iar acesta nu aparține nimănui în particular. Iar ultimul exemplu arată că co.uk la mijlocul unui nume nu înseamnă nimic: acolo uk.example este proprietarul.
Care sufixe sunt publice este consemnat în Public Suffix List (publicsuffix.org), o listă inițiată de Mozilla și întreținută acum de comunitate. Browserele o folosesc, printre altele, pentru a stabili ce site-uri pot partaja cookie-uri și pentru a evidenția partea importantă a unei adrese. Lista are și o secțiune cu sufixe "private": servicii la care clienții primesc propriul subdomeniu, cum ar fi anumite găzduiri pentru bloguri și pagini de proiecte. Fiecare client de sub acestea contează ca proprietar separat.
Dacă un sufix nu se află în listă, se aplică regula implicită: ultima etichetă este sufixul. De aceea, la .example, domeniul înregistrabil este întotdeauna format din ultimele două etichete.
Trucuri cu subdomeniu, cale și @
Acum că știți unde se află proprietarul, vedeți cum vă înșală atacatorii privirea. Ei plasează numele pe care îl așteptați în altă parte a linkului.
Trucul cu subdomeniu.
https://mijnbank.example.inlog-check.example/loginVedeți mijnbank.example la început. Dar citiți de la dreapta: sufixul este example, domeniul înregistrabil este inlog-check.example, iar acesta aparține atacatorului. Atacatorul a cumpărat acel domeniu și a plasat el însuși subdomeniul mijnbank.example în fața lui.
Trucul cu calea.
https://inlog.example/mijnbank.example/klant/loginHostul este inlog.example și nimic altceva. Tot ce urmează după primul / simplu este calea, pe care proprietarul lui inlog.example o alege după bunul plac.
Trucul cu @.
https://mijnbank.example@aanvaller.example/inloggenO adresă URL poate conține, înaintea hostului, o componentă de utilizator, încheiată cu @ (standardul pentru URL-uri, RFC 3986, numește aceasta userinfo). Tot ce se află înaintea lui @ nu este deci host. Browserul merge la aanvaller.example și nicăieri altundeva. Unele browsere avertizează sau elimină componenta de utilizator, dar nu vă bazați pe asta.
O metodă practică și constantă: căutați primul / după https://. Ce stă în fața lui este hostul (cu eventual o componentă de utilizator și @). Dacă apare un @, hostul începe abia după acesta. Citiți hostul de la dreapta la stânga până obțineți domeniul înregistrabil.
Lookalike, typosquatting și punycode
Un lookalike este un domeniu propriu care seamănă cu al altcuiva:
| Lookalike | Truc |
|---|---|
rnijnbank.example | rn seamănă, în multe fonturi, cu m |
mijnbnak.example | două litere inversate (typosquatting: miza pe o greșeală de tastare) |
mijnbank-veilig.example | un cuvânt în plus cu cratimă: un domeniu complet diferit |
mijnbank-example.example | punctul înlocuit cu o cratimă |
mijnbank.example.inlog-check.example | domeniul real folosit ca subdomeniu (vezi mai sus) |
Un pas mai departe este omograful: un domeniu cu litere dintr-un alt alfabet care arată la fel. Litera chirilică а arată ca litera latină a, dar pentru calculator este un caracter diferit. Numele de domenii cu astfel de caractere se numesc nume de domeniu internaționalizate. DNS-ul recunoaște doar literele a-z, cifre și cratima, așa că un astfel de nume este convertit în punycode (RFC 3492): o formă care începe cu xn--.
mijnbаnk.example (cu un а chirilic)
xn--mijnbnk-6fg.example (același nume în punycode)Dacă vedeți xn-- într-o adresă, numele respectiv conține caractere din afara intervalului a-z. Acest lucru poate fi complet normal (multe limbi au diacritice sau un alfabet propriu), dar la un nume care, în rest, pare românesc sau englezesc, este un semnal puternic. Browserele au reguli pentru a afișa ca punycode combinațiile suspecte; Chrome, de exemplu, afișează ca xn-- o etichetă cu alfabet latin și chirilic amestecat. Dar aceste reguli nu surprind totul, iar într-un e-mail sau chat vedeți adesea pur și simplu literele obișnuite.
Scurtătoare de linkuri și redirecționări deschise
Scurtătoarele de URL transformă un link lung într-unul scurt, cum ar fi https://kort.example/a8Xk2. Util, dar nu vedeți destinația. Domeniul înregistrabil al linkului aparține scurtătorului, nu organizației pe care o așteptați. O bancă sau un furnizor care vă solicită autentificarea printr-un link scurtat: nu o faceți.
O redirecționare deschisă este o pagină de pe un site real care trimite vizitatorii către orice adresă menționată în link:
https://mijnbank.example/doorsturen?naar=https://aanvaller.example/inloggenHostul este într-adevăr mijnbank.example, dar după un singur clic ajungeți pe aanvaller.example fără să observați. Și cu un scurtător sau cu un link de urmărire dintr-un serviciu de newsletter puteți ajunge altundeva decât sugerează domeniul inițial. Lecția: verificați din nou bara de adrese după ce ați dat clic, înainte de a completa ceva. Iar lacătul? Acesta spune doar că legătura este criptată. Și site-urile false au un certificat valid.
În practică: cum arată
Pe un calculator, treceți cu mouse-ul peste un link fără a da clic; destinația reală apare în colțul din stânga jos al ferestrei sau într-un balon. În majoritatea programelor de e-mail și webmail funcționează la fel. Pe un telefon, țineți apăsat pe link: apare un meniu cu adresa deasupra. Nu alegeți atunci "deschide".
Atenție la două capcane:
- Textul vizibil nu este destinația. Într-un e-mail, pe buton sau în text poate apărea
https://mijnbank.example, în timp ce linkul de dedesubt duce către o adresă cu totul diferită. Contează doar ce vedeți la trecerea cu mouse-ul sau la apăsarea prelungită. - Adresele lungi sunt trunchiate. Telefoanele afișează adesea doar începutul. Tocmai partea finală, cea importantă, dispare astfel. Derulați sau atingeți în adresă pentru a o vedea în întregime.
Dacă aveți dubii, tastați chiar dumneavoastră adresa pe care o cunoașteți sau folosiți un marcaj salvat (bookmark). Autoritatea națională de securitate cibernetică recomandă și verificarea prealabilă a unui link printr-un instrument dedicat.
Rezumat
- Doar hostul determină cui îi aparține un site. Calea, query-ul și tot ce stă înaintea unui
@sunt alese de atacator. - Domeniul înregistrabil este sufixul public plus o etichetă. Folosiți Public Suffix List, nu "ultimele două bucăți" (gândiți-vă la
co.uk). - Citiți hostul de la dreapta la stânga. Domeniul real plasat la început ca subdomeniu este un truc clasic.
- Lookalike: litere inversate, cuvinte adăugate, omografe.
xn--înseamnă caractere din afara intervalului a-z. - Scurtătoarele ascund destinația, redirecționările deschise vă trimit mai departe. Verificați din nou bara de adrese după un clic.
Test
Exercițiu
Exercițiul A3.2: Găsirea domeniului înregistrabil. Primiți opt linkuri. Completați pentru fiecare link domeniul înregistrabil și indicați dacă linkul corespunde organizației reale. Programul vă verifică răspunsul folosind Public Suffix List.
Exercițiul A3.2b: Linkuri înșelătoare. Opt linkuri cu trucuri cu @, punycode, scurtătoare și pagini de redirecționare. Indicați, pentru fiecare link, la ce domeniu ajungeți sau alegeți "nu se poate determina".
Lectură suplimentară
Pașii din articolele WebOké sunt valabili pentru mediul WebOké; la alți furnizori funcționează similar.
- Acest e-mail este cu adevărat de la WebOké? Recunoașterea phishingului și utilizarea codului de acțiune
- Cursul DNS, despre numele de domenii și cum se citesc: https://www.weboke.ro/dns-cursus
- Autoritatea națională de securitate cibernetică (Țările de Jos), despre spoofing: https://www.ncsc.nl/phishing/spoofing
- Public Suffix List: https://publicsuffix.org/
- RFC 3986, structura unui URL (printre altele userinfo): https://www.rfc-editor.org/rfc/rfc3986
- RFC 3492, Punycode: https://www.rfc-editor.org/rfc/rfc3492
- Chromium, când browserul afișează un nume internaționalizat ca punycode: https://chromium.googlesource.com/chromium/src/+/main/docs/idn.md
