Lab zu Incident Response und Forensik: einen kompromittierten Server im Browser untersuchen

Dieses Lab gibt jeder lernenden Person eine eigene Ubuntu-VM mit den Logs und Dateien eines Webservers, in den letzte Nacht eingebrochen wurde: ein SSH-Log mit einer Serie von Passwortversuchen, ein Webserver-Log voller Scanner, die Kontendatei, die Crontabs und eine Liste, wann Dateien geändert wurden. Die lernende Person untersucht den Vorfall und muss herausfinden, wer eingedrungen ist, unter welchem Konto, wann, und was die eindringende Person hinterlassen hat, um wiederzukommen.

Es gibt keine Schadsoftware und keinen Exploit-Code und nichts, was ausgeführt wird: Alles ist Text, der mit den Werkzeugen gelesen wird, die jeder Linux-Rechner hat.

Was Lernende hier lernen

Logs als Beweismaterial lesen: ein SSH-Log mit grep und awk durchsuchen, mit sort und uniq zählen und sortieren und einen Angriff vom Hintergrundrauschen unterscheiden. Der Fall enthält absichtlich Ablenkungen, damit eine nachlässige Suche ihn nicht löst: Die Adresse mit den meisten fehlgeschlagenen Anmeldungen kommt nie hinein, ein Administrator vertippt sich beim Passwort und hat danach Erfolg, und neben dem, was der Eindringling hinterlassen hat, liegen ein rechtmäßiger neuer Benutzer und ein alter SSH-Schlüssel. Die Lernenden erstellen eine Zeitleiste und nutzen den Zeitpunkt einer Änderung, um die Arbeit des Eindringlings von der des Administrators zu unterscheiden.

Die Aufgabe

Die lernende Person findet sechs Dinge und schreibt sie in answers.txt, je eine beschriftete Zeile: die Adresse, von der der Angriff kam, das Konto, in das eingebrochen wurde, den Zeitpunkt der ersten erfolgreichen Anmeldung, die Art der hinterlassenen Persistenz, die Datei, in der sie liegt, und das Programm, das sie am Laufen hält. Die README, die das Lab im Home-Verzeichnis ablegt, nennt, was zu finden ist, und enthält keine Lösungen.

Die Beweisdateien sind schreibgeschützt, die Antworten müssen sich also aus dem Lesen ergeben. Alle Lernenden haben denselben Fall.

Im Browser ausführen

VM-Labs werden in einem Modul als Lab-Aufgabe gestellt, und das Beispiel finden Sie auf der Seite des Labs.

  1. Lab hinzufügen. Fügen Sie in einem Modul, das Sie unterrichten, eine Aufgabe hinzu und wählen Sie die Karte „Ubuntu-VM-Lab“. Die Seite zeigt statt einer Compose-Datei eine kurze Beschreibung der Maschine.
  2. Mit dem Beispiel beginnen. Die Seite bietet fertige Labs als Ausgangspunkt an. Wählen Sie „Incident Response und Forensik“. Ein Beispiel ersetzt den Text, und „Rückgängig“ bringt Ihren eigenen zurück.
  3. Veröffentlichen und eigene Kopie starten. Veröffentlichen Sie das Lab und wählen Sie dann „Starten“. Das Einrichtungsskript des Labs erstellt den Fall beim ersten Start der VM, nach wenigen Sekunden. Es installiert nichts aus dem Ubuntu-Archiv, außer wenn das Image kein Python enthält.
  4. Terminal öffnen. Öffnen Sie das Terminal der VM und lesen Sie README.md im Home-Verzeichnis: Sie nennt die Beweisdateien im Ordner case und was zu finden ist, und enthält keine Lösungen. Die Antworten kommen in answers.txt, je eine beschriftete Zeile.

Eine Grundlagenlektion zu diesem Lab

Incident Response Basics ist eine kleine Lektion, die in diesem Lab, einer Ubuntu-VM, durchgearbeitet wird: Jeder Schritt wird erklärt und hat eine Schaltfläche „Ausführen“, die seinen Befehl im Terminal der Maschine eintippt und zeigt, was ausgegeben wurde. Die lernende Person listet die Beweisdateien auf, zählt die Zeilen der beiden Logs, liest die ersten Zeilen des SSH-Logs und zählt die fehlgeschlagenen Passwörter.

Die Lektion schaut sich nur um und überlässt die eigentliche Aufgabe des Labs, die angreifende Person zu finden, der lernenden Person; sie gibt also keine Lösungen preis. Ein kostenloses persönliches Konto erhält sie im Modul „Basics“ auf der Startseite, jede Einrichtung kann sie aus dem Ordner „Basics“ der Bibliothek kopieren, und sie ist bewusst klein: Sie zeigt einer Lehrkraft, was eine in einem Lab durchgearbeitete Lektion ist, und das Lab erledigt den Rest. Kopieren Sie sie in ein eigenes Modul, um sie zu ändern.

So wird bewertet

Das Lab hat eine Prüfung. Sie liest answers.txt, die in beliebiger Groß- und Kleinschreibung und mit beliebigen Leerzeichen geschrieben sein darf, und vergleicht jede Antwort mit dem Fall. Ist eine falsch, nennt sie das erste falsche Feld und verrät nie, wie die Antwort lautet. Sie weist auch einen Fall zurück, dessen Beweisdateien passend zu einer Antwort verändert wurden.

Eine lernende Person hat auf ihrer eigenen VM sudo, wer also die Dateien von root liest, könnte den Schlüssel finden. Das wird hingenommen: Das Lab dient der Übung, und bewertet wird die schriftliche Antwort.

  1. Zuweisen. Weisen Sie das Lab wie jede Aufgabe zu, auf Wunsch mit einem Fälligkeitsdatum. Jede lernende Person erhält eine eigene VM mit demselben Fall, die zwischen den Sitzungen erhalten bleibt.
  2. Prüfung ausführen. Wählen Sie in der Zeile einer lernenden Person in der Klassenliste „Prüfung ausführen“. Dabei startet eine Kopie ihrer gespeicherten Maschine, die nicht zurückgespeichert wird; das Prüfskript des Labs läuft als root, und die Seite zeigt, ob die Prüfung bestanden wurde, was sie ausgegeben hat und wann. Die lernende Person erfährt das Ergebnis nicht.
  3. Bewerten. Lesen Sie die Ausgabe der Prüfung: Die erste Zeile nennt das erste Feld, das falsch ist, nie die Antwort. Geben Sie die Arbeit mit einer Begründung zur Überarbeitung zurück, wenn mehr nötig ist.

Die Definition auf GitHub

Die Datei ist die vollständige Lab-Definition, derselbe Text, den die Plattform ausführt: Größe, Einrichtungsskript, das den Fall aus einem festen Startwert erzeugt, README und Prüfung. Kopieren Sie sie und ändern Sie den Generator im Einrichtungsskript, um einen eigenen Fall zu erstellen.

Häufige Fragen

Gibt es im Lab Schadsoftware?
Nein. Der Fall besteht aus Text: Logs, einer Kontendatei, Crontabs, Schlüsseln und einer Liste von Zeitpunkten. Nichts davon wird ausgeführt, und die Adressen stammen aus für Dokumentation reservierten oder aus privaten Bereichen.
Wie groß muss die Maschine für jede lernende Person sein?
Eine CPU, 1 GB Arbeitsspeicher und 10 GB Speicherplatz. Das Lab installiert nur Python, und das nur, wenn das Image es nicht enthält.
Können Lernende die Antwort nachschlagen?
Eine lernende Person hat auf ihrer eigenen VM sudo, eine entschlossene kann also den Schlüssel der Prüfung in den Dateien von root lesen. Das Lab dient der Übung, und was Ihre Lehrkraft bewertet, ist die schriftliche Antwort.