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 :).