Security is een lastig vak. Als hier uitsluitend mensen bijdragen zouden posten die
echt alle wijsheid in pacht hebben was er geen forum. Soms denken we precies te weten hoe iets werkt maar dan blijkt er toch een addertje onder het gras te zitten, dat maken we allemaal wel eens mee. Laat ik het proberen uit te leggen (hopelijk foutloos; correcties zijn welkom).
Om een netwerkpakketje naar een remote computer op internet te kunnen sturen heb je het IP-adres nodig van die computer (goed vergelijkbaar met dat je uiteindelijk iemand's telefoonnummer nodig hebt om hem of haar te kunnen bellen). Er zijn verschillende redenen waarom we liever
namen dan IP-adressen gebruiken om remote computers te kunnen benaderen, o.a. omdat namen makkelijker te onthouden zijn en bijv. omdat de naam van de organisatie er in voorkomt.
Toen Internet nog slechts een beperkt aantal computers telde werd een bestandje gebruikt (/etc/hosts op Unix systemen) om de hostname naar IP-adres "lookups" te kunnen doen, prima vergelijkbaar met het adresboek in je telefoon. Organisaties met op Internet aangesloten computers werkten dit bestandje bij met elke computer die ze "op Internet aansloten" en wisselden deze bestandjes uit met andere organisaties. Dat schaalde net zo slecht als telefoonboeken, maar ICT-ers bedachten er natuurlijk een oplossing voor, genaamd DNS. Een handig voordeel van DNS is dat je een server probleemloos een ander IP-adres kunt geven (iedereen met veel contacten die wel eens een nieuw telefoonnummer gekregen heeft, snapt het nut hiervan).
Hoe dan ook, het hosts bestand is nooit helemaal verdwenen, en op een Windows PC staat het bestand met de naam "hosts" (zonder extensie!) normaal gesproken in de map "C:\Windows\System32\Drivers\etc\".
Als je op een Windows PC een hostname in een programma met internet functionaliteit invoert, wordt
meestal als eerste het hosts bestand geraadpleegd om het IP adres te achterhalen. Komt de gezochte hostname (feitelijk FQDN oftewel Full Qualified Domain Name) er niet in voor, dan wordt een DNS lookup gedaan.
By default bevat het hosts bestand (naast commentaarregels die met een hekje beginnen) 1 "record":
127.0.0.1 localhost
Die regel zorgt ervoor dat, als je in je webbrowser als URL intikt:
http://localhost/
dat je webbrowser dan een TCP/IP verbinding zal proberen te maken met de computer met IP adres 127.0.0.1, en omdat je als protocol "http" hebt ingevoerd, wordt geprobeerd een verbinding te maken met poort 80 op genoemd IP adres.
Belangrijk: naast dat jouw PC een IP-adres zoals 192.168.0.10
kan hebben, heeft deze
altijd het vaste doch
interne IP adres 127.0.0.1!
Sterker, de route tabel in jouw PC zorgt ervoor dat de hele reeks 127.0.0.1 t/m 127.255.255.254 toegekend lijkt te zijn aan jouw PC. Het commando "ping 127.0.0.1" of bijv. "ping 127.123.123.123" gaat echter niet over het netwerk, elk adres uit die reeks wordt door routetabel omgezet in 127.0.0.1 waarna de "netwerkstack" (software) in Windows het pakketje "terugstuurt" (voordat deze je netwerkkaart bereikt) naar de eventueel luisterende dienst.
Dus als je op je eigen PC een webserver hebt draaien die luistert op poort 80 en die een HTML pagina met bijv. "Hello World!" retourneert, zul je die tekst zien zodra je naar http://localhost/, http://127.0.0.1/ of http://127.x.x.y surft (waarbij x=0 t/m 255 en y=1 t/m 254).
Echter, als je
geen webserver hebt draaien (en ook geen andere service die op poort 80 luistert) gebeurt er
niets. Windows heeft snel door dat er niets staat te luisteren en zal dat aan de aanvrager (de webbrowser) terugmelden (er ontstaat dus nauwelijks wachttijd, surf maar eens naar: http://localhost/).
En dit gedrag levert een interessante truc op! Namelijk, als je NIET wilt dat er via je webbrowser met een specifieke hostname, bijv. www.citadel.vx, contact gemaakt kan worden, dan kun je je hosts bestand uitbreiden tot:
127.0.0.1 localhost
127.0.0.1 www.citadel.vx
Hoewel firewalls prima in staat zijn om op IP-adressen te filteren, zijn de meeste niet goed in het filteren op host names. En juist dat is van belang bij malware die gebruik maakt van zogenaamde Fast-Flux servers (zie
http://en.wikipedia.org/wiki/Fast_flux). Daarbij veranderen de IP-adressen van die servers namelijk voortdurend...
In zo'n geval
zouden entries in de hosts file het opzetten van verbindingen met servers van de aanvaller kunnen voorkomen, maar helaas werkt dat niet gegarandeerd. De reden daarvoor is dat een programma DNS lookups kan doen
zonder eerst de hosts file te raadplegen. Een bekend voorbeeld van zo'n applicatie is het commandline programma
nslookup.exe (dat op elke Windows PC te vinden is); deze slaat de hosts file gewoon over. Malware op je PC kan dat dus ook.
Waarvoor kun je het hosts bestand dan
wel voor misbruiken? Bijv. met de volgende twee regels:
127.0.0.1 retailING.112.2o7.net
127.0.0.1 retailINGnl.112.2o7.net
in m'n hosts file voorkom ik dat
mijn webbrowser, tijdens het internetbankieren met https://mijn.ing.nl/,
ook verbinding maakt met genoemde hosts (html code die ING naar mijn webbrowser stuurt probeert dat te bewerkstelligen - voor statistische doeleinden). Puur onnodig risico vermijd ik zo.
Op dezelfde manier kun je hele reeksen met bijv. Google Analytics en DoubleClick hosts blokkeren. Zie
http://pgl.yoyo.org/as/ hoe dat moet (de download link voor de hosts file vind je op die pagina onder "download the list of ad servers"). Zelf gebruik ik die -zeer uitgebreide- file overigens niet.
Groot nadeel: de hosts file snapt niks van wildcards. Je zult dus elke mogelijke FQDN voluit moeten opnemen...
Kortom, Peter V. heeft grotendeels gelijk: het hosts bestand kan niet een firewall vervangen. Het
zou kunnen helpen bij Fast-Flux malware op je PC, maar garanties dat dit werkt heb je niet, en bovendien
is je PC dan dus al gecompromitteerd!
Met een firewall los je dit soort problemen echter ook niet op; de door het NCSC gepubliceerde IP-adressen zijn zoethoudertjes. Zoals ondertussen al gebleken is, zijn er vaak al veel meer achterdeurtjes op je PC geplaatst en wordt van veel meer fall-back servers gebruik gemaakt als het de malware niet lukt om bepaalde servers te bereiken. Daarnaast is de beveiliging van je PC vaak zodanig aangetast (denk aan gewijzigde DNS server instellingen) dat ze je snel weer oppikken als "vaste klant"...