Je me suis fait pirater mon serveur sous Linux ...
Cela faisait 2 ans et demi qu'il tournait sans aucun souci et je viens de me faire hacker hier soir par des Roumains.
Voici toutes les explications sur leur attaque et de la façon dont j'ai la détecter.
Comment tout à commencé ...
J'ai tout d'abord analysé les ports ouverts de ma machine :
# netstat -pa
J'ai remarqué qu'il y avait des processus qui se connectaient à Undernet, un réseau IRC.
J'ai donc vérifié mon hypothèse :
# tcpdump -X -i eth0 dest port ircd
En analysant les trames sniffées, j'en ai conclu qu'il s'agissait bien de trames IRC, je recevais en effet des "IRC PING" de Undernet.
En réalisant un :
#ps -eaf | grep 2290
2290 étant le port que j'ai noté lors de ma dernière commande, j'ai relevé un processus anormal qui tourne sous le nom de ''xinetd'' avec les droits de ''apache''. Chose qui ne devrait jamais arriver sur un système ....
Je me suis donc précipité dans mon répertoire ''/proc/2290'' pour analyser le processus qui était en train de tourner, et voici ce que j'ai découvert :
En analysant le fichier d'environnement associé au processus, j'y ai découvert la cause du problème :
REQUEST_URI=//cgi-bin/awstats/awstats.pl?configdir=%7cecho%20%3becho%20b_exp%3bcd%20%2ftmp%2f%2e%7e%3bexport%20PATH%3d%3bxinetd%3becho%20e_exp%3b%2500
Louche la requête n'est-ce pas ? Cela me semble tout simplement l'utilisation d'un trou de sécurité de AWSTAT ...
En plus de cette variable, voici une variable intéressante :
REMOTE_ADDR=83.16.79.166
L'IP de l'attaquant
Il s'agit de l'adresse de la machine qui a piraté mon serveur. Je me suis donc amusé à scanner la machine cible :
# nmap -O 83.16.79.166
Et j'y ai découvert des choses intéressantes :
Interesting ports on adb166.internetdsl.tpnet.pl (83.16.79.166):
(The 1646 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
80/tcp open http
443/tcp open https
465/tcp open smtps
587/tcp open submission
993/tcp open imaps
995/tcp open pop3s
10000/tcp open snet-sensor-mgmt
Tout d'abord la machine est une machine polonaise qui est connectée à de l'ADSL, chez le FAI TPNet, l'équivalant de notre Wanadoo local ...
Ensuite cette machine semble avoir beaucoup de ports ouverts .... Je reconnais qu'il s'agit que des ports des principaux services : pop,smtp, ftp,ssh ..
Le "-O" du nmap m'a permis de savoir qu'il s'agit en fait d'une machine i686 sous Linux :
SInfo(V=3.45%P=i686-pc-linux-gnu%D=11/21%Time=43824F70%O=21%C=1)
Qui est cette personne ?
Deux hypothèses viennent à mon esprit, soit cette machine correspond à la personne qui a piraté mon serveur, soit c'est un relais qui a été utilisé à l'insu de son propriétaire. Pour vérifier ces hypothèses, je décide de collecter plus d'informations sur cette machine :
pundit root # telnet 83.16.79.166 25
Trying 83.16.79.166...
Connected to 83.16.79.166.
Escape character is '^]'.
220 www.sp342.waw.pl ESMTP Sendmail 8.13.4/8.13.3; Tue, 22 Nov 2005 01:02:57 GMT
Son serveur de mail est paramétré pour relayer le courrier de "www.sp342.waw.pl" .... Pas vraiment informatif ...
# dig @83.16.79.166
Son serveur DNS ne semble pas contenir de domaine propre
http://83.16.79.166
Un beau logo "Under Construction"
Étrange !
Je continue donc mes recherches là où j'en étais tout à l'heure, c'est-à-dire dans le répertoire "/proc/2290"
Et la je vois un beau lien "cwd" pointant vers mon répertoire /tmp/
Un beau petit fichier boti.tar.gz ... Cela me rappelle quelque chose tout cela, il ne s'agirait pas du bot IRC ?
En fouillant un peu, je découvre le répertoire où celui-ci a été installé : ''/tmp/.~''
Un petit "ls" et la je découvre l'arme du crime ;-) un bot irc au doux nom de "checkmech", je sauvegarde toutes les données associées au Bot dans un répertoire sur et je kill le processus 2290 pour que le bot se déconnecte de l'IRC :
# kill -9 2290
Je revérifie que le bot est bien mort en réalisant un :
# netstat -na
Le bot du pirate
Et là je découvre que tout est fermé, je peux donc continuer mon investigation, le bot est bien mort ...
Je jette un oeil dans le fichier de configuration du bot "mech.set" et je découvre tous les paramètres du bot de mon pirate.
SERVER 195.204.1.132
SERVER 66.198.80.67
SERVER 193.110.95.1
SERVER 195.54.102.4
SERVER 217.106.2.92
SERVER 205.252.46.98
SERVER 66.28.140.14
SERVER 194.134.7.194
SERVER 132.207.4.32
ENTITY x
PASS mafia
PORT 31337
###BOT 1###
NICK isp1
USERFILE 1.user
CMDCHAR -
LOGIN marcela
IRCNAME Deschide Gura SC#-ti Predau LegC#tura
MODES +i-ws
HASONOTICE
TOG CC 1
TOG CLOAK 1
TOG SPY 1
SET OPMODES 6
SET BANMODES 6
CHANNEL #akka
TOG PUB 1
TOG MASS 1
TOG SHIT 1
TOG PROT 1
TOG ENFM 0
SET MKL 7
SET MBL 7
SET MPL 1
...... etc ....
Les bots utilisés portent donc le nom de ispn ou n s'incrémente de 1 en 1.
Un petit coup d’œil dans le fichier "mech.session" :
tog SPY 1
channel #sellers
tog AOP 1
channel #ISP
tog AOP 1
channel #Sh3ll
tog AOP 1
channel #kr
tog AOP 1
channel #B:
tog AOP 1
L'identité des pirates
Les bots ont donc été utilisés pour squatter ces channels IRC ....
Je me rends donc dans ces channels, et je me fais jeter des 3 premiers qui sont protégés par des mots de passe.
Je continue ma route ... .... J’hallucine .. Pleins de bots ...
Bon mon investigation s'arrête ici, cela ne sert à rien d'aller plus loin dans mes recherches ....
Juste la conclusion de l'article, si vous utilisez AWSTATS, désinstallez-le de suite !!
Voici les identités des pirates :
handle dani
mask *!*@danylo.users.undernet.org
et
handle gang
mask *!*@Romania.users.undernet.org
Je vais réinstaller Snort sur ma machine :-)