Door Peter V: Even een vraag aan jouw Bitwiper: wat gebeurt er als er achter de NAT nog een netwerkfirewall op je systeem zit?
Ik denk dat het handig is als ik uitleg hoe Samy's pwnat werkt (ik hoop dat ik het goed begrepen heb, correct me if I'm wrong).
Het doel is om een verbinding vanaf een client naar een server op te zetten waarbij:
1. die server
wenst dat een of meer clients verbinding met hem maken (deze moet voortdurend "uitnodigingen" verzenden)
2. de server achter een gangbare thuisrouter met PAT zit (ik ga de -off topic- NAT/PAT discussie maar even uit de weg)
3. het publieke IP adres van die PAT router bekend is (eventueel via DNS)
4. er niets bekend is van de client, ook geen IP-adres (elke client, ook achter een PAT router, kan verbinding maken)
De punten 1. en 2. betekent dat we te maken hebben met:
- ofwel een legitieme situatie (bijv. een simpele gebruiker die niet weet hoe je in een PAT router een "server" definieert)
- ofwel met de situatie dat iemand binnen een bedrijf een server wil draaien zonder toestemming van netwerkbeheer
- ofwel dat de PC pwned is door een kwaadwillende
Samy gebruikt een tweetraps proces (ik heb nog niemand deze twee trucs zien combineren, als dit al bekend was dan graag pointers naar concrete beschrijvingen daarvan):
(A) De server moet te weten zien te komen welke client (welk publiek IP-adres) verbinding met hem probeert te maken. Samy maakt hierbij gebruik van een bekende doch "by design" kwetsbaarheid in PAT (en NAT) routers die het mogelijk maakt om ICMP time exceeded packets afkomstig van "routers onderweg" (richting bestemming) door te sturen naar de zendende host.
Uitleg TTL (Time To Live) en het ICMP time exceeded pakket: om loops te voorkomen zit in elk IP pakket een "Time To Live" veld dat gewoon een tellertje is, en bij verzenden bijv. op 64 gezet wordt: elke router onderweg verlaagt dit tellertje. Als het tellertje de waarde 0 krijgt zal het pakket niet verder worden doorgestuurd; in plaats daarvan wordt er dan,
door die laatste router, een "ICMP time exceeded" pakketje teruggestuurd. In dat pakketje zal die router als "payload" (bagage) het begin van het oorspronkelijke pakketje meesturen zodat de zendende host kan herleiden om welk pakket het ging. Zie ook
http://en.wikipedia.org/wiki/ICMP_Time_Exceeded.
Hoewel PAT routers normaal gesproken "antwoorden" van onbekende IP-adressen zullen droppen, bevatten ze juist extra functionaliteit om ICMP time exceeded pakketjes door te laten. Daarbij maken PAT routers gebruik van de payload (het begin van het oorspronkelijk verzonden pakket) om te herleiden naar welke LAN PC het ICMP antwoordpakket toe moet (daarbij word ook
in de payload het oorsponkelijke zendende adres terugvertaald).
Samy laat de "server" voortdurend pakketjes versturen naar een zwart gat, maar wel door de PAT router heen; daardoor kan die PAT router ICMP time exceeded pakketjes verwachten. Doordat Samy die verzonden pakketjes van een voorspelbaar begin voorziet, kan een willekeurige client ICMP time exceeded messages met dat begin naar de PAT router sturen, die ze als legitiem zal accepteren en zal doorzetten naar de server. Daarmee komt de server het IP-adres van de client te weten.
(B) In stap 2 wordt er een UDP sessie tussen de client en de server opgezet. Als zowel de client als de server achter PAT zitten, is daar Samy's chownat truc bij nodig. Zo'n UDP "verbinding" opzetten via 2 PAT routers is mogelijk als de machines elkaars IP-adres kennen en van afgesproken poortnummers gebruik maken.
Terug naar de vraag van Peter V: het gaat hier om een "aanval" waarbij zowel op de client als op de server iemand al de mogelijkheid heeft om pakketjes te versturen en te ontvangen. Tenzij je dat
zelf wilt (bijv. voor een serverless Skype-achtig of file-sharing protocol) zal er sprake moeten zijn van een kwaadwillende met lokale of remote toegang tot jouw PC. Het is de vraag wat een personal firewall dan nog kan uitrichten.
Als jouw PC niet gecompromitteerd is en er geen kwaadwillenden zijn met fysieke toegang tot jouw PC hoef je je geen zorgen te maken achter jouw PAT router (in elk geval niet voor jouw PC, wellicht wel voor de staat van het Internet).