Bonjour à tous,

        Je reviens au sujet de ma machine vérolée. J'ai un peu avancé sur le
sujet. J'ai trouvé la porte d'entrée et corrigé.

        Le processus hwm est un mineur de bitcoin. Celui-ci a été éradiqué et
ne revient plus m'embêter.

        À intervalle régulier (ce matin à 08h50 par exemple), j'ai deux
processus qui déboulent :

30269 www-data  20   0   10816   7088   3336 S   0,0   0,0   0:00.65
/usr/local/apache/bin/httpd -DSSL
30275 www-data  20   0   10820   6660   2936 S   0,0   0,0   0:00.12
/usr/local/apache/bin/httpd -DSSL

        Petit problème :
# ls -l /usr/local/apache/bin/httpd
ls: impossible d'accéder à '/usr/local/apache/bin/httpd': Aucun fichier
ou dossier de ce type

        Un strace m'indique que le premier est un client, le second un serveur.
Aucune idée de ce qu'ils font réellement, ça ne passe pas le firewall :

connect(3, {sa_family=AF_INET, sin_port=htons(80),
sin_addr=inet_addr("18.216.210.232")}, 16) = 0
getsockname(3, {sa_family=AF_INET, sin_port=htons(48478),
sin_addr=inet_addr("192.168.15.18")}, [128 => 16]) = 0
write(3, "NICK xxx1851\n", 13)          = 13
getsockname(3, {sa_family=AF_INET, sin_port=htons(48478),
sin_addr=inet_addr("192.168.15.18")}, [128 => 16]) = 0
write(3, "USER xxx2113 192.168.15.18 18.21"..., 51) = 51
clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=2, tv_nsec=0},
0x7fff7e181650) = 0
pselect6(8, [3], NULL, NULL, {tv_sec=0, tv_nsec=600000000}, NULL) = 1
(in [3], left {tv_sec=0, tv_nsec=599995615})
read(3, "\r\n\r\nDisconnected\r\n", 4096) = 18
pselect6(8, [3], NULL, NULL, {tv_sec=0, tv_nsec=600000000}, NULL) = 1
(in [3], left {tv_sec=0, tv_nsec=599996008})
read(3, "", 4096)                       = 0
close(3)                                = 0
socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_TCP) = 3
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
ioctl(3, TCGETS, 0x7fff7e181460)        = -1 ENOTTY (Ioctl() inapproprié
pour un périphérique)
lseek(3, 0, SEEK_CUR)                   = -1 ESPIPE (Repérage non permis)
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
ioctl(3, TCGETS, 0x7fff7e181460)        = -1 ENOTTY (Ioctl() inapproprié
pour un périphérique)
lseek(3, 0, SEEK_CUR)                   = -1 ESPIPE (Repérage non permis)
connect(3, {sa_family=AF_INET, sin_port=htons(80),
sin_addr=inet_addr("18.216.210.232")}, 16) = -1 ETIMEDOUT (Connexion
terminée par expiration du délai d'attente)
close(3)                                = 0
socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_TCP) = 3
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
ioctl(3, TCGETS, 0x7fff7e181460)        = -1 ENOTTY (Ioctl() inapproprié
pour un périphérique)
lseek(3, 0, SEEK_CUR)                   = -1 ESPIPE (Repérage non permis)
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
ioctl(3, TCGETS, 0x7fff7e181460)        = -1 ENOTTY (Ioctl() inapproprié
pour un périphérique)
lseek(3, 0, SEEK_CUR)                   = -1 ESPIPE (Repérage non permis)

        Vu ce que je trouve dans le répertoire cwd de l'un des processus
(/tmp/.wwwodsfidsfe) :

# ls -alR
.:
total 8084
drwxrwxrwx  3 www-data www-data    4096 23 juin  08:50 .
drwxrwxrwt 10 root     root       36864 23 juin  09:56 ..
drwxr-xr-x  2 www-data www-data    4096 23 juin  09:56 fs
-rw-rw-rw-  1 www-data www-data 8218683 23 juin  08:49 gg.tgz

./fs:
total 14928
drwxr-xr-x 2 www-data www-data    4096 23 juin  09:56 .
drwxrwxrwx 3 www-data www-data    4096 23 juin  08:50 ..
-rw-r--r-- 1 www-data www-data   24565  4 août   2022 1.html
-rw-r--r-- 1 www-data www-data 3014144 23 juin  08:50 abe
-rw-rw-rw- 1 www-data www-data      26 23 juin  09:56 bb
-rw-r--r-- 1 www-data www-data      34  3 août   2022 d
-rw-r--r-- 1 www-data www-data   26098 22 juin  09:10 da.html
-rw-rw-rw- 1 www-data www-data   33699 23 juin  09:55 di.html
-rw-r--r-- 1 www-data www-data 9235803 17 févr.  2022 git
-rw-rw-rw- 1 www-data www-data      29 23 juin  09:35 has
-rw-r--r-- 1 www-data www-data   43777  3 août   2022 me
-rw-r--r-- 1 www-data www-data  246233 14 juil.  2022 ok
-rw-r--r-- 1 www-data www-data 2598092  3 août   2022 ola

le truc en question doit être un genre de serveur de mails qui envoie du
pishing à la terre entière. Ces deux processus sont lancés par un script
sh qui reste dans l'état de zombie très longtemps. Le parent est init
(tant qu'à faire). Je n'arrive pas à trouver par quoi ce truc est lancé
périodiquement. Sans doute un processus avec les droits www-data.

        Sur cette machine, les seules choses tournant avec les droits www-data
sont :
- un serveur apache2 (debian/testing)
- php 8.2 (et 7.4 pour un blog b2 evolution)
- trois sites SPIP (4.1.10 à jour, y compris les plugins)

        Je n'ai rien trouvé dans le cron, rien dans les tâches planifiées des
sites en question, rien dans les logs. Je ne sais plus où chercher.

        Si je tue ces deux processus, au bout d'un certain temps, ils 
reviennent.

        Ma question est donc assez simple ;-) Comment trouver par quoi sont
lancés ces deux processus ?

        Bien cordialement,

        JB

Répondre à