Introductie
Hier zit iets verstopt! (Wow, je hebt me gevonden!)
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
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
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
- Kopiër jouw python code naar keuze.
- Plak deze code in de box op de website van pyobfuscate.
- Klik op submit, daarna heb je het resultaat.
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.
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.
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
- Ga naar de website van wikipedia.
-
Klik op het symbool naast de link.
-
Klik op "verbinding is 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.
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
- Probeer de boodschap te ontcijferen.
- Gebruik de hint als je vastzit.
- Klik op Toon antwoord om te controleren of je juist zat!
Boodschap 1: olleH
Hint: lees het van achter naar voor
Toon antwoord
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
Toon antwoord
Antwoord: Dit is een boodschap
🧩 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
Toon antwoord
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?
Hint: Probeer eens in te zoomen met je touchpad of vingers rechtsonder op de afbeelding.
Toon antwoord
Antwoord: In onzichtbare tekst staat onder de afbeelding "Hey, je hebt me gevonden".