donderdag 22 maart 2012

Remote Desktop - Nu voor iedereen!

Voor wie ook maar één been in de IT wereld staat, is Conficker een begrip. Zelfs vandaag is deze bijna 4 jaar oude worm nog actief, al wordt dat door updates en upgrades van Windows steeds minder. Tijd voor iets nieuws..


Kom er maar in, MS12-020. Deze kwetsbaarheid is begin deze maand (Maart 2012) ontdekt, en het blijkt geen lieverdje. Net als bij Conficker is het theoretisch mogelijk voor aanvallers om eigen code op de kwetsbare systemen uit te voeren, net als extra bonus dat deze software automatisch op het Windows "SYSTEM" account draait. Het hoogst haalbare op een Windows machine.

Maar, om even Mike van Tell-Sell te quoten, dat is nog niet alles! Waar conficker gebruik maakte van MS08-067, een kwetsbaarheid in het protocol van bestands- en printerdeling welke vaak niet bereikbaar is via internet, gaat de MS12-020 kwetsbaarheid over een fout in Microsoft's RDP (Remote Desktop Procotol). Oftewel, een protocol wat ervoor ontworpen is om beheer op afstand (Dus vaak via internet) te verzorgen.

Helaas (of gelukkig) is het niet zonder meer bij elke computer met RDP mogelijk deze kwetsbaarheid te misbruiken. Er zijn een paar condities waaraan voldaan moet worden:


  • Microsoft Update KB2621440 / KB2667402 (Afhankelijk van het systeem) mag niet geïnstalleerd zijn.
  • Network Level Authentication mag niet ingeschakeld zijn
Het eerste punt is in een perfecte wereld geen probleem. Deze updates zitten immers al in de automatische Windows updates en worden dus vanzelf geïnstalleerd. Tenzij dat natuurlijk niet aan staat.

Het tweede punt is wat lastig. Het meest veilige is om RDP zo in te stellen:


Echter, lang niet alle clients ondersteunen dit. Denk hierbij bijvoorbeeld aan clients op:
  • Oudere Windows versies
  • Linux / Mac computers
  • Mobiele telefoons
Dus, vaak wordt RDP zo ingesteld:


Nu ben ik geen ster in kansberekening verder, dus dat laat ik aan anderen over. Maar volgens dit onderzoek ligt het aantal kwetsbare systemen rond de 5 miljoen, van Windows XP tot 7, van Windows Server 2003 tot 2008 R2. Dit zijn dus systemen van consumenten, maar ook bedrijven. Van kleine webshops tot grote ondernemingen met gevoelige gegevens. Maar hoe erg is deze kwetsbaarheid dan?

Laten we eens kijken. Voor deze test heb ik een Windows 7 machine klaar staan die aan de twee eerder genoemde condities voldoet. Daarnaast heb ik aan de andere kant een BackTrack 5 machine met Metasploit. Het enige wat ik hoef te doen, is de juiste module te kiezen en het IP adres van de machine in te geven. Hierna de module uitvoeren leidt tot het volgende:


Er wordt heel trots "seems down" gemeld. Dus wat is er nu op de Windows machine te zien? Het volgende:


En dat is de essentie van het probleem. Iedereen die weet hoe een muis werkt, kan op dit moment in theorie 5 miljoen systemen laten crashen. Nu denk je vast "ja, dat is leuk, maar dat Linux snap ik niks van natuurlijk". Vrees niet, gemak dient de hacker mens, er is een nog simpelere Windows variant voor dit "geintje":


Met zo goed als hetzelfde resultaat:



Nu hoor ik je denken: "Oke, we kunnen systemen laten crashen, maar wat is daar het praktisch nut van?". Vrij weinig. Maar, bedenk dat dit nog geen maand oud is. Er zullen ongetwijfeld (zeer) binnenkort varianten uitkomen die het mogelijk maken om in plaats van een crash ervoor te zorgen dat de server jouw code uitvoert. Dus nogmaals, 5 miljoen computers op afstand infecteren / overnemen met 4 á 5 commando's. Of tenminste, tot het geautomatiseerd wordt in de vorm van een worm, een soort Conficker 2.0.

De oplossing is gelukkig simpel genoeg, maar wat nu als dat in de omgeving niet gewenst is? Denk aan clients die niet met NLA overweg kunnen, of een systeem wat niet geupdate kan worden omdat het de compatibiliteit met dat ene dure software pakket niet kan garanderen. Wat dan?

Vrees niet, er zijn meer oplossingen. Zo zijn er bijvoorbeeld intelligente firewall pakketten met detectie voor dit probleem:



Dit keer, bij het uitvoeren van de tools, komt het volgende scherm boven:


En de verbinding wordt verbroken. Beide manieren genoemd in dit blog werken niet, en er wordt netjes een melding in het logboek geplaatst:



Dit bewijst wederom hoe ontzettend belangrijk is om systemen up to date te houden, de beveiliging goed na te kijken, en een "intelligente" firewall te gebruiken in plaats van een "poortje open, poortje dicht" firewall. Zorg er in ieder geval voor dat je, hoe dan ook, niet kwetsbaar bent voor deze aanval.












vrijdag 20 januari 2012

WPS - Van handig hulpmiddel naar gapend gat

Een goed beveiligd WiFi netwerk opzetten is niet voor iedereen even makkelijk. Daarom is in 2007 WPS (WiFi Protected Setup) in het leven geroepen. Maar hoe protected is het?


Het principe van WPS is heel simpel. Nadat je het accesspoint hebt aangesloten op het thuisnetwerk, hoef je op de apparaten die toegang willen enkel verbinding maken. WPS doet de rest:







Bij elk apparaat wat aan het draadloze netwerk verbonden moet worden, voer je de 8-cijferige WPS PIN in, en klaar. Simpel toch?

Maar wat is het dan het gevaar? Het ontwerp van het WPS protocol zelf. Normaal gesproken zou je denken dat je met een pincode van 8 cijfers 10^8 (10x10x10x10x10x10x10x10) = 100.000.000 mogelijke combinaties zou hebben. Echter, door een ontwerpfout (of feature?) is het mogelijk om te zien of de eerste 4 cijfers van de pincode goed geraden zijn, ook al zijn de laatste 4 onjuist. Dit verkleint het aantal benodigde pogingen om de coden te raden tot 10^4 + 10^4 (10x10x10x10 + 10x10x10x10) = 20.000. Een aantal van een factoor 5000 kleiner! Daarnaast is het zo dat het 8ste getal altijd een checksum is van de eerste 7, wat het maximaal aantal poginen op 11.000 zet, in plaats van 100.000.000.

Nadat dit bekend werd, heeft het niet lang geduurd voor een tool was om dit te exploiten. Een linuxtool met de naam "reaver-wps". Maar hoe werkt het? Hier een kleine demo.

Na de installatie van reaver, is het eerst nodig te kijken welke netwerken er zijn. Daarvoor moet eerst de netwerk adapter in de zogenaamde "monitor mode" geplaatst worden:


Hierna is het mogelijk om het luchtruim af te scannen voor WiFi netwerken:


(Gecensureerd wegens privacy redenen)

Hier is ons netwerk (WPS Crack Demo) te zien, net een WPA2 encryptie. In combinatie met de ingestelde 64bit sleutel zou dit op de "ouderwetse" manier weken, maanden of zelfs jaren duren voor de sleutel achterhaald is. Maar niet met WPS. We zetten de aanval in met reaver:



En zo pruttelt reaver rustig door tot hij eerst de eerste helft, en daarna de tweede helft van de pincode gevonden heeft. Afhankelijk van het type accesspoint, de afstand, en geluk, kan het enkele minuten tot uren duren voordat de sleutel gevonden is. Dit is echter een stuk beter dan de maanden die het zou duren op de oude manier. Een ander voordeel is dat er voor dit soort aanval geen gebruikers actief hoeven te zijn op het accesspoint, en dat het cracken zo goed als geen CPU kracht van de aanvalscomputer vereist.

Als de pincode gevonden is, zal de router ons netjes de 64bit WPA2 sleutel vertellen:
(Hier duurde het slechts 61 seconden, omdat alle omstandigheden ideaal waren)

Dit laat zien dat het met het vinden van deze kwetsbaarheid belachelijk makkelijk is om op elk accesspoint met WPS in te breken. Zelfs MAC filtering of een verborgen SSID zijn maar een kleine hindernis, een MAC adres is immers zo gespoofed, en verborgen netwerken zijn niet echt *verborgen*. Een leuk feitje is dat 90 tot 99% van de consumenten routers en accesspoints deze functie standaard aan hebben staan.

Dus, wil je een echt veilig netwerk, schakel WPS dan uit, en zorg voor een goede, en vooral lange sleutel, samen met WPA2-AES encryptie.

*** DISCLAIMER: Dit blog is geschreven om educatieve redenen. Doe dit *nooit* zonder toestemming van de eigenaar van het netwerk. ***





woensdag 4 januari 2012

"Gratis" Android beveiliging - Got Root?

Je kan geen beveiliggingswebsite openen of een computerblad openslaan, en het gaat over het mobiele besturingssysteem Android, en alle beveiligingsrisico's die erbij horen. Uiteraard moet je van alles kopen om veilig te blijven, maar wat kan je doen om zonder geld uit te geven om toch met een gerust hart je nieuwe Galaxy Nexus te gebruiken?


Sowieso, door (net als met alles in deze grote boze wereld) je te houden aan de volgende principes

  1. Gebruik je verstand.
  2. Als het te mooi is om waar te zijn, is het dat ook.
Met die twee simpele regels in het achterhoofd kom je al een heel eind. Je telefoon wordt echt niet boos op je als je een vraag die diep uit het hart lijkt te komen met "Nee" beantwoord. Hij zal je het niet kwalijk nemen als jij iets niet wil doen. Hij zal niet je auto bekrassen.. Naja, je snapt het idee.

Maar stel nou deze regels staan al op stenen tabletten (Of iPads) in je huiskamer, maar je wil toch net dat beetje meer controle en veiligheid voor jouw telefoon. Wat dan? Allereerst, door je telefoon te "Rooten". Wat is rooten? Voor we daar verder over gaan, even een klein stukje basisinformatie over Android.

In tegenstelling tot de oudere telefoons van vroeger, is Android, net als Windows, een volwaardig besturingssysteem. Het is dan ook gebouwd op een (Inmiddels zwaar aangepaste, maar dat terzijde) Linux ondergrond.

Net als Windows kent Linux gebruikersaccounts. Bij een standaard Android telefoon (In mijn geval mijn oude vertrouwde HTC Desire) ben jij niet de opperbevelhebber. Sterker nog, je bent het vergelijkebare van een beperkte gebruiker op Windows. Je mag wat dingen doen in het besturingssysteem, wat dingen downloaden en draaien, maar van systeemcomponenten blijf je af.

Dus, wat is rooten dan? Nou, net als bij Windows systemen, kennen Linux systemen natuurlijk ook Administrator accounts. De hoofd administrator (Opperbevelhebber) is de gebruiker "root". Dus bij het rooten van je telefoon, maak je in principe jezelf de administrator van jouw telefoon.

Hoe dat moet is per telefoon verschillend. Bij de Google telefoons is dit simpel te doen omdat er niet tegen beveiligd is, maar verschillende fabrikanten hebben verschillende manieren van beveiliging toegepast. Afhankelijk van de telefoon kan het dus nodig zijn om te rooten met behulp van een exploit of ander stukje speciale software. Zo zijn dit bijvoorbeeld de instructies voor het rooten van de HTC Desire: http://wiki.cyanogenmod.com/wiki/HTC_Desire_(GSM):_Full_Update_Guide . Zo is er in principe voor elke telefoon wel een aparte set instructies. Ik ga hier niet behandelen hoe het rooten precies in z'n werk gaat, omdat er zo-ontzettend-veel verschillende manieren voor verschillende telefoons zijn. Mocht je toch aan de slag gaan hiermee, dan zou ik de volgende pagina's eens goed bekijken:

Nadat je root hebt verkregen op je telefoon, is het nodig om een "Custom Recovery Image" te installeren. Deze zorgt ervoor dat je uiteindelijk je "Custom Rom" (In principe het besturingssysteem van de telefoon) kunt installeren. Persoonlijk maak ik op mijn HTC Desire gebruik van de Amon_RA recovery image, maar ook ClockWorkMod recovery wordt vaak gebruikt. Een Recovery Image hoef je overigens niet zelf uit te kiezen, deze zit vaak ingebrepen bij het rootproces. Als deze eenmaal geïnstalleerd is ziet het er als volgt uit:


Vanaf hier is het mogelijk om een Custom Rom te flashen (installeren). Omdat er zoveel roms zijn is het handig je hier eerst over in te lezen. Een populaire rom voor veel telefoons is het eerder genoemde CyanogenMod, of een rom welke het beste van iPhone en Android telefoons combineert, MIUI.

Zelf gebruik ik een "Pre-Rooted Stock Gingerbread" rom. Oftewel, de standaard HTC rom met toegevoegde root toegang. Zo werkt mijn telefoon nog exact als voorheen, maar heb ik er wel volledige controle over.



Omdat mijn telefoon geroot is, is het mogelijk om "Mods" te installeren. Met mods kun je het gedrag en de features van de telefoon aanpassen. Zo draai ik zelf bijvoorbeeld de volgende mods:

  • apps2SD (Hierover later meer)
  • Powersaving modules (Schakelt de CPU terug als het scherm uit is, of als de accu bijna leeg is)
  • Minor Tweaks & EXT4 (Ondersteuning voor het EXT4 bestandsformaat, en wat aanpassingen om bijvoorbeeld AdFree mogelijk te maken)
  • Remove Bootsound (Zodat ik ook ergens waar het stil moet zijn mijn telefoon kan opstarten)

Zo zijn er nog honderden, zoniet duizenden mods te verkrijgen variërend van kleine aanpassingen in de look and feel van de telefoon, tot grote wijzigingen in de functionaliteit. Eén van die grote wijzigingen is "apps2SD" afgekort "a2sd".

Als voorbeeld pak ik wederom mijn eigen telefoon. Als één van de eerste Android telefoons (Tijdens de lancering nog Android 2.1, ondertussen Android 2.3) had deze telefoon niet heel veel interne opslag aan boord. Gevolg: op een HTC Desire met Android 2.3 heb je maar zo'n 140MB beschikbaar voor Apps. En ik kan je vertellen, dat is weinig. Android heeft sinds 2.2 wel de functie op bepaalde Apps naar de SD kaart te verplaatsen, maar dit werkt lang niet voor alle Apps.

Dus hoe kan a2sd dit oplossen? Simpel gezegd: door de installatiemap van Apps uit het interne geheugen door te verwijzen naar de SD kaart. Zodat standaard *alles* op de SD kaart terecht komt. Hiervoor heb ik naast mijn normale FAT32 patitie (Welke Android gebruikt voor mijn muziek, foto's etc) een 2GB EXT4 (Vandaar de EXT4 mod) partitie gemaakt welke a2sd kan gebruiken om apps op te installeren:

(Klik voor vergroting)

Vanaf hier (En nu wordt het ietwat linx-ig) maak je (Of maakt de a2sd-mod) een symlink van de originele App map (/data/app) naar de nieuwe App map op de speciale SD kaart partitie (/sd-ext/app):

(Klik voor vergroting)

Op deze manier worden alle Apps die geïnstalleerd worden, automatisch op de SD kaart geplaatst. Zoals te zien in het onderstaande screenshot. Onderaan wordt gemeld dat er 93MB in gebruik is, terwijl de grootte van het de Apps in beeld bij elkaar opgeteld al rond de 110MB is. En zoals je kunt zien aan de kleine scrollbalk rechtsboven, gaat de lijst nog wel even door:



En nu? We hebben volledige toegang tot de telefoon, we hebben de ruimte en de vrijheid om te installeren wat we willen. In de Android Market zijn ook Apps te vinden voor gerootte (Nieuw Van Dale woord?) telefoons. Omdat deze meer kunnen dan de normale App, is het wel belangrijk extra goed op te letten welke je download. Gelukkig zit er na het rooten wel een kleine beveiliging ingebouwd in de vorm van het programma superuser:

Als een programma op de telefoon root toegang wil, moet hij dat krijgen van het programma superuser, die hiervoor toestemming vraagt aan de gebruiker:


Let op! Geef hier *NOOIT* zomaar akkoord op. Een applicatie met root toegang kan *alles* doen. Dit zijn een paar Appjes die ik gebruik om een wat fijner gevoel over mijn telefoon te krijgen:

AdFree Android (LINK)
Veel (gratis) Android Apps komen met reclame. Naast dat het vak vervelend is om dat dwars door je spelletje heen te zien, kan het ook nog eens ongewenst zijn op een andere manier. De reclame is namelijk persoonlijk en gericht op de gebruiker van de telefoon. Als de eigenaar wel van een portie "volwassen vermaak" houdt, krijgen zijn / haar kinderen hier advertenties van te zien onder het Angry Birden. Afhankelijk van de gebruikte rom is AdFree Android zelfs al ingebouwd, en anders is het erg makkelijk te installeren. Je opent het programma:


Klikt op downloaden en installeren:

(Let ook op de melding onderin van superuser, welke de gebruiker verteld dat het programma root togang heeft gekregen.)

En klaar:

Nu is het genieten van de ad-free games:




Titanium Backup (LINK)
Een tool om backups van al je apps en data te maken. Vooral handig als je vaak van roms wisselt. Daarnaast kan dit programma ook de ruimte op je a2sd partitie laten zien, alle apps in 1 verplaatsen, of automatische updates inschakelen, en nog veel meer dingen. Zeker een aanrader voor elke custom rom gebruiker


Een eervolle vermelding voor de synchronisatie met Dropbox.

ESET Mobile Security (LINK)
Geen root app, wel licentiekosten, maar zeker een mooie (Ik zou bijna zeggen essentiële) toevoeging voor mijn telefoon.



Daarnaast zijn er nog tientallen andere handige root-apps te vinden in de market om je veiligheid en privacy op te krikken. Een snel lijstje:

  • Droidwall - Een firewall gebaseerd op de beroemde Linux firewall iptables.
  • Root Call Blocker - Betaald, maar superhandig. Blokkeert inkomende oproepen en SMSjes op basis van bepaalde criteria.
  • OpenVPN - Het bekende open source VPN protocol (Handig icm OpenVPN Settings)
  • Of gewoon een zoekopdracht in de market op het woord "root".
Tot slot. Bedenk je wel dat het rooten van telefoons geen makkelijk klusje is wat iedereen zomaar even doet op een regenachtige middag. Ook is de kans groot dat de garantie van het toestel vervalt als je hieraan begint. Maak dus bewust de keus om te gaan rooten! En wat je ook doet, het is niet mijn schuld als er wat kapot gaat :).












woensdag 7 september 2011

Gecertificeerd hacker - Doe het zelf DigiD

In mijn laatste blog heb ik het gehad over een groep hackers die bijna alles wat ze deden openbaar maakte op het internet, met de vraag wat er door andere personen allemaal nog verborgen wordt. Deze week is daar een antwoord op gekomen. Een manier om al het internetverkeer van iedereen te onderscheppen.


Mensen die het nieuws gevolgd hebben de laatste tijd weten natuurlijk dat ik het (grotendeels) heb over DigiNotar, de gehackte Certification Authority (CA). Maar niet iedereen zal meteen weten wat een CA is, en wat ze precies doen, dus eerst een kleine uitleg.

Normale websites die men bezoekt zijn niet versleuteld. Dat houdt in dat alle tekst zoals hij te zien is op een website, ook zo over het internet van de webserver naar de opvragende computer gaat. Iemand die dit verkeer kan zien, kan dus ook meekijken met de inhoud van alle websites die iemand bezoekt. Omdat dit bij sommige websites niet bepaald gewenst is (Denk aan dingen als internetbankieren, DigiD, enzovoort), worden "gevoelige" sites beveiligd met een SSL versleuteling.

Hoe herken je een versleutelde websites? Zoals tegenwoordig zelfs de overheid aan mensen vertelt, het alom bekende "Slotje" op een website:




Dit slotje houdt in dat al het verkeer tussen de webserver en de internetbrowser is versleuteld met een certificaat. Als je (In de meeste browsers) op het gedeelte met het slotje klikt, krijg je meer informatie te zien over de website en het gebruikte certificaat:


Hier staat dat de verbinding is gecodeerd met een 256-bits TLS codering, en dat er gebruik wordt gemaakt van een VeriSign Class 3 certificaat. Ook al zou iemand dit verkeer dus onderscheppen, is het onleesbaar. Iemand kan het wel onderscheppen, decoderen, lezen en weer coderen voordat het doorgestuurd wordt, maar dan zal het certificaat dat gebruikt wordt voor de codering niet meer geldig zijn, en zal de browser hier een waarschuwing voor geven.

Maar waarom is het certificaat niet meer geldig? Een certificaat is een certificaat? Dat klopt, iedereen kan certificaten generen. Daarom worden er in browsers gebruik gemaakt van zogenaamde "Root certificaten". Deze certificaten laten de browser (En andere applicaties) weten welke bedrijven geautoriseerd zijn om certificaten uit te geven. Elk certificaat wat door zo'n bedrijf wordt uitgegeven is voor de browser dus automatisch een goed certificaat, en zal een groene balk / tekst met een slotje opleveren. Als iemand dus zelf een certificaat uitgeeft, zal deze door de browser niet gezien worden als authentiek certificaat en zal er een waarschuwing verschjinen:


Een belangrijk punt in deze beveiligingsmethode is dus vertrouwen. We moeten de bedrijven welke certificaten uitgeven (De CA's) vertrouwen alleen goed gecontroleerde certificaten uit te geven, aan mensen die ook het recht hebben deze certificaten te gebruiken..

DigiNotar is één van deze CA's. Helaas voor DigiNotar, en een hoop andere mensen, is een Iraanse hacker achter het Amdministrator wachtwoord gekomen van de server die dit bedrijf gebruikt om de certificaten uit te geven. Met dit wachtwoord is / was het mogelijk voor deze hacker om voor elke website een geldig certificaat uit te geven, en dat heeft hij/zij ook gedaan. In totaal zijn er zelfs 531 "valse" certificaten uitgegeven (Bron). Waaronder ook certificaten voor veelgebruikte diensten als Windows Update en GMail, waardoor het voor deze hacker dus mogelijk is dit verkeer te onderscheppen zonder dat een gebruiker hier iets van door heeft, en waar geen enkele beveiliging tegen opgewassen is.

Dus wat is dan de oplossing? Het root certificaat van DigiNotar intrekken. De grote browsers (Mozilla Firefox, Google Chrome) hebben dit ondertussen ook gedaan. Dit houdt wel in dat ALLE certificaten uitgegeven door DigiNotar nu ongeldig zijn in die browsers. En helaas voor ons gebruikt de Nederlandse overheid DigiNotar certificaten voor websites als DigiD, en de belastingdienst.

Het gevolg is dat zelfs websites als DigiD en de belastingdienst veiligheidswaarschuwingen opleverde in sommige browsers. En dit is het puntje waar veel mensen en nieuwssites de mist in gaan. Deze websites zijn op geen enkele manier gehacked, en er is geen onversleutelde verbinding. Alle data wordt nog steeds verzonden over een SSL versleutelde verbinding tussen de webserver en de browser. Alleen als iemand het verkeer kan omleiden door bijvoorbeeld de DNS server (De server die de computer vertelt naar welk adres de verbinding gelegd moet worden bij een bepaald website adres) te hacken. Maar de kans dat dit kan gebeuren is heel klein. Toch?

Blijkbaar is die kans groter dan gedacht. Een nieuwskop van afgelopen maandag: "Hackers kapen dns-systeem NetNames en bekladden bekende sites". Oeps. Een combinatie van deze twee hacks houdt in dat een kwaadwillende hacker AL het internetverkeer kan omleiden naar waar hij/zij dan ook wil, zonder dat een gebruiker hier IETS van merkt. Een scenario met gevolgen zo groot, dat het de fundamenten van internetbeveiliging kan laten schudden. Maar goed dat men hier uiteindelijk toch achter gekomen is, anders zouden de gevolgen niet te overzien zijn.

Of zouden er toch nog steeds dingen niet boven zijn gekomen? Als we dit bericht van de hacker (volgens eigen zeggen) van DigiNotar moeten geloven heeft hij/zij nog 4 andere CA's onder controle: "You know, I have access to 4 more so HIGH profile CAs, which I can issue certs from them too which I will, I won't name them" (http://pastebin.com/1AxH30em). Dat zou dus betekenen dat er potentiëel honderden websites op dit moment niet veilig zijn. Iedereen spreekt over de "hack van DigiD" terwijl we blij moeten zijn dat men het van die partij doorheeft. Wie weet wat er op dit moment door hackers gelezen wordt? Ik wil er niet eens over nadenken. Dan liever alle gegevens van gehackte bedrijven op straat.

vrijdag 22 juli 2011

Hackers Wanted

De laatste tijd is er een hoop gedoe over allerlei hacks bij bedrijven. Uiteraard is dit compleet de schuld van de hackers, en moeten ze levenslang worden opgesloten. Toch?


Voordat ik begin met mijn verhaal, wil ik even meegeven dat ik niet per definitie alle hack-acties van de afgelopen tijd goedkeuring geef. Ik vraag me echter af of het allemaal wel zo zwart-wit is als dat de media ons doet geloven.

Ons verhaal begint bij een kleine website gestart door iemand die aan het licht wilde brengen wat er echt gebeurt achter gesloten deuren. Vanaf 2006 brengt WikiLeaks geregeld "geheime" documenten en informatie naar buiten over het hoe en waarom bij verschillende overheden en dergelijke. Totdat er op 25 Juli 2010 een setje Amerikaanse documenten naar buiten werd gebracht over de oorlog in Afghanistan.

In plaats van zich af te vragen waar deze documenten vandaan kwamen, stortte de Amerikaanse overheid zich op het permanent kapot maken van WikiLeaks. Op dit moment heeft de oprichter van WikiLeaks, Julian Assange, huisarrest, nadat hij een maand na het lekken van de documenten (20 Augustus) werd opgepakt op verdenking van verkrachting. Toevallig, dat wel. Ondertussen werd WikiLeaks op alle computers van (in ieder geval) de US Air Force geblokkeerd:


Dit was het begin van de cyber-burgeroorlog (want dat is het) waar we ons op dit moment in bevinden. Tot op dit moment was er wel spanning tussen de die-hard internetgebruikers en de overheden, maar er gold een soort Status Quo, "Jullie laten internet met rust, wij laten jullie je ding doen op internet". Met de arrestatie van meneer Assange is daar verandering in gekomen.

Op dit moment heeft het idee "Anonymous" vorm gekregen. Anonymous is geen hackersgroep, zoals veel sites beweren, maar het idee dat het Internet (net als de maan) van iedereen is, maar ook van niemand. Een vrije deling van informatie, zonder censuur (Censuur zoals bijvoorbeeld de regering van China, die voor zijn inwoners beslist welke sites er wel of niet bezocht mogen worden).

Amerika heeft het WikiLeaks voorval echter aangegrepen om zoveel mogelijk controle over het internet in handen te krijgen. Onder het mom van "Terrorisme" en "Kinderporno" zijn er ideeën naar voren gekomen als:

  • Een internet killswitch, waarmee Amerika "het internet" met één druk op de knop kan uitschakelen.
  • Backdoors in encryptiesoftware zodat elke vorm van encryptie ten alle tijden kan worden ontcijferd kan worden.
  • Backdoors in communicatie software als Skype, zodat alle Skype gesprekken af te luisteren zijn.
  • etc, etc.
En al deze informatie wordt natuurlijk door de Amerikanen zelf opgeslagen, in een geheim datacentrum ergens. Wat gebeurt er met deze gegevens? Wie heeft toegang tot deze gegevens? Hoe lang worden deze gegevens opgeslagen? Irrelevant, volgens de US, als we terrorisme en kinderporno maar bestrijden.

Deze twee kanten botsen dus op dit moment, met alle hacks en aan de andere kant arrestaties tot gevolg. En hoewel het inbreken per definitie slecht is, toont het wel een paar fundamentele fouten aan waar veel mensen niet bij stil staan:
  • Als een groepje jongeren (Volgens de meeste mensen) dit al kunnen, wat kunnen 'echte' black-hat hackers dan wel niet?
  • Waarom worden de bedrijven niet op de vingers getikt voor de falende beveiliging?
  • De hacks van AntiSec en LulzSec komen uitgebreid in het nieuws, maar wie zegt dat zij de eerste zijn die hebben ingebroken bij de verschillende bedrijven? Wie weet hebben sommige groeperingen al jaren toegang ZONDER hier melding van te maken.
  • Waarom wordt er naast aangifte, nooit melding gedaan van de getroffen maatregelen?
Combineer de bovenstaande vier punten, met een (fictief) Amerikaans bedrijf waar de wat gevoeligere informatie staat van jou als Amerikaanse burger.

Dan heb ik het niet over datingsites, maar over jouw internetgebruik van de afgelopen jaren, jouw medische gegevens, uitgebreide rapporten van uitgevoerde militaire acties en, nog belangrijker, nog uit te voeren acties, jouw telefoongesprekken, noem maar op. Is het dan beter om aan het licht te brengen dat deze gegevens voor derden toegankelijk zijn, of willen we doen alsof er niks aan de hand is? Dit is slechts een voorbeeld. Zoals te zien was in de afgelopen weken zijn er veel grote bedrijven die niet eens de moeite nemen om de opgeslagen gegevens goed te beveiligen / versleutelen.

Geen wonder dat het volgende masker gebruikt wordt bij veel nieuwsartikelen, als logo van het idee Anonymous:


De kenners herkennen dit masker natuurlijk als het gezicht van hoofdpersoon "V" uit de film "V for Vendetta" uit 2006. Een film die als je het mij vraagt veel overeenkomsten heeft met de gebeurtenissen van de afgelopen tijd, en zeker het kijken waard als je hem nog niet gezien hebt. Het beschrijft ook de strijd tussen een overheid verslaafd aan macht, en een bevolking welke het uiteindelijk niet meer pikt.

Het blijft natuurlijk vervelend dat de onschuldige burger hier het slachtoffer van wordt, want deze gegevens komen uiteindelijk op straat te liggen. Maar vergis je niet, ze komen niet alleen op straat te liggen door de hackers van LulzSec en vrienden. Dit is simpelweg de eerste keer dat men erachter komt DAT het gebeurt. Wat kan je er aan doen? Weinig, behalve hopen dat de site waar jij je op inschrijft goed omspringt met beveiliging. Natuurlijk helpt het om met tootljes als KeePass een willekeurig wachtwoord te genereren voor elke site, en op te slaan.. Mochten die gegevens dan lekken, kan het wachtwoord in ieder geval niet misbruikt worden op andere sites.

Tot slot: dit is geen aanval van verwende kinderen tegen de maatschappij, dit is een wake-up call. Het is tijd om IT beveiliging serieus te nemen, en persoonsgegevens hetzelfde (zo niet voorzichtiger) te behandelen dan de portemonnee.




vrijdag 18 februari 2011

IPv6 en Security - of - Waarom er meer firewalls nodig zijn nu internet op is

"Laatste IPv4-blocks zijn toegewezen". Zo verscheen er een artikel op tweakers.net op 3 februari. Dus, tijd om langzaam aan over te stappen op IPv6. Maar, wat voor gevolgen heeft die overstap voor de internettende thuisgebruiker?


Voordat we die vraag kunnen beantwoorden, is het misschien niet onverstandig om uit te leggen wat "IPv4" en "IPv6" zijn.

IPv4:
IPv4 staat voor "Internet Protocol version 4", en is een protocol dat op dit moment wereldwijd gebruikt wordt voor alle communicatie via het internet. Het protocol viert dit jaar zijn 30ste verjaardag, het stamt namelijk uit 1981. Het idee is dat elk systeem dat verbinding maakt met internet een zogenaamd "IP Adres" heeft, net als dat elk huis en bedrijf in de wereld een normaal adres heeft. Met dit adres kunnen systemen elkaar vinden, en met elkaar communiceren.

Het probleem is dat na 30 jaar, de spreekwoordelijke rek een klein beetje uit IPv4 is. Toen het verzonnen werd in 1981 hebben er enkele mensen over nagedacht, en die kwamen waarschijnlijk tot de conclusie dat: "Internet vast nooit zo groot zal worden". Over klassieke uitspraken gesproken.

In ieder geval, de address range (alle beschikbare adressen) ligt tussen de 0.0.0.0 en de 255.255.255.255. De snelle hoofdrekenaar komt dan uit op zo'n 4,294,967,296 beschikbare adressen. Dit klinkt als heel veel, maar als je bedenkt dat er eind 2010 ongeveer 6,500,000,000 aardbewoners waren, zie je al dat er in ieder geval niet genoeg is om iedere wereldbewoner één IP adres te geven. Helaas hebben sommige mensen meerdere computers, en ook dingen als telefoons en tablets die allemaal internet hebben.

Daarnaast zijn lang niet alle adressen daadwerkelijk beschikbaar. Sommige zijn gereserveerd voor systeemgebruik, voor interne netwerken, en zelfs sommige grote bedrijven hebben complete blokken gereserveerd.

NAT
Oké, dus er zijn niet genoeg IP adressen beschikbaar om elk apparaat een uniek adres te geven, dus hoe gaat dat dan op dit moment? Met een systeem dat men "Network Address Translation" (NAT) noemt. Wat doet NAT? In een notenschilletje, zorgt het ervoor dat meerdere apparaten gebruik kunnen maken van één IP adres (door bijvoorbeeld een router te gebruiken).

Veel mensen hebben dit thuis (zonder het te weten, vaak) draaien, om de computer en de laptop tegelijk op het internet te krijgen. Deze computer en laptop hebben dan IP adres 192.168.1.10 en 192.168.1.11 (bijvoorbeeld). Deze adressen hebben ze van de router gekregen, en zijn alleen voor intern gebruik. De router combineert het verkeer van beide computers en stuurt het onder één IP adres naar buiten. In de andere richting werkt dit omgekeerd. Of, om Wikipedia te citeren: "Network Address Translation (NAT, ook wel Network masquerading of IP-masquerading) is het vertalen van IP-adressen en vaak ook TCP/UDP-poortnummers uit de ene gescheiden reeks in de andere. Een veel gebruikt doel is het toelaten van meerdere gebruikers van een thuisnetwerk tot het internet via één IP-adres.". Zie ook: hier.


Hoe een router dit kan doen, zonder dat het verkeer in de war raakt? Elke computer met internetaansluiting heeft niet één opening (port) naar het internet, maar heeft er 65535 (65536 als je port 0 meetelt). Dat zijn dus 65535 in- en uitgangen van en naar het systeem. Deze opbouw wordt gebruikt om de verschillende soorten communicatie gescheiden te houden. Zo gaat bijvoorbeeld internet over port 80, SSL versleuteld internet over port 443, en e-mail (onder andere) over de poorten 25, 110, etc. Zonder firewall zijn deze ook allemaal bereikbaar als een computer eenmaal aan het internet hangt.

Stel, er hangt één computer aan het internet, zonder firewall, zonder router, met het IP adres "1.2.3.4". Deze computer is dan overal ter wereld te benaderen over elke willekeurige poort, omdat alle communicatie naar IP adres "1.2.3.4" automatisch bij die computer uitkomt. Nu komt er in dat huishouden een tweede computer bij, en hierdoor wordt er ook een router in het netwerk geïnstalleerd. Nu komt al het internetverkeer eerst binnen op de router, die vervolgens beslist of het doorgestuurd mag worden naar een computer in het netwerk. Ook al is het nooit zo bedoeld, zorgt dit toch voor een basis vorm van beveiliging, omdat je niet zomaar elke port van een systeem meer kan benaderen via het internet, ongeacht of het systeem een firewall draait of niet.

IPv6
Met de komst van IPv6, worden routers in prnicipe overbodig (het bedrijfsleven even buiten beschouwing gelaten). IPv6 heeft namelijk een andere structuur voor adressen. Waar een standaard IPv4 adres er zo uit ziet: "123.123.123.123", ziet een IPv6 adres er zo uit: "3ffe:6a88:85a3:08d3:1319:8a2e:0370:7344". Door deze nieuwe notatie komen er veel meer adressen beschikbaar. In plaats van de ~4,300,000,000 adressen van IPv4, biedt IPv6 de ruimte voor 50,000 quadriljoen adressen.. ..per gebruiker. Met een onuitspreekbaar totaal van: 3,4 × 1038.


Geweldig natuurlijk, dat betekent dat elk apparaat met internetverbinding met zijn eigen adres met het internet kan communiceren. Of niet?

IPv6 heeft naast dit grote voordeel ook een aantal nadelen. Eén daarvan is dat IPv4 hardware niet compatible is met IPv6. Iedereen die dit wil gebruiken zal dus veranderingen aan moeten brengen in zijn / haar netwerk. En dit geldt voor iedereen, dus ook voor alle Internet Providers. Dit is één van de voornaamste redenen dat IPv6 nog niet wereldwijd geïmplementeerd is.

Als het eenmaal zover is, betekent dit voor de (meeste) thuisgebruikers dus dat ze de router kunnen weghalen, deze is immers toch niet compatible met IPv6, en alle systemen direct aan het internet kunnen hangen. En dan zijn opeens alle systemen weer volledig bereikbaar vanaf elke locatie ter wereld, op elke poort. Tenzij er een (goede) firewall op het systeem wordt geïnstalleerd.

Prima, dan doen we dat toch? En daar zit een probleem. Lang niet elke gebruiker beschikt over de kennis om een firewall ( goed ) te kunnen configureren, waardoor je vaak één van de volgende situaties tegenkomt:

  • Er wordt geen firewall geïnstalleerd, want dat is te moeilijk. Gevolg: computer is open en bloot voor de buitenwereld.
  • Er wordt een firewall geïnstalleerd, maar niet goed ingesteld. Gevolg: er zijn nog steeds beveiliginsrisico's aanwezig
  • Er wordt een firewall geïnstalleerd, maar te strak afgesteld. Gevolg: internet werkt slecht / niet.
De slimme lezer heeft natuurljik allang bedacht: "Jamaar, Windows heeft toch standaard een ingebouwde firewall". Klopt, maar dit is een hele simpele firewall. Of deze sterk genoeg is tegen de steeds groter wordende gevaren op internet is maar de vraag. Een vraag die alleen de tijd kan beantwoorden.

"Dus we zijn gewoon de spreekwoordelijke pineut met IPv6?" Nee, dat niet. Het zal nog wel enige tijd duren voordat het ingevoerd is, en wie weet welke ontwikkelingen er dan al zijn. Time will tell. Het is in ieder geval een feit dat met deze vooruitgang (met als elke vooruitgang) er goed moet worden nagedacht over de beveiliging.

donderdag 18 november 2010

The Chronicles of XSS - HTML, Cookies and Javascript

"Why is that Narnia reference in the title?" you might ask yourself. Well, in the movie, the characters were able to enter a whole new world with new possibilities through a small wardrobe. That's what XSS does, open up new possibilities through a small hole.


First off, let me start with a little disclaimer. This blog is for educational purposes only. I am by no means an expert XSS exploiter or an experienced web developer. I just like to mess around on the internet. If you came here to learn how to exploit XSS, you came to the wrong place. I will not be naming websites or showing the actual XSS used. No websites were harmed in the making of this blog.

So what is XSS? Well, let's quote wikipedia on that one: "Cross-site scripting (XSS) is a type of computer security vulnerability typically found in web applications that enables malicious attackers to inject client-side script into web pages viewed by other users.". Does that make it clear? No, didn't think so. I'll try to explain using some real world examples.

As you may or may not know, the most basic language used to create websites is HTML. HTML contains everything a browser needs to know to display a website. It has the style, content and everything else in one file. The browser interprets this file and builds the website for you to browse. Now, some websites also have inputs available for their viewers. Think of things like contact forms, guestbooks, stuff like that. This is where the basics for XSS lie.



When you enter text into an input field and click "Submit", the data is sent to the webserver, who in turn gives your browser a new HTML file with the text you entered processed in it. So if you have signed the guestbook and posted "Great website!", that will show as the latest entry in that guestbook. That means that text is now somewhere in the HTML file. So what if you paste HTML into that text field, can you alter the website? Yes, and that's exactly what XSS is.

When you paste HTML code into an input form on a website that does not properly trim the input, you can "break open" the form and change the layout of the website itself. An example of a guestbook that is vulnerable to XSS exploiting:


This is your typical guestbook. You enter a name, a code to prove you're human, and your message. But what happens if you insert a prepared XSS string? Well then you can add pretty much anything you want outside of the input fields:


As you can see I have succesfully changed the lay-out of the website to show a big "Hello World" underneath the "Your Name:" field. While this change is only visible to me, and not dangerous to the website and it's users, it's still an opening. If I were to post this on the guestbook, all of the visitors to that website would see the broken lay-out.

So, we can change the appearance of a website to all it's users, now what? Well, the next step you could take is to check if you can execute javascript. Javascript is used on most websites, and supported by most browsers. If you want more information about Javascript, see this page. For this example I will use another website, this time the contact form:


And I insert my prepared XSS string with javascript code:

As you can see, I have made the webpage display a pop-up telling me it is exploitable. While this is harmless Javascript, you could theoretically inject any javascript. Javascript that steals your facebook cookies and places them somewhere for the attacker to take them, for example. Post this XSS exploit to a guestbook and everyone visiting that guestbook will have their facebook cookies uploaded somewhere else. So what, you might ask? Well, an attacker can use these cookies to access your facebook profile, thats what. How does that work exactly? Well, check out this blog.

The thing is, although this all sounds very complicated and high tech, almost everyone can do it. Here are some examples of exploitable sites I found on google when searching for "sign guestbook" on the first two or three pages:








Nice collection right? Like I said, I will not be naming these websites, but trust me when I say that some of these examples are not small, private websites. Some are actually quite large with a lot of visitors. A better known example of XSS recently is this twitter exploit where people managed to use XSS to create a self spreading "virus" on Twitter.

So how do you protect yourself from XSS? Well, first of all, make sure that your website is correctly sanitizing inputs. Don't put simple input forms everywhere and expect for them to be secure.

If you're a user? Well, that's a different story. Because XSS is HTML, and executed by the browser, most (all) security software packages will not detect them (or not untill they start calling malicious javascript files at least). So what then? Well, protect the browser itself. There are a number of add-ons for Firefox and Chrome to prevent XSS or even disable all scripts entirely. It's a bit like killing a fly with a shotgun, but it works.

The point of this blog is to create awareness among web designers to properly secure their websites and make sure that XSS is not possible. With properly executed XSS, anything is possible. As XSS is becoming more and more popular, more and bigger sites will get attacked. In the end, this is what a web designer wants someone using XSS exploits to see: