Hack-Analyse: Dateiinformationen (Attribute) mit dem find-Befehl untersuchen
- Aktualisiert: Freitag, 22. April 2022 21:58
- Geschrieben von Mazin Shanyoor
Was tun bei Verdacht auf einen Hackerangriff?
In Zeiten von professionellen Hackerangriffen ist das Prüfen der Serverintegrität und den Applikationen essential geworden. Die Kombination verschiedener Shell-Befehle (find, grep, sort) mit ihren Parametern über die Kommandozeile hilft hier, sich einen schnellen systematischen Überblick zu verschaffen.
Hackanalyse über die Kommandozeile: Verfolgung der letzten Änderung von Dateien
Der typische Hackangriff über den http-/ https-Port erfolgt i. d. R. durch "Löcher" in Internet-Anwendungen. In versteckten Foren im Darknet werden diese Angriffszenarien sehr genau beschrieben und mit entsprechenden Programmen unterlegt (Exploits).
Der find-Befehl arbeitet rekursiv
Das erste Mittel der Wahl für die Grob-Analyse ist der find-Befehl. Er listet alle Dateien innerhalb einer Dateisystemhierachie auf und analysiert auch alle Unterverzeichnisse nach dem gleichen Prinzip. Mit dem find-Befehl hat man zudem Zugriff auf alle Dateiattribute (Name, Alter, Größe und Rechte).
Find arbeitet wie oben erwähnt rekursiv, d.h. alle Unterverzeichnisse werden mit durchsucht.
Untersuchen der Dateistruktur mit find
Find kann Dateien suchen, filtern und bearbeiten. Die wichtigsten Parameter des find-Befehls sind -mtime, iname, -type, -delete, -exec. In Kombination mit anderen Shell-Befehlen ist er ein mächtiges Analysewerkzeug. Der find-Befehl besitzt eine Reihe von Parametern. Für die spezielle "Hack-Analyse" des Dateisystems werden wir uns mit den Parametern iname, - mtime und - printf auseinandersetzen.
Der find-Befehl mit den Parametern -mtime und -iname
Der find-Ausdruck mit dem -iname-Parameter in Listing 1 liefert die Änderung aller Dateien ab dem Verzeichnis (plus den Unterverzeichnissen) wieder.
Listing 1
find /PFAD/VERZEICHNIS -iname '*'
Nur die versteckten Dateien eines Verzeichnisses werden durch den Parameter -iname ".*" in Listing 2 angezeigt. Die Analyse erfolgt dabei rekursiv.
Listing 2
find /PFAD/VERZEICHNIS -iname '.*'
Der Wert -1 des Parameters -ntime bedeutet, dass alle geänderten Dateien seit gestern angezeigt werden. Bei einem Wert von -30 werden alle geänderten Daten der letzten 30 Tage aufgelistet.
Der -iname "*" Parameter sorgt dafür, dass alle Dateien des angegeben Verzeichnisses analysiert werden.
Listing 3
find /PFAD/VERZEICHNIS -mtime -1 -iname "*"
Für die ausschließliche Analyse von PHP-Dateien ändert man das Attribut des Parameters - iname in "*. php".
Listing 4: Rekursive Analyse der php-Dateien seit gestern
find /PFAD/VERZEICHNIS -mtime -1 -iname "*.php"
Der find-Befehl mit den Parametern -printf
Für die Ausgabe von Dateiinformationen (Attribute) wie das Erstellungs- und Änderungsdatum wird der Parameter -printf verwendet.
Der find-Ausdruck in Kombination mit -printf gibt alle Dateien mit ihrem Erstellungs- bzw. Änderungsdatum sortiert aus und schreibt diese in eine Datei.
Listing 5
find /PFAD/VERZEICHNIS -printf "T@ %Tc %p\n" | sort -n >ErgebnisInDateiSchreiben.txt
Selektierte Ausgabe in Verbindung mit grep. Das präzise Schwert der Analyse
Nur diejenigen Dateien aus dem Verzeichnis, die am 19.03.22 geändert wurden, werden mit Datum und Uhr sortiert ausgeben.
Listing 6: Nur die am 19.03.22 geänderten Dateien werden ausgegeben
find /PFAD/VERZEICHNIS -printf "%Td.%Tm.%Ty %TH:%TM:%TS %p\n" | grep "\<19.03.22"
Für eine bessere Analyse können die Ergebnisse in eine Datei geschrieben werden.
Listing 7: Nur die geänderten Dateien werden ausgegeben
find /PFAD/VERZEICHNIS -printf "%Td.%Tm.%Ty %TH:%TM:%TS %p\n" | grep "\<19.03.22">ErgebnisInDateiSchreiben.txt