Dennis Andriesse (27) was nog masterstudent aan de Vrije Universiteit (VU) toen hij het opnam tegen het Gameover ZeuS-botnet. Uiteindelijk leidde de aanval, in combinatie met onderzoek van onder andere securitybedrijf Fox-IT en de FBI, tot het einde van deze beruchte malware, die volgens een schatting van de FBI meer dan honderd miljoen dollar schade heeft veroorzaakt.

Hoe een opmerkelijke coalitie een Russische crimineel bestreed Een Nederlandse student, enkele onderzoekers, enkele securitybedrijven en de FBI haalden een berucht crimineel netwerk offline. Een reconstructie van een bijzondere zaak. Lees het verhaal hier terug

Ik sprak Andriesse onlangs in zijn werkkamer aan de VU. Ik vond zijn uitleg zeer duidelijk en zijn verhaal erg interessant, omdat het inzicht geeft in hoe botnets precies werken en hoe securityonderzoekers de tegenaanval kunnen inzetten. Daarom wil ik hier een licht geredigeerd verslag plaatsen van ons gesprek. Het is hier en daar wat technisch van aard, maar juist in de techniek schuilt

1. De voorbereiding

Hoe ben je erbij gekomen om Gameover ZeuS te gaan bestrijden?

‘Tijdens mijn master in 2012 wilde ik onderzoeken hoe resistent peer-to-peerbotnets zijn tegen aanvallen. Daarvoor hadden botnets vaak een gecentraliseerde architectuur. Dan was er één server waar die botnets contact mee legden. Als je die uitschakelde, was je klaar.’

‘Met peer-to-peerbotnets kon dat niet meer. Die bots haalden hun informatie van elkaar. Als je alleen het peer-to-peerprotocol aanvalt, krijg je het botnet niet plat, want het heeft allerlei back-upkanalen en een Plus: als je echt wilt dat het botnet uit de lucht wordt gehaald, moet je ook de criminele organisatie erachter aanpakken. Anders staat het een dag later weer online. Daarom hebben we later contact gezocht met de FBI.’

Hoe heb je dit aangepakt?

‘Ik ben eerst maar eens technische rapporten over peer-to-peerbotnets gaan lezen. Vervolgens ben ik een sample gaan reverse engineeren: de machinecode vertalen naar iets wat voor een mens begrijpelijk is.’

Hoe kom je aan een sample van Gameover ZeuS?

‘Daar zijn verschillende manieren voor. We hebben op de VU speciale systemen, honeypots, die spam aantrekken en zichzelf expres laten infecteren.’

‘De fout konden we misbruiken door met heel veel bots contact op te nemen en te zeggen dat we een bekende bot waren met een ander IP-adres. Zo konden we die lijsten vergiftigen’

Hoe gaat dat, reverse engineeren?

‘Normaal gesproken is het al lastig om machinecode terug te vertalen naar iets begrijpelijks. Bij malware is dat nog lastiger, want malwaremakers willen natuurlijk niet dat wij dat kunnen begrijpen. Ze halen die code door een molen om het onbegrijpelijker te maken. En pakken de code vaak in een packer. Bijna alle code is dan versleuteld en je ziet alleen een stukje. Dat stukje kijkt of alles op het systeem is zoals de malware verwacht, of het niet geanalyseerd wordt. Pas dan gaat het de code uitpakken. Die code staat dan alleen nog maar in het geheugen van de computer, dus moet je die eruit zien te krijgen.’

‘Daarnaast moest ik inzicht krijgen in de functies die de malware gebruikte, zoals functies die gebruikt worden om data over het internet te sturen en te ontvangen. Normaal gesproken heb je in een programma een mooie tabel staan met al die functies en dan zie je in de code duidelijk wat er op ieder moment gebeurt. Bij die gepackte is die tabel vaak onleesbaar gemaakt. Dan is het extra lastig om te zien wat de code doet. Het heeft me maanden gekost, maar uiteindelijk is het gelukt om Gameover ZeuS te reverse engineeren.’

Wat gebeurde er toen?

‘Toen vonden we bepaalde kwetsbaarheden in het dat Gameover ZeuS gebruikte. Vervolgens konden we kijken hoe we dat protocol konden gebruiken om de peer-to-peerlaag in het netwerk te verstoren.’

Wat voor kwetsbaarheden vonden jullie?

‘Die bots moeten elkaar up-to-date houden over welke bots er nog meer in het netwerk zitten. Omdat er iedere dag tienduizenden bots bij komen en weer tienduizenden vertrekken, is dat bijna onmogelijk. Dus kent iedere bot een stuk of vijftig andere bots.’

‘Eens in de zoveel tijd sturen ze elkaar berichten waarin ze lijsten met zo’n tien adressen uitwisselen van andere bots. Als je hier bot A hebt en die kent bot B al en bot B neemt weer contact op met bot A, dan gaat bot A kijken of het IP-adres van bot B veranderd is. Dat kan namelijk gebeuren. Bij sommige internetserviceproviders heb je een dynamisch IP-adres dat over de tijd verandert. Wij konden dan doen alsof we bot B waren, dat een ander IP-adres had gekregen. Bot A paste dan zijn lijst aan.’

‘Deze fout konden we misbruiken door met heel veel bots in het netwerk contact op te nemen en te zeggen dat we een bekende bot waren met een ander IP-adres. Hiermee konden we die lijsten vergiftigen. Op een gegeven moment konden ze niet meer met elkaar verbinden in het peer-to-peernetwerk, omdat ze alleen maar onze IP-adressen kenden. Die adressen wezen naar een server van ons waar ze eens in de zoveel tijd contact mee opnamen. En van daaruit kunnen we valse informatie terugsturen en proberen ze vast te houden.’

Wist je toen al hoe de van het netwerk eruitzag?

‘We hadden wel een aardig idee. Het normale gedrag van de bot ken je: het is een peer-to-peernetwerk en er zijn speciale bots waar je commando’s kunt ophalen. Maar je weet niet of er nog hogere lagen zijn. Je weet alleen van die peer-to-peerlaag. Uiteindelijk zijn er, voor zover we weten, drie lagen: de peer-to-peerlaag, een laag van, soms wisselende, proxy’s en een meer gecentraliseerde

2. De eerste aanval

Gameover ZeuS is gemaakt om niet offline gehaald te worden. Was het lastig om niet opgemerkt te worden?

‘De eerste aanval die we deden [begin 2013, DT] was achteraf gezien vrij makkelijk op te merken. De IP-adressen die we gebruikten om de bots te vergiftigen lagen in Die verschilden alleen in het laatste stukje van elkaar, dus dan zou je denken dat het vrij makkelijk op te merken is.’

‘Uiteindelijk heeft het drie weken geduurd voordat de botmasters zagen dat er iets mis was. Een aantal begon een uit te voeren tegen onze servers. De bots die we hadden vergiftigd, konden daardoor geen contact meer opnemen met onze servers en vielen terug op hun back-upmechanisme. Daarmee hebben de botmasters hun netwerk kunnen herstellen.’

Die eerste aanval liep dus verkeerd. Wat hebben jullie toen gedaan?

‘We hebben verder gekeken naar de manier waarop bots adressen met elkaar delen. Elke bot heeft een identifier van twintig bytes. Daarmee kun je zien of een bot dicht bij je ligt, of juist verder weg. Als een andere bot vraagt om een lijst peers, krijgt hij een lijst terug van bots die het dichtstbij liggen. Wij hebben vervolgens gekeken welke delen we van de lijst moeten vergiftigen om een sterker effect te hebben. Dat hebben we verfijnd, zodat het ‘gif’ zich sneller verspreidde.’

‘Daarbij werden we geholpen doordat de communicatie tussen bots over ging in plaats van via Bij TCP hadden we bij elke bot een verbinding moeten opzetten en vergif moeten geven. Bij UDP kun je heel veel adressen tegelijk uitsturen waarbij je het adres van de afzender vervalst. Die komen dan wel aan bij de bots en dat is dan het vergif. Bij TCP kun je niet zomaar de afzender van een

We zijn trouwens onmerkbaar in ‘we’ en ‘jullie’ gaan praten. Wie zijn we?

‘De eerste aanval heb ik uitgevoerd met mijn dagelijkse begeleider. Herbert Bos was de algehele begeleider. Later kreeg ik contact met Duitse collega’s en een Amerikaanse collega van Dell SecureWorks. Uiteindelijk waren we met een groep van zes man. Met zijn allen waren we er continu mee bezig.’

Wat was voor jou het moment dat je dacht: hier moet ik hulp bij hebben?

‘Na de eerste aanval. Het bleek dat we toch nog meer moesten doen aan de back-upnetwerken.’

Besluit je eigenlijk zelf om zo’n aanval te starten?

‘Ja. Sommige mensen vinden dat je daar niet zo makkelijk mee moet experimenteren. Daar houden we wel rekening mee. We hadden er bijvoorbeeld ook voor kunnen kiezen om de besmette systemen op te schonen. Maar dat soort dingen kunnen we dus niet doen omdat er heel veel juridische en ethische problemen zijn. We weten niet wat voor systemen dat zijn. Misschien zit zo’n botnet wel op een belangrijk systeem van een ziekenhuis. Wie is er dan verantwoordelijk als dat tijdens het opschonen onderuitgaat?’

‘Misschien zit zo’n botnet wel op een belangrijk systeem van een ziekenhuis. Wie is er dan verantwoordelijk als dat tijdens het opschonen onderuitgaat?’

Was je ook niet bang dat je een onderzoek van bijvoorbeeld de FBI zou verstoren?

‘We hebben daar rekening mee gehouden. We hebben met iedereen contact opgenomen waarvan we wisten of redelijkerwijs konden aannemen dat ze naar dit botnet aan het kijken waren. Daar hebben we onze aanval mee gecoördineerd, zodat we niet hun onderzoek gingen verstoren. Zo zagen we bijvoorbeeld dat de Poolse in een van de bots zat, zij hadden een code achtergelaten.’

Hoe kan dat?

‘Dat doen ze expres, zodat wij kunnen zien dat een van hun onderzoekers ook met het botnet bezig is.’

Hoe kom je erachter welke machines geïnfecteerd zijn?

‘Je moet altijd een aantal beginadressen hebben. Die staan meestal letterlijk in de sample. Ieder sample moet zichzelf kunnen op het netwerk, die moet een aantal beginadressen hebben. Meestal zijn dat bots waarvan je kunt aannemen dat ze goed en heel lang bereikbaar zijn. En daar kun je contact mee leggen. En omdat je zo’n mooi peer-list-uitwisselingsmechanisme hebt, kun je dus vragen: welke buren heb jij? En dan krijg je een lijst terug. En dan ga je recursief aan die buren vragen wie zij weer als buren hebben, enzovoort.’

Hoe groot was het netwerk?

‘Rond de 200.000 bots.’

Wat voor systemen waren geïnfecteerd?

‘Van alles. Eindgebruikers, bedrijven, misschien zelfs banken.’

Hoe verspreidde Gameover ZeuS zich?

‘Via een ander botnet, Cutwail. Die hield zich vooral bezig met verspreiden van spam en in die spam werd dan Gameover ZeuS verspreid of links naar websites verspreid. En die websites werden dan geïnfecteerd en gingen dan proberen kwetsbaarheden te vinden in je browser. Dus vooral spam en drive by downloads.’

3. De tweede aanval

Goed, weer terug naar de periode rond begin 2013, na de eerste aanval.

‘We ontdekten een back-upnetwerk. Er waren speciale bots waar andere bots commando’s van konden ophalen, zogenoemde proxybots. De lijst proxybots was afgezonderd van de lijst gewone bots, dus die lijst moesten we ook gaan vergiftigen. Dat was nog best lastig, want bij die proxybots had je ook nog bepaalde encryptie waarmee de botmasters digitaal berichten konden ondertekenen. Daarmee werden de proxybots bekendgemaakt aan het netwerk. Die konden we niet zo makkelijk vervalsen.’

Hoe is dat dan toch gelukt?

‘Uiteindelijk hebben we daar toch een kwetsbaarheid in gevonden. Als je zelf een bot draait die lang en goed beschikbaar is, is de kans vrij groot dat de botmasters je gaan aanwijzen als proxybot waar commando’s kunnen worden opgehaald. Het bericht waarmee ze jou hebben aangewezen kun je dan verder gaan verspreiden in het netwerk en dus andere bots gaan spammen: ik ben proxy en neem mij over als je actieve proxy. Vervolgens kun je proberen om de verbindingen van bots naar andere proxy’s plat te leggen, zodat ze naar jou komen.’

‘Als je eenmaal zo’n proxy bent, dan kun je de bots vasthouden door ze een commando te sturen, maar dat kan net zo goed een leeg commando zijn. En er zaten ook fouten in de encryptie die ze hebben gebruikt, maar collega’s willen volgens mij niet dat ik die openbaar maak.’

En toen?

‘Eind 2013, begin 2014 zijn we die aanval gaan verfijnen. We hebben die tweede aanval eerst op onszelf gedaan, om te kijken of we de tekortkomingen van de eerste aanval hadden gladgestreken. We hebben er bijvoorbeeld voor gezorgd dat we meer variatie in IP-adressen voor onze servers hadden.’

‘De kunst was om de bots zoet te houden. We wilden niet dat ze naar het back-upkanaal gingen. We lieten ons eens in de zoveel tijd uit de peer list gooien en zorgden ervoor dat we er onder een ander IP-adres weer in kwamen, zodat er de hele tijd een soort verandering in die peer list zat. En dan kun je voorkomen dat ze naar het back-upkanaal gaan. En dat was vrij succesvol, daarmee hebben we 95 procent van de peer-to-peerlaag kunnen overnemen.’

‘Het enige wat nog ontbrak was het overnemen van de proxy’s waarmee ze dus alsnog commando’s konden geven.’

4. Het doek valt voor de criminelen

Hoe heb je die proxy’s in handen gekregen?

‘Daar hadden we de FBI voor nodig.’

‘Als reactie op onze tweede aanval hebben de botmasters een soort beveiligingsmechanisme geïntroduceerd. Ze wisten niet waar de aanval vandaan kwam. Toen hebben ze een beveiligingsmaatregel geïntroduceerd die inhield dat als je van een bepaald adres te veel berichten stuurt in een bepaalde tijd, het IP-adres automatisch wordt geblokkeerd. Ons plan was om eerst die IP-adressen van bots weer te vervalsen en om dan in korte tijd vanaf dat IP-adres veel berichten te sturen, zodat ze elkaar gingen blokkeren.’

‘Maar vlak voordat we dat wilden doen, zijn we in contact gekomen met de FBI. Die wilde het botnet uitschakelen en die was ook bezig met een onderzoek naar de mensen erachter. Het voorstel was om samen te werken. Dat wij de technische aanval deden en zij het onderzoek naar de criminelen erachter. Een goede aanpak. Vaak gebeurt het dat het hele netwerk wordt platgelegd, de criminelen een paar aanpassingen doen en er binnen een paar weken een nieuw botnet wordt gelanceerd.’

‘Vaak gebeurt het dat het hele netwerk wordt platgelegd, de criminelen een paar aanpassingen doen en er binnen een paar weken een nieuw botnet wordt gelanceerd’

Hoe werkt zo’n samenwerking?

‘Er veranderde niet zoveel. Onze werkwijze was om een paar maanden onderzoek te doen en eens in de zoveel tijd bij iemand thuis te komen. Dan werkten we een paar dagen lang aan het opzetten van een aanval en voerden die dan uit. We bleven dit doen toen de FBI er begin 2014 bij kwam, maar hadden een contactpersoon bij de dienst met wie we overlegden.’

Hoe moet ik zo’n aanval voor me zien?

‘Het lijkt wel een beetje op een Je sluit je dagen op in een huis en iedereen zit achter zijn laptop. Tijdens zo’n aanval ben je continu het botnet aan het monitoren. Van wat bevriende providers en bedrijven kregen we de infrastructuur en servers waar we sinkholes konden draaien.’

Dat klinkt best informeel.

‘Het technische deel is inderdaad heel informeel. Het enige wat veranderde, is dat we op een gegeven moment een contactpersoon van de FBI kregen waarmee we de aanval synchroniseerden.’

Wat gebeurde er na de tweede grote aanval?

‘We hadden 95 procent van het netwerk overgenomen. We konden het blijven vasthouden, maar er zat grote flux in het netwerk. Er verdwenen bots, er kwamen nieuwe bij. Dus uiteindelijk zou het botnet zich weer herstellen.’

‘Eerst was er sprake van dat de FBI gerechtelijke toestemming had gekregen om een clean-upprogramma naar het botnet te sturen. Want als je eenmaal een proxy bent geworden, dan nemen alle bots eens in de zoveel tijd contact met je op om commando’s te vragen en dan kun je eigenlijk elk commando sturen dat je wilt.’

‘Toen is binnen een bepaalde instantie uitgebreid getest met het clean-upprogramma van ons. Dat ging voor het grootste gedeelte goed, ik ben één crashsituatie tegengekomen. De FBI durfde het vervolgens niet aan.’

‘Toen hebben we een alternatieve aanval opgezet, waarbij we de proxy’s overnamen, lege commando’s bleven sturen en tegelijkertijd het back-upkanaal overnamen. Dat heeft de FBI geregeld door die domeinnamen, die de back-ups gebruikten, in beslag te nemen. In juni 2014 is dat gelukt.’

Wat is er daarna gebeurd?

‘Er is niet zoveel ondernomen om het netwerk zelf te redden. De criminelen waren op de vlucht. We hebben de sinkholes laten draaien. We moeten wel onze infrastructuur online houden, anders gaan die botnets zich alsnog herstellen. Er is geen actieve tegenaanval gekomen. We hebben nog wel een paar afgeleide versies van Gameover ZeuS gezien, maar die zijn nooit zo succesvol geworden als de oorspronkelijke versie.’

Maar het botnet zelf is dus eigenlijk niet weg?

‘Nee, de bots slapen. Je kunt wel een paar dingen doen, maar die zijn allemaal lastig. Je kunt dus een clean-upprogramma sturen, maar daar hebben we dus van afgezien.’

‘Je weet op welke IP-adressen de bots draaien, dus je kunt uitzoeken wie welke clients beheert en contact met de eigenaar opnemen. Maar het zijn er 200.000. Dat is enorm lastig te organiseren.’

Verplaats je eens in de makers van Gameover ZeuS. Wat vind je van het werk dat ze hebben gemaakt?

‘Sommige botnets zitten beter in elkaar dan andere. In het geval van Gameover ZeuS lijkt het redelijk professioneel geprogrammeerd. Je hoeft ook weer geen genie te zijn om het te maken. Ze hebben vermoedelijk ook veel ervaring. Dit zal niet het eerste botnet zijn dat ze gemaakt hebben.’

Meer weten over dit onderzoek?

Wat zegt de wetenschap? Op Andriesses website vind je enkele wetenschappelijke artikelen die hij en zijn collega’s schreven over Gameover ZeuS. Ze zijn goed te volgen voor leken. Bekijk hier zijn pagina

En op Black Hat USA 2015 staat een praatje van enkele onderzoekers. Hierin wordt ook het werk van Andriesse en enkele collega’s behandeld.

YouTube
Black Hat USA 2015: Gameover Zeus Badguys and Backends.

Meer lezen over malware?

Hoe software je computer kan gijzelen De laatste tijd verschijnen er veel berichten in de media over ransomware, software die je computer gijzelt. Wat is ransomware? En wat kun je ertegen doen? Lees verder Eerste hulp bij hacken: de lessen die ik heb geleerd In augustus kondigde ik aan te willen leren hacken. Na vier maanden maak ik de balans op. Wat heb ik geleerd? En waarom moet ook jij leren hacken? Lees verder In deze virtuele oorlog vechten beide kampen om jouw veiligheid Er woedt al ruim drie decennia een oorlog tussen opsporings- en inlichtingendiensten enerzijds en cryptografen en activisten anderzijds. De inzet: onze veiligheid en anonimiteit op internet. De strijd is onlangs weer opgelaaid. Hoe kan de strijdbijl begraven worden? Lees verder