Anoniem op dinsdag 29 juli 2008 11:33
Als ik de patch van MS installeer, kan het dan nog steeds zo zijn dat mijn router port randomisation/transaction ID verstoort?
en
Door Anoniem op dinsdag 29 juli 2008 14:42
Mijn DNS server geeft hetzelfde IP adres aan als mijn default gateway, dus dat zou dan goed moeten zijn?
Wat is 'goed'? Met zo'n vraag ontkom ik niet aan een lang verhaal, want een simpele ja of nee kan ik je niet geven...
Als
ipconfig /all laat zien dat 1 of meer DNS servers zijn ingesteld op een private range IP adres (10.x.x.x, 172.16.x.x, 169.254.x.x of 192.168.x.x) dan betekent dit dat je een
locale DNS server gebruikt. Als dat hetzelfde adres is als de ingestelde Default Gateway dan is dat zeker in je router/ADSL modem.
In dat geval maakt het weinig uit of je PC gepatched is omdat die DNS server na jouw aanvragen hoogstwaarschijnlijk geheel nieuwe request pakketten aanmaakt en verstuurt. De kwaliteit daarvan (d.w.z. hoe random zijn zowel de transaction ID als de source port) is waarschijnlijk lastig vast te stellen (zie verderop). Vaak zal zo'n ding wel cachen, maar hoe lang en hoeveel entries weet ik niet.
Ik durf het niet met zekerheid te zeggen, maar ik vermoed dat in routertjes en modems (net als in de meeste besturingssystemen) uitsluitend zogenaamde
stub resolvers zitten. Een stub resolver is
non-recursive oftewel deze
itereert niet zelf maar laat dat over aan een upstream DNS server (van je ISP, 194.109.xxx.xxx bij de tweede anoniem, of bijv. OpenDNS), door in de aanvraag de 'Recursion desired' vlag te zetten. Dit betekent: beste upstream DNS server, zoek jij het maar helemaal voor me uit en geef me het antwoord.
[color=blue]Toelichting van DNS en de exploit[/color]
Als jij om het adres van aaaaa.security.nl vraagt betekent dat 'uitzoeken' door een iterative of recursive resolver: aan 1 van de rootservers vragen wie authoritative is voor het NL domain, aan het
gerourneerde IP-adres vragen wie authoritative is voor security.nl, en aan
dat IP-adres vragen wat het IP-adres is van aaaaa.security.nl (in al die gevallen wordt eerst in de cache gekeken natuurlijk, maar aaaaa.security.nl zit daar waarschijnlijk niet in).
De 'Dan Kaminsky' kwetsbaarheid bestaat er uit dat een attacker
eerder antwoord geeft op de laatste vraag (zonder die gezien te hebben, timing is dus kritisch). Dat doet hij met een gespoofd afzenderadres, en in het antwoord vermeldt hij
tevens dat het IP-adres van de authoritative nameserver voor security.nl x.x.x.x is - met een flink lange geldigheidsduur. Daarbij is x.x.x.x natuurlijk onder controle van die attacker (bijv. een zombie-PC). Die gegevens zet de upstream DNS server in z'n cache waarna vervolgens alle aanvragen (van iedereen) voor *.security.nl naar x.x.x.x gestuurd worden (overigens zullen DNS servers
die informatie alleen in de cache schrijven als de oude entry verlopen is, maar dat tijdstip kan de attacker op afsand vaststellen).
Die attacker kan deze
blind attack uitvoeren als hij weet wat het IP-adres is van de echte authoritative server waar de aanvraag naar toe gestuurd is, het UDP source port nummer en de transaction ID in het pakket. Die eerste is meestal een makkie, en als je in Roberto Larcher's [url=http://webteca.altervista.org/download/download4.php?get=wp_predictability_en]Predictability of Windows DNS Resolver[/url] leest dat in XPSP1 (met draaiende DNS client service) zowel de UDP source port als het transaction ID telkens met 1 worden verhoogd dan begrijp je dat het raden daarvan ook een eitje is. Als de aanvaller misgokt laat hij de DNS server om aaaab.security.nl vragen etc. en voert zo een brute force attack uit, net zo lang tot er toevallig een antwoord geaccepteerd wordt. De kans op succes is natuurlijk lager naarmate er meer randomness is in zowel de UDP source port als de transaction ID.
[color=blue]Stel je gebruikt de DNS resolver in je modem, wat kan er dan gebeuren?[/color]
Als jouw router/modem
zelf itereert (d.w.z. non-recursive requests verstuurt) dan is het erg belangrijk dat deze zowel de UDP source port als het transaction ID goed randomized. Ik vermoed sterk dat beide bar tegenvallen in de huidige generatie routers/modems. Je kunt vaststellen of je modem zelf itereert door [url=https://www.dns-oarc.net/oarc/services/dnsentropy]deze test[/url] te draaien. Zie je jouw eigen IP-adres dan gebruik je een full blown DNS server; of die veilig is zie je dan meteen.
Als jouw modem een stub resolver bevat (dwz het oplossen van vraagstukken geheel aan de DNS server van je ISP overlaat) dan zal deze in principe nooit
zelf DNS requests naar aanvallers sturen, waardoor zij niet weten wat de huidige waarde is van evt. sequentiële tellers (maar wie weet zijn sommige modems te truuken op dit gebied, bijv. vulnerabilities voor pakketten waardoor de router/modem reboot). Ook kunnen zij (als het goed is!) geen requests
via jouw modem/router DSL server versturen en zo leren van de werking. Bovendien is het voor aanvallers (momenteel) lucratiever om grotere servers aan te vallen (alhoewel er ook wormen denkbaar zijn). Het probleem is dat je lastig kunt vaststellen hoe goed een ingebouwde DNS server in je modem randomized; als je extreme pech hebt kunnen zowel de UDP source port als het transaction ID een fixed waarde hebben, en kun je snel de pisang zijn zodra aanvallers in jou geïnteresseerd zijn en achterhaald hebben welk type router je gebruikt (simpel).
[color=blue]Wat als je PC de DNS server(s) van je ISP gebruikt?[/color]
Als
ipconfig /all voor de DNS server(s) geen private range adres(sen) laat zien en je PC is gepatched, dan is in elk geval de randomization van de transaction ID in orde (tenzij MS dat na 4x 'fixen' nog niet voor elkaar heeft). N.B. dat ID zit
in het pakket, een router/modem zal
daar niets aan veranderen bij het doorsturen. Het enige dat je niet weet is of je modem de source port voor DNS pakketten voldoende randomized.
Conclusie: zolang je niet zeker weet wat je router/modem doet zou ik
niet van de DNS server in dat doosje gebruik maken, maar in plaats daarvan in Windows de DNS gegevens van je ISP (of als die niet gaat patchen, OpenDNS) zelf inkloppen onder de TCP/IP settings. Zeker als de
default instelling van je modem is om DHCP clients de ingebouwde DNS server te laten gebruiken, ben je, als je dit wijzigt, minder kwetsbaar dan al die andere gebruikers met hetzelfde modem die dit niet doen.
Mocht je hetzelfde willen horen van [url=http://en.wikipedia.org/wiki/Paul_Vixie]Paul Vixie[/url] lees dan [url=http://www.circleid.com/posts/87143_dns_not_a_guessing_game/#4210]dit[/url]. Is trouwens een [url=http://www.circleid.com/posts/87143_dns_not_a_guessing_game/]heel interessante discussie[/url] (nog actief) tussen enkele bekende Internet Guru's over dit onderwerp.