7 Hacken
In dit thema worden de volgende onderwerpen besproken:
7.1 Waarom wordt er gehacked
Hackers en crackers doen hetzelfde: inbreken op een andere computer. Maar toch is er een groot verschil tussen hacken en cracken.
Een hacker is iemand die om idealistische redenen de beveiliging van systemen test op fouten en daar verbeteringen voor probeert te vinden. Een cracker is een kwaadwillend persoon, die zich bezig houdt met illegale toegang tot een andere computer.
Een hacker wordt ook wel een white-hat hacker genoemd en een cracker een black-hat hacker. Deze termen komen uit cowboyfilms waarin de "kwaden" zwarte hoeden droegen en de "goeden" witte hoeden.
Een white-hat hacker is geliefd in het bedrijfsleven. Bedrijven huren ze in om de beveiliging van hun systemen te testen. Zo hopen ze de black-hat hackers buiten de deur te houden.
Naast hackers en crackers is er ook nog de categorie scriptkiddies. Scriptkiddies zijn personen zonder kennis van programmeren die het leuk vinden om virussen te maken en verspreiden. Het is mogelijk om van het internet software te downloaden waarmee je zonder enige kennis van zaken een virus kunt maken. Het blijkt dat veel virussen door scriptkiddies gemaakt zijn.
Maar hoe werkt hacken dan? De meeste hackers, crackers en scriptkiddies maken gebruik van exploits. Een exploit is een kwetsbaarheid in de hardware of software. Een zero-day exploit is een net ontdekte kwetsbaarheid. Zero-day exploits zijn extra gevaarlijk omdat de makers van de software waarin de exploit zit vaak nog niet eens weten hoe ze de software moeten beveiligen.
Naast exploits gebruiken crackers vaak ook sociaal hacken oftewel social engineering. Dit is een techniek waarbij de hacker een inlognaam en wachtwoord probeert te achterhalen via een mens. Een methode is bijvoorbeeld om een bedrijf te bellen en de receptioniste te vertellen dat alle computers besmet zijn met een ernstig virus en dat je nu het wachtwoord nodig hebt om de informatie op de computers te kunnen redden. Als de secretaresse dan toehapt en het wachtwoord geeft, ben je als cracker binnen.
7.2 Wardriven
Wardriving is rondrijden met een auto met de bedoeling draadloze netwerken te vinden.
Een draadloos netwerk is een computernetwerk waarbij de aangesloten apparaten niet via kabels met elkaar communiceren maar via radiogolven. Het voordeel van een draadloos netwerk is dat je geen kabels hoeft te leggen en dat je op elke willekeurige plek in je huis kan internetten. Voor een draadloos netwerk heb je een basisstation nodig. Dit apparaat zorgt voor de verbinding. Meestal is dit basisstation een draadloze router (zie het plaatje hiernaast). Als je een computer hebt die draadloze netwerken ondersteunt dan kun je contact maken met het basisstation en op die manier bijvoorbeeld gebruik maken van internet.
Het nadeel van een draadloos netwerk is dat radiogolven door muren en ramen gaan dus dat ook je buurman contact kan maken met jouw basisstation. De meeste draadloze netwerken maken zich bekend door continu hun naam te versturen. Deze naam noemen we het SSID. SSID staat voor Service Set Identifier. Wardrivers zijn in hun auto continu op zoek naar SSID’s.
Om te voorkomen dat je buurman of wardrivers gebruik kunnen maken van je draadloze netwerk is het belangrijk dat je je draadloze netwerk goed beveiligt.
Naast wardriving zijn er ook mensen die aan warwalking (wandelen), warcycling (fietsen) en warstorming (rondvliegen) doen. En er zijn ook mensen die niet op zoek zijn naar draadloze internetverbindingen maar naar bijvoorbeeld telefoons met een bluetooth verbinding.
Als je als wardriver een netwerk hebt gevonden, wil je dat aan andere wardrivers laten weten. Dat kan op twee manieren:
Warchalking is het met krijt aangeven in publieke ruimtes of er een draadloos netwerk in de buurt is. Ook geven ze aan of het goed of slecht beveiligd is. De twee belangrijke tekens die ze gebruiken zie je hieronder.
Het rechterteken geeft een onbeveiligd netwerk aan. Het linkerteken een beveiligd netwerk.
De andere manier om aan te geven waar onbeveiligde netwerken zijn is natuurlijk via internet. Er zijn diverse internetsites die aangeven waar je draadloze netwerken kunt vinden en of ze beveiligd of onbeveiligd zijn.
7.3 Phishing
Phishing is een variant op het Engelse woord fishing, wat "vissen" betekent. Phishing is een vorm van oplichterij. Het doel van phishing is het verkrijgen van gevoelige informatie zoals creditcard nummers, wachtwoorden of inloggegevens. Een phisher doet zich meestal voor als een bekende organisatie, bijvoorbeeld een bank of online winkel. De phisher verstuurd miljoenen nep e-mails naar willekeurige mensen. In deze e-mail verzoekt de phisher de mensen om een site te bezoeken en er persoonlijke gegevens achter te laten. De link in het bericht verwijst echter niet naar de officiële site van de bank of winkel, maar naar een vervalste website. Als een bezoeker van de nepsite dan zijn of haar gegevens invult, krijgt de phisher ze op een presenteerblaadje aangereikt.
Het plaatje hieronder laat een voorbeeld van een phishing e-mail zien:
Veel voorkomende zinnen in een phishing e-mail zijn:
- "Geachte klant."
- "Controleer uw account."
- "Klik op de onderstaande link om toegang te krijgen tot uw account."
Vaak is de boodschap van de mail dat het bedrijf de klanten gegevens aan het bijwerken zijn. Daarom moeten klanten hun gegevens nogmaals opsturen. Maar let op: een bank of internetbedrijf zal nooit om persoonlijke gegevens vragen via een e-mail. Dus als je zo’n e-mail binnenkrijgt dan kun je deze het beste weggooien!
7.4 Spoofing
In een phishing e-mail wordt vaak verwezen naar een nagemaakte website. Er wordt meestal gebruik gemaakt van URL-spoofing, dit is het nabootsen van een bekend internetadres, zodat de gebruiker denkt de echte site te bezoeken, terwijl de website die van de bedrieger is. Voorbeelden zijn:
http://wwwbank.com |
i.p.v. http://www.bank.com |
http://www.microsoft.com@ebay.com |
i.p.v. http://www.microsoft.com/ |
http://www.gogIe.nl |
i.p.v. http://www.google.nl |
http://www.micosoft.com/ |
i.p.v. http://www.microsoft.com |
Niet alleen het internetadres lijkt op de echte site, ook de opmaak van de website lijkt erg op die van de echte site. Het is dus niet makkelijk te ontdekken dat je als bezoeker op een gespoofde site zit.
Zorg ervoor dat als je betrouwbare informatie van jezelf intypt (bijvoorbeeld een wachtwoord), dat er gebruik is gemaakt van een beveiligde site. Een beveiligde website maakt gebruik van een SSL certificaat. SSL staat voor Secure Sockets Layer en beveiligt data tegen onderschepping door derden door middel van een codering (encryptie). Een SSL beveiligde website is te herkennen aan:
1. "https://" voor het internetadres, en
2. het slotje onderaan de betreffende pagina
Je kunt op een SSL certificaat ook controleren van wie de site is.
Op Internet Explorer 7 en Firefox 2.0 zit een phishing-filter. Dit filter controleert of sites betrouwbaar zijn. De melding die je in Firefox krijgt zie je hieronder:
Ook spammers maken gebruik van spoofing. Dit heet e-mailheaderspoofing. Het adres van de afzender (de header) is daarbij vervalst, waardoor het lijkt alsof het bericht van een bekende komt. Dit verleidt gebruikers niet alleen om de mail toch te openen, maar verbergt tevens de identiteit van de echte afzender. E-mailspoofing is simpel. Verander in je e-mailprogramma je naam en e-mailadres in de naam en het e-mailadres van een ander.
Opdracht
Maak nu de opdracht "Veilig bankieren" uit het menu-onderdeel "Opdrachten en Toetsen".
7.5 Firewall
Bekijk eerst onderstaande video:
Bron: http://www.youtube.com/watch?v=PBWhzz_Gn10
Iedere computer in een netwerk heeft zijn eigen unieke Internet Protocol adres, het IP-adres. Om data naar een computer te kunnen sturen heb je zijn IP-adres nodig. Om er voor te zorgen dat de data bij het juiste programma terecht komt heeft elk IP-adres 65536 virtuele poorten. Als je bijvoorbeeld met een browser aan de slag gaat zullen de pagina’s die je opvraagt via poort 80 (http) binnen komen. Het laden van je mail gaat via poort 110 (pop3).
Een hacker maakt gebruik van deze poorten om een computer binnen te komen. Met behulp van een poortscanner bekijkt de hacker alle poorten van een computer en controleert op deze manier of er een open staat.
Om een computer te beveiligen tegen hackers moeten we er voor zorgen dat er geen ongewenste bezoekers binnen komen, maar ook dat er niet zo maar informatie naar buiten gaat. Kortom, we hebben een poortwachter nodig die al het verkeer, naar binnen en naar buiten, controleert en zo nodig blokkeert: een firewall. Met behulp van de firewall kun je poorten openen en afsluiten.
Er zijn twee soorten firewalls: een hardware- en een softwarematige. De hardwarematige variant is een apart apparaat dat als firewall fungeert. Een softwarematige firewall is een programma dat op de computer draait.
7.6 Buffer Overflow
Een hacker kan door middel van een poortscanner controleren welke poorten open staan. Maar met een poortscanner is de hacker de computer nog niet binnen. De technieken die gebruikt worden om een computer binnen te komen, noemt men exploits. Deze heten zo omdat ze vaak gebruik maken van een beveiligingsgat, die ze dus exploiteren. Er zijn sites waarop gevonden exploits te vinden zijn. Toch is hacken niet makkelijk. Om de exploits te begrijpen is een aardige kennis over computers nodig. En echte hackers gebruiken niet alleen exploits van anderen maar ontdekken zelf ook regelmatig nieuwe exploits.
De bekendste categorie van exploits is de buffer overflow. Om deze techniek te begrijpen moet we eerst weten wat een buffer is. Een buffer is een stukje geheugen op de computer dat wordt gebruikt voor tijdelijke opslag. Als je bijvoorbeeld een document afdrukt voordat je de printer hebt aangezet, worden de gegevens in de printbuffer gezet totdat de printer klaar is. Deze stukjes geheugen kun je zien als bakjes, met allemaal een nummer.
Als een hacker constant informatie naar een computer blijft sturen dan is het mogelijk dat de buffer overstroomt. Dit kun je vergelijken met het bakje dat overstroomt als je er teveel water in laat lopen. Het programma krijgt meer gegevens te verwerken dan het eigenlijk aan kan. Een goed geschreven programma veroorzaakt bij een buffer overflow een foutmelding of een crash. Sommige programma’s voeren de commando’s die buiten de buffer vallen toch uit. Van dit soort programma’s maakt een hacker gebruik. De hacker laat de buffer overstromen en dwingt de computer om op het eind het door de hacker geschreven programma uit te voeren. Op deze manier kan een hacker de andere computer binnenkomen.
7.7 Voorbeeld
Stel we schrijven een webserver die van een browser (bijvoorbeeld Firefox, of Internet Explorer) een aanvraag krijgt voor een bepaalde webpagina. Bijvoorbeeld http://www.e-klassen.nl/. Laten we er vanuit gaan dat er ergens een stukje van het programma bestaat die de URL kopieert in een buffer waarin 20 tekens kunnen.
Belangrijk om te weten is dat functies, stukjes van een programma ook een bakje in het geheugen hebben, net als buffers. Zo'n functie verwijst dan weer terug naar het volgende deel van het programma. Deze verwijzing staat opgeslagen na de buffer. Het stukje geheugen waar de buffer staat ziet er dan zo uit:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
Buffer |
Verwijzing |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--> |
Nu gaan we met de functie de URL in de buffer plaatsen. Als deze URL bijvoorbeeld 'http://www.google.nl/' is,dan komt de 'h' in geheugencel 1, de 't' in 2, de volgende t in 3, de 'p' in 4, enz. Het geheugen ziet er dan zo uit:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
Buffer |
Verwijzing |
h |
t |
t |
p |
: |
/ |
/ |
w |
w |
w |
. |
g |
o |
o |
g |
l |
e |
. |
n |
l |
--> |
Maar wat nu als de URL langer is dan wat in deze 20 geheugencellen past? Stel je bijvoorbeeld voor dat hij een lengte heeft van precies 21 geheugencellen, zoals http://www.google.com. Een slordig geschreven programma controleert daar niet op met als gevolg dat er 21 geheugencellen worden geschreven. Met andere woorden: het returnadres wordt overschreven, kijk maar:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
Buffer |
Verwijzing |
h |
t |
t |
p |
: |
/ |
/ |
w |
w |
w |
. |
g |
o |
o |
g |
l |
e |
. |
c |
o |
m |
Door een handige URL te maken kun je nu het programma laten doen wat je maar wilt! Stel dat je aan het eind van je URL bijvoorbeeld het adres van het begin van de buffer invult (in de vorm die computers begrijpen, d.w.z., nullen en enen). Dat betekent dat wanneer het programma de verwijzing uitvoert, niet wordt teruggesprongen naar het programma, maar naar de instructie die in bakje 1 staat. En laat dat nu net het begin van de buffer zijn die door de aanvaller wordt ingevuld. Dat betekent dus dat een aanvaller zijn eigen instructies kan laten uitvoeren. Deze instructies noem je de payload ofwel de lading van een exploit. Je kunt als aanvaller nu alles doen wat mogelijk is: de harde schijf formatteren, botsoftware downloaden en installeren, etc.
Het klinkt ongelooflijk, maar deze onzettend domme programmeerfout is schuld aan een enorme hoeveelheid wormen en virussen. Natuurlijk is het iets ingewikkelder met echte programmeertalen, maar verder is alles precies zoals hierboven is beschreven.
Opdracht
Maak nu de eindopdracht "What the hack?". Download hiervoor het volgende Word document:
In deze opdracht ga je zelf aan de slag als hacker. Dit doe je natuurlijk niet in een echt netwerk op echte computers, maar in een gesimuleerde omgeving.
Om te starten met de opdracht moet er een netwerk worden gesimuleerd met virtuele computers die kunnen worden aangevallen. Hiervoor gebruik je een programma dat op een bootable usb-stick staat die je docent in bezit heeft. Vraag je docent om verdere instructies.