Exploit? Perl Prozess SSH env SPAM aus /tmp

Was soll die ganze Bastelei?
Dein System wurde kompromittiert, der Angreifer hatte root-Rechte und auch nach einiger Säuberungsarbeit starten noch Prozesse, die du nicht in der Lage bist loszuwerden.
=> Mach das System platt, bring es auf einen aktuellen Stand und danach führe die von dir in Erwägung gezogenen Maßnahmen durch.
Alles andere könnte vielleicht klappen oder vielleicht nicht oder.....also ich könnte damit nicht ruhig schlafen.
 
Ich würd mal tippen, dass das Perl-Script nicht aus /tmp gestartet wird.

Laut lsof doch. Gestartet und dann sich selber gelöscht, sodass es nur noch im Speicher war.

Im Zuge des Neuaufsetzens wäre es eine Überlegung wert, /tmp auf eine eigene Partition zu schubsen und die mit "noexec" zu mounten.
 
Gute Idee. Von irgendwo aus, muss das Script ja automatisiert kopiert werden. Wäre schon sehr interessant zu wissen woher das kommt.

EDIT: Woher willst du wissen, dass der Prozess in /tmp gestartet worden ist?

Meinst du diese Zeile?
Code:
perl    20255 root  cwd    DIR  0,217   36864 123733739 /tmp
Ohne jetzt zu googeln, würde ich behaupten, dass cwd = current working directory zu bedeuten hat. Ein Prozess kann doch nach dem er gestartet worden ist sein aktuelles Verzeichnis auch wechseln. So kenne ich es zumindest von Python.

Kurzes Beispiel mit python:
Code:
import os
os.chdir('/')
os.getpid()
26319


Code:
server@deadeye:~$ lsof -p 26319
COMMAND   PID   USER   FD   TYPE DEVICE    SIZE      NODE NAME
ipython 26319 server  cwd    DIR   0,92    4096 221250031 /
ipython 26319 server  rtd    DIR   0,92    4096 221250031 /
ipython 26319 server  txt    REG   0,92 2288272 224133964 /usr/bin/python2.6
ipython 26319 server  mem    REG    8,3         224133964 /usr/bin/python2.6 (path dev=0,92)
ipython 26319 server  mem    REG    8,3         221253732 /lib/ld-2.11.2.so (path dev=0,92)
ipython 26319 server  mem    REG    8,3         225247572 /usr/lib/python2.6/lib-dynload/_heapq.so (path dev=0,92)
ipython 26319 server  mem    REG    8,3         225247551 /usr/lib/python2.6/lib-dynload/resource.so (path dev=0,92)
ipython 26319 server  mem    REG    8,3         221253720 /lib/libpthread-2.11.2.so (path dev=0,92)
ipython 26319 server  mem    REG    8,3         221253723 /lib/libdl-2.11.2.so (path dev=0,92)
ipython 26319 server  mem    REG    8,3         221253638 /lib/libutil-2.11.2.so (path dev=0,92)
ipython 26319 server  mem    REG    8,3         224133204 /usr/lib/i686/cmov/libssl.so.0.9.8 (path dev=0,92)
ipython 26319 server  mem    REG    8,3         224133206 /usr/lib/i686/cmov/libcrypto.so.0.9.8 (path dev=0,92)
ipython 26319 server  mem    REG    8,3         224067666 /usr/lib/libz.so.1.2.3.4 (path dev=0,92)
ipython 26319 server  mem    REG    8,3         221253715 /lib/libm-2.11.2.so (path dev=0,92)
ipython 26319 server  mem    REG    8,3         221253731 /lib/libc-2.11.2.so (path dev=0,92)
ipython 26319 server  mem    REG    8,3         224067596 /usr/lib/locale/locale-archive (path dev=0,92)
ipython 26319 server  mem    REG    8,3         225247583 /usr/lib/python2.6/lib-dynload/_curses.so (path dev=0,92)
ipython 26319 server  mem    REG    8,3         225247552 /usr/lib/python2.6/lib-dynload/termios.so (path dev=0,92)
ipython 26319 server  mem    REG    8,3         221253686 /lib/libncursesw.so.5.7 (path dev=0,92)
ipython 26319 server  mem    REG    8,3         225247560 /usr/lib/python2.6/lib-dynload/readline.so (path dev=0,92)
ipython 26319 server  mem    REG    8,3         225247573 /usr/lib/python2.6/lib-dynload/_lsprof.so (path dev=0,92)
ipython 26319 server  mem    REG    8,3         221249592 /lib/libreadline.so.6.1 (path dev=0,92)
ipython 26319 server  mem    REG    8,3         221253656 /lib/libncurses.so.5.7 (path dev=0,92)
ipython 26319 server  mem    REG    8,3         225247588 /usr/lib/python2.6/lib-dynload/_ctypes.so (path dev=0,92)
ipython 26319 server  mem    REG    8,3         224069719 /usr/lib/gconv/gconv-modules.cache (path dev=0,92)
ipython 26319 server  mem    REG    8,3         224069624 /usr/lib/gconv/ISO8859-15.so (path dev=0,92)
ipython 26319 server    0u   CHR  136,5                 7 /dev/pts/5
ipython 26319 server    1u   CHR  136,5                 7 /dev/pts/5
ipython 26319 server    2u   CHR  136,5                 7 /dev/pts/5
server@deadeye:~$

EDIT2:
Ach, deswegen:
Code:
perl    20255 root    3r   REG  0,217   14507 259391556 (deleted) /tmp/
 
Last edited by a moderator:
Ich wette ein virtuelles Bier auf eine PHP-Shell in den Nutzdaten...

noexec auf /tmp hilft, wenn überhaupt, nur wenn das Script direkt ausgeführt wird, aber nicht wenn es dem Interpreter als Parameter übergeben wird, da der Interpreter nicht in /tmp liegt.
 
Vielen Dank für den Hinweis / Aufklärung mit dem /tmp noexec!

Leider übterstützt mein Server keine Loopback-Devices, daher habe ich eine Lösung mit tmpfs realisiert.

Unter Debian musste ich noch eine exec-Erlaubnis für apt-get einrichten. Dies habe ich mit einem Pre-/Post-Kommando eingerichtet.

Ein knockd hat die SSH Logins bis jetzt erfolreich abgewehrt. denyosts und SSH Port-Änderung erhöhen weiterhin die Sicherheit gegen Scanner und Bruteforce-Attacken.

Jetzt werde ich mal abwarten und das System genauestens auf Indizien eines weiteren Einbruchsversuchs beobachten.
 
Ein knockd hat die SSH Logins bis jetzt erfolreich abgewehrt. denyosts und SSH Port-Änderung erhöhen weiterhin die Sicherheit gegen Scanner und Bruteforce-Attacken.

SSHd ist auch so nahezu unknackbar(der Dienst an sich), selbiges gilt für gute Passwörter (auch wenn root-login erlaubt ist) und Login via public-key.

Du solltest mehr Energie in die "eigentlichen" Dienst, vor allem den HTTPd stecken.
 
Back
Top