Ik word door verschillende soorten opdrachtgevers gevraagd om de robuustheid van software te testen, trainingen te verzorgen over IT Security en organisaties te adviseren op hun IT security plannen. Eén van mijn opdrachtgevers is een ICT leverancier. Zo bieden ze e-mail aan maar ook verschillende andere services zoals Microsoft Azure en andere clouddiensten. De opdrachtgever (die anoniem blijft) vroeg me om de integriteit van hun werknemers te testen en of ik wellicht informatie over hun klanten kon achterhalen. De opdracht was even simpel als uitdagend.

Ik kreeg dus carte blanche en besloot het als een social engineering opdracht uit te voeren waarbij ik geen tot weinig techniek gebruik om het wachtwoord te achterhalen maar juist de zwakste schakel in de keten: de mens.

Wie zijn je klanten?

“Aan wie levert mijn opdrachtgever diensten? “. Dat was de eerste vraag die ik mezelf stelde. Omdat de opdrachtgever trots is op haar klanten heeft mijn opdrachtgever verschillende grote en kleine bedrijven genoemd op de website waaraan ze diensten leveren. En niet alleen dat. Ook de specifieke dienst die ze leveren staat benoemd op de website. Dit geeft natuurlijk een prachtig beeld maar biedt iedere hacker ook een startpunt. Ik zocht een aantal interessante bedrijven op waar ik, als hacker, wellicht meer over wilde weten dan alleen de producten die zij leveren.

Onderzoek en voorbereiding

Het bedrijf dat ik koos (de klant van mijn opdrachtgever) was een software ontwikkelaar. Een bedrijf dat software maakt voor andere MKB’ers en ze namen voldoende services van mijn opdrachtgever af (e-mail, een aantal clouddiensten, remote access, e.d.). Ik begon te onderzoeken wie er bij het bedrijf werkzaam waren op dat moment. Dat is zo gedaan: LinkedIn is your friend. Je voert de naam van het bedrijf in en krijgt direct een lijst met namen en functies van de werknemers. Een aantal namen heb ik opgeschreven die voor mij het interessants waren. Ik besloot deze namen ook op te zoeken op Facebook. Veel profielen bleken openbaar te zijn en gaven me hun geboortejaar, woonplaats en andere informatie die wellicht waardevol zou kunnen zijn. Ik noteerde het samen met wat informatie over de klant (KvK, BTW nummer, adres, etc.). Je weet immers nooit wanneer je gevraagd wordt deze gegevens te overhandigen. Toch?

Kun je me helpen?

De opdracht begon vorm te krijgen. Omdat mijn opdrachtgever verschillende services aanbiedt is het logisch dat zij een servicedesk hebben. De servicedesk zou wellicht mijn toegang zijn tot het verkrijgen van het wachtwoord en het testen van integriteit van de medewerker. Immers, het is het eerste aanspreekpunt met de klant en je verwacht dus dat juist daar de meeste controlepunten zouden moeten zitten (en dus een hoge mate van integriteit). Ik zocht het telefoonnummer van de servicedesk op de site van de opdrachtgever en belde het met mijn eigen telefoonnummer afgeschermd en deed me voor als een klant met een probleem. Het volgende gesprek vond plaats (JdO ben ikzelf, T1 is het doel, target):

T1: “Goedemorgen met de servicedesk van … … …, waarmee kan ik u helpen?”

JdO: “Goedemorgen, ik werk vandaag een dagje thuis en ik kom mijn mail niet in. Kun je me helpen?”

T1: “Goedemorgen, natuurlijk. Om welke organisatie gaat?”

JdO: “Dat is -naam van de organisatie-“

T1: “Perfect. Dat spel je toch als … … … … … … …. …. ?”

JdO: “Klopt.”

T1: “En je naam was? Want die is me ontschoten.”

JdO: (Merk op dat er nooit een naam gezegd is) “Mijn naam is … … … …”

T1: “Perfect. En je achternaam is dus … … … … gespeld als … … … … … ?”

JdO: “Klopt inderdaad.”

T1: “Je mailadres is dus … … … … @ … … … … . … … … “

JdO: “Ja inderdaad.”

T1: “Mooi, ik heb hier het wachtwoord voor je. Heb je pen en papier bij de hand?” 

JdO: “Zeker.” (op dit moment met stomheid geslagen)

T1: “Je wachtwoord is … … … … … … … …” (het gehele wachtwoord wordt gespeld)

JdO: (Ik schrijf het op) “Ah, ja ik zie het al.” ( en ik verzin iets waarom het wachtwoord telkens verkeerd ging)

T1: “Fijn, heb ik je zo geholpen? Kan ik nog iets anders voor je doen?”

JdO: “Zeker, ik wil ook graag kunnen inloggen via mijn iPad. Kun je me daar ook bij helpen?”

T1: “Natuurlijk maar eigenlijk is dat tegen jullie bedrijfsbeleid. Maar ik haal het vinkje wel even weg.” (Haalt het vinkje weg)

JdO: “Top. Bedankt!”

Na dit gesprek had ik dus het wachtwoord op een stukje papier voor me liggen. Gewoon opgeschreven. Inclusief de bijbehorende gebruikersnaam. Ik kon nu inloggen op het e-mail platform dat de deze klant afneemt van mijn opdrachtgever, services aanpassen, remote inloggen op computers, intranet bekijken, betalingsgegevens inzien, etc. etc. etc. Ik was verbaasd hoe gemakkelijk het was. Er werd me geen controlevraag gesteld (wat is je woonplaats, een geheime vraag), geen link gestuurd om het wachtwoord aan te passen of te resetten, helemaal niets. Ik deed mezelf gewoon voor als iemand anders en er werd niets gecontroleerd.

Dat deze werknemer mij, zonder problemen, het wachtwoord gaf is natuurlijk (op zijn zachtst) al opmerkelijk te noemen maar dat de werknemer dit überhaupt kon is natuurlijk wel heel vreemd. Er is dus een lijst beschikbaar (voor alle werknemers) waarop de wachtwoorden (in platte tekst!) en gebruikersnamen staan van alle klanten van mijn opdrachtgever. Was dit bekend bij het management? Was dit “de bedoeling”? Wisten de klanten van mijn opdrachtgever dit ook? Hebben ze ergens een handtekening voor gezet dat dit mocht?

Het is, zoals afgesproken, gemeld aan de opdrachtgever. Ze wisten dit niet. Het werd blijkbaar gedaan door de afdeling zelf om “de snelheid er in te houden”. Er werd een database gebruikt zonder enige vorm beveiliging waarin de wachtwoorden als platte tekst werden opgeslagen. Iedere werknemer van de servicedesk had er toegang toe. Het werd gezien als een service naar de klant toe: snel kunnen reageren op de vraag van een klant en de klant niet onnodig willen storen met mailtjes waarin gevraagd wordt een reset op het wachtwood uit te voeren. Dat dit totaal niet veilig is werd niet gezien. Er was geen bewustzijn.

Je eigen organisatie kan dan wellicht integer genoeg zijn. Met de juiste werkinstructies en protocollen ten aanzien van informatiebeveiliging. Toch kan je leverancier dit niet zijn. Als deze informatie lekt heb je dus alsnog een probleem.

Disclaimer: Het bovenstaande is in overleg gedaan met mijn opdrachtgever(s). Er wordt gewerkt volgens verschillende protocollen en instructie. Beide partijen zijn op hiervan op de hoogte. Alles wat gedaan wordt is besproken in een Non-Disclosure Agreement en verschillende contracten waarin beide partijen gevrijwaard worden van eventuele (juridische) geschillen. Wordt dit niet gedaan dan kan dit resulteren in een (juridisch) geschil. Deze case mocht, anoniem, geplaatst worden (als blog) als waarschuwing naar andere organisaties. Do not try this at home.