Versteckte Prozesse gefunden, wie wieter vorgehen?

Hi Leutz,
mir ist bei meinem Server in den Logs aufgefallen, das da andauernd cron-jobs ausgeführt werden von denen ich garnix weis. Des weiteren hab ich nen Haufen voll versteckter Prozesse.

Wie sollte ich jetzt weiter vorgehen ? Bzw. wie finde ich heraus was diese Prozesse nun eigentlich machen ?

LG WhiTeY

EDITE: Nen paar mehr infos sollte ich vilt noch geben ;)

OS: Debian Linux 4.0
Hardware: Strato VServer
Laufende (Gewollte) Dienste:
Apache Webserver 2.2.3
MySQL Datenbank-Server 5.0.32
Postfix 2.3.8
ProFTPd 1.30
SSH-Server OpenSSH 4.3
 
Einzig sinnvolle Loesung: Server neu initialisieren lassen. Vorher natuerlich die notwendigen Daten sichern. Danach das System von einem Profi richtig absichern lassen und erst dann die Kiste wieder richtig in Betrieb nehmen. Wenn du eine serielle Konsole zur Verfuegung hast oder ein KVM an einer zweiten Netzwerkkarte haengt, kannst du auch erstmal mittels ifconfig das Netzwerk-Interface zum Internet ausschalten und dann genauer schauen was die Prozesse machen. Ansonsten solltest du darauf verzichten. Dazu solltest du erstmal rausfinden welche Dateien zu den Prozessen gehoeren, ueber welche Wege sie evtl. eingeschleust wurden und dann kannst du die Prozesse z.B. in einem Debugger und mit Tools wie ltrace und strace genauer untersuchen. Sollte es sich um einen Standard-Rootkit handeln, koennen Tools wie rkhunter und chkrootkit auch bei der Analyse hilfreich sein.
 
Nissten sich Rootkits nicht im Kernel ein und verstecken so ihre Präsenz indem sie z.B. Files nicht anzeigen, die aber eigentlich da sind? Ich hab mich auf Userland Prozesse bezogen. Aber ich mein: Woher weiss er, dass er versteckte Prozesse hat wenn er sie nicht sieht? Bzw wie hat er das herausgefunden?

cu
serow
 
Naja, es gibt verschiedene Varianten, die wir gerade erst in einer Übungsgruppe mal ausprobiert haben.

lrk5 wäre ein Userland Rootkit. Dieses tauscht ps einfach gegen eine manipulierte Version aus und kann dann halt entsprechend filtern.

Als Kernelmode Rootkit hatten wir adore. Dort wird /proc so manipuliert, dass ein zu versteckender Prozess nicht mehr gesehen wird.

In beiden Fällen hättest du mit ps bestimmte Prozesse nicht mehr gesehen. Wie er sie gefunden hat, habe ich mich auch gefragt, aber es gibt ja Software, die nach Rootkits scannen kann. Möglicherweise hat er sowas verwendet und dabei herausgefunden, dass etwas versteckt ist. Leider wurde ja nicht gesagt, wie er das gemacht hat und ob er die Prozesse dann auch sehen kann oder nur weiß, dass etwas versteckt ist.

Da ich aber mal davon ausgehe, dass bei einem normalen System keine versteckten Prozesse vorhanden sein sollten, kann ich mich nur bitmunchers Tipps anschließen. Experimentieren sollte man bei einem Server mit Internetanbindung nicht unbedingt.
 
Ein mini bash script reicht schon aus um versteckte prozesse sichtbar zu machen. (Für Linux zumindest unter Windows gibt es extra Programme für x86 wie 64 )

Code:
#!/bin/bash# Das Skript testet, ob es Prozesse im System gibt, die ein# Signal annehmen, aber nicht in /proc aufgelistet werden.for PID in `seq 1 65535`; do if kill -0 ${PID} 2>/dev/null then if ls /proc/*/task/*/cmdline | grep "/${PID}/cmdline" >/dev/null then true else CMD=`cat /proc/${PID}/cmdline` echo "PID ${PID} versteckt?! cmdline: '${CMD}'" fi fi done

LG WhiTeY
 
Hi,

Ein mini bash script reicht schon aus um versteckte prozesse sichtbar zu machen. (Für Linux zumindest unter Windows gibt es extra Programme für x86 wie 64 )
Okay, das hilft dir aber nur bei Userland Rootkits. Du vergleichst also den Output von ps (ein Userland Tool) mit dem was der Kernel sag (/proc).

Naja, es gibt verschiedene Varianten, die wir gerade erst in einer Übungsgruppe mal ausprobiert haben.
Was für eine Übungsgruppe? Uni? Was studierst du? *NEID* Wir Wirtschaftsinformatiker machen nur Scheiss ...

cu
serow
 
Ich sehe gerade beim sichern meiner SQL-datenbanken 3 datenbanken die ich nich kenne.

Information_shema
plan
provider

Ich bin warscheinlich SPam mail verteiler *heul*
 
Okay, das hilft dir aber nur bei Userland Rootkits. Du vergleichst also den Output von ps (ein Userland Tool) mit dem was der Kernel sag (/proc).
Nein, er sendet an jede mögliche PID 1-65535 ein Signal und schaut, ob er eine Antwort bekommt. Dann prüft er, ob es für Prozesse, die auf das Signal reagieren, passende proc-Informationen gibt. Ist dies nicht der Fall, ist der Prozess aus der Prozessliste ausgekoppelt und somit versteckt. Rootkits im Kernel-Space werden nicht als Prozesse umgesetzt. Sie laufen innerhalb eines Treiber/Modul-Kontext, sind also gänzlich anders anzugehen.

Speziell dieses Skript hat nur ein Problem... es zeigt auch versteckte Prozesse an, die garkeine sind und das vor allem auf Servern, auf denen Prozese laufen, die ständig neue Kindprozesse erzeugen und zerstören. Apache ist ein schönes Beispiel für einen solchen Prozess. Das liegt daran, dass das Skript nicht aus einem durchgehenden Prozess besteht, sondern aus verschiedenen Programm-Aufrufen. Beispiel:

Das Skript sendet an Prozess 1234 ein Signal mittels kill und "bekommt eine Antwort". Prozess 1234 ist ein Kindprozess, der gerade vom System aufgeräumt wird und auf seine Zerstörung wartet. Da der kill-Befehl abgearbeitet ist, kann der Kernel nun den Kindprozess zerstören, bevor das Skript die Infos aus /proc einlesen kann. Der Prozess 1234 wird also zerstört und dann bekommt das Skript wieder Rechenzeit vom Kernel zugeteilt, das nun mit ls und grep überprüft, ob es zu 1234 passende proc-Informationen gibt. Diese sind aber schon längst bei der Zerstörung des Kindprozesses entfernt worden, so dass das Skript einen vermeintlich versteckten Prozess anzeigt, der garkeiner ist.

Dieses Skript (das übrigens vom Debian-Projekt stammt, wenn ich mich recht entsinne), ist damit nur für Systeme geeignet, die keine Programme nutzen, von denen ständig neue Kindprozesse verwendet werden. Speziell auf mehr oder weniger stark frequentierten Webservern zeigt es dutzende bis hunderte von vermeintlichen versteckten Prozessen an. Tools wie chkrootkit sind da wesentlich besser geeignet um versteckte Prozesse zu finden.

Edit: Die information_schema ist eine Standard-DB von MySQL. Die provider ist vermutlich die Email-Datenbank von der Vorgänger-Version des Howtos http://workaround.org/articles/ispmail-etch/index.html.de wo die DB noch 'provider' genannt wurde.
 
Nein, er sendet an jede mögliche PID 1-65535 ein Signal und schaut, ob er eine Antwort bekommt. Dann prüft er, ob es für Prozesse, die auf das Signal reagieren, passende proc-Informationen gibt. Ist dies nicht der Fall, ist der Prozess aus der Prozessliste ausgekoppelt und somit.........
Ok das werd ich mir merken, allerdings habe ich die PID's mit den mir in der auth.log aufgefallenen Cron-jobs (die ich nicht gesetzt habe und die so auch nicht in den Cron-tabs auftauchen) verglichen und festgestellt das sie identisch sind.


LG WhiTeY

P.S.: Ja das müsste von Debian-Projekt sein.

EDITE: Ok, hab vor kuzem erst nen Update eingespielt und die waren mir vorher nictht aufgefallen. Solche Dummy-DB's fliegen bei mir eigentlich immer sofort runter
 
Original von bitmuncher
Okay, das hilft dir aber nur bei Userland Rootkits. Du vergleichst also den Output von ps (ein Userland Tool) mit dem was der Kernel sag (/proc).
Nein, er sendet an jede mögliche PID 1-65535 ein Signal und schaut, ob er eine Antwort bekommt. Dann prüft er, ob es für Prozesse, die auf das Signal reagieren, passende proc-Informationen gibt. Ist dies nicht der Fall, ist der Prozess aus der Prozessliste ausgekoppelt und somit versteckt.
Stimmt, da hab ich mir irgendwie verguckt.

Original von bitmuncher
Rootkits im Kernel-Space werden nicht als Prozesse umgesetzt. Sie laufen innerhalb eines Treiber/Modul-Kontext, sind also gänzlich anders anzugehen.
Ja das ist schon klar - deswegen war ich ja auch skeptisch was seine versteckten Prozesse angeht. Ich dachte es gäbe nur kernelspace Rootkits :D

@WhyTey: Auf deine versteckten Prozesse würde ich nicht viel geben. Versuch mal rauszufinden was das für CRON jobs sind. Wahrscheinlich ebenfalls harmlos und vom Provider so gewollt ^^

cu
serow
 
Auf deine versteckten Prozesse würde ich nicht viel geben. Versuch mal rauszufinden was das für CRON jobs sind. Wahrscheinlich ebenfalls harmlos und vom Provider so gewollt ^^

Jop bin dabei, lasse die kiste jetzt erstmal vom netz nehmen und werde den Provider mal fragen. Die Frage die sich mir stellt, wenn ich mir die (nicht in meinen crontab auftauchenden) cron-jobs in der log ansehe, wie finde ich geraus was die eigenlich genau machen ?!


LG WhiTeY

EDITE:
MAl son minni auszug:

Jul 23 07:09:01 h1329103 CRON[18150]: (pam_unix) session opened for user root by (uid=0)
Jul 23 07:09:01 h1329103 CRON[18150]: (pam_unix) session closed for user root Jul 23 07:39:01 h1329103 CRON[28464]: (pam_unix) session opened for user root by (uid=0) Jul 23 07:39:01 h1329103 CRON[28464]: (pam_unix) session closed for user root
Die PID's tauchen bei mir halt nicht auf.
 
Also es gibt ein systemweites crontab und dann nochmal pro User ein eigenes. Die würde ich mir mal raussuchen und schaun ob da nicht irgendwas drin steht.

cu
serow

EDIT: pam_unix ist ein Modul von PAM (pluggable authentication modules), das dich lokal gegen /etc/passwd und /etc/shadow authentifiziert. Der CRON daemon führt hier scheinbar irgendwas als root aus und muss sich authentifizieren.

Wenn ich mich per SSH einlogge sieht das z.B. so aus:
Code:
Jul 24 14:55:52 mini sshd[22619]: pam_unix(sshd:session): session opened for user mathias by (uid=0)
mit sudo so
Code:
Jul 24 14:56:49 mini sudo: pam_unix(sudo:auth): authentication failure; logname=mathias uid=0 euid=0 tty=/dev/pts/2 ruser= rhost=  user=mathias
 
So schlau war ich auc schon, darum Sprach ich von mir nicht bekannten Cronjobs ;) aber danke für die Hilfestellung !!

# DO NOT EDIT THIS FILE - edit the master and reinstall.# (/tmp/crontab.99NOMB/crontab installed on Thu Apr 3 09:03:57 2008)# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)50 21 * * * /etc/webmin/cron/tempdelete.pl
 
achso... ich dachte, du hast vielleicht nur in der /etc/crontab und den /etc/cron.daily/weekly/monthly/hourly nachgeschaut
 
Zurück
Oben