Skip to main content

Cyber Security 2

Status: moet nog worden aangevuld en uitgewerkt.

Wat is Cybersecurity?

In cybersecurity 1 hebben we gekeken naar een aantal soorten cyberaanvallen.

We gaan ons lijstje uitbreiden.

🛡️ Soorten Cyberaanvallen – Overzicht

Phishing

Nepmails of nepwebsites die mensen misleiden om wachtwoorden of persoonlijke gegevens in te vullen.

Binnen Phisisng kennen we allemaal sub-soorten

Spear Phishing

Gerichte phishing-aanval op één persoon of organisatie, vaak met persoonlijke details om het geloofwaardiger te maken.

Whaling

Phishing gericht op topmensen binnen een organisatie, zoals directeuren of bestuurders.

Vishing (Voice phishing)

Telefonische oplichting waarbij de aanvaller zich voordoet als bijvoorbeeld de bank.

Smishing (SMS phishing)

Phishing via sms-berichten met links naar nepwebsites.

Virus

Malware die zich hecht aan programma’s of bestanden en zich kan verspreiden naar andere systemen.

Worm

Een soort malware die zich zelfstandig verspreidt via netwerken, zonder hulp van een bestand.

Trojan Horse (Trojaans paard)

Lijkt op legitieme software, maar voert op de achtergrond schadelijke acties uit.

Ransomware

Blokkeert je bestanden of systeem en eist losgeld om weer toegang te krijgen.

Spyware

Volgt je activiteiten op je apparaat zonder dat je het merkt, vaak om wachtwoorden of surfgedrag te stelen.

Adware

Toont ongewenste advertenties, stuurt je naar bepaalde websites, en vertraagt je systeem.

Keylogger

Registreert alles wat je typt, zoals wachtwoorden en privéberichten.

Rootkit

Verbergt malware diep in het systeem, waardoor het moeilijk te vinden of verwijderen is.

Backdoor

Een geheime toegang tot een systeem, vaak achtergelaten door malware of een hacker.

Denial-of-Service (DoS)

Een aanval waarbij een website of server overspoeld wordt met verkeer en daardoor onbruikbaar wordt.

Distributed Denial-of-Service (DDoS)

Een DoS-aanval vanuit meerdere computers tegelijk, vaak via een botnet.

Brute Force Attack

Het systematisch proberen van alle mogelijke wachtwoorden tot het juiste gevonden is.

SQL Injection

Aanval via een invoerveld waarin schadelijke databasecode wordt ingevoerd.

Cross-Site Scripting (XSS)

Aanval waarbij kwaadwillende code in een website wordt geplaatst om andere gebruikers te beïnvloeden.

Cross-Site Request Forgery (CSRF)

De gebruiker wordt misleid om zonder het te weten een actie uit te voeren, zoals een betaling.

Zero-Day Attack

Een aanval die misbruik maakt van een onbekend beveiligingslek waar nog geen oplossing voor is.

DNS Spoofing (DNS Poisoning)

Bezoekers worden naar een nepwebsite gestuurd, ook al typen ze de juiste URL in.

Social Engineering

Mensen manipuleren om vertrouwelijke informatie te geven, vaak via e-mail, telefoon of fysiek contact.

5 SQL Injection in PHP

🎯 Leerdoelen

  • Je begrijpt wat een SQL Injection is en waarom het gevaarlijk is.
  • Je kunt zelf een simpele SQL Injection uitvoeren op een onveilige PHP-pagina.
  • Je kunt uitleggen hoe je dit soort aanvallen voorkomt.

💡 Uitleg

Bij een SQL Injection wordt misbruik gemaakt van een fout in je code, waarbij de invoer van een gebruiker direct in een SQL-query wordt gezet. Als je niet oppast, kan een hacker zo gegevens uit je database stelen of zelfs verwijderen.

Een klassiek voorbeeld is een inlogformulier waarin de gebruikersinvoer zonder controle in de query komt te staan:

<?php
$conn = new mysqli("localhost", "root", "", "testdb");

$username = $_POST['username'];
$password = $_POST['password'];

$sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    echo "Welkom!";
} else {
    echo "Ongeldige login.";
}
?>

Als een aanvaller het volgende invoert:

Gebruikersnaam: ' OR '1'='1
Wachtwoord: watdanook

dan wordt de SQL-query dit:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = 'watdanook'

Omdat '1'='1' altijd waar is, kan de aanvaller inloggen zonder wachtwoord te kennen.

🛠️ Opdracht – Voer een SQL Injection uit

  1. Maak een database testdb met een tabel users:
    CREATE TABLE users (
      id INT AUTO_INCREMENT PRIMARY KEY,
      username VARCHAR(255),
      password VARCHAR(255)
    );
  2. Voeg een gebruiker toe:
    INSERT INTO users (username, password) VALUES ('admin', 'admin123');
  3. Maak een PHP-bestand login.php met bovenstaande onveilige code.
  4. Maak een formulier met twee velden: username en password.
  5. Voer een SQL-injection uit zoals hierboven uitgelegd. Wat gebeurt er?

🛠️ Vervolgopdracht – Beveilig je formulier

  1. Pas de code aan zodat je gebruik maakt van prepared statements:
<?php
$conn = new mysqli("localhost", "root", "", "testdb");

$username = $_POST['username'];
$password = $_POST['password'];

$stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();

$result = $stmt->get_result();

if ($result->num_rows > 0) {
    echo "Welkom!";
} else {
    echo "Ongeldige login.";
}
?>
  1. Test of de SQL Injection nu nog werkt. Leg uit waarom het niet meer lukt.

🧠 Reflectie

  • Waarom is SQL-injection zo gevaarlijk voor een website?
  • Wat had de originele programmeur moeten doen om dit te voorkomen?
  • Gebruik je op je eigen sites al veilige manieren om met invoer om te gaan?

📤 Inleveren

  • Maak twee screenshots:
    • Eén van je geslaagde SQL-injection
    • Eén van je beveiligde code in actie (met foutmelding bij ongeldige login)
  • Lever ook een korte toelichting en je reflectie in als .pdf of .txt
  • Bestandsnamen:
    • sqlinjectie-.jpg
    • sqlinjectie-reflectie-.pdf

6 Cross-Site Scripting (XSS)

🎯 Leerdoelen

  • Je weet wat Cross-Site Scripting (XSS) is en hoe het werkt.
  • Je kunt zelf een XSS-aanval uitvoeren in een onveilige webpagina.
  • Je kunt uitleggen hoe je je website kunt beschermen tegen XSS.

💡 Uitleg

Wat is XSS?

Cross-Site Scripting (XSS) is een aanval waarbij een aanvaller kwaadaardige scripts (zoals JavaScript) invoert in een formulier of URL. Deze scripts worden dan uitgevoerd in de browser van een andere bezoeker.

Stel: je maakt een gastenboek waar mensen een berichtje kunnen achterlaten. Als je hun invoer niet goed filtert, kan iemand dit invoeren:

<script>alert('Ik ben gehackt!')</script>

Iedereen die daarna het gastenboek bezoekt, krijgt dan deze melding te zien – het script wordt uitgevoerd alsof het van jouw site komt.

🛠️ Opdracht – Voer een XSS-aanval uit

  1. Maak een PHP-bestand gastenboek.php met het volgende formulier en afhandelingscode:
<form method="post">
  Naam: <input name="naam"><br>
  Bericht: <textarea name="bericht"></textarea><br>
  <input type="submit" value="Verstuur">
</form>

<?php
if ($_POST) {
  echo "<h3>Bericht ontvangen:</h3>";
  echo "<p>Van: " . $_POST['naam'] . "</p>";
  echo "<p>" . $_POST['bericht'] . "</p>";
}
?>
  1. Voer nu als bericht het volgende in:
    <script>alert('XSS test')</script>
  2. Wat gebeurt er?

🛠️ Vervolgopdracht – Beveilig je formulier

  1. Pas de PHP-code aan zodat gebruikersinvoer wordt ge-escaped:
echo "<p>Van: " . htmlspecialchars($_POST['naam']) . "</p>";
echo "<p>" . htmlspecialchars($_POST['bericht']) . "</p>";
  1. Voer nogmaals het script in. Wat gebeurt er nu?

🧠 Reflectie

  • Wat maakt XSS zo gevaarlijk voor je bezoekers?
  • Wat is het verschil tussen htmlspecialchars() en strip_tags() in PHP?
  • Hoe zou jij in een groter project XSS voorkomen?

📤 Inleveren

  • Screenshot van de popup bij onveilige invoer
  • Screenshot van veilige invoer na beveiliging
  • Toelichting op je reflectie
  • Bestandsnamen:
    • xss-aanval-.jpg
    • xss-veilige-versie-.jpg
    • xss-reflectie-.pdf

7 Social Engineering en Phishing

🎯 Leerdoelen

  • Je weet wat social engineering is en hoe phishing werkt.
  • Je kunt een phishingpoging herkennen.
  • Je weet hoe je jezelf en je gebruikers kunt beschermen tegen social engineering-aanvallen.

💡 Uitleg

Wat is social engineering?

Social engineering is het manipuleren van mensen om gevoelige informatie prijs te geven of acties uit te voeren die de beveiliging schaden. Voorbeelden:

  • Iemand belt je zogenaamd namens IT en vraagt om je wachtwoord.
  • Een mailtje zegt dat je “direct moet inloggen” om je account te redden.

Wat is phishing?

Phishing is een vorm van social engineering waarbij iemand zich voordoet als een betrouwbare partij (zoals je bank, school of DigiD) om je inloggegevens of andere data te stelen.

Meestal gebeurt dit via e-mail of nepsites die lijken op de echte.

🛠️ Opdracht – Herken phishing

  1. Bekijk 3 voorbeelden van phishingmails of nepsites. Gebruik bijv. de site fraudehelpdesk.nl.
  2. Beantwoord de volgende vragen:
    • Wat valt je op aan de mail of site?
    • Wat klopt er niet?
    • Wat zou jij doen als je deze mail ontvangt?

🛠️ Opdracht – Bouw een (veilige) nep-loginpagina

Maak een HTML-pagina met de opmaak van een bekende site (bv. Instagram, Facebook of je school), maar sla de invoer lokaal op of toon het resultaat in het scherm. Je gebruikt dit puur om de aanvalstechniek te begrijpen – NIET om iemand mee te misleiden!

<form method="post">
  Gebruikersnaam: <input name="username"><br>
  Wachtwoord: <input type="password" name="password"><br>
  <input type="submit" value="Login">
</form>

<?php
if ($_POST) {
  echo "<p>Opgevangen gegevens:</p>";
  echo "Gebruiker: " . $_POST['username'] . "<br>";
  echo "Wachtwoord: " . $_POST['password'];
}
?>
  1. Maak je site herkenbaar door een waarschuwing toe te voegen dat het een oefening is.

🧠 Reflectie

  • Waarom werken phishingaanvallen zo goed, denk je?
  • Wat zou jij doen als je twijfelt aan een mail of site?
  • Hoe zou je jouw ouders of opa/oma uitleggen hoe ze phishing kunnen herkennen?

📤 Inleveren

  • Een kort verslag van je analyse van 3 phishingvoorbeelden
  • Een screenshot van je lokale oefen-phishingsite met zichtbaar ingevulde gegevens
  • Reflectie op hoe je social engineering in het dagelijks leven herkent
  • Bestandsnamen:
    • phishing-analyse-.pdf
    • phishingsite-.jpg
    • phishing-reflectie-.pdf