lehrkraefte:blc:informatik:glf19:hackme:hackme

Hacken Sie!

  • Laden Sie Log-Datei von Teams (in den Aufgaben) herunter.
  • Bearbeiten Sie die Datei auf Ihrem Gerät.
  • Geben Sie die Datei in Teams bei der Aufgabe hoch.

Erstellen Sie eine Spalte mit den ausprobierten Passwörtern, wobei jedes nur einmal vorkommen darf. In der Spalte daneben soll angegeben werden, wie viele Male das Passwort probiert worden ist. Sortieren Sie dann die Liste nach der Anzahl Versuche.

Kopieren Sie die beiden Spalten in ein zweites Tabellenblatt und erklären Sie dort kurz, wie sie vorgegangen sind und verlinken Sie benutzte Hilfeseiten und/oder -Videos.

Wenn Sie das Sortieren und Zählen nicht selber ergoogeln können, gibt es hier ein Video, das die Aufgabe mit einer Pivot-Tabelle löst.

Wie viele Teilnehmer stellen Sie in betrachteten Zeitrahmen fest? Wie viele Schüler haben mindestens “geschwänzt”, wenn man davon ausgeht, dass auch noch zwei Lehrkräfte mit der Hackme-Seite “gespielt” haben?

  • Es findet sich ein UserAgent (Browser, oder sonstiges Programm, das auf eine Webseite zugreift) “WhatsApp”. Studieren Sie die Zugriffe des Agents. Was stellen Sie fest? Was ist da wohl passiert? Mit welchen weiteren Browsern (Agents) war diese Person auch noch unterwegs? Wie lange hat diese gebraucht, um die erste Challenge zu lösen?
  • Studieren Sie den Verlauf der Person mit der IP 192.168.1.18
    • Die Person hat das Passwort 'or'1'='1 ausprobiert. Hat jemand eine Erklärung dafür?
  • Können Sie einzelne IPs Ihren Klassenkameraden zuordnen?
  • Jemand hat eine Wörterbuch-Attacke gefahren. Welche IP hatte diese Person? Welche Programmiersprache wurde für die Attacke benutzt? Welches war wohl das Passwort? Überprüfen Sie das Passwort.
  • Bei einigen Einträgen steht “SnapChat” als Agent (Browser, bzw. Programm, mit dem auf die Webseite zugegriffen wird). Argumentieren Sie, ob diese Zugriffe von einem Schülergerät oder von den Servern von Snap-Chat erfolgt sind.

Ihr Ziel ist es, die Passwörter zu knacken. Dazu gibt es 4 Challenges, wobei die letzte wohl nur auf einem richtigen Computer gelöst werden kann.

Wichtig: Verwenden Sie keine eigenen Passwörter für die Übung! Die werden alle im Klartext übermittelt gehen unverschlüsselt in die Server-Logs…

Die Challenges müssen in der Reihenfolge gelöst werden. Bei der Lösung einer Challenge erhalten Sie den Link auf die nächste Challenge. Wenn Sie eine Challenge gelöst haben, kopieren Sie die URL (das was in der Adresszeile vom Browser steht) in das Abgabe Word-Dokument auf Teams.

Start hier: https://tech-lab.ch/hackme/

Wir möchten uns natürlich nicht als einfacher User, sondern als Benutzer mit Administrator-Rechten einloggen…

Click to display ⇲

Click to hide ⇱

So praktisch Standardpasswörter bei der Inbetriebnahme auch sind, diese müssen unbedingt geändert werden. Insbesondere für den Benutzer admin.

Mehr zu Standardpasswörtern: https://www.computerweekly.com/de/definition/Standardpasswort-Default-password

Click to display ⇲

Click to hide ⇱

Passwörter im Klartext speichern geht gar nicht. Und dazu diese noch öffentlich zugänglich rumliegen lassen ist ganz schlecht.

Click to display ⇲

Click to hide ⇱

Anstatt die Passwörter sollten Prüfsummen (sogenannte Hashes) gespeichert werden. Aber nicht nur einfach den Hash davon, sondern der muss noch gesalzen werden, d.h. das Passwort muss erst noch mit einer zufälligen Zeichenkette “gesalzen”, d.h. verlängert werden. Der entstehende Hash und das “Salz” werden dann gespeichert. Damit ist die Entschlüsselung über Tabellen nicht möglich.

Click to display ⇲

Click to hide ⇱

Wenn man (sehr optimistisch) davon ausgeht, dass nur 10% der Leute unsichere Passwörter haben, könnte man durch Probieren ziemlich schnell einige Passwörter in einer Organisation “knacken”.

Um einen solchen Angriff auf die HackMe-Seite zu fahren, lesen Sie die Dokumentation (zur SSL-verschlüsselten Verbindung) in der Dokumentation von TigerJython.

Mit folgenden Zeilen lesen Sie alle Passwörten aus einer Datei (hier john.txt) ein:

import socket 
import ssl
import urllib
 
# Dowload einer url (ohne https://tech-lab.ch)
# z.B. /hackme/c4.php?user=hans&pass=muster
def download(url):
    host = "tech-lab.ch"
    port = 443
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host , port))
    s = ssl.wrap_socket(s)
    request = "GET " + url + " HTTP/1.1\r\nHost: " + host + "\r\n\r\n"
    s.sendall(request)
    reply = s.recv(4096)
    s.close()
    return reply
 
 
# Passwoerter einlesen
file1 = open('john.txt', 'r') 
pws = map(lambda x : urllib.quote(x.rstrip()), file1.readlines())
file1.close()
 
 
# Passwoerter alle durchgehen
for pw in pws:
    # Die URL ist zu vervollstaendigen (aus einem login-Versuch kopieren)
    url = "/hackme/c4.php..... " + pw + "....."    
 
    print(url)
    # Den HTML-Code vom login-Versuch herunterladen
    reply = download(url)
 
    # HTML-Code analysieren:
    if not ("Passwort falsch" in reply):
        print("Hooray! "+pw)
        exit()
    else:
        print("nope "+pw);
    exit()  # Nur ein Versuch, bis alles richtig läuft... dann diese Zeile loeschen

XSS steht für Cross-Site-Scripting und bezeichnet Angriffe, bei denen HTML- oder JavaScript-Code in eine fremde Seite eingeschleust werden können. Das ist darum problematisch, weil so vertrauenswürdige Seiten Dinge anzeigen können, die nicht vorgesehen sind, wie z.B. eine login-Maske, um Passwörter zu stehlen. So eine Lücke wurde im z.B. im alten Nesa-System gefunden.

Folgende Seite ist für XSS-Angriffe verwundbar:

Folgende Challenges:

  • Knifflig: Erreichen Sie, dass irgendetwas auf der Seite rot erscheint oder dass ein Bild auf der Seite angezeigt wird.
  • Fortgeschritten: Erreichen Sie, dass eine Warnbox mit dem Text “XSS” erscheint.
  • Hardcore: Erreichen Sie, dass der Hintergrund der gesamten Seite rot wird.

Kopieren Sie die Ihre verschiedenen URLs, die den XSS-Angriff demonstrieren in das Word-Dokument, das Sie auf Teams abgeben.

nur Notizen für die Lehrkräfte

nur Notizen für die Lehrkräfte

  • lehrkraefte/blc/informatik/glf19/hackme/hackme.txt
  • Last modified: 2020/04/21 13:53
  • by Ivo Blöchliger