Obfuscatie

Introductie

Hier zit iets verstopt!

Zie je in het vakje iets staan? Probeer eens iets te vinden.

Tip : Selecteer de tekst!

Dit is een simpel voorbeeld van obfuscatie, het verbergen van informatie voor het blote oog.

Waarom gebruikt men obfuscatie? Voor goede doeleinden kan dit gebruikt worden om data te verbergen en om te voorkomen dat hackers je data kan vinden. Voor slechte doeleinden kunnen cyber criminelen programma's die jouw computer kapot maken verbergen in een tekst document, bij het openen van dit document wordt het programma uitgevoerd.

Wat is obfuscatie?

"Obfuscatie betekent het opzettelijk moeilijker maken om iets te begrijpen. Op het internet of in documenten betekent dit dat informatie expres wordt verward, versleuteld of verborgen, zodat het moeilijk te lezen of te analyseren is. Dit kan gedaan worden om gegevens te beveiligen, zoals bij wachtwoorden, of om informatie te verbergen, bijvoorbeeld in programmeercode of geheimhoudingsdocumenten."

Dat is de volledige definitie van obfuscatie, geen zorgen, want we zullen het stuk per stuk uitleggen.

Voorbeeld obfuscatie : "H@ck3r"

We kunnen zien dat het woord hacker is, maar het is moeilijker om te lezen. Dit is een vorm van obfuscatie, want we verbergen het woord door andere tekens te gebruiken. Zo wordt het moeilijker om het woord te lezen.

Code obfuscatie

Het beschermen van applicaties is van enorm belang, daarom dat er ook veel technieken zijn om de code van deze applicaties te doen verbergen. Van minder code schrijven tot de code zo 'vaag' te schrijven dat je niet kan lezen wat er staat, je leert het hier!

Code minimaliseren

Stukje code voor wachtwoord encryptie Geminificeerde code voor wachtwoord encryptie

Zie jij het verschil tussen de twee afbeeldingen? De code aan de rechterkant heeft minder code dan de andere, toch zijn het allebei exact dezelfde code. Dit is het minimaliseren van code!

  • Voordelen
    • Verkleint bestandsgrootte.
    • Maakt het moeilijker om de code te analyseren.
  • Nadelen
    • Maakt debuggen lastiger.
    • Vermindert codeleesbaarheid voor ontwikkelaars.

Dummy code

Stukje code voor wachtwoord encryptie Stukje code voor wachtwoord encryptie met dummy code

Tussen deze codes is het verschil duidelijk, er is bij de rechtse code gewoon een stuk dummy code aan toegevoegd. Wat is nu dummy code? Dat is code die eigenlijk geen meerwaarde heeft, maar gewoon ervoor zorgt dat het extra ingewikkeld wordt.

Code packing

Code packing betekent het veranderen van de lay-out van de code, zonder dat het echt gaat veranderen, want voor het uitvoeren wordt de code uitgepakt. Hieronder staat voorbeeld van code die is gemaakt met code packing. Je kunt met functie de code normaal maken voordat het wordt uitgevoerd. Dit wordt gebruikt om bijvoorbeeld malware ingewikkelder te maken. Dit kan ook gebruikt worden, zodat andere niet makkelijk code kunnen overnemen.

                b'xœ\xcd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xf0\x00\xb0...'
            

Oefening code packing

Probeer zelf via pyobfuscate jouw eigen python code is te maken met code packing.

Stappenplan

  1. Kopiër jouw python code naar keuze.
  2. Plak deze code in de box op de website van pyobfuscate.
  3. Klik op submit, daarna heb je het resultaat.
Voorbeeld code in pyobfuscate

Geavanceerdere technieken

De meer ervaren IT'ers zullen nog meer technieken kennen om goed te kunnen obfusceren, kijk maar naar deze voorbeelden.

Code virtualisatie

Computers gebruiken instructies om programma’s te laten werken. Normaal gesproken begrijpt de computer deze instructies meteen. Maar bij code virtualisatie worden de originele instructies omgezet in een speciale geheime code (virtuele opcodes). Deze code kan alleen worden begrepen door een bijbehorende virtuele machine (VM) die in het programma zit.

Denk aan een tolk die een onbekende taal omzet in een taal die slechts één specifieke groep mensen begrijpt. Zonder deze tolk zou niemand het bericht kunnen lezen!

Code virtualisatie wordt vaak gebruikt om programma’s te beschermen tegen mensen die de code willen kraken. Bijvoorbeeld:

  • Bescherming van software: Programmeurs kunnen hun code verbergen, zodat anderen hun werk niet stelen.
  • Extra veiligheid: Sommige programma’s verbergen gevoelige informatie, zoals wachtwoorden of licentiesleutels, zodat hackers deze niet zomaar kunnen vinden.

Anti-debuggen

Soms willen we voorkomen dat er geknoeid wordt met ons programma, om dit te doen kunnen we een "anti-debugger" implementeren. Dit is een klein stukje programma dat toegevoegd wordt om te meten hoeveel tijd er gespendeerd wordt aan het stukje code. Aangezien een debugger de code vertraagt is dit zeer handig.

Als de tijd die het neemt om een stukje code de laten runnen dan langer duurt dan zou moeten volgens ons wordt het programma vanzelf afgesloten.

Foto van stukje code met een anti-debugger

In dit voorbeeld wordt de tijd gemeten die nodig is om een operatie uit te voeren. Als de tijd langer is dan een drempel (bijvoorbeeld 0.01 seconden), concludeert het programma dat er mogelijk een debugger is en wordt het afgesloten.

Code signing

Code signing is een veelgebruikte techniek om te voorkomen dat de code wordt aangepast. Bij code signing wordt er een digitale handtekening aan de code toegevoegd door de softwareontwikkelaar. Deze handtekening kan door het besturingssysteem worden geverifieerd.

Foto van twee desktop pop-ups, eentje niet code signed en de andere wel.

Als de code na het ondertekenen wordt gewijzigd, wordt de handtekening ongeldig en zal het besturingssysteem voorkomen dat de gewijzigde code wordt uitgevoerd.

Voorbeeld code signing

We gaan eens kijken naar een voorbeeld van zo een certificaat. We doen dit door te kijken op de website van wikipedia.

Stappenplan

  1. Ga naar de website van wikipedia.
  2. Klik op het symbool naast de link.

    Wikipedia security sectie
  3. Klik op "verbinding is beveiligd".

    Wikipedia sectie verbinding beveiligd

    Hier zien we dat er een certificaat is. Dit komt doordat HTTPS websites een S hebben van security. Dat wil zeggen dat ze een certificaat hebben en hun code de originele is.

Extra oefeningen – Obfuscatie in actie

Obfuscatie betekent dat je iets moeilijk leesbaar maakt, zodat iemand niet direct snapt wat er staat. In malware wordt dat vaak gedaan om te verbergen wat het doet 😈. Nu gaan we zelf proberen om verborgen boodschappen te ontdekken!

🧠 Opdracht 1: Decodeer de boodschap

  1. Probeer de boodschap te ontcijferen.
  2. Gebruik de hint als je vastzit.
  3. Klik op Toon antwoord om te controleren of je juist zat!

Boodschap 1: olleH

Hint: lees het van achter naar voor

Antwoord: Hello

Boodschap 2: D*i*t*i*s*e*e*n*b*o*o*d*s*c*h*a*p

Hint: negeer de sterretjes, lees alleen de letters

Antwoord: Dit is een boodschap

Boodschap 3:D4rkw3b

Antwoord: Darkweb!

🧩 Opdracht 2: Wat zit er in deze PDF?

Download het mysterieuze document hieronder...

Hint: Open het document, kopieer alle tekst en plak het ergens. Misschien zie je dan iets?

Download verborgen PDF
Antwoord: In witte tekst stond "WOW! Je hebt me gevonden😊" in het midden van het PDF-bestand.

🐱 Opdracht 3: De kat weet iets...

Kijk eens naar deze schattige kat. Niks speciaals, toch?

Foto van een kat

Hint: Probeer eens in te zoomen met je touchpad of vingers rechtsonder op de afbeelding.

Antwoord: In onzichtbare tekst staat onder de afbeelding "Hey, je hebt me gevonden".

Quiz

Obfuscatie
Vraag wordt geladen...
Score: 0