Cyber Security 1 0 inhoud 💻🔒 Bescherm je digitale wereld – word een cybersecurity-held! Inhoud Wat is Cyber Security? Cyber Security richt zich op het beschermen van computersystemen tegen misbruik en leert over diverse cyberaanvallen zoals phishing en malware. HTTPS en netwerkveiligheid HTTPS beveiligt de communicatie tussen browser en website door gegevens met een SSL-certificaat te versleutelen, wat meelezen en manipulatie voorkomt. Encryptie Encryptie maakt gegevens onleesbaar voor derden, gebruikmakend van ofwel dezelfde sleutel (symmetrisch) of twee verschillende sleutels (asymmetrisch) voor versleuteling en ontsleuteling. Hashing Hashing is een eenrichtingsversleuteling die gebruikt wordt om wachtwoorden veilig op te slaan, zodat deze niet terug te rekenen zijn naar het origineel. Brute Force-aanvallen en Loginbeveiliging Brute force-aanvallen, waarbij veel wachtwoorden worden geprobeerd, kunnen worden voorkomen door inlogpogingen te limiteren, vertragingen in te bouwen of 2FA toe te passen. Rainbow tables Rainbow tables zijn lijsten van wachtwoorden en hun hashes, gebruikt door aanvallers om snel originele wachtwoorden te achterhalen uit gehashte data. Salting en encryptie Salting voegt een unieke willekeurige tekst ("salt") toe aan een wachtwoord vóór het hashen, wat de veiligheid verhoogt door rainbow tables minder effectief te maken Test je kennis Heb je alles goed begrepen? Test je kennis en bereid je voor op de kennis-check! 1 Wat is Cyber Security? 🎯 Leerdoelen Je weet wat Cyber Security is en waarom het belangrijk is. Je kent verschillende soorten cyberaanvallen. Je kunt voorbeelden noemen van echte incidenten en uitleggen wat er fout ging. 💡 Uitleg Cyber Security betekent simpel gezegd: het beschermen van computersystemen tegen aanvallen of misbruik . Denk hierbij aan het veilig houden van je website, je wachtwoorden, je e-mails en alle andere digitale gegevens. Als je een website of app bouwt, ben je automatisch verantwoordelijk voor de veiligheid van de gegevens van je gebruikers. Hackers proberen vaak in te breken via bekende zwakke plekken, zoals slechte wachtwoorden of fouten in je code. Voorbeelden van cyberaanvallen: Phishing: iemand probeert jou te misleiden om je wachtwoord af te geven (bv. via een nep-mail van je bank) Adware: software dat ongevraagd advertenties toont. Virus : speciaal soort malware dat zichzelf kan vermenigvuldigen (net als het Corona virus). DDoS-aanval: een server wordt overspoeld met aanvragen en raakt onbereikbaar SQL-injection: via een formulier wordt je database gehackt (in Cyber Security 2 gaan we zelf een SQL injection uitvoeren!) Man-in-the-middle: iemand onderschept je gegevens tussen jou en een website 👉 Je gaat in deze module zien hoe aanvallen werken én hoe je jezelf (en jouw code) daartegen kunt beschermen. Cyberaanvallen maken vaak gebruik van kwaadaardige software. De verzamelnaam hiervoor is malware . 🛠️Opdracht 1, malware Hierboven staat een lijst van 6 soorten cyberaanvallen. Welke van deze maakt niet per sé gebruik van kwaadaardige software? Zoek informatie op internet en leg uit! Voeg je bronvermelding toe. 🛠️Opdracht 2, risico Hierboven zijn 6 voorbeelden van cyberaanvallen beschreven. Zoek zelf op wat de volgende soorten cyberaanvallen betekenen: Ransomware Trojan Spyware Adware Keylogger Jij bent IT Security Officer en jij moet aangeven welke van deze bedreigingen het gevaarlijkst zijn. Zet deze 6 soorten op volgorde van gevaarlijkheid (volgens jou) en leg bij elk type uit waarom je het op die plek zet. Voeg je bronvermelding toe. 🛠️ Opdracht 3, Incident analyseren Zoek online een bekend cybersecurity-incident (bijv. een datalek, ransomware-aanval of hack bij een groot bedrijf). Beschrijf in je eigen woorden: Wat er is gebeurd Wat de gevolgen waren Wat er beter gedaan had kunnen worden Voeg je bronvermelding toe. 🧠 Opdracht 4, Reflectie Waarom denk jij dat veel mensen niet nadenken over digitale veiligheid? Wat is iets waar jij op gaat letten sinds je deze opdracht hebt gevolgd? 📤 Inleveren Beschrijf alle het antwoord op alle 3 de opdrachten. Neem de vraag over en weer de vraag daarna uit. Werk netjes en lever een PDF in. ☝️Om jezelf goed te beschermen tegen 'hacks' kun je heel veel dingen doen. Eén van de basis zaken is het versleutelen van gegevens . 👉 In de rest van deze module gaan we vooral hier op in zoomen. 2 HTTPS en netwerkveiligheid 🎯 Leerdoelen Je begrijpt het verschil tussen HTTP en HTTPS. Je weet waarom SSL-certificaten belangrijk zijn voor beveiligde communicatie. Je kunt een eigen website beveiligen met HTTPS. 💡 Uitleg HTTP en HTTPS....? HTTP en HTTPS zijn de 'talen' waarmee je browser met een website praat. HTTP staat voor HyperText Transfer Protocol. Het zorgt ervoor dat je webpagina's kunt opvragen van een server. HTTPS is hetzelfde, maar dan met een extra beveiligingslaag: de S staat voor Secure . Bij HTTPS worden de gegevens versleuteld verstuurd, zodat niemand onderweg kan meelezen. 📌 Daarom zie je http:// of https:// voor een URL – het geeft aan hoe je browser de website moet benaderen. Wat is het verschil tussen HTTP en HTTPS? HTTP betekent dat gegevens onversleuteld worden verzonden. Iedereen die tussen jou en de server in zit (zoals hackers op een openbaar netwerk), kan meekijken. HTTPS (de S staat voor Secure ) gebruikt een SSL-certificaat om alle communicatie tussen jouw browser en de server te versleutelen . Wat is versleutelen eigenlijk? Versleutelen is het omzetten van gegevens zodat ze niet meer zomaar leesbaar zijn. Vaak heb je een digitale sleutel nodig om deze gegevens weer om te zetten in leesbare informatie. In de volgende hoofdstukken over encryptie wordt dit uitgelegd. Waarom is HTTP S belangrijk? Het voorkomt dat anderen je gegevens kunnen "onderscheppen". Het zorgt voor vertrouwen bij je bezoekers (slotje in adresbalk). Google straft HTTP-sites af in zoekresultaten (door niet op een goede positie te zetten) Onderscheppen van gegevens, hoe dan? Computers op het internet zijn verbonden via netwerken. Deze netwerken kan je vrij eenvoudig aftappen. Je kan dus meelezen met de berichtjes die verstuurd worden over het netwerk. Soms kan je zelfs de berichtjes opvangen, veranderen en doorsturen. Dit kan op verschillende manieren maar als je toegang hebt tot bepaalde netwerk aparatuur is dat vrij eenvoudig. Dus jouw internet provider zou bijvoorbeeld alles wat jij op het op internet doet kunnen volgen. Als het netwerkverkeer is versleuteld is dat een stuk lastiger. Wat is een SSL-certificaat? Een SSL-certificaat is een soort digitaal paspoort voor je website. Het zorgt ervoor dat bezoekers zeker weten dat ze verbinding hebben met jóuw site, en dat de data versleuteld is. 🔒 Waarvoor biedt HTTPS wél bescherming? HTTPS zorgt ervoor dat de verbinding tussen jouw computer en een website veilig is . Dat betekent: Niemand kan meekijken met wat jij invult of leest (zoals je wachtwoord of bankgegevens). Niemand kan de informatie veranderen terwijl die onderweg is. Je weet zeker dat je met de echte website praat (en niet met een nepserver), als het certificaat klopt. Denkbij http s aan een afgesloten envelop in plaats van een open briefkaart: anderen kunnen het bericht niet lezen of aanpassen. ❌ Waarvoor biedt HTTPS géén bescherming? HTTPS voorkomt niet alles. Het beschermt je niet tegen: Nepwebsites met een slotje – criminelen kunnen ook een HTTPS-site maken die er echt uitziet. Phishing – als je op een valse link klikt en je wachtwoord daar invult, ben je nog steeds de klos. Virussen of malware – als je iets downloadt, controleert HTTPS niet of het veilig is. Slechte wachtwoorden – HTTPS helpt niet als jij zelf een zwak of gestolen wachtwoord gebruikt. 🧠 Reflectie Wat zou er kunnen gebeuren als je een onbeveiligde (HTTP) verbinding gebruikt in een openbaar WiFI netwerk? Leg uit wat het risico is. Je gaat naar www.nu.nl (voor het nieuws) en stel dat je geen slotje ziet en er dus geen SSL verbinding is gemaakt. Wat kan er mis gaan? Wat is het risico? Je meldt je aan voor een sport evenement op een onbeveiligde (HTTP) site. Leg uit wat het risico is. Je hebt een website op je laptop draaien en een medestudent bezoekt deze website via een onbeveiligde (HTTP) verbinding. Leg uit wat het risico is. Zet alle risico's (nummer 1 t/m 4; WiFi, nu.nl, sport-evenement, medestudent ) op volgorde van gevaarlijkheid. Motiveer je antwoord. Bij welk soort pagina's is het vooral belangrijk dat je HTTPS gebruikt, waarom? De refelctie is een verslag in je eigen woorden , AI input wordt niet geaccepteerd! Deze vragen komen terug in de kennis-check! 📤 Inleveren Lever je reflectie in als een .pdf 3 Encryptie 🎯 Leerdoelen Je weet wat encryptie betekent en waarvoor ze gebruikt worden. Je kunt een eenvoudige versleuteling (Caesar cipher) herkennen en kraken. Je weet het verschil tussen symmetrische en asymmetrische encryptie. 🎬Video 💡 Uitleg Wat is encryptie? Encryptie (versleuteling) betekent dat je gegevens onleesbaar maakt voor anderen. Alleen iemand met de juiste ‘sleutel’ kan de gegevens weer ontcijferen. Symmetrisch : dezelfde sleutel voor versleutelen en ontsleutelen (bijv. Caesar cipher). Asymmetrisch : verschillende sleutels voor versleutelen en ontsleutelen (zoals bij HTTPS). 🔎 Verdieping over symeterische en asymetrische encryptie Leg uit, hoe werkt dat asymentrisch precies? Stel iedereen heeft een eigen brievenbus met twee sloten met twee sleutels : een public key waarmee je een brief in de brievenbus kan stoppen en een private key waarmee de eigenaar de brievenbus kan openen en de inhoud kan bekijken. “Wil je mij iets sturen? Gebruik dan deze publieke sleutel (= mijn slotje).” Alleen jij kunt de brievenbus openen, want jij hebt de privé-sleutel die bij dat slotje hoort. Waarom zou asymentrische encryptie beter zijn dan symetrische encryptie? 🔐 Symmetrische encryptie Sleutel is geheim en wordt gedeeld Je gebruikt dezelfde sleutel om iets te versleutelen én te ontsleutelen. Probleem: je moet die geheime sleutel veilig delen , en dat is lastig. 🔐 Asymmetrische encryptie Gebruikt twee sleutels : Een publieke sleutel (om te versleutelen) Een privé sleutel (om te ontsleutelen) Je kunt de publieke sleutel vrij geven aan iedereen , want alleen jij kunt de boodschap met je privé sleutel openen. 🤔 Waarom is asymmetrische encryptie beter? De privé sleutel hoef je nooit met iemand te delen en de kans dat deze prive sleutel in verkeerde handen komt is dan dus kleiner. Waarom zou je symetrische encryptie nog geberuiken als assymentrische encryptie beter is? 🔧 Kort gezegd: Asymmetrisch = veilig, wat meer complex en trager. Symmetrisch = iets minder veilig, maar wel snelen en eenvoudig Om dat symetrische encrytie sneller en eenvoudiger is wordt die voroal gebruikt daar waar de sleutel snel veranderd dan is het niet zo erg als de sleutel in verkeerde hamden komt omdat er dan weer een neiuwe sleutel wordt gebruikt. 🛠️ Opdracht - Caesar Encryptie In deze opdracht wordt jouw gevraagd een wachtwoord te 'hacken'. Het wachtwoord dat je moet ontcijferen is encrypted met het Caesar algoritme. Om te kunnen hacken moet je eerst begrijpen hoe het Caesar encryptie algoritme werkt. Code Caesar encryptie
= $melding ?>
check.php '', 'lisa' => '', 'admin' => '$2y$10$x7XuGetTU9CeNvjqveqtW.9sz6J/.PYdfyRkcUwvw2G143G6IGpPm' // Vaste hash van "wachtwoord" ]; $melding = ''; $gebruikersnaam = $_GET['gebruikersnaam']; $wachtwoord = $_GET['wachtwoord']; if (isset($gebruikers[$gebruikersnaam])) { if (password_verify($wachtwoord, $gebruikers[$gebruikersnaam])) { $melding = "✅ Ingelogd als $gebruikersnaam!"; } else { $melding = "❌ Fout wachtwoord."; } } else { $melding = "❌ Gebruiker bestaat niet."; } echo $melding; ?> Als je de code begrijpt dan is de volgende opdracht niet moeilijk. 👉 Zorg ervoor dat de gebruikers max en lisa kunnen inloggen met de volgende wachtwoorden. Gebruikersnaam Wachtwoord max top-secret123! llisa sinclair1974 Probeer te ontdekken hoe je dit moet doen en hoe je de juiste wachtwoorden toe kan voegen. 👨💻 Hack-opdracht Ste je hebt de volgende code onderschept; $gebruikers = [ 'max' => '$2y$10$AF4UcvDki/VEQKCUzHQxIudD9cYLRaF9v4GIkhTyTzWzxCN/Yo0q6', 'lisa' => '$2y$10$nWGSzTcP7TShCVwz78eNGO3LjoxR/FPR3WjZqxbodWHQUe/XEzZC.', 'admin' => '$2y$10$e0NRta6G8WpOMOMK9qOC6O3z6F7cJcmA0r8GRPt4NeWcAUO4ED8Di' ]; Aan jouw de taak om de wachtwoorden te 'kraken'. Tip 1 Tip Het is niet mogelijk om de hash terug te rekenen vanuit de hash naar een wachtwoord. Tip 2 Je kunt natuurlijk wel een wachtwoorden in een hash omzetten en kijken of de hash hetzelfde is. Tip 3 Lisa en Max hebben wachtwoorden die veel gebruikt worden en niet erg veilig zijn. 😀 Had je geen tips nodig, dan ben je een meester hacker ! 👉 Probeer samen te werken, met een team kan je meer bereiken dan alleen en je kunt er ook een soort wedstrijdje van maken! 🧠 Reflectie Waarom is het geen goed idee om wachtwoorden encrypted (versleuteld) op te slaan en waarom kun je beter hashing gebruiken? Leg uit wat er mis zou kunnen gaan als je encryptie gebruikt (ipv hashing) voor het opslaan van wachtwoorden. Stel je hebt een bestand gekregen met allemaal userid's en wachtwoorden. De wachtwoorden zijn hashed. Leg uit hoe je mogelijk toch achter de wachtwoorden kan komen. 📤 Inleveren aangepaste check.php (met nieuwe hashes) de antwoorden op de vragen uit de reflectie in pdf 5 Brute Force-aanvallen en Loginbeveiliging 🎯 Leerdoelen Je weet wat een brute force-aanval is. Je kunt een eenvoudige loginpagina maken in PHP. Je begrijpt hoe je zo'n loginpagina kunt beveiligen tegen brute force-aanvallen. 💡 Uitleg Wat is een brute force-aanval? Bij een brute force-aanval probeert een aanvaller heel veel verschillende wachtwoorden achter elkaar uit om zo toegang te krijgen tot een account. Als er geen beperking zit op het aantal pogingen, kan dit op den duur succes hebben. Stel je wilt 1.000.000 (één miljoen) woorden uit bijvoorbeeld een woordenboek brute force proberen. En stel je kan 10 pogingen per seconden testen. Je bent dan ongeveer 28 uur bezig. Hoe bescherm je hiertegen? Je kunt brute force-aanvallen voorkomen door bijvoorbeeld: Een limiet te stellen op het aantal pogingen Een vertraging inbouwen bij het inloggen en deze laten groeien als je vaker een fout wachtwoord hebt ingevuld. Tijdelijk een gebruiker of IP-adres te blokkeren (=black listing) Van te voren alleen bepaalde ip adressen toelaten (=white listing) Captcha toe te voegen Twee-factor authenticatie toe te passen Zet alle mislukte inlogpogingen in een logbestand. Deze laatste bescherming met logfile voorkomt niet zozeer dat er brute force aanvallen plaatsvinden, maar je kunt wel zien als er wat vreemds gebeurt. Je kan dan op dat moment (extra) maatregelen nemen. Wachtwoord lengte Een wachtwoord bestaat over het algemeen uit hoofdletter, gewonen letters, cijfers en een aantal spciale karakters. In totaal zijn dat ongeveel 70 tekens. Dat betekent dat je 70 verschillende wachtwoorden kan maken, bij een wachtwoord lengte van 2 is dit 4 900 verschillende wachtwoorden. Dti aantal loopt snel op: wachtwoord lengte aantal mogelijkheden 1 70 2 4 900 3 343 000 4 24 010 000 5 1 680 700 000 6 117 649 000 000 Dit lijkt heel veel maar met één snelle computer met een snelle GPU kan je 10 miljard wachtwoorden per seconden testen. Een wachtwoord van 6 posities heb je dan dus binnen ongeveer 10 seconden gekraakt. Hoe lang moet mijn wachtwoord dan zijn, is 10 posities voldoende? Jouw wachtwoord veiligheid hangt af van: de gebruikte encypty of hashing (bijvoorbeeld SHA256) welke hardware kan je gebruiken om te hacken (via cloudcomputing kan je 1000-den snelle GPU's inztten). Voorbeeld: Je gebruikt de wat verouderde SHA256 hashing. Je gebruikt 10 hele snelle GPU's (NVidia RTX4080 ) Rekentijd ongeveer 16 dagen 😲Bedrijven als OpenAI, Microsoft, Amazon of Google hebben zoveel rekenkracht dat ze jouw wachtwoord van 10 tekens binnen 20 seconden met brute force zouden kunnen kraken. Ga je naar een wacthwoord van 12 tekens , dan loopt dit zelfs voor deze bedrijven al snel op naar een 2 tot 3 jaar. 🛠️ Opdracht Maak een eenvoudige loginpagina Maak een bestand login.php met het volgende formulier: Maak daarna een eenvoudige inlogcontrole.php in PHP: = 3) { die("Te veel pogingen. Probeer het later opnieuw."); } if ($_GET) { if ($_GET['username'] === $gebruikersnaam && $_GET['password'] === $wachtwoord) { echo "Welkom!"; $_SESSION['pogingen'] = 0; } else { echo "Foutieve inlog."; $_SESSION['pogingen']++; } } ?> In het form wordt $_GET gebruikt, is dat handig? Vanuit het oogpunt van cyber security is het beter om $_POST te gebruiken. Weet je nog waarom? Aanpassingen Verander het formulier en de vervolgpagina zodat je geen GET meer gebruikt en zodat het user id en wachtwoord niet meer in de URL staan. Voeg een vertraging toe met sleep(1) bij een mislukte poging. Voeg logging toe aan een tekstbestand zodat je pogingen kunt terugzien. Extra uitdaging Als je bijhoud hoevaak een gebruiker probeert in te loggen (met een sessie variabele), dan kan je de tijd tussen twee pogingen laten groeien: de eerste keer moet je 1 seconden wachten, dan 2 dan 4 dan 8 dan 16, etc. etc. Kan jij dat implementeren? 🧠 Reflectie Waarom is het belangrijk om een limiet te stellen op het aantal inlogpogingen? Wat gebeurt er als je de sessiegegevens wist of in een andere browser werkt? Welke nadelen heeft deze eenvoudige beveiliging? 📤 Inleveren De aangepaste code inlogcontrole.php Reflectie met antwoorden op bovenstaande vragen in pdf. 6 Rainbow tables 🎯 Leerdoelen Je begrijpt wat een rainbow table is en waarom het gevaarlijk is bij wachtwoordbeveiliging. Je kunt handmatig een wachtwoord opzoeken in een rainbow table. Je snapt waarom salting rainbow tables onbruikbaar maakt. Menses gebruiken vaak 'standaard' wachtwoorden. Wat denk jij dat het meest gebruikte wachtwoord is? Er zijn sites waarom de meest gebruikte wachtwoorden staan. 👉 Ga naar de site van Nordpass en controleer of jouw antwoord klopt. 💡 Uitleg: Wat is een rainbow table? Een rainbow table is een lijst van veelgebruikte wachtwoorden met hun bijbehorende hashes. Aanvallers gebruiken dit om snel te achterhalen welk wachtwoord hoort bij een bepaalde hash. Stel: iemand vindt een lijst met gebruikersnamen en gehashte wachtwoorden. Als jouw wachtwoord in zo'n rainbow table staat, kan die hash direct worden terugvertaald naar het originele wachtwoord – zonder te hoeven raden. Waarom werken rainbow tables? Hash-algoritmes zoals SHA256 geven altijd dezelfde output voor dezelfde input. Veel mensen gebruiken zwakke, veelvoorkomende wachtwoorden. Starters code Deze code vraag om een wachtwoord te resetten. Het wachtwoord wordt in JSON bestand opgeslagen. Controleer of de code werkt en controleer of het wachtwoord wordt opgeslagen in gebruikers.json . Wachtwoord succesvol opgeslagen voor gebruiker $userid."; echo "SHA256 hash: $hashed