Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:web_sca:authentifizierung [2024-02-26 09:32] scagf_informatik:web_sca:authentifizierung [2024-03-11 10:22] (aktuell) – [Authentifizierung] sca
Zeile 1: Zeile 1:
 ====== Authentifizierung ====== ====== Authentifizierung ======
  
-<nodisp 2> 
-++++Plan| 
- 
-   * Lektion 1: Märchenstunde, zusammen besprechen/kleine Gruppenarbeiten, bis und mit Passwortmanager 
-   * Lektion 2: Brute Force 
-   * Lektion 3: Brute Force II, Laufzeitanalyse 
-   * Lektion 4: Mehrfaktorauth. 
-   * Lektion 5: eigene Sicherheit verbessern 
- 
-++++ 
- 
-</nodisp> 
  
 ++++Lernziele| ++++Lernziele|
Zeile 25: Zeile 13:
    * Welche Massnahmen kann man im Bezug auf Passwörter treffen, um möglichst sicher zu sein?    * Welche Massnahmen kann man im Bezug auf Passwörter treffen, um möglichst sicher zu sein?
    * Wie kann man herausfinden, ob man bereits Opfer von Hackern wurde?    * Wie kann man herausfinden, ob man bereits Opfer von Hackern wurde?
-   Was ist eine **Brute-Force**-Attacke+   Erklären, was Idee hinter **Brute-Force**-Attacke ist und verschiedene Versionen davon kennen.
-   * Programmiere eine solche mit Python.+
    * Was sind die Stärken und Schwächen einer solchen Attacke?    * Was sind die Stärken und Schwächen einer solchen Attacke?
    * Was ist eine **Drei-Faktor-Authentifizierung**?    * Was ist eine **Drei-Faktor-Authentifizierung**?
Zeile 34: Zeile 21:
    * Was kann man selbst unternehmen, um möglichst sicher im Web unterwegs zu sein?    * Was kann man selbst unternehmen, um möglichst sicher im Web unterwegs zu sein?
    * Analysiere eine Situation (Bsp. Geschichte mit sieben Geisslein) und gebe Tipps, wie man die Sicherheit erhöhen könnte.    * Analysiere eine Situation (Bsp. Geschichte mit sieben Geisslein) und gebe Tipps, wie man die Sicherheit erhöhen könnte.
 +   * **Programmieren:**
 +     * Brute-Force Attacke und ähnliche Codes **Programmieren** können.
 +     * Wissen, wie File eingelesen wird.
 +
  
 ++++ ++++
Zeile 249: Zeile 240:
    * Versuche, einen (oder beide) der **Codes**, die für diese Aufgaben zur Verfügung gestellt werden, zu **verstehen**.    * Versuche, einen (oder beide) der **Codes**, die für diese Aufgaben zur Verfügung gestellt werden, zu **verstehen**.
  
 +===== - Multifaktor-Authentifizierung  =====
 +
 +Angenommen, du hast einen Gegenstand (z.B ein Tagebuch, ein Foto oder ein Superkräfte verleihender Trank), der **auf keinen Fall** in die Hände von jemand anderem gelangen darf. Du verschliesst den Gegenstand in einem bombensicheren Safe. Um den Safe zu öffnen, braucht es einen Pin Code. 
 +Was aber, wenn irgendjemand den Code herausfindet? Um die Sicherheit zu erhöhen, bringst du ein weiteres Schloss an, für das es einen Schlüssel braucht, den nur du hast. 
 +Was aber, wenn jemand heimlich eine Kopie deines Schlüssel anfertigt? Du erhöhst die Sicherheit nochmal: Ein weiteres Schloss mit Fingerabdruck-Scanner öffnet sich nur, wenn du deinen Daumen hinhältst. 
 +
 +Dein Safe verfügt nun über eine Drei-Faktor-Authentifizierung. Zwar ist es auch möglich, eine Fingerabdruck-Überprüfung zu täuschen, aber es ist für jemanden ausser dir äusserst schwierig, alle drei Schlösser zu öffnen! Dieser jemand müsste etwas besonderes <color #00a2e8>**wissen**</color>, das nur du weisst: den Code. Und er müsste etwas besonderes <color #00a2e8>**haben**</color>, das nur du hast: den Schlüssel. Und er müsste etwas besonderes <color #00a2e8>**sein**</color>, das nur du bist: Der Mensch mit genau diesem Fingerabdruck.
 +
 +Das ist die Idee hinter einer Authentifizierung mit mehreren Faktoren: Es sollen Einzelheiten aus //unterschiedlichen Kategorien// geprüft werden:
 +
 +  * <color #00a2e8>**Wissensfaktoren**</color> (knowledge factors) prüfen etwas, was der Benutzer weiss: Zum Beispiel ein Passwort oder ein Pin-Code.
 +  * <color #00a2e8>**Besitzfaktoren**</color> (ownership fators) prüfen, ob der Benutzer etwas hat: Zum Beispiel einen Schlüssel, ein bestimmtes Smartphone, eine Bank- oder Identitätskarte oder ein [[https://de.wikipedia.org/wiki/Security-Token|Security-Token]].
 +  * <color #00a2e8>**Inhärenzfaktoren**</color> (inherence factors) prüfen etwas, das dem Benutzer inhärent (innewohnend, anhaftend) ist. Wir könnten auch sagen: etwas, was der Benutzer ist oder tut: Hierzu gehören biometrische Daten wie Fingerabdruck, Gesichtsmuster oder Stimme. Auch die eigene Unterschrift ist ein Inhärenzfaktor. 
 +
 +Bei einer //Zwei-Faktor-Authentifizierung// (Two-factor authentication) werden Einzelheiten aus zwei dieser drei Kategorien geprüft. Der Ausdruck //Multi-factor authentication// lässt offen, ob zwei oder drei Faktoren erforderlich sind. 
 +
 +Ein **entscheidender Vorteil der Mehrfaktor-Authentifzierung** im Internet besteht darin, dass //mehrere Anfgriffsvektoren// nötig sind, um ein Benutzerkonto zu knacken: 
 +  * Es ist wohl einfach, ein einzelnes Token oder Mobiltelefon zu stehlen, aber schwierig, gleich 1000 oder mehr davon zu stehlen. Diese Art des Angriffs lässt sich also nicht leicht skalieren. 
 +  * Dagegen ist es sehr einfach, ein Virus oder Keylogger auf tausenden von Geräten zu verbreiten oder eine Phishing-Mail an tausende von Benutzer:innen zu senden. Diese Art des Angriffs lässt sich gut skalieren. 
 +  * Für die meisten Betrüger:innnen lohnt sich der Aufwand eines Angriffs erst dann, wenn damit gleich //mehrere// Benutzerkonten auf einmal geknackt werden können. 
 +
 +
 +=== Aufgabe 1 – Prüfe und verbessere deine IT-Sicherheit ===
 +
 +   1. **Analyse:**
 +     1. Erstelle eine Liste aller Webseiten, die du (seltener oder öfter) besuchst und die eine Authentifizierung erfordern.
 +     1. Überlege, bei wie vielen du die gleiche E-Mail-Adresse und das gleiche Passwort nutzt.
 +     1. Du nutzt wohl auch Apps, die eine Authentifizierung verlangen, jedoch nur einmalig, bei jedem erneuten Öffnen ist keine neue Authentifizierung nötig. Was ist die Überlegung dahinter? Was wird vorausgesetzt?
 +   1. **Schwachstellen schliessen:**
 +     1. Überlegen, welche Lösung dir am sinnvollsten erscheint: Passwortmanager im Browser? Andere Passwortmanager?
 +     1. Nötige Änderungen vornehmen: Zweifaktor-Authentifzierung aktivieren, evtl. PW-Manager installieren, evtl. einzelne Passwörter ändern.
 +     1. Mindestens folgende Sicherheitsmassnahmen sollten umgesetzt werden:
 +       1. Besonderes Passwort und 2FA beim E-Mail-Konto (Achtung: wahrscheinlich muss ein Key ausgedruckt werden, der unbedingt aufbewahrt werden muss).
 +       1. Laptop und Smartphone mit Passwort/Fingerabdruck o.ä. gesperrt.
 +
 +
 +===== Lösungen =====
 +
 +<nodisp 1>
 +
 +++++Brute-Force|
 +
 +<code python>
 +### requires: `pip install selenium`
 + 
 +### DON'T CHANGE CODE FROM HERE ...
 +from selenium import webdriver
 +from selenium.webdriver.common.by import By
 + 
 +# url to website
 +url_website = "https://if.ksr.ch/sca/hackme/"
 + 
 +# Open the webpage
 +driver = webdriver.Chrome()
 +driver.get(url_website)
 + 
 +# Enter text and click button -> not relevant for our hack
 +input_field = driver.find_element(By.ID,"textInput") # find the input box ...
 +input_field.send_keys("guess pw here") # ... and insert text
 +button = driver.find_element(By.ID,"btnSend") # find the button ...
 +button.click() # ... and click it
 + 
 +### ... UNTIL HERE
 +### WRITE YOUR CODE BETWEEN HERE ...
 +
 +alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 +
 +## PASSWORD 1
 +print("PASSWORD 1")
 +for pw in alphabet:
 +    code,message = driver.execute_script(f'return check_pw("{pw}")') # try password on website, returns code and message
 +    if code == 201:
 +        print(pw)
 +        print(message)
 +
 +## PASSWORD 2
 +print("PASSWORD 2")
 +for x in alphabet:
 +    for y in alphabet:
 +        for z in alphabet:
 +            pw = x + y + z
 +            code,message = driver.execute_script(f'return check_pw("{pw}")') # try password on website, returns code and message
 +            if code == 201:
 +                print(pw)
 +                print(message)
 + 
 +## PASSWORD 3
 +print("PASSWORD 3")
 +
 +with open("woerter_top10000de_upper.txt",'r') as file:
 +    for line in file:
 +        pw = line.strip() # strip entfernt Leerschläge und Zeilenumbrüche am Anfang und Ende
 +        code,message = driver.execute_script(f'return check_pw("{pw}")') # try password on website, returns code and message
 +        if code == 201:
 +            print(pw)
 +            print(message)
 +
 +### ... AND HERE. DON'T CHANGE LAST LINE:
 +driver.quit() # Close the browser
 +</code>
 +
 +++++
 +
 +
 +</nodisp>
  
  
  
  • gf_informatik/web_sca/authentifizierung.1708939961.txt.gz
  • Zuletzt geändert: 2024-02-26 09:32
  • von sca