Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Einen Angriff in den Logs finden

Nach dieser Lektion: Ich kann einen Einbruch in einem Log finden, eindämmen und die Abhilfe nennen.

Lektion, 55 Min.10 BefehleLab zu Incident Response und Forensik: einen kompromittierten Server im Browser untersuchen

Wie findet man einen Angriff im Log?

Einen Angriff im Log finden heißt, die Aufzeichnung der Anmeldungen eines Servers zu lesen und die Adresse zu erkennen, die eingebrochen ist. Das ist wichtig, weil ein Einbruch zwischen Hunderten harmloser Fehlversuche steckt und eingedämmt werden muss, bevor er sich ausbreitet.

Die meisten Fehlversuche stammen von Robotern, die nie hineinkommen. Einige sind der Besitzer, der sich vertippt. Eine Adresse ist anders: Sie scheitert immer wieder, und dann gelingt es ihr.

Am Ende dieser Lektion

Notiz

Ich kann einen Einbruch in einem Log finden, eindämmen und die Abhilfe nennen.

Schlüsselwörter

BegriffWas er bedeutet
Logeine Datei, in der ein System aufschreibt, was geschah, jeweils eine Zeile
Brute Forceviele Passwörter ausprobieren, bis eines passt
Quelladressedie Netzadresse, von der eine Verbindung kam
Eindämmungden Schaden stoppen, bevor er sich ausbreitet, noch vor der Reparatur der Ursache
RauschenLogzeilen, die beunruhigen und nichts bedeuten
Wendepunktdie eine Tatsache, die einen Angriff vom Rauschen trennt

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Erst zählen, dann fragen, wer hineinkam

Der Fall ist eine Kopie des SSH-Logs eines Servers, im Ordner case. Er ist schreibgeschützt, damit der Beweis bleibt, wie er ist.

Eine große Zahl ist für sich noch kein Angriff. Zählen Sie zuerst die Fehlversuche je Adresse. Fragen Sie dann, welche Adressen je hineinkamen.

Fehlgeschlagene Anmeldungen je Adresse zählen

Befehl
grep "Failed password" case/var/log/auth.log | awk '{for (i = 1; i <= NF; i++) if ($i == "from") print $(i + 1)}' | sort | uniq -c | sort -rn | head -n 3

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die ersten drei

Der Run schrieb drei Zeilen, jede mit einer Zahl und einer Adresse. Auf der Testmaschine waren die Zahlen 260, 70 und 3. Die Adressen sind für alle Studierenden dieses Labs dieselben.

Die Adresse mit 260 Fehlversuchen ist die lauteste. Laut heißt nicht gefährlich: Hören Sie hier nicht auf.

Wer kam hinein, und von wo?

Befehl
awk '$6 == "Accepted" {print $9, $11}' case/var/log/auth.log | sort | uniq -c

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Adressen speichern, die hineinkamen

Befehl
awk '$6 == "Accepted" {print $11}' case/var/log/auth.log | sort -u > akzeptiert.txt

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Welche laute Adresse kam auch hinein?

Befehl
awk '$6 == "Failed" {for (i = 1; i <= NF; i++) if ($i == "from") print $(i + 1)}' case/var/log/auth.log | sort | uniq -c | awk '$1 >= 20 {print $2}' | sort | comm -12 - akzeptiert.txt | tee verdaechtig.txt

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ihre erste erfolgreiche Anmeldung zeigen

Befehl
grep Accepted case/var/log/auth.log | grep -F -f verdaechtig.txt | head -n 1

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Was die vier Runs fanden

Der erste schrieb drei Gruppen. Der Administrator meldete sich von der Adresse des Büros an und einmal von der Adresse, an der er sich vertippt hatte. Ein drittes Konto kam zweimal von der verdächtigen Adresse hinein.

Der Run für den Wendepunkt schrieb eine Adresse. Sie scheiterte mindestens zwanzigmal und hatte dann Erfolg. Der letzte Run zeigte die Zeile ihres ersten Erfolgs, mit Uhrzeit und Konto.

Erst eindämmen, dann die Ursache beheben

Wenn Sie es wissen, gehen Sie in dieser Reihenfolge vor. Eindämmen ist schnell und lässt sich rückgängig machen. Beheben dauert länger und muss richtig sein.

Löschen Sie noch nichts. Der Beweis zeigt, was sonst noch berührt wurde.

Beispiel: von der Logzeile zur Abhilfe

SchrittWas Sie tunWarum
ErkennenFehlversuche je Adresse zählen, dann sehen, wer hineinkamFindet den Wendepunkt
EindämmenDas Konto sperren und die Adresse ablehnenDer Eindringling kann es nicht mehr nutzen
Ursache behebenNur SSH-Schlüssel, eine Regel für den Port, keine Passwort-AnmeldungDerselbe Versuch kann nicht mehr klappen
PrüfenHinterlassenes suchen: Schlüssel, Aufträge, neue KontenSchließt einen zweiten Rückweg

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Eindämmen an einem eigenen Konto üben

Sie berühren kein Konto des Falls. Legen Sie ein Wegwerf-Konto namens demo7 an, sperren Sie es, lesen Sie seinen Zustand und entfernen Sie es.

Ein gesperrtes Konto kann sich nicht mit Passwort anmelden, und nichts wird gelöscht. Deshalb ist es der erste Schritt.

Das Wegwerf-Konto anlegen

Befehl
sudo useradd -m -s /bin/bash demo7

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Sein Passwort sperren

Befehl
sudo passwd -l demo7

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Seinen Zustand lesen

Befehl
sudo passwd -S demo7

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Konto und Ordner entfernen

Befehl
sudo userdel -r demo7

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Was die Konto-Runs ausgaben

Der Sperr-Run schrieb passwd: password changed.. Der Zustands-Run schrieb eine Zeile, die mit demo7 L beginnt. Der Buchstabe L heißt gesperrt. Ein Konto, das sich anmelden kann, zeigt P.

Der Lösch-Run kann eine Warnung über ein Mailpostfach schreiben. Sie ist harmlos, denn das Konto hatte nie Post.

Die zwei erzeugten Dateien löschen

Befehl
rm akzeptiert.txt verdaechtig.txt

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele sperren die Adresse mit den meisten Fehlversuchen und erklären den Vorfall für beendet. Diese Adresse kam nie hinein. Die, die es tat, ist leiser und noch drin. Fragen Sie immer, wer Erfolg hatte, und prüfen Sie, was er verändert hat.

Zum Weiterdenken: Was tat die Adresse noch?

Sehen Sie sich das Log des Webservers an, case/var/log/nginx/access.log. Führen Sie die zwei speichernden Runs noch einmal aus, um verdaechtig.txt neu anzulegen, und zählen Sie dann die Anfragen dieser Adresse mit grep -c -F -f verdaechtig.txt. Löschen Sie danach beide Dateien.

Schreiben Sie einen Satz: Was verlangte sie eine Stunde, bevor sie anfing, Passwörter zu raten?

Über dieses Lab und seinen Quellcode: Lab zu Incident Response und Forensik: einen kompromittierten Server im Browser untersuchen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.