01-06-2022, 12:40 door Anoniem: HSTS helpt om connecties met nep sites te voorkomen maar die gebruiken heel veel sites niet.
Er zijn ook veel sites die HSTS niet correct hebben geïmplementeerd, je hebt dus een punt.
Echter, als je "HTTPS-Only" gebruikt, geeft jouw browser op z'n minst een waarschuwing als de benaderde site niet via https bereikbaar is. Als dat komt omdat een MitM doorgaand netwerkverkeer naar TCP poort 443 blokkeert, is het wel een enorm risico om dan op "probeer via http" te klikken. Dat lijkt mij bij public WiFi zeer onverstandig, maar er zullen vast wel mensen zijn die de risico's niet overzien.
01-06-2022, 12:40 door Anoniem: Als ik een kwaadwillende ben en een accesspoint opzet kan ik zien waar jouw DNS requests naar toe gaan, om die gegevens vervolgens te gebruiken om je een volgende keer naar een nagebouwde nep versie van die site te laten gaan en "in te laten loggen".
Zolang jouw "slachtoffer" https blijft gebruiken, kom je er niet tussen.
Toegang tot DNS verkeer heb je bovendien niet als jouw "slachtoffer" bijv. DoH (DNS over Https) gebruikt of (niet gangbaar) diens hosts file heeft aangevuld.
Aan de andere kant, toegang tot DNS heb je helemaal niet nodig bij een
volledige MitM aanval: je kunt middels "NAT" (Network Address Translation) de netwerkpakketjes met een server met een ander IP-adres naar keuze uitwisselen, of zelf "eindpunt" spelen. Als je in
https://blog.syss.com/posts/abusing-ms-office-protos/ zoekt naar
responder, zie je in het screenshot daaronder de mogelijkheden van een bekende tool waarmee verschillende servers kunnen worden nageaapt, in veel gevallen ondetecteerbaar omdat onveilige protocollen worden gebruikt.
Wat je niet wilt is gegevens uitwisselen met een andere server dan bedoeld, en ook niet dat uitgewisselde gegevens "onderweg" kunnen worden meegelezen en/of gewijzigd. Https probeert alle drie die problemen te voorkomen, en bij MitM-aanvallen word je, nornaal gesproken, op z'n minst gewaarschuwd (of de verbinding komt niet tot stand of wordt verbroken). Daarbij is https ook nog eens geheel onafhankelijk van DNS
en van routering.
Voor een geslaagde moderne https-verbinding met bijv. "example.com" moet aan alle volgende voorwaarden worden voldaan:
1) De browser moet gegevens kunnen uitwisselen met de server die zich uitgeeft als "example.com";
2) De browser moet een https servercertificaat ontvangen (of al hebben) dat 100% geldig is voor "example.com";
3) De browser moet de uitgever van dat certificaat
vertrouwen (het certificaat is van de
enige echte "example.com");
4) De private key op de server, passend bij de public key in het certificaat, is nooit in verkeerde handen gevallen;
5) Middels Diffie-Hellman met random parameters komen server en client een symmetrische verbindingssleutel overeen;
6) De server zet de gebruikte encryptie-parameters achter elkaar, signeert ze met de private key en stuurt het resultaat naar de client;
7) De client checkt de signature: als die klopt is er een verbinding met de bedoelde server (dit sluit een MitM echter niet uit);
8) Als de client vervolgens constateert dat de server dezelfde parameters gebruikt als de client, is het zo goed als zeker dat de bedoelde server het andere eindpunt is van de versleutelde verbinding en er dus geen MitM tussen kan zitten.
Met andere woorden, als de MitM niet beschikt over een private key passend bij een door de browser vertrouwd certificaat voor de domeinnaam waar de browser verbinding mee probeert te maken, komt die verbinding niet (zonder foutmelding) tot stand. Redirects zijn ook niet mogelijk, want die kunnen pas plaatsvinden
nadat de https-verbinding succesvol tot stand is gekomen.
01-06-2022, 12:40 door Anoniem: En apps hebben geen adres balk waarin dat op zou kunnen vallen.
Klopt, maar normaal gesproken zullen apps communiceren met servers met hard-coded (in die app) domeinnamen. En de "betere" apps zullen dat via https doen.
Wat bij https vanuit apps nog wel eens fout gaat is dat de programmeur wel het ontvangen server-certificaat op algemene geldigheid laat checken, maar vergeet om te checken of dat certificaat geldig is voor de bedoelde domeinnaam. Een MitM heeft dan genoeg aan een private key + servercertificaat dat geldig is voor een
willekeurige domeinnaam.