kill -9 pid ; Prozess wird nicht beendet ? Binary des exloits gestartet im shared memory?

14/10/2009 - 11:50 von sylvio runge | Report spam
Hallo

Ich hatte vor einigen Tagen mit einem "gehackten" ~1J alten entoo-server
(eines Bekannten der um Hilfe bittete) zu tun. Gut klar der Angreifer
war über ein zu altes phpmyadmin reingekommen und dort hat der einen
loader (perl) runter geladen und dann sein backdoor als www-data
"nachgeladen/gestartet".

Allerdings: warum kann man als root nicht die backdoor-pid mit "kill
-9.." beenden? Bisher bin ich immer davon ausgegangen dass der Kernel in
jedem Fall diese PID dann "killt". Der Prozess im speziellen stoerte
das in keinster weise ;)

Im proc-Filesystem der backdoor-prozesses war dann so was zu sehen:
lrwxrwxrwx 1 81 81 37 10. Okt 09:11 cwd ->
/dev/shm/wunderbar_emporium (deleted)

lrwxrwxrwx 1 81 81 45 10. Okt 09:11 exe ->
/dev/shm/wunderbar_emporium/exploit (deleted)


Prozess wurde aus dem shared-memory gestartet; wie ist denn das
möglich ;) ? Per "ipcs" hat er uebrigens nichts angezeigt (*)...


# ls -al /proc/$pid/fd
insgesamt 8
dr-x 2 81 81 4096 10. Okt 09:11 .
dr-x 7 81 81 4096 10. Okt 06:55 ..
lrwxrwxrwx 1 81 81 16 10. Okt 09:12 0 -> socket:[8558243]
lrwxrwxrwx 1 81 81 16 10. Okt 09:12 1 -> socket:[8558243]
lrwxrwxrwx 1 81 81 32 10. Okt 09:12 10 -> /var/log/apache2/ssl_request_log
lrwxrwxrwx 1 81 81 28 10. Okt 09:12 11 -> /var/run/ssl_mutex (deleted)
lrwxrwxrwx 1 81 81 14 10. Okt 09:12 12 -> pipe:[6145355]
lrwxrwxrwx 1 81 81 14 10. Okt 09:12 13 -> pipe:[6145355]
lrwxrwxrwx 1 81 81 14 10. Okt 09:12 14 -> pipe:[6145356]
lrwxrwxrwx 1 81 81 14 10. Okt 09:12 15 -> pipe:[6145356]
lrwxrwxrwx 1 81 81 22 10. Okt 09:12 16 -> anon_inode:[eventpoll]
lrwxrwxrwx 1 81 81 16 10. Okt 09:12 17 -> socket:[8557546]
lrwxrwxrwx 1 81 81 30 10. Okt 09:12 18 -> /tmp/sendfile.HZylrd (deleted)
lrwxrwxrwx 1 81 81 16 10. Okt 09:12 19 -> socket:[8561324]
lrwxrwxrwx 1 81 81 16 10. Okt 09:12 2 -> socket:[8558243]
lrwxrwxrwx 1 81 81 15 10. Okt 09:12 3 -> socket:[270377]
lrwxrwxrwx 1 81 81 15 10. Okt 09:12 4 -> socket:[270379]
lrwxrwxrwx 1 81 81 14 10. Okt 09:12 5 -> pipe:[6145322]
lrwxrwxrwx 1 81 81 14 10. Okt 09:12 6 -> pipe:[6145322]
lrwxrwxrwx 1 81 81 30 10. Okt 09:12 7 -> /var/log/apache2/ssl_error_log
lrwxrwxrwx 1 81 81 27 10. Okt 09:12 8 -> /var/log/apache2/access_log
lrwxrwxrwx 1 81 81 31 10. Okt 09:12 9 -> /var/log/apache2/ssl_access_log




S.




(*) nein; das waren keine modifizierten ps/ls.. tools; hatte ich
geprüft; auch war der angreifer nur www-data ...



Ich finde gerad unter den Namne in Web was dazu:
local exloit for:
- Linux 2.4, from 2.4.4 up to and including 2.4.37.4
- Linux 2.6, from 2.6.0 up to and including 2.6.30.4

Na prima...
 

Lesen sie die antworten

#1 Jan Kandziora
14/10/2009 - 12:44 | Warnen spam
sylvio runge schrieb:

Allerdings: warum kann man als root nicht die backdoor-pid mit "kill
-9.." beenden? Bisher bin ich immer davon ausgegangen dass der Kernel in
jedem Fall diese PID dann "killt". Der Prozess im speziellen stoerte
das in keinster weise ;)



kill -9 kann kein nicht-root-Prozess ignorieren. Allerdings bleibt evtl.
ein "Scheintoter" oder eine "Leiche" zurück, wenn

* der Prozess im Kernel-Mode festhàngt, z.B. weil eine IO-Operation klemmt
(Plattenfehler z.B.).
* der *aufrufende Prozess* noch nicht per "wait()" oder waitpid() auf dessen
Exit-Status wartet. Meist hàngt es damit zusammen, dass der aufrufende
Prozess in irgendeinem Bug oder im Kernel-Mode festhàngt.


Im proc-Filesystem der backdoor-prozesses war dann so was zu sehen:
lrwxrwxrwx 1 81 81 37 10. Okt 09:11 cwd ->
/dev/shm/wunderbar_emporium (deleted)

lrwxrwxrwx 1 81 81 45 10. Okt 09:11 exe ->
/dev/shm/wunderbar_emporium/exploit (deleted)



Du hast die entsprechenden Dateien gelöscht, der Prozess, der sie ausführt
ist aber noch da. Daher bleiben die entsprechenden Codeteile geladen.



Prozess wurde aus dem shared-memory gestartet; wie ist denn das
möglich ;) ?



/dev/shm ist nicht mit "noexec"-Flag gemountet. Warum eigentlich nicht?


Per "ipcs" hat er uebrigens nichts angezeigt (*)...



Das hat ja auch nichts damit zu tun.



Ich finde gerad unter den Namne in Web was dazu:
local exloit for:
- Linux 2.4, from 2.4.4 up to and including 2.4.37.4
- Linux 2.6, from 2.6.0 up to and including 2.6.30.4

Na prima...



Jau. Das heißt, System neu aufsetzen... Und in Zukunft enger konfigurieren
und noch fleißiger updaten.

Mit freundlichem Gruß

Jan

Ähnliche fragen