Hallo Liste! Ich bräuchte mal eure Hilfe! Ich glaube mein Server ist gehacked!! *peinlich*peinlich* :-( Aber ich bin mir noch nicht ganz sicher, in welchem Umfang und was am Sinnigsten nun zu tun ist. Vielleicht habt ihr ja die ein oder andere Hilfestellung für mich? Also: Gemerkt hab ich es daran, dass sämtliche index.* Seiten hinter dem Body Tag einen neuen iframe Eintrag haben: <IFRAME SRC="http://www.forced-action.com/" WIDTH=1 HEIGHT=1></IFRAME> Und der kommt garantiert nicht von mir!! Mein erster Gedanke war, sofort alles "platt" und neu machen! Aber muß das wirklich sein? Kann ich davon ausgehen, dass man nur mit root Zugriff, alle diese Dateien (unterschiedliche user!) ändern kann? Also, ist es zwingend, dass das root-passwort geknackt sein muß? Oder gibt es andere Möglichkeiten. Ich denke da an überlange Parameter ... oder schlechte CGIs (von denen gar keine im Einsatz sind, wenn ich mich nicht irre!) Das System ist ein Suse 7.1. Apache ist in der version 1.3.24 installiert. Telnet ist deaktiviert, Zugang gibt es nur mittels SSH. Was wäre nun am besten zu tun? tripwire im Nachhinein zu installieren ist mit Sicherheit quark! Das hab ich verpaßt! Aber gibt es noch andere Möglichkeiten, um was rauszubekommen oder zu verschließen?? Freue mich über jede Hilfe! Viele Grüße Tol
Tol wrote:
Hallo Liste!
Ich bräuchte mal eure Hilfe! Ich glaube mein Server ist gehacked!! *peinlich*peinlich* :-( Aber ich bin mir noch nicht ganz sicher, in welchem Umfang und was am Sinnigsten nun zu tun ist. Vielleicht habt ihr ja die ein oder andere Hilfestellung für mich?
Meiner ist auch schonmal gehackt worden ... kommt vor ;-)
Also: Gemerkt hab ich es daran, dass sämtliche index.* Seiten hinter dem Body Tag einen neuen iframe Eintrag haben:
<IFRAME SRC="http://www.forced-action.com/" WIDTH=1 HEIGHT=1></IFRAME>
Pfui!
Und der kommt garantiert nicht von mir!!
Mein erster Gedanke war, sofort alles "platt" und neu machen! Aber muß das wirklich sein?
Nein, ... solange wirklich nur die index.* Seiten modifziert wurden ...
Kann ich davon ausgehen, dass man nur mit root Zugriff, alle diese Dateien (unterschiedliche user!) ändern kann? Also, ist es zwingend, dass das root-passwort geknackt sein muß? Oder gibt es andere Möglichkeiten. Ich denke da an überlange Parameter ... oder schlechte CGIs (von denen gar keine im Einsatz sind, wenn ich mich nicht irre!)
Das System ist ein Suse 7.1. Apache ist in der version 1.3.24 installiert. Telnet ist deaktiviert, Zugang gibt es nur mittels SSH.
Ist PHP installiert? Ist der Safe-Mode aktiviert? Ist vielleicht ein Perl Script falsch konfiguriert? Welche Version hat der SSH-Server? Welche anderen Dienste laufen auf dem Rechner? Schonmal einene Portscan auf Deiner Maschine gemacht? Wäre dies nicht der geeignete Zeitpunkt um ein Update auf eine aktuelle Version zu machen? Sicherlich, wenn dieses 7.1er Release ordenlich gepflegt ist muss es ja nicht sein, dass die Versionen der einzelnen Applikationen "löchrig" sind, aber gerade Apache hat schon einige sicherheitsrelevante Updates erfahren seit 1.3.24 ( http://www.apacheweek.com/features/security-13 ). Wenn das vielleicht im moment gerade schlecht ist, dann könntest Du mit chkrootkit überprüfen ob ein bekanntes Rootkit installiert ist ( http://www.chkrootkit.org ). Ralf Spenneberg hat einen sehr guten Artikel in seinem Buch "Intrusion Detection für Linux Server" geschrieben ( http://www.spenneberg.com/public/IDS-Book/chapter16.pdf ) beachte insbesonders, dass Du die wichtigsten Systembinaries auf einem saubenen Datenträger zur Verfügung stellst. Beachte dazu bitte auch diesen Thread ( http://lists.suse.com/archive/suse-linux/2003-Oct/3970.html ).
Was wäre nun am besten zu tun? tripwire im Nachhinein zu installieren ist mit Sicherheit quark! Das hab ich verpaßt! Aber gibt es noch andere Möglichkeiten, um was rauszubekommen oder zu verschließen??
Freue mich über jede Hilfe!
Viele Grüße Tol
Grüße Sascha
Hiho! Sascha Teifke wrote:
Meiner ist auch schonmal gehackt worden ... kommt vor ;-)
das tröstet etwas :-))
Mein erster Gedanke war, sofort alles "platt" und neu machen! Aber muß das wirklich sein?
Nein, ... solange wirklich nur die index.* Seiten modifziert wurden ...
Hmm .. ich hab mal mit find alle Dateien gesucht, die am fraglichen Tag verändert wurden und da habe ich nur diese index.* Files gefunden. Aber das heisst jetzt bestimmt noch gar nix, oder??
[...]
Ist PHP installiert?
Jup, in der Version 4.2.1
Ist der Safe-Mode aktiviert?
Nein. da gab es ein paar Punkte, die mich den wieder deaktivieren ließen ... weiß jetzt nicht mehr genau, was das war. Upload? MaxUploadSize? UploadPath? Irgendwas in der Richtung glaub ich ...
Ist vielleicht ein Perl Script falsch konfiguriert?
Auf keiner der Sites wird Perl überhaupt genutzt - ähm ... fast. Es gibt vom phpmyadmin ein converterscript. Das liegt bei einem von uns rum. Kann aber nicht auf Anhieb einschätzen, was das macht. Vielleicht jemand von euch? while(<>){ s/\$cfg(\w+)/\$cfg\[\'$1\'\]/g; print; }
Welche Version hat der SSH-Server?
Ähmmm ... wie bekomm ich das raus? In der man-page steht etwas von 25.Sept.'99, aber das glaub ich nicht so recht ...
Welche anderen Dienste laufen auf dem Rechner? Schonmal einene Portscan auf Deiner Maschine gemacht?
21/tcp open ftp 22/tcp open ssh 25/tcp open smtp 80/tcp open http 110/tcp open pop3 113/tcp open auth 3306/tcp open mysql 7070/tcp open realserver 8009/tcp open ajp13 9090/tcp open zeus-admin Bis auf den 113/Auth kann ich auch alles zuordnen ...
Wäre dies nicht der geeignete Zeitpunkt um ein Update auf eine aktuelle Version zu machen? Sicherlich, wenn dieses 7.1er Release ordenlich gepflegt ist muss es ja nicht sein, dass die Versionen der einzelnen Applikationen "löchrig" sind, aber gerade Apache hat schon einige sicherheitsrelevante Updates erfahren seit 1.3.24 ( http://www.apacheweek.com/features/security-13 ).
Hmmm ... also, der totale Susefreak bin ich leider noch nicht und hab da ein paar Bedenken, dass das alles so glatt läuft. Ich hab zB qmail und vpopmail installiert und ich glaub unter Suse 8.x laufen die schon so ohne weiteres nicht mehr ... Will mir da, wenn es geht, nicht unbedingt selbst n Bein stellen :-/ Aber den Apache mal neu einzubinden wäre vermutlich wirklich n gute Idee - so oder so ;-) Und n neueres PHP kann sicher auch nicht schaden ;-)
Wenn das vielleicht im moment gerade schlecht ist, dann könntest Du mit chkrootkit überprüfen ob ein bekanntes Rootkit installiert ist ( http://www.chkrootkit.org ). Ralf Spenneberg hat einen sehr guten Artikel in seinem Buch "Intrusion Detection für Linux Server" geschrieben ( http://www.spenneberg.com/public/IDS-Book/chapter16.pdf )
Hey, das ist sehr interessant!! Guter Tip! Hab ein paar Dinge gleich mal ausgetestet. Ein Chrootkit konnte nicht gefunden werden. Aber: Nicht finden heißt ja leider nicht dass keins da ist ... Hab ich extra vom anderen SuSE kopiert ... Also, was weiß ich nun alles? - chrootkit findet keine Rootkits - perlscripte sind bis auf eins keine online - die index-dateien sind die einzigen, die zu dieser fraglichen Uhrzeit verändert wurden - über rpm hab ich keine Veränderungen feststellen können - die Prozesse, die liefen und die, die laufen sollten, stimmten auch alle - Kernelmeldungen gab es keine - in den logfiles /var/log/ konnte ich nichts Ungewöhnliches entdecken - ich habe sämtliche apache-logs nach Einträgen zu dieser Zeit durchsucht aber auch da nichts entdecken können Sieht eigentlich alles ganz gut aus ... aber: alle index-files wurden verändert! Und nun? Ach! Und noch was! Sollte eigentlich n eigener Thrad werden, aber bin noch nicht dazu gekommen. Vielleicht ist es ja trotzdem auch an dieser Stelle wichtig: Der Rechner schmiert manchmal komplett weg!! Kein Dienst ist dann mehr erreichbar - bis auf den Ping! Der lebt noch! Aber sonst sshd, httpd, mysqld, qmaild, ... alles weg. Da hilft dann nur noch der Anruf im Rechenzentrum und ein Reset per Button. Hat jemand ne Idee dazu? Viele Grüße Tol
Hallo, also meiner war auch vor kurzen gehackt worden. Interessanter Weise gab es keinerlei Auffällikeiten, bis ich einmal etwas tiefer gegraben habe. Also solltest Du erst einmal nachschauen, welche Prozesse alles laufen (ps ax) und diese könnte man mit den geöffneten Files (lsof) bzw. Ports (lsof -i)gegenchecken. Interessant ist auch die bash-History. Bei mir half nur noch ein Plattmachen vom Server und diesen komplett neu einrichten. War nicht einfach, aber das kann man auch aus der Ferne machen (wenn man so eine Art Recovery-System hat). MfG Dirk Anders
-----Ursprüngliche Nachricht----- Von: Tol [mailto:linux@recordcaster.de] Gesendet: Mittwoch, 11. Februar 2004 09:38 An: suse-linux@suse.com Betreff: Re: Server gehacked?
Hiho!
Sascha Teifke wrote:
Meiner ist auch schonmal gehackt worden ... kommt vor ;-)
das tröstet etwas :-))
Mein erster Gedanke war, sofort alles "platt" und neu machen! Aber muß das wirklich sein?
Nein, ... solange wirklich nur die index.* Seiten modifziert wurden ...
Hmm .. ich hab mal mit find alle Dateien gesucht, die am fraglichen Tag verändert wurden und da habe ich nur diese index.* Files gefunden. Aber das heisst jetzt bestimmt noch gar nix, oder??
[...]
Ist PHP installiert?
Jup, in der Version 4.2.1
Ist der Safe-Mode aktiviert?
Nein. da gab es ein paar Punkte, die mich den wieder deaktivieren ließen ... weiß jetzt nicht mehr genau, was das war. Upload? MaxUploadSize? UploadPath? Irgendwas in der Richtung glaub ich ...
Ist vielleicht ein Perl Script falsch konfiguriert?
Auf keiner der Sites wird Perl überhaupt genutzt - ähm ... fast. Es gibt vom phpmyadmin ein converterscript. Das liegt bei einem von uns rum. Kann aber nicht auf Anhieb einschätzen, was das macht. Vielleicht jemand von euch?
while(<>){ s/\$cfg(\w+)/\$cfg\[\'$1\'\]/g; print; }
Welche Version hat der SSH-Server?
Ähmmm ... wie bekomm ich das raus? In der man-page steht etwas von 25.Sept.'99, aber das glaub ich nicht so recht ...
Welche anderen Dienste laufen auf dem Rechner? Schonmal einene Portscan auf Deiner Maschine gemacht?
21/tcp open ftp 22/tcp open ssh 25/tcp open smtp 80/tcp open http 110/tcp open pop3 113/tcp open auth 3306/tcp open mysql 7070/tcp open realserver 8009/tcp open ajp13 9090/tcp open zeus-admin
Kann aber nicht auf Anhieb einschätzen, was das macht. Vielleicht jemand von euch?
while(<>){ s/\$cfg(\w+)/\$cfg\[\'$1\'\]/g; print; }
DAS "Skript" macht garnichts. Es gibt nur einen CR aus, sobald die Return-Taste gedrückt wird.
In der while-Bedingung müßte zwischen den spitzen Klammern ein Datei-Handle stehen. Die Schleife würde dann Zeile für Zeile die geöffneten Datei abarbeiten. Der reguläre Ausdruck ist eine Suche mit Ersetzung. Normal würde Zeile für Zeile geprüft, ob sie 1. den Wert der Variablen $cfg enthält, und 2. ob unmittelbar danach ein Buchstabenteil angehängt ist Und genau dieser Buchstabenteil wird ausgeschnitten, um erneut eingefügt zu werden, nun allerdings umschlossen von einer Klammer und Apostrophs. Aus "...CONFIGblablabla..." würde "...CONFIG['blablabla']..." (wenn $cfg den Inhalt "CONFIG" hätte) Der ganze Variablenzuweisungskram fehlt aber eh. Dieses Fragment ist eine Nullnummer. Benutzen tut dieses "Ding" - so wie es da steht - mit Sicherheit keiner. Frag mal rund, wer das so hingebastelt hat. ;-) -- Ciao Dirk
Hallo, Am Wed, 11 Feb 2004, Dirk schrieb:
Kann aber nicht auf Anhieb einschätzen, was das macht. Vielleicht jemand von euch?
while(<>){ s/\$cfg(\w+)/\$cfg\[\'$1\'\]/g; print; }
DAS "Skript" macht garnichts. Es gibt nur einen CR aus, sobald die Return-Taste gedrückt wird.
Falsch.
In der while-Bedingung müßte zwischen den spitzen Klammern ein Datei-Handle stehen.
Falsch. while(<>) ist aequivalent zu while(<STDIN>) (genauer s.u.).
Die Schleife würde dann Zeile für Zeile die geöffneten Datei abarbeiten.
Oh!
Der reguläre Ausdruck ist eine Suche mit Ersetzung. Normal würde Zeile für Zeile geprüft, ob sie
1. den Wert der Variablen $cfg enthält, und
Nein. Beachte den \ vor dem $. Das sucht nach dem String "$cfg".
2. ob unmittelbar danach ein Buchstabenteil angehängt ist
ok.
Und genau dieser Buchstabenteil wird ausgeschnitten, um erneut eingefügt zu werden, nun allerdings umschlossen von einer Klammer und Apostrophs.
Ja.
Aus "...CONFIGblablabla..." würde "...CONFIG['blablabla']..." (wenn $cfg den Inhalt "CONFIG" hätte)
Nein. Das macht aus dem String(!) "$cfgfoo" den String(!) "$cfg['foo']". Das ganze dient wohl dazu die $cfg-Variablen eines PHP-Scripts zu konvertieren.
Der ganze Variablenzuweisungskram fehlt aber eh. Dieses Fragment ist eine Nullnummer. Benutzen tut dieses "Ding" - so wie es da steht - mit Sicherheit keiner. Frag mal rund, wer das so hingebastelt hat. ;-)
Du faselst. RTFM: ==== man perlop ==== Binary "=~" binds a scalar expression to a pattern match. Certain operations search or modify the string $_ by default. This operator makes that kind of operation work on some other string. The right argument is a search pat tern, substitution, or transliteration. The left argument is what is supposed to be searched, substituted, or transliterated instead of the default $_ [..] s/PATTERN/REPLACEMENT/egimosx Searches a string for a pattern, and if found, replaces that pattern with the replacement text and returns the number of substitutions made. [..] If no string is specified via the "=~" or "!~" operator, the $_ variable is searched and modi fied. ==== while(<>) { s/foo/fu/; print; } ist also aequivalent zu: while( $_ = <STDIN> ) { $_ =~ s/foo/fu/; print $_; } Ist aequivalent zu: while( my $tmp = <STDIN> ) { $tmp =~ s/foo/fu/; print $tmp; } Bitte halte also doch einfach den Rand, wenn du keine Ahnung von den *Grundlagen* dessen hast, zu dem du deinen Senf abgeben willst. -dnh -- Lies halt mal dclp.*, da faellt dir nix mehr ein. Wenn man ein Guerteltier ueber die Tastatur abrollt, kommt besserer PHP Code raus als da gepostet wird. -- R. Huebenthal
Hallo Tol, hallo Leute, Am Mittwoch, 11. Februar 2004 09:38 schrieb Tol:
Sascha Teifke wrote:
Mein erster Gedanke war, sofort alles "platt" und neu machen! Aber muß das wirklich sein?
Nein, ... solange wirklich nur die index.* Seiten modifziert wurden ...
Hmm .. ich hab mal mit find alle Dateien gesucht, die am fraglichen Tag verändert wurden und da habe ich nur diese index.* Files gefunden. Aber das heisst jetzt bestimmt noch gar nix, oder??
Nicht zwingend - per touch kann man das Dateidatum nach Belieben setzen.
[...]
Ist PHP installiert?
Jup, in der Version 4.2.1
Ist der Safe-Mode aktiviert?
Nein. da gab es ein paar Punkte, die mich den wieder deaktivieren ließen ... weiß jetzt nicht mehr genau, was das war. Upload? MaxUploadSize? UploadPath? Irgendwas in der Richtung glaub ich ...
UploadPath wird eher von OpenBasedir beschränkt, ansonsten prüft der SafeMode z. B., ob der Eigentümer des Scripts zum Eigentümer des Upload-Verzeichnisses passt usw.
Welche Version hat der SSH-Server?
Ähmmm ... wie bekomm ich das raus? In der man-page steht etwas von 25.Sept.'99, aber das glaub ich nicht so recht ...
rpm -q openssh oder einfach ssh -V
Welche anderen Dienste laufen auf dem Rechner? Schonmal einene Portscan auf Deiner Maschine gemacht?
Weißt Du inzwischen, auf welchem Weg der Angriff erfolgte? Das wäre schonmal eine wichtige Info. Falls nicht, checke mal die Logfiles aller laufenden Dienste auf Auffälligkeiten.
21/tcp open ftp
Ist der evtl. löchrig? Irgendwelche "ungewöhnliche" Ansammlung von Logins in den Logfiles? Logins zu ungewöhnlichen Zeiten?
22/tcp open ssh
Auch hier: "Zu viele"/"ungewöhnliche" Logins in den Logfiles?
25/tcp open smtp 80/tcp open http
Auch wenn Du die Apache-Logs schon geprüft hast, frage ich nochmal: Irgendwelche komischen Querystrings oder POST-Einträge? Hast Du PHP-Scripte oder größere PHP-Applikationen laufen, die möglicherweise Sicherheitslücken enthalten?
110/tcp open pop3 113/tcp open auth 3306/tcp open mysql 7070/tcp open realserver 8009/tcp open ajp13 9090/tcp open zeus-admin
Die letzten 3 sagen mir jetzt recht wenig.
Bis auf den 113/Auth kann ich auch alles zuordnen ...
Der ist IMHO auch überflüssig, dürfte aber nicht das Problem sein.
Wäre dies nicht der geeignete Zeitpunkt um ein Update auf eine aktuelle Version zu machen? Sicherlich, wenn dieses 7.1er Release ordenlich gepflegt ist muss es ja nicht sein, dass die Versionen der einzelnen Applikationen "löchrig" sind, aber gerade Apache hat schon einige sicherheitsrelevante Updates erfahren seit 1.3.24 ( http://www.apacheweek.com/features/security-13 ).
Hmmm ... also, der totale Susefreak bin ich leider noch nicht und hab da ein paar Bedenken, dass das alles so glatt läuft. Ich hab zB qmail und vpopmail installiert und ich glaub unter Suse 8.x laufen die schon so ohne weiteres nicht mehr ... Will mir da, wenn es geht, nicht unbedingt selbst n Bein stellen :-/ Aber den Apache mal neu einzubinden wäre vermutlich wirklich n gute Idee - so oder so ;-) Und n neueres PHP kann sicher auch nicht schaden ;-)
Das Problem an der 7.1 ist, dass es seit längerer Zeit keine Updates mehr von SuSE gibt. Vermutlich (IMHO) ist ein Update auf eine aktuelle SuSE einfacher als alle Pakete, die in suse-security-announce genannt werden, selbst zu kompilieren. (David, Du darfst gern widersprechen ;-)
Also, was weiß ich nun alles? - chrootkit findet keine Rootkits - perlscripte sind bis auf eins keine online - die index-dateien sind die einzigen, die zu dieser fraglichen Uhrzeit verändert wurden
Was meinen Verdacht erstmal auf FTP lenkt (oder ein löchriges PHP-Script)
- über rpm hab ich keine Veränderungen feststellen können
Das ist schonmal gut (auch wenn man nie ausschließen kann, dass die RPM-DB gleich mit manipuliert wurde) [...]
Ach! Und noch was! Sollte eigentlich n eigener Thrad werden, aber bin noch nicht dazu gekommen. Vielleicht ist es ja trotzdem auch an dieser Stelle wichtig: Der Rechner schmiert manchmal komplett weg!! Kein Dienst ist dann mehr erreichbar - bis auf den Ping! Der lebt noch! Aber sonst sshd, httpd, mysqld, qmaild, ... alles weg. Da hilft dann nur noch der Anruf im Rechenzentrum und ein Reset per Button.
Hat jemand ne Idee dazu?
Findet sich dazu was in /var/log/messages? Gruß Christian Boltz --
Entwickelt mein Rechner ein Eigenleben? Klar, das machen doch alle Rechner. Kann er das nicht in _seiner_ Freizeit ausleben? [> Helga Fischer und Hans-Alexander Leukert in suse-linux]
participants (6)
-
Christian Boltz
-
David Haller
-
Dirk
-
Dirk Anders
-
Sascha Teifke
-
Tol