Hallo,
ich hab nen kleinen RootServer hauptsächlich zum rumspielen.
Seit gestern nun läuft dort ein Perl-Prozess der die CPU absolut auslastet.
Nach eingehender Suche wird durch diesen Perl-Prozess eine Verbindung zu einem externen Host aufgebaut, sodass auch der Traffic des Servers ordentlich in die Höhe steigt.
Bevor ich irgendwas neu mache und mit nem Backup das potentielle Problem wieder einspiele würde ich gerne rausfinden wodurch der Perl-Prozess ausgeführt wird. Kann man das irgendwie rausfinden?
Im Apache-Log steht nichts dergleichen was darauf hinweist.
User des Prozesses ist wwwrun also der Apache-User. Statt dem Pfad steht als Ausführender Parameter nur "system".
Hat jemand ne Idee wie ich dem auf die schliche kommen könnte?
Vielen Dank im Voraus
Perl Skript - Auslöser Datei orten
-
- Project Manager
- Posts: 11179
- Joined: 2003-02-27 01:00
- Location: Hamburg
Re: Perl Skript - Auslöser Datei orten
Code: Select all
ps auxf | grep wwwrun
ls -alh /tmp
-
- Posts: 29
- Joined: 2006-09-14 22:21
Re: Perl Skript - Auslöser Datei orten
Vielen Dank für deine Antwort.
"ps auxf | grep wwwrun" hatte ich bereits ausprobiert und liefert mir das vielsagende:
Gibt es keinen Log dafür, wer wo was Perl ausführt?
Hab über Yast perl-log... gefunden und installiert aber wo bitte speichert der und was? Hab auch mal von strace gehört, dieser command ist jedoch unbekannt wenn ich den ausführe.
Kann mir jemand weiterhelfen auf der Suche wo der Übeltäter sitzt?
Wird das von extern über den Webserver aufgerufen oder doch eher vom System? also Sicherheitslücke in PHP z.b. externe includes oder sowas oder liegt bereits was auf meinem Server? All das wäre interessant vor der Neuinstallation und Restore der alten Daten
Wäre für jede Hilfe dankbar.
MfG
"ps auxf | grep wwwrun" hatte ich bereits ausprobiert und liefert mir das vielsagende:
Code: Select all
wwwrun 31307 57.0 0.2 16352 5984 ? R 15:00 5:05 system
wwwrun 31315 71.0 0.2 16352 5980 ? R 15:00 6:18 system
wwwrun 31349 54.9 0.2 16352 5948 ? R 15:00 4:44 system
Hab über Yast perl-log... gefunden und installiert aber wo bitte speichert der und was? Hab auch mal von strace gehört, dieser command ist jedoch unbekannt wenn ich den ausführe.
Kann mir jemand weiterhelfen auf der Suche wo der Übeltäter sitzt?
Wird das von extern über den Webserver aufgerufen oder doch eher vom System? also Sicherheitslücke in PHP z.b. externe includes oder sowas oder liegt bereits was auf meinem Server? All das wäre interessant vor der Neuinstallation und Restore der alten Daten
Wäre für jede Hilfe dankbar.
MfG
-
- Posts: 5923
- Joined: 2004-05-23 12:53
Re: Perl Skript - Auslöser Datei orten
Den Pfad zu den Programmen kannst du unter /proc/<PID>/ herausfinden.
-
- Posts: 538
- Joined: 2005-09-02 11:12
Re: Perl Skript - Auslöser Datei orten
wenn es wwwdata ist sollten die entsprechenden Scriptnamen auch in den apache.logs auftauchen
-
- Posts: 29
- Joined: 2006-09-14 22:21
Re: Perl Skript - Auslöser Datei orten
Danke für eure Antworten.
Unter /proc/PID finde ich halt einige Dateien und Ordner die mir erstmal garnichts sagen. Krieg ich dadurch irgendwie den Urheber des Prozesses raus?
Ich weiß ja noch garnicht ob das ganze über den Webserver aufgerufen wird oder einfach ein Perl-Skript, dass auf der Platte liegt und aufgerufen wird.
In access_log finde ich nichts direktes dazu, also .pl Dateien die aufgerufen werden oder sonstiges.
Weiterhin für jede Hilfe dankbar
Unter /proc/PID finde ich halt einige Dateien und Ordner die mir erstmal garnichts sagen. Krieg ich dadurch irgendwie den Urheber des Prozesses raus?
Ich weiß ja noch garnicht ob das ganze über den Webserver aufgerufen wird oder einfach ein Perl-Skript, dass auf der Platte liegt und aufgerufen wird.
In access_log finde ich nichts direktes dazu, also .pl Dateien die aufgerufen werden oder sonstiges.
Weiterhin für jede Hilfe dankbar
-
- Posts: 391
- Joined: 2006-09-05 21:12
- Location: Berlin
Re: Perl Skript - Auslöser Datei orten
Alternativ suche nach .cgi Dateien, Dateierweiterungen sind bekanntlich Schall und Rauch, faktisch braucht man sie nicht, erleichtern einem nur die Arbeit :)
Gruß
dtdesign
Gruß
dtdesign
-
- Posts: 29
- Joined: 2006-09-14 22:21
Re: Perl Skript - Auslöser Datei orten
Guten Abend!
Danke für die Hinweise.
Also ein Skript konnte ich nicht finden das irgendwo liegt und verdächtig aussieht. Nach wie vor ist es mir nicht möglich rauszubekommen wer diesen Perl-Prozess ans Laufen bringt.
"ps auxf | grep wwwrun"
liefert mir nur System als Quelle.
Kann ich davon ausgehen, dass es deshalb kein auf der Platte liegendes Skript ist sondern eher eine einzelne Anweisung die wie auch immer auf dem System ausgeführt wird? Ich finde das muss doch rauszukriegen sein woher der Prozess kommt. Im Apache Log finde ich dazu nichts, bzw. vielleicht verwende ich falsche Suchmuster.
Kann ich aus den /proc/PID Ordnern irgendetwas lesen? Ob die Befehle von außen kommen? Ich kann mir kaum vorstellen das Perlprozesse vollends anonym zu starten sind.
Des weiteren merke ich wenn es sporadisch mal wieder vorkommt, dass diese Perl-Prozesse auftreten, dass auch der Traffic in die Höhe steigt meistens nur der ausgehende. Wie kann ich das aufschlüsseln was der Perl-Prozess da macht, es muss doch so ne Art Perl-Log geben oder nicht?
Bin weiterhin um jede Hilfe dankbar für die Erweiterung unseres Erfahrungssschatzes! :lol:
Danke für die Hinweise.
Also ein Skript konnte ich nicht finden das irgendwo liegt und verdächtig aussieht. Nach wie vor ist es mir nicht möglich rauszubekommen wer diesen Perl-Prozess ans Laufen bringt.
"ps auxf | grep wwwrun"
liefert mir nur System als Quelle.
Kann ich davon ausgehen, dass es deshalb kein auf der Platte liegendes Skript ist sondern eher eine einzelne Anweisung die wie auch immer auf dem System ausgeführt wird? Ich finde das muss doch rauszukriegen sein woher der Prozess kommt. Im Apache Log finde ich dazu nichts, bzw. vielleicht verwende ich falsche Suchmuster.
Kann ich aus den /proc/PID Ordnern irgendetwas lesen? Ob die Befehle von außen kommen? Ich kann mir kaum vorstellen das Perlprozesse vollends anonym zu starten sind.
Des weiteren merke ich wenn es sporadisch mal wieder vorkommt, dass diese Perl-Prozesse auftreten, dass auch der Traffic in die Höhe steigt meistens nur der ausgehende. Wie kann ich das aufschlüsseln was der Perl-Prozess da macht, es muss doch so ne Art Perl-Log geben oder nicht?
Bin weiterhin um jede Hilfe dankbar für die Erweiterung unseres Erfahrungssschatzes! :lol:
-
- Project Manager
- Posts: 11179
- Joined: 2003-02-27 01:00
- Location: Hamburg
Re: Perl Skript - Auslöser Datei orten
Quick&Dirty:
Code: Select all
for i in `ps auxf | grep wwwrun | awk '{ print $2 }'`;
do echo -en "$it"; cat /proc/$i/cmdline; echo; done
-
- Project Manager
- Posts: 11179
- Joined: 2003-02-27 01:00
- Location: Hamburg
Re: Perl Skript - Auslöser Datei orten
Bietest Du (unbewusst) die Möglichkeit zum Dateiupload auf Deinem System an? Greppe mal die entsprechenden Pfade nach perl:
Alles was nicht in die Liste gehört, ist näher zu untersuchen und zu entsorgen.
Code: Select all
grep -rin perl /path/to/dir
-
- Posts: 150
- Joined: 2004-12-15 16:48
Re: Perl Skript - Auslöser Datei orten
Da mir ein Programm namens "system" nicht bekannt ist, vermute ich mal daß der Programmname verschleiert ist.
Das was "ps aux" und "/proc/<PID>/cmdline" ausgibt läßt sich schließlich einfach ändern.
Über den Parameter "comm" wie z.B. in "ps -A -o pid,ppid,user,comm" erhält man wieder den ursprünglichen Programmname.
Vielleicht kannst Du über PID des Parents und die STIME eine Verbindung zu einem konkreten Eintrag im Webserverlog herstellen.
Das was "ps aux" und "/proc/<PID>/cmdline" ausgibt läßt sich schließlich einfach ändern.
Code: Select all
# cat perlprogramm.pl
#!/usr/bin/perl
$0 = 'xinetd';
sleep();
Vielleicht kannst Du über PID des Parents und die STIME eine Verbindung zu einem konkreten Eintrag im Webserverlog herstellen.