Wir haben eine Box, von der wir vermuten, dass sie bei der Arbeit verwurzelt ist. Die Frage ist, wie finden wir es? Ich bin kein Systemadministrator, aber ich wurde in das Team aufgenommen, um die Situation zu lösen, und ich bin gespannt, wo sich gute Orte befinden, an denen ich nach Problemen suchen kann.
Der Grund, warum wir dies vermuten, ist, dass wir eine höhere als die normale Netzwerkauslastung auf dem Computer von hohen (scheinbar zufälligen) Ports festgestellt haben.
Was können wir tun, um das Sorgenkind zu lokalisieren? Was können wir tun, um uns in Zukunft davor zu schützen? Gibt es eine Überwachung, die wir durchführen können, um uns in Zukunft darauf aufmerksam zu machen? (Abgesehen von der Netzwerküberwachung, an der wir bereits arbeiten, um sie genauer zu beobachten.)
Vielen Dank im Voraus und ich kann bei Bedarf weitere Details bereitstellen. Schätzen Sie Ihre Zeit.
Antworten:
Sie können keinem Systemwerkzeug vertrauen, das Sie auf dem Computer haben. Rootkits ersetzen ps, netstat, ls und mehr, um ihre Anwesenheit zu verbergen. Sie sollten den Computer offline schalten, die Festplatte herausnehmen, eine forensische Kopie erstellen (denken Sie an dd) und dann auf einem separaten Computer daran arbeiten, nach dem Rootkit zu suchen.
Wenn Sie darauf bestehen, an der Live-Maschine zu arbeiten (was normalerweise zwecklos ist), können Sie versuchen, eine Rettungsdistribution auf CD herunterzuladen (es ist sehr wichtig, dass die Kopie schreibgeschützt ist) und ihre Kopien von ps, lsmod usw. verwenden.
Selbst dies kann fehlschlagen, da ein Rootkit Kernelmodule installieren kann, um Einträge in / proc zu verbergen, auf denen Tools wie ps normalerweise ausgeführt werden.
Viel Glück!
quelle
rpm -V -f /bin/ps
, um zu überprüfen, ob diese geändert wurde, wenn nicht. Dies funktioniert natürlich nur, wenn der Angreifer nicht auchrpm
die RPM-Datenbank geändert hat . Obwohl er einige seinerrpm
Dateien ändern könnte, führen Sie sie ausrpm -V rpm
und prüfen Sie, ob sie lügen oder nicht.Das Problem mit gut konstruierten Rootkits ist, dass sie den Befehl Ihres Systems ändern. wie ps und top, um die Prozesse des Rootkits nicht anzuzeigen, und ls, um keine Dateien des Rootkits anzuzeigen.
Sie müssen diesen Befehl also möglicherweise von der Quelle oder in Binairies-Form abrufen. (Achten Sie darauf, gut unterschrieben zu sein). Aber der Trick eines Root-Kits (ich habe es gesehen) ist, dass sie möglicherweise auch Ihren Compiler beschädigt haben. Wenn der Compiler weiß, dass er ls oder ps oder einen Befehl kompiliert, infiziert er sie ebenfalls.
Als ich dieses Problem sah, sagte ich, dass fein gcc neu kompilieren kann, aber nein, was ich brauche, um gcc zu kompilieren ... das infizierte gcc ... also wenn er weiß, dass er sich selbst kompiliert, infiziert er es, damit es den Befehl infizieren kann.
Sie werden sagen, dass dies groß und schwer zu erkennen ist, ja, aber selten sind die Root-Kits, die so kugelsicher sind, dass ich Ihnen nur den schlimmsten Fall gegeben habe.
Im Ernst, wenn Sie sicher sind, dass sich auf Ihrem Server ein Root-Kit befindet, installieren Sie es erneut!
quelle
Der beste Weg, um festzustellen, ob Ihr Server "gerootet" wurde, besteht darin, ein hostbasiertes Intrusion Detection System (HIDS) auszuführen. Wenn Sie jetzt kein HIDS ausführen, ist es leider zu spät, eines zu installieren. Der richtige Zeitpunkt für die Installation eines HIDS ist, wenn der Server zum ersten Mal installiert wird und bevor er in ein Netzwerk gestellt wird.
Kurz gesagt, die meisten HIDS arbeiten mit der Berechnung kryptografischer Hashes aller Systembinärdateien und dem Speichern dieser Hashes (zusammen mit zahlreichen anderen Dateistatistiken) in einer Datenbank, der Basisdatenbank. Anschließend scannt das HIDS Ihr System regelmäßig neu und vergleicht alle Dateien in seiner Basisdatenbank mit den tatsächlichen Systemdateien.
Ja, natürlich kann ein Rootkit Ihre Basisdatenbank ändern. Aus diesem Grund müssen Sie eine Kopie dieser Datenbank erstellen und separat vom Server speichern, bevor Sie den Server online stellen. Wenn Sie dann den Verdacht haben, dass Sie "verwurzelt" sind (und Sie vermuten, dass Ihre Basisdatenbank ebenfalls manipuliert wurde), können Sie Ihr System vom Installationsmedium starten, die bekanntermaßen funktionsfähige Datenbank aus Ihrer Sicherung wiederherstellen und anschließend einen Scan für das ausführen bekannt-gut. Es ist jedoch viel wahrscheinlicher, dass ein Rootkit nicht damit rechnet, Ihre speziellen HIDS besiegen zu müssen. Daher erhalten Sie von den HIDS eine Benachrichtigung, dass sich die Systemdateien geändert haben, was auf einen wahrscheinlichen Systemeinbruch hinweist.
Da Sie kein HIDS ausgeführt haben, können Sie nicht schnell feststellen, ob Sie gerootet wurden oder welche Systemdateien geändert wurden. Sie könnten viel Zeit damit verbringen, Ihre Systemdateien mit bekannten Dateien zu vergleichen, die von bekannten Installationsmedien abgerufen wurden. Diese Zeit wird jedoch höchstwahrscheinlich besser für die Neuinstallation Ihres Systems von diesen Medien aufgewendet. Wenn Sie untersuchen möchten, wie Sie nachträglich verwurzelt wurden, sollten Sie am besten ein Image Ihres Systems erstellen, bevor Sie es löschen und neu installieren.
quelle
Bitte beziehen Sie sich auf einen früheren Beitrag
Schmerzen beim Entfernen eines Perl-Rootkits
Es ist wirklich wichtig, dass Sie dies lesen.
Um Ihre Fragen zu beantworten ..
Normalerweise führe ich ein IDS / IPS (Intrusion Detection / Protection System) wie Snort aus. Es macht einen großartigen Job gegen Foulspiel und ich habe gesehen, dass es einen großartigen Job in Aktion macht.
Ich verwende auch Syslog-Server, um Protokollnachrichten von Produktionsservern fernzuhalten, damit Sie Probleme und Änderungen / Rootkits zurückverfolgen können
Ich benutze auch oft Management-Tools wie Kakteen, die CPU, Speicher, Festplatte, Netzwerknutzung grafisch darstellen und melden, wenn etwas ungewöhnlich ist.
Rootkit zu sein ist ein ernstes Problem. Versuchen Sie auf jeden Fall, die Ursache herauszufinden.
Hoffe das hilft ..: D.
quelle
Die zufälligen High-Ports sind die kurzlebigen Ports, was darauf hinweist, dass Sie wahrscheinlich eine oder mehrere Programmverbindungen von diesem System nach außen haben.
Wenn es nicht gerootet ist, erhalten Sie
netstat -np | grep -v ^unix
möglicherweise einen Hinweis darauf, welche Programme den Datenverkehr generieren.Möglicherweise können Sie auch den Datenverkehr von einem nahe gelegenen System mithilfe von tcpdump scannen, um Pakete zu sichern, die von dem System stammen, von dem Sie glauben, dass es verwurzelt ist. Wenn das Problemprogramm nicht als Root ausgeführt wird, können Sie dies vom infizierten System aus tun.
Es gibt verschiedene Möglichkeiten, um Verwurzelungen zu vermeiden:
BEARBEITEN: Wenn Sie verwurzelt sind, kann die Verwendung statisch verknüpfter ps- und ls-Programme einen Unterschied zwischen den laufenden Programmen anzeigen, die die beiden Tools finden. Unterschiede in der Liste können auch auftreten, wenn kurzlebige Programme absterben.
quelle
Die eigentliche Lösung für ein System, das möglicherweise gerootet ist, besteht darin, es aus sicheren Quellen neu zu installieren. Wie die Installations-CDs. Stellen Sie dann Ihre Daten nur aus dem Backup wieder her. Alle Binärdateien oder Skripte in Ihrem Backup wurden möglicherweise kompromittiert und in Ihrem Backup gespeichert.
Um das Root-Kit auf einem laufenden System zu finden, besteht eine Möglichkeit darin, ein Kernelmodul zu kompilieren, das zur Erkennung von Rootkits entwickelt wurde. Kompilieren Sie es auf einem anderen Computer, auf dem dieselbe Betriebssystemversion ausgeführt wird. Dann kopiere es und modifiziere es.
Ein Rootkit-Detektor verfügt über Tools, die in das Kernelmodul integriert sind, um die laufende Prozesstabelle zu sichern, die Syscall-Tabelle zu überprüfen (um nach Syscall-Abschnitten zu suchen) und andere Funktionen. Es kann Skripte enthalten, die die Ausgabe des Moduls übernehmen und diese mit der Ausgabe von ps, netstat, ls usw. vergleichen. Oder es kann den Speicher im Kernelraum nach bekannten Rootkit-Signaturen und Berichten durchsuchen.
quelle
Das ist wie bei Mäusen: Wenn Sie eine sehen, leben dort hundert Menschen. Wenn Sie Anzeichen eines Kompromisses sehen, müssen Sie davon ausgehen, dass das gesamte System kompromittiert ist. Aus diesem Grund schlagen alle vor, das System neu zu installieren, anstatt viel Zeit damit zu verbringen, nachzuschauen. Ich bin auf mehrere Situationen gestoßen, in denen eine Maschine kompromittiert wurde und Systemadministratoren dachten, sie hätten das Chaos beseitigt, um es später zu bereuen.
Rootkits ersetzen häufig System-Binärdateien wie ps, top, netstat. Und es ist auch üblich, Trojaner ssh. Das Suchen nach Prüfsummen-Kuriositäten in diesen Dateien ist daher ein erstklassiger Ansatz. Wenn Sie auf einem RPM-basierten System arbeiten, ist RPM-V normalerweise ein gutes Tool oder eine dpkg-Überprüfung unter Debian / Ubuntu. Oder Sie können die Prüfsummen direkt überprüfen (aber achten Sie auf den Prelink, der die Binärdateien aus Geschwindigkeitsgründen im laufenden Betrieb ändert). Dies ist nicht zuverlässig, aber viele Script-Kiddie-Angriffe decken diese Spuren nicht ab. (Mit anderen Worten, wenn Sie etwas finden, gut. Wenn Sie etwas nicht finden, beweist dies nicht, dass Sie sauber sind.)
Andere Dinge, nach denen Sie suchen sollten: Von außen geöffnete Ports,
nmap
dienetstat
auf dem Computer nicht offen angezeigt werden, und Pids, in/proc
denen nicht angezeigt wirdps
. Wenn Sie Remote-Syslog aktiviert haben, suchen Sie nach SSH-Anmeldungen, die keine Datensätze im Lastlog enthalten.quelle
Besorgen Sie sich eine Kopie von RKhunter und chkrootkit. Sie sind normalerweise ziemlich anständig darin, Dinge zu finden, die nicht da sein sollten.
Es ist immer gut, mod_security zusammen mit einer Firewall auch auf Ihrer Apache-Ebene auszuführen. Normalerweise finden sie eine veraltete Webanwendung oder ein veraltetes Skript und verbessern den Zugriff von dort aus mit Perl-Shell-Skripten und anderen lustigen Dingen.
ps auxfww ist normalerweise großartig, um Prozesse zu finden, die nicht dazu gehören.
Außerdem: netstat -anp, um zu sehen, was an bestimmten Ports empfangsbereit ist.
Auch diese sind gut, wenn Sie nicht verwurzelt, sondern nur kompromittiert wurden.
quelle