Daan Goumans - Write-ups

Operation Stealth .Actie - Bescherm jij de rechtspraak tegen hackers?

Op donderdag 20 april 2017 presenteerde Tweakers samen met spir-it, de ict-dienstverlener voor de rechtspraak, een nieuwe en spannende uitdaging voor it-ers. Bij Operation Stealth draait het om de vaardigheden, het vernuft en de creativiteit van de deelnemers om de zaak tot een goed einde te brengen.
https://tweakers.net/plan/1191/operation-stealth-bescherm-jij-de-rechtspraak-tegen-hackers.html

Klinkt leuk!

Cyberaanval...

Het hackerscollectief ‘Perestroy’ heeft een cyberaanval gepleegd op de Nederlandse waterzuivering om de Nederlandse overheid af te persen voor een grote geldsom! Kan jij ervoor zorgen dat de Rechtszaak tegen ‘Perestroy’ onder de radar blijft zodat het recht zegeviert in Operation Stealth?

Bij het openen van https://www.operationstealth.nl krijgen we het menu scherm te zien waarvanuit de opdrachten kunnen worden gestart:


LEVEL 1

VERHOOR OP AFSTAND
De verdachte is opgespoord en opgepakt in woldanië door middel van een undercover agent. Er wordt een anoniem verhoor op afstand opgezet, om de bevindingen van de agent als bewijslast te kunnen gebruiken. Zorg dat je het audiobestand van het verhoor op een veilige manier weet te bemachtigen!

Klikken op download geeft:
Het is niet mogelijk het audiobestand te downloaden vanaf dit IP
Gelukkig is TOR bedacht om veilig/anoniem te internetten.

Hiermee lukt het om het bestand te downloaden en Level 1 te behalen.

LEVEL 2

DE RECHTSZAAL
Cruciale informatie uit het verhoor maakt de bewijslast tegen de verdachte compleet en de eerste zitting in de rechtszaal kan beginnen. De zitting wordt live gestreamd naar de pers en publiek in de naastgelegen zaal want er is veel aandacht voor deze rechtszaak. Zorg ervoor dat de livestream tijdens de zaak in de lucht blijft, want de handlangers van perestroy houden de zaak goed in de gaten!

Na het bekijken van het filmpje gaat de videostream down. Deze zal gefixt moeten worden via de console.

De console ziet er als volgt uit:

Er zal dus gefiltert moeten worden op bepaalde ip-reeksen om het ddossen te stoppen. Dit zonder de stream zelf te raken. Bij het blokkeren van IP-addressen met user agent "3gpp-gba UNTRUSTED/1.0" gaat de stream meteen down:

Dit is dus de livestream. De rest van de ipreeksen waar die string niet in voor komt zal dus geblockt moeten worden.

Om dit voor elkaar te krijgen copy-paste ik de volledige log naar een .txt bestand.
Hierop voer ik de volgende commando’s uit:


	cat 1.txt |grep UNTRUSTED |cut -d" " -f1|cut -d"." -f1-2|sort|uniq
	
Haalt alle ipreeksen naar voren welke useragent untrusted hebben. (als voorbeeld 180.255 & 221.153)
	cat 1.txt |grep -v "180.225\|221.153" |cut -d" " -f1|cut -d"." -f1-2|sort|uniq
	
Doet een reverse grep op de reeksen om alle ipreeksen te krijgen die niet de stream kijken (dus de ddoss’ers)

De output hiervan kunnen we als volgt blocken:

Wat resulteert in:

LEVEL 3

NIEUWE BEWIJSLASTEN
Er zijn nieuwe bewijslasten gevonden door de nationale politie die mogelijk voor een doorbraak kunnen zorgen in de rechtszaak. Maar… de bewijslasten komen via het operating system niet beschikbaar, want het lukt de nationale politie niet om het bestand juist te uploaden. Download hier de bewijslast: bewijslast.Pdf Zorg ervoor dat de bewijslast wél verkrijgbaar komt!

We moeten een file uploaden maar krijgen een error te zien.

We zullen de code van het fileupload system moeten fixen zodat deze correct werkt.
Door naar /fix-upload te gaan krijgen we een stuk php code te zien. Deze zal aangepast moeten worden.

	<?php

	// Move the temporary uploaded file to its final location,
	// it should be available at the location "/tmp/boxed/success/agentwHFKWjTvKMoz.pdf".

	$path = '/tmp/boxed/success/';

	$mimes = [
	    'application/pdf',
	    'application/x-pdf'
	];

	$file = $_FILES['verdict'];
	$fileName = $file['name'];

	if (!file_exists($file['tmp_name'])) {
	    throw new \Exception('file does not exist');
	}

	if (!in_array($file['mime'], $mimes)) {
	   throw new \Exception('mime type not allowed');
	}

	do_move($file['tmp_name'], $path . $fileName);

	

Bij het klikken op opslaan krijgen we de volgende melding:

LEVEL 4

DE DIGITALE UITSPRAAK
De rechtszaak is afgerond! Er is een doorbraak in de zaak nu er genoeg bewijslast is om het hackerscollectief ‘perestroy’ achter slot en grendel te zetten. De uitspraak staat gepland, de media staan klaar maar ook de hackers voor een laatste aanval!
Er wordt vermoed dat de verdachten of hun handlangers gaan proberen de uitspraak te saboteren door de upload van het vonnis te overschrijven. Een vergelijkbare hack is namelijk een maand geleden al geprobeerd in een andere zaak.
Inmiddels is bij alle betrokken isp’s de logdata opgevraagd rondom die hack, maar dat betreft miljoenen logregels. Vind de correcte exploit vector zodat deze proactief geblokkeerd kan worden voor de uitspraak.

Er is dus iets te vinden in de logregels. Aangezien ze spreken over een exploit in de upload zal er daar iets te vinden zijn.

Door te zoeken naar een succesvolle (statuscode 200) plaatsing (Method PUT) van malware (Pad .php) kunnen we logregel vinden.

Hiermee voorkomen we de aanval van Perestroy!


Een paar dagen later, Donderdag 25 mei, hemelvaartsdag, 9:43 ontving ik de volgende mail:

Hi!
Onlangs heb jij de Operation Stealth game uitgespeeld en jij bent 1 van de 10 gelukkige winnaars! Van harte gefeliciteerd!

En eindigen we Operation Stealth