GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Untersuchen Sie kompromittierte Server

Dieser Artikel listet die verfügbaren Tools zum Durchführen einer Analyse eines kompromittierten Servers auf. (Das Säubern des kompromittierten Servers liegt außerhalb seines Bereichs.) Mithilfe dieser Tools können Sie die folgenden Informationen ermitteln:

  • Der Einstiegspunkt
  • Der Ursprung des Angriffs
  • Welche Dateien sind kompromittiert
  • Die Zugriffsebene, die der Angreifer erhalten hat
  • Der Prüfpfad der Spuren des Angreifers

Viele verschiedene Arten von Kompromittierungen können einen Unix®-Server ausnutzen. Angreifer könnten einen Brute-Force-Angriff starten, ein schwaches Passwort erraten oder versuchen, bekannte Software-Schwachstellen auszunutzen, in der Hoffnung, dass der Server keinen regelmäßigen Patch-Zeitplan hat. Es ist wichtig zu verstehen, wie der Computer kompromittiert wurde, um das Ausmaß des Schadens an Ihrem Server und anderen Hosts zu bestimmen, auf die der kompromittierte Computer zugreifen kann.

Bei den meisten Kompromissen auf Root-Ebene besteht der einfachste Wiederherstellungsansatz darin, eine Neuinstallation des Servers durchzuführen und alle kritischen Daten aus Sicherungen wiederherzustellen. Bis Sie jedoch den Einstiegspunkt der Kompromittierung kennen, reicht dieser Schritt möglicherweise nicht aus, da Sie die Kompromittierung verstehen müssen, damit Sie die Sicherheitslücke ordnungsgemäß schließen können.

Dokumentieren Sie den Angriff

Wenn Sie benachrichtigt werden, dass ein System unter Ihrer Kontrolle möglicherweise kompromittiert ist, stellen Sie sicher, dass Sie so viele Informationen wie möglich vom Melder erhalten, einschließlich der folgenden Punkte:

  • Wie das anfängliche Problem gefunden wurde
  • Der geschätzte Zeitpunkt, zu dem die Kompromittierung aufgetreten ist
  • Ob der Server geändert wurde, nachdem die Kompromittierung erkannt wurde
  • Alles andere, was der Reporter sagt, das wichtig ist

Wichtig :Wenn Sie beabsichtigen, die Strafverfolgungsbehörden einzubeziehen, dürfen Sie auf keinen Fall weitere Maßnahmen auf dem Server ergreifen. Der Server muss zu Beweiszwecken in seinem aktuellen Zustand bleiben.

Wenn Sie mit der Untersuchung fortfahren möchten, dokumentieren Sie alles, was Sie auf dem Server finden. Dieser Schritt kann so einfach sein wie das Kopieren und Einfügen eines Befehls und seiner Ergebnisse.

Ermittlungstools

Bei manchen Kompromittierungen gelingt es dem Angreifer, alle wichtigen Protokolldateien zu löschen, um seine Spuren zu verwischen. Dies geschieht jedoch nicht immer. Infolgedessen enthalten die Logfiles wertvolle Hinweise darauf, was der Angreifer mit dem Server gemacht hat. Die Protokolldateien können Ihnen auch dabei helfen festzustellen, ob es sich bei dem Angriff um einen einfachen Web-Hack oder eine Kompromittierung auf Root-Ebene handelte. Verwenden Sie die Befehle in diesem Abschnitt, um Hinweise zu finden, die Ihnen dabei helfen, das Ausmaß der Kompromittierung aufzudecken.

letzter Befehl

Der last Der Befehl listet die Sitzungen von Benutzern auf, die sich kürzlich beim System angemeldet haben. Die Ausgabe enthält die Zeitstempel und Hostnamen und gibt an, ob der Benutzer noch angemeldet ist. Wenn in der Ausgabe eine ungerade IP-Adresse (Internet Protocol) angezeigt wird, können Sie sie mit einem Brute-Force-Secure-Shell-Angriff (SSH) im abgleichen /var/log/messages oder /var/log/secure Verzeichnis. Dieser Schritt kann Aufschluss darüber geben, wie der Angreifer Zugang erlangt hat, welchen Benutzernamen er verwendet hat, um sich Zugang zu verschaffen, und ob er in der Lage war, seine Berechtigungen auf root auszudehnen .

ls-lart-Befehl

Der ls -lart Der Befehl gibt eine nach Zeit geordnete Liste von Dateien und Verzeichnissen aus, mit denen Sie korrelieren können, wann die Kompromittierung aufgetreten ist. Diese Ausgabe kann Ihnen dabei helfen festzustellen, was durch den Angriff zum System hinzugefügt oder entfernt wurde.

netstat -na-Befehl

Die netstat -na Der Befehl zeigt die aktuellen lauschenden Sockets auf der Maschine an. Wenn Sie diesen Befehl ausführen, werden möglicherweise lauschende Hintertüren oder fehlerhafte Dienste angezeigt, die ausgeführt werden.

ps -wauxef-Befehl

Dieser Befehl hilft Ihnen, alle fehlerhaften Prozesse aufzuspüren, die lauschen, und zeigt andere seltsame Prozesse an (z. B. der Benutzer www Ausführen eines Bash-Prozesses). Sie können auch den Befehl lsof |grep <pid> ausführen um weitere Informationen zu geöffneten Dateien zu finden, die ein Prozess verwendet. Gleichzeitig wird cat /proc/<pid>/cmdline ausgeführt könnte Ihnen auch sagen, wo die Datei existiert, die einen Prozess steuert.

bash_history-Befehl

Die Verlaufsdatei ist oft der Rosetta-Stein, um nachzuverfolgen, was zu einem Kompromiss geführt hat. Verwenden der bash_history Befehl, um die .bash_history des Benutzers zu durchsuchen Datei zeigt oft genau, welche Befehle sie ausgeführt haben, welche schädlichen Programme sie heruntergeladen haben und auf welche Verzeichnisse sie sich konzentriert haben.

oberster Befehl

Schädliche Prozesse verursachen häufig Konfliktprobleme mit der Zentraleinheit (CPU) innerhalb der Umgebung und erscheinen daher ganz oben in der Liste der Prozesse. Verwenden Sie die top Befehl, um diese Liste anzuzeigen. Betrachten Sie beim Aufspüren einer Kompromittierung alle Prozesse, die CPU-Konfliktprobleme verursachen, als verdächtig.

strace-Befehl

Wenn Sie strace -p pid ausführen Befehl auf einen verdächtigen Prozess, den strace Der Befehl kann wichtige Einblicke in die Vorgänge des Prozesses geben.

Andere Tools

Die vorhergehenden Befehle liefern möglicherweise nicht viele Hinweise darauf, was während des Angriffs passiert ist. In diesem Fall können Sie spezialisiertere Tools verwenden.

Wichtig Hinweis:Bevor Sie die Tools in diesem Abschnitt verwenden, sollten Sie sich vergewissern, dass die Binärdateien, die Sie zur Untersuchung verwenden, keine Trojaner-Versionen sind. Trojaner-Versionen können Aufgaben im Namen des Angreifers ausführen, wie z.

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Sie über einen gut funktionierenden Satz von Tools verfügen:

rpm -Va

Beim Verifizieren eines Pakets werden Informationen zu den installierten Dateien des Pakets mit den Metadaten für das Paket verglichen, die in der Datenbank des RPM-Paket-Managers (RPM) gespeichert sind. Die Überprüfung vergleicht Informationen zu Größe, MD5-Summe, Berechtigungen, Typ, Eigentümer und Gruppe, die jeder Datei zugeordnet sind. Die Ausgabe zeigt alle Abweichungen an.

Wichtig :Gekennzeichnete Pakete in den folgenden Verzeichnissen können darauf hindeuten, dass Sie eine Trojaner-Version der Binärdatei verwenden und daher der Ausgabe nicht vertrauen können:

  • /bin
  • /sbin
  • /usr/bin
  • /usr/sbin

Das folgende Beispiel zeigt eine Trojaner-Datei:

S.5….T /bin/login

rpm -qa-Befehl

Sie können den Befehl rpm -qa verwenden um kürzlich installierte Pakete in chronologischer Reihenfolge anzuzeigen. Im Falle einer Root-Kompromittierung kann jedoch auch die RPM-Datenbank kompromittiert werden.

lsattr-Befehl

Wenn der Angreifer Root-Zugriff erhält und Trojaner bestimmte Binärdateien verwenden, können sie diese Binärdateien unveränderlich machen, sodass Sie keine sauberen Versionen davon neu installieren können. Überprüfen Sie die folgenden Verzeichnisse:

  • /bin
  • /sbin
  • /usr/bin
  • /usr/sbin

Das folgende Beispiel zeigt eine Datei, die ein Angreifer unveränderlich gemacht hat:

-------i----- /bin/ps
Under normal circumstances in these directories, the rules should all look similar to:

------------- /bin/ps

Suchbefehl

find ist ein Unix-Tool, das bei der Suche nach kürzlich geänderten Dateien entscheidend sein kann. Beispielsweise können Sie Dateien finden, die in den letzten fünf Tagen geändert wurden, indem Sie den folgenden Befehl ausführen:

find / -mtime 5

Gemeinsame Verzeichnisse für Web-Exploits

Überprüfen Sie die folgenden weltweit beschreibbaren Verzeichnisse, in die Apache® üblicherweise temporäre Dateien schreibt:

  • ls -al /tmp
  • ls -al /var/tmp
  • ls -al /dev/shm

Suchen Sie nach Dateien, die Sie nicht kennen oder die verdächtig aussehen. Achten Sie auf versteckte Dateien und Dateien mit Ausführungsberechtigungen.

Wenn Sie die Berechtigungen für Verzeichnisse auf Ihrer Website auf 777 gesetzt haben, überprüfen Sie diese ebenfalls.

Finde den Einstiegspunkt

Wenn Sie mithilfe der Tools in den vorherigen Abschnitten hilfreiche Informationen finden, haben Sie möglicherweise auch einen Zeitstempel dafür, wann der Hacker die bösartige(n) Datei(en) auf dem Server installiert hat.

Sie können diesen Zeitstempel verwenden, um die Zugriffsprotokolle Ihrer Website auf verdächtige Einträge zu überprüfen, die während dieses Zeitraums hinzugefügt wurden. Wenn Sie etwas Verdächtiges finden, können Sie es mit dem Speicherort der schädlichen Dateien abgleichen, um den Eintrittspunkt einzugrenzen.

Während die meisten Kompromittierungen von ausnutzbarem Code auf Ihrer Website stammen, können Sie andere Einstiegspunkte nicht ausschließen. Stellen Sie sicher, dass Sie /var/log/* überprüfen für alles, was während des gemeldeten Zeitraums verdächtig erscheint.

Beispieluntersuchung

Die Beispieluntersuchung in diesem Abschnitt zeigt den Prozess, den Sie verwenden sollten, wenn Sie eine vermutete Kompromittierung auf Stammebene untersuchen.

Identifizieren Sie die Art des Angriffs

Überprüfen Sie, ob es sich um einen einfachen Web-Hack handelte oder ob der Angreifer wirklich Root-Rechte erlangt hat. In den meisten Fällen handelt es sich bei dem Angriff um einen einfachen Web-Hack, den Sie bedenkenlos entfernen können.

  1. Führen Sie die folgenden Befehle aus, um festzustellen, ob der Angreifer Root-Rechte erlangt hat:

    lsattr /usr/sbin | weniger

    lsattr /usr/bin | weniger

    lsattr /bin | weniger

    lsattr /sbin | weniger

  2. Suchen Sie nach geänderten Attributen, z. B. Binärdateien, die auf unveränderlich gesetzt wurden.

    Ausgabe:

     s---ia------- /sbin/shs
    

    Wenn Sie die strings verwenden Befehl für diese Datei, sehen Sie, dass es sich um eine Backdoorshell handelt.

Überprüfen Sie, ob der Angreifer seine Spuren gereinigt hat

In vielen Fällen sind Angreifer unerfahren oder schlampig und haben ihre Spuren nicht verwischt. Verwenden Sie die folgenden Schritte, um zu überprüfen, ob der Angreifer Hinweise hinterlassen hat:

  1. Stellen Sie sicher, dass alle Benutzerkonten in /etc/passwd haben Sie eine gültige Shell, indem Sie den folgenden Befehl ausführen:

    cat /home/$USER/.bash_history

  2. Rufen Sie den Verlauf des Root-Benutzers ab, indem Sie die folgenden Befehle ausführen:

    Geschichte

    cat /root/.bash_history

In diesem Beispiel die Ausgabe von /root/.bash_history Der Befehl zeigt, dass der Angreifer die folgenden Aktionen auf dem Server ausgeführt hat:

  • Heruntergeladene bösartige Tools zur Bereitstellung über Apache® in /var/www/html/* .
  • Installierte Internet Relay Chat (IRC)-Tools und andere Tools in /var/tmp/.ICE-unix .
  • Das Root-Crontab wurde geändert, um die schädlichen Tools erneut herunterzuladen, wenn sie jemand vom Server entfernt (* * * * * /var/tmp/.ICE-unix/update >/dev/null 2>&1 ).

Nach grundlegenden Web-Hacks suchen

Bis zu diesem Punkt haben wir festgestellt, dass es sich bei dem Angriff wahrscheinlich um einen einfachen Web-Hack handelt, den Sie leicht säubern können, ohne den Server zu formatieren.

In diesem Beispiel wissen wir jedoch, dass der Angreifer Root-Rechte erlangt hat. Sie könnten auch phpMyAdmin ausgenutzt haben . Nachdem die Hintertür-PHP-Shell geladen war, konnte der Angreifer einen lokalen Root-Exploit ausführen, um seine Privilegien zu eskalieren.

  1. Führen Sie die folgenden Befehle aus, um versteckte Dateien und Verzeichnisse in den allgemein lesbaren Verzeichnissen zu finden, in die Apache normalerweise tmp schreibt Dateien:

    ls -al /var/tmp |weniger

    ls -al /tmp

    ls -al /dev/shm

  2. In diesem Beispiel geben die Befehle die folgende Ausgabe zurück:

    drwx—— 3 70 70 4096 Nov 19 02:00 /var/tmp/.ICE-unix

  3. Wenn Sie hier Elemente finden, müssen Sie versuchen, den Einstiegspunkt ausfindig zu machen, damit Sie die Site herunterfahren, den Site-Code aktualisieren oder den ausnutzbaren Code auf andere Weise reparieren können. Schritt 5 bietet eine schnelle Möglichkeit, diese Aufgabe zu erledigen. Wenn jedoch die Ausgabe von ps -waux zeigt, dass IRC-Bots laufen, dann können Sie versuchen herauszufinden, woher der Prozess läuft, indem Sie lsof verwenden Befehl oderps -wauxxef |grep <pid> .

Suchen Sie nach Prozesskennungen, die auf eingehende Verbindungen warten

  1. Führen Sie die folgenden Befehle aus, um nach Prozesskennungen (PIDs) zu suchen, die auf eingehende Verbindungen warten:
  • netstat -natp :Sucht nach verdächtigen Verbindungen, die auf Oddports laufen

  • ps -wauxxef :Sucht nach verdächtigen Dateien wie bash läuft unter einem www Kontext

  • lsof <pid> :Hilft festzustellen, von wo aus die PID ausgeführt wird

    Die Ausgabe ähnelt dem folgenden Beispiel:

      tcp 0 0 0.0.0.0:1144 0.0.0.0:* LISTEN 1008/bash
    
      tcp 0 1 172.16.23.13:60968 22.22.22.22:7000 SYN_SENT 6860/sshd
    

    In diesem Beispiel laufen auch mehrere andere SSH-Verbindungen von High-Level-Ports, wie im folgenden Beispiel gezeigt:

      [root@www tmp]# netstat -natp |grep sshd |awk '{print $4,$5,$6,$7}'
    
      0.0.0.0:22 0.0.0.0:* LISTEN 1046/sshd
    
      172.16.23.13:60986 22.22.22.22:6667 SYN_SENT 6860/sshd
    
      123.123.123.123:22 22.22.22.22:59361 ESTABLISHED 22795/sshd
    
      123.123.123.123:22 22.22.22.22:57434 ESTABLISHED 22796/sshd
    
      123.123.123.123:57139 143.143.143.143:6667 ESTABLISHED 6860/sshd
    
      123.123.123.123:57402 22.22.22.22:6667 ESTABLISHED 6860/sshd
    
      123.123.123.123:22 143.143.143.143:49238 ESTABLISHED 8860/sshd
    
      123.123.123.123:57134 22.22.22.22:6667 ESTABLISHED 6860/sshd
    
      123.123.123.123:56845 22.22.22.22:6667 ESTABLISHED 6860/sshd
    
      123.123.123.123:57127 143.143.143.143:6667 ESTABLISHED 6860/sshd
    

    Diese Ausgabe zeigt an, dass die Angreifer immer noch mit diesem Computer verbunden sind. Sie können sie jedoch nicht sehen, da sie wahrscheinlich die Binärdateien modifiziert haben, um sich zu verstecken.

Bestimme den Eintrittspunkt für den ursprünglichen Kompromiß

Verwenden Sie die folgenden Schritte, um den Einstiegspunkt für die ursprüngliche Kompromittierung zu bestimmen:

  1. Überprüfen Sie /var/log/[messages|secure] für Brute-Force-SSH-Versuche.

  2. Überprüfen Sie die Apache-Zugriffsprotokolle und Fehlerprotokolle. Dieser Schritt kann dabei helfen, festzustellen, welche Website angreifbar ist.

    Sie sollten auch IPs mit den Protokollen vergleichen, wenn Sie glauben, dass die Möglichkeit besteht, dass sie von dort stammen. Dies ist eine schnelle und unkomplizierte Möglichkeit, den Ursprungsort zu ermitteln.

    Sie können Server mit einer großen Anzahl von Webprotokollen schnell überprüfen, indem Sie die folgenden Befehle verwenden:

    cd /var/log/httpd
    
    for i in `ls * |grep access`; do echo $i && grep wget $i; done
    
    for i in `ls * |grep access`; do echo $i && grep curl $i; done
    

    Hinweis :Dieses Beispiel sucht nach wget weil wget befand sich in der Verlaufsdatei von root unter dem, was möglicherweise Teil des Einstiegspunkts war.

Ergebnis

In diesem Beispiel hat unsere Untersuchung ergeben, dass ein Angreifer phpMyAdmin ausgenutzt hat Installation im Verzeichnis /var/www/html Verzeichnis, höchstwahrscheinlich wegen der Version vonphpMyAdmin auf dem Server installiert war stark veraltet. Patchen von phpMyAdmin Ein regelmäßiger Zeitplan verhindert, dass diese Situation auftritt.


Linux
  1. Überprüfen Sie die Betriebszeit von Windows Server

  2. Häufig gestellte Fragen zu Cloud-Servern

  3. Deaktivieren Sie die HTTP-Komprimierung auf Apache-Servern

  4. Stellen Sie sicher, dass die Server erfolgreich neu gestartet werden

  5. Untersuchen Sie einen kompromittierten Windows-Server

So überwachen Sie Linux-Server mit CloudStats

Index der Webmin-Server

So überprüfen Sie die Betriebszeit Ihres Linux-Servers

So installieren Sie Locate auf CentOS Server

Verwenden von Ajenti beim Verwalten von Linux-Servern

17 hpacucli-Befehlsbeispiele für Linux auf HP-Servern