Meine ersten 5 Linux Kommandos nach einem Angriff

Windows ist längst nicht mehr das große Ziel eines jeden Angriffes. Zu viele Linux Server sind bereits über das weltweite Netzwerk erreichbar, als dass sie kein lohnenswertes Ziel abgeben würden. Manch einer mag behaupten, diese Systeme werden so oder so nie angegriffen, doch weit gefehlt. Vor allem die dort residierende Software birgt Gefahren (Heartbleed Exploit). Damit ist die zentrale Frage nicht mehr, ob ein System unter Beschuss steht, sondern wann. Und genau dann sind wir Spezialisten gefordert. Aber was sollen wir schon ausrichten?

Ganz einfach! Folgende fünf Linux Kommandos gehören zu meinem Standardverfahren, nach jedem Angriff.

Was ist auf der Kiste los?

Befehl: w

Ganz einfach “w” liefert wichtige Anhaltspunkte über das laufende Betriebssystem:

  • Uptime: Wie lange läuft das System schon ohne Reboot?
  • Anzahl der eingeloggten User und deren Namen
  • Load Average: Was ist das?

Für den Anfang nicht schlecht. Jetzt wollen wir mehr über das System erfahren.

w- Befehl

Was wurde auf dem System verbrochen?

Befehl: history

Es geht nicht um Logfiles, es geht vielmehr um die zuletzt ausgeführten Befehle mit dem jeweiligen User. Eine schöne chronologische Auflistung vieler Befehle. Wenn ihr bereits wisst wonach ihr suchen wollt, dann hilft euch natürlich der hier weiter:

history | grep suchbegriff

Das Program grep wird die gesamte History durchsuchen und hier wird history sehr spannend finde ich, denn ich möchte so einiges wissen:

history | grep /etc/network/interfaces
history | grep iptables
history | grep /etc/hosts/
history | grep /var/syslog
history | grep rm
history - Befehl

Kurz erklärt:

  • Veränderungen an der /etc/network/interfaces bedingen, dass jemand an den Netzwerkeinstellungen geschraubt haben kann. Hier ist es wichtig eine Kombination zu finden aus dem Pfad und einem Editor wie vi, vim oder nano.
  • Die iptables sind so etwas wie die interne Firewall des Linuxsystems. Änderungen daran verändern den Fluss der Netzwerkpakete im System. Vielleicht wird ein bestimmter Port verschleiert?
  • Ändernungen in der /etc/hosts/ sind direkte Änderungen bei der Auflösung über DNS. Dort enthaltene Werte werden so bei der DNS Auflösung herausgegeben. Wenn beispielsweise unter google.de die IP Adresse 192.168.0.100 aufgelöst werden soll, kann dies in der /etc/hosts erfolgen.
  • Wenn es zu Hardwareproblemen kommen sollte, oder das Betriebssystem anderweitig Schaden genommen haben könnte ist der syslog. Ein Angreifer könnte ihn manipuliert haben. Auch hier Augen offen halten.
  • Wenn irgendetwas anderes verändert worden ist oder gar gelöscht wurde, so wurde dies höchstwahrscheinlich mit dem Programm rm durchgeführt. Einfach die History danach durchsuchen und prüfen, was genau gelöscht wurde.

Was läuft auf dem Linux System?

Befehl: top htop

Ich persönlich mag htop lieber, es ist bunt und besser lesbar. Aber top ist definitiv die Prozessmanager Software, die standardmäßig mit installiert kommt. top liefert einfach eine Auflistung aller aktueller Prozesse und deren Status (CPU, Speicherauslastung etc.).

top kann aber auch Prozesse beenden. Einfach “k” tippen und die richtige PID links aussuchen. Enter und schon ist der Prozess aufgelöst worden.

Task Manager top
Task Manager – top
Task Manager htop
Task Manager htop

Schreibt jemand die Platten voll?

Befehl: df

Manche kapern gerne Server, um sie als Filesharing Server zu missbrauchen, andere wollen Daten zwischenlagern, damit der Transport zu ihnen direkt nicht auffällt. Egal was genau getan wird. Mit dem Programm df kommt es ans tageslicht:

df -h

Und schon sieht man genau welche Platten in welchen Verzeichnissen eingehängt sind und vor allem: Wieviel Speicher ist noch frei? Wichtig an dieser Stelle auch wieder: Gibt es Mountpunkte, die unbekannt sind? Eventuell von einem Angreifer angelegt?!

df -h - Befehl

Wer lauscht am Linux Server?

Befehl: netstat

Das Programm netstat kann sehr viel. Es zeigt zwar “nur” alle Netzwerkverbindungen, aber diese können es in sich haben. Deswegen nutze ich beispielsweise immer folgenden Befehl:

netstat -pant

Schon erscheinen alle Netzwerkverbindungen mit Prozessangabe, Ports, Status der Verbindung usw.

netstat -pant Befehl

Fazit

Ein weiteres Vorgehen ist jetzt nur noch schwierig im Voraus zu planen. Je nach Situation würde ich sagen folgen die nächsten Schritte, aber wird pro Angriff immer wieder ein neuer Weg sein. Jeder Angriff verläuft anders. Es gibt aber sicher auch unter euch jemanden, der andere Befehle absetzen würde oder vielleicht mehrere Befehle in einem Skript vereint hat, dass ein kompromittiertes Linux als erstes durchführen sollte. Schreibt mir eure Ideen in den Kommentaren.

Alle weiteren Themen, rund um Linux deckt mein befreundeter Blogger Markus Elsberger (@MElsberger) mit seinem Blog IT-Learner.de ab:

Bücher zum Thema

Beitragsbild Shell script points of interest to coordinates von Christiaan Colen Creative Commons CC-BY SA 2.0

Artikel teilen:

5 Gedanken zu „Meine ersten 5 Linux Kommandos nach einem Angriff

  • 20. Oktober 2016 um 15:49
    Permalink

    Was soll in diesem Zusammenhang der Begriff “Angriff”. Was genau soll ein Angriff sein? Der einzig sinnvolle Befehl nach einem erfolgreichen Angriff ist ein rm -rf / gefolgt von einem Einspielen der Sicherung.

    Das da oben sollte man bei einem Verdacht machen…

    Antwort
    • 20. Oktober 2016 um 17:24
      Permalink

      Hallo Klaus! Ein guter Einwand. Ich selbst nutze diese Programme ebenfalls bei einem Verdacht. Aber all zu oft geschieht es, dass ein rm -rf / eine zu harte Form ist, auch wenn ich dies ebenso als einzig sinnvollen Befehl sehe, wenn ein System infiziert sein sollte. Viele Kunden haben entweder kein Backup, wollen ein Image vorher an Ermittlungsbehörden schicken oder sind nicht sicher, ob das Einspielen des Backups funktioniert. Leider zu oft …

      Antwort
  • 20. Oktober 2016 um 17:44
    Permalink

    Also bevor man rm -rf / ausführt, kann man eigentlich gleich eine Neuinstallation durchführen. Das wäre jetzt meine bevorzugte Methode. Vor allem hat man anschließend eine wirklich saubere neue Installation ohne irgendwelche Vorbelastungen. In dem Zusammenhang möchte ich noch Logwatch erwähnen. Dieses Programm generiert täglich einen Log Bericht, welchen man als Email erhält. So kann ich mir immer einen kurzen Überblick verschaffen, was auf dem Rootserver los ist.

    Antwort
  • 30. Oktober 2016 um 11:30
    Permalink

    Oder lieber gleich verhindern das es soweit kommt. Den wenn es passiert ist, wird sicher irgendwas infiziert sein oder Daten sind gestohlen worden.

    Wenn man aber dann doch kein Defense System einsetzt, dann sind die ersten Schritte sicher sinnvoll ;)

    Als Defense System kann ich meines vorschlagen ;)
    https://janotta-partner.de/was-tun-gegen-hacker.html

    Antwort

Kommentar verfassen