Est-ce que mon site a été hacké ? Est-il propre ? Comment m’en assurer ?

v1 30/04/2016

Christophe Avonture / fanpage / @aesecure

Raccourcis clavier

Prochain slide Touche d'espacement
Se déplacer , , et
Plein écran F
Commentaires S
Voir les vignettes Esc

Vous pouvez aussi utiliser la roulette de votre souris pour afficher le prochain slide.

Qui suis-je ?

Objectifs de cette présentation

  • Apprendre à identifier rapidement quelques signaux qui vont trahir la présence de virus / hack sur son site Joomla!®
  • Utilisation d’outils gratuits comme aeSecure QuickScan, Sucuri Sitecheck, WinMerge/Meld et bien sûr … Google pour la partie détection.

Aller plus loin...

Remarques

Les trucs et astuces mentionnés dans cette présentation n’ont pas pour vocation d’être exhaustifs mais bien d’aider à répondre à la question : y a-t-il des virus sur mon site ?

Télécharger cette présentation

Cette présentation est téléchargeable pour lecture en mode offline et/ou afin d'en simplifier son impression : format pdf

Vidéo en ligne

https://vimeo.com/164907381

Identifiez la menace

Identifiez la menace

Defacement

Defacement

Ransomware

Ransomware

Pharma-hack

Pharma-hack

Vous avez été averti par / Vous avez constaté …

  • Vous avez reçu un email de votre hébergeur, d’un autre hébergeur qui détecte du spam envoyé depuis votre site, de Google,
  • Les statistiques Google montrent des résultats surprenant comme des pics d’activités ou des URLs qui en principe n’existent pas (avec des pages en Chinois p.ex.), ou encore des pertes de trafic importante et à priori inexplicables,
  • Votre site est redirigé vers un autre site quand vous vous y connectez depuis un smartphone, …
  • L’onglet réseau de votre navigateur montre des connections vers des sites tiers que vous ne connaissez pas,
  • Votre navigateur demande à autoriser le téléchargement d’un fichier qui vous est inconnu,
  • En surfant sur votre site, vous constatez l’affichage d’informations qui ne devraient pas s’y trouver (messages d’erreur, portion de texte dont vous n’êtes pas l’auteur, liens vers des sites tiers, …),
  • ...

Joomla!®, installation native

Les prochains slides se basent sur une installation native de Joomla!®.

Les fichiers marqués sur fond :

  • vert sont les fichiers à priori légitimes,
  • jaune ceux qui nécessitent un traitement particulier et
  • rouge ceux qui peuvent être supprimés.

Dossier racine de Joomla!®

Légitime : configuration.php, index.php et robots.txt
(sous Joomla 1.5, vous aviez aussi index2.php et index3.php)

Particulier : htaccess.txt que vous pouvez renommer en .htaccess si vous activez la réécriture des URLs.

Peuvent être supprimé car inutiles : CONTRIBUTING.md, htaccess.txt, LICENSE.txt, joomla.xml, README.txt, robots.txt.dist, web.config.txt peuvent être supprimés sans problème.

Danger - Fichiers php
Si vous avez d’autres fichiers php, éditez-les et regardez leur contenu. A priori, ces fichiers ne devraient pas se trouver là. Ils sont donc suspects => à éditer afin d’en évaluer le caractère dangereux.

À analyser
Si vous avez un fichier .htaccess ou php.ini, jetez-y un coup d’oeil.

Vous pourriez avoir quantité d’autres fichiers comme les fichiers de propriétés Google, Bing, ..., à analyser au cas par cas.

Dossier administrator de Joomla!®

Légitime : uniquement index.php et seulement ce fichier.

Particulier : .htaccess et .htpasswd pourraient être présent si vous avez protégé votre administration (à éditer pour analyse).

Danger - Fichiers php
Si vous avez d’autres fichiers php, éditez-les et regardez leur contenu. À priori, ces fichiers ne devraient pas se trouver là. Ils sont donc très fortement suspects.

Dossier cache de Joomla!®

Légitime : uniquement index.html.

Particulier : .htaccess pourrait être présent si vous avez protégé ce dossier (à éditer toutefois pour analyse).

Les autres fichiers, tous les autres fichiers, peuvent être supprimés sans autre forme de procès.

À priori aucun fichier php ne devrait s’y trouver. Si c’est le cas, probabilité d’un virus.

Dossier components de Joomla!®

Légitime : uniquement index.html.

Particulier : .htaccess pourrait être présent si vous avez protégé ce dossier (à éditer toutefois pour analyse).

Danger – Fichiers php
Aucun autre fichier n’est attendu dans ce dossier et certainement pas des scripts .php

Dossier images de Joomla!®

Légitime : uniquement index.html.

Particulier : .htaccess pourrait être présent si vous avez protégé ce dossier (à éditer toutefois pour analyse).

À priori, peuvent être supprimés car inutiles : les dossiers banners, headers et sampledata et les images joomla_black.png et powered_by.png.

Danger – Fichiers php
Aucun fichier .php n’est attendu dans le dossier /images et sous-dossiers. La probabilité de trouver des virus dans /images (et sous-dossiers) est très forte si le site a été hacké.

Dossier language de Joomla!®

Légitime : uniquement index.html.

Particulier : .htaccess pourrait être présent si vous avez protégé ce dossier (à éditer toutefois pour analyse).

Remarque : il y a un fichier .php dans chaque dossier langue. Le script se nomme fr-FR.localise.php (où fr-FR est le code ISO de la langue).

Danger – Fichiers php
Si vous trouvez d’autres fichiers .php, ils sont suspects.

Dossier logs de Joomla!®

Légitime : uniquement index.html.

Particulier : .htaccess pourrait être présent si vous avez protégé ce dossier (à éditer toutefois pour analyse).

Les autres fichiers, tous les autres fichiers, peuvent être supprimés sans autre forme de procès.

Dossier media de Joomla!®

Légitime : uniquement index.html.

Particulier : .htaccess pourrait être présent si vous avez protégé ce dossier (à éditer toutefois pour analyse).

Remarque : les medias devraient en principe être utilisés pour y stocker des images, des fichiers css/less, des scripts js mais logiquement aucun scripts .php. Les scripts .php dans media sont toutefois possible et quelques extensions en utilisent. Il faut donc être vigilant lors d’une operation de nettoyage.

Note : si vous trouvez des fichiers .php à la racine du dossier media, ces fichiers sont donc suspect.

Dossier modules de Joomla!®

Légitime : uniquement index.html.

Particulier : .htaccess pourrait être présent si vous avez protégé ce dossier (à éditer toutefois pour analyse).

Danger – Fichiers php
Aucun autre fichier n’est attendu dans ce dossier. Si vous avez un fichier .php à la racine du dossier modules, ce script-là est fortement suspect.

Dossier plugins de Joomla!®

Légitime : uniquement index.html.

Particulier : .htaccess pourrait être présent si vous avez protégé ce dossier (à éditer toutefois pour analyse).

Danger – Fichiers php
Aucun autre fichier n’est attendu dans ce dossier. Si vous avez un fichier .php à la racine du dossier plugins, ce script-là est fortement suspect.

Dossier templates de Joomla!®

Légitime : uniquement index.html.

Particulier : .htaccess pourrait être présent si vous avez protégé ce dossier (à éditer toutefois pour analyse).

Danger – Fichiers php
Aucun autre fichier n’est attendu dans ce dossier. Si vous avez un fichier .php à la racine du dossier templates, ce script-là est fortement suspect.

Le hack des fichiers index.php se trouvant dans les dossiers templates est un classique du genre. Ces fichiers sont à surveiller de très près.

Dossier tmp de Joomla!®

Légitime : uniquement index.html.

Particulier : .htaccess pourrait être présent si vous avez protégé ce dossier (à éditer toutefois pour analyse).

Les autres fichiers, tous les autres fichiers, peuvent être supprimés sans autre forme de procès.

Surveillez

Se fier aux dates ?

En php, l’instruction touch() permet de réinitialiser la date de dernière modification.
Si j’étais un pirate, mon virus détecterait d’abord la date courante du fichier pour injecter mon virus et rétablir cette date quand l’injection a été faite.
Toutefois, avoir dans un dossier de nombreux fichiers avec une même date et un intrus, oui, il est utile d’aller voir ce que contient l’intrus.

Fichiers à surveiller

Les fichiers ci-dessous sont assez régulièrement hackés :

  • /administrator/includes/defines.php
  • /includes/defines.php
  • /templates/…/index.php (ceci pour tous les templates)

Exemples de hack

SetHandler application/x-httpd-php

Lorsque vous avez un fichier .htaccess dans un dossier, quel que soit le dossier, il est utile de l’éditer pour prendre connaissance de son contenu. Un tel fichier peut p.ex. rendre exécutable … une image.


            <FilesMatch "bananas_1.jpg">
            SetHandler application/x-httpd-php
            </FilesMatch>
                  

Ces trois lignes vont indiquer à Apache que le fichier bananas_1.jpg, malgré son extension, doit être considéré comme un script php : le pirate pourra donc accéder à http://votresite/.../bananas_1.jpg afin de lancer le script.

Un fichier .htaccess où vous trouvez un SetHandler application/x-httpd-php est donc suspect.

SetHandler application/x-httpd-php

Un script caché derrière une ... GIF

Une image jpg... Ben non

Si vous êtes attentif, vous verriez un second virus...

XYplorer, voir les images

XYplorer (http://www.xyplorer.com/), un fabuleux gestionnaire de fichiers pour Windows
XYplorer, un fabuleux gestionnaire de fichiers pour Windows permettant d'afficher toutes les images du site en trois clics seulement

Un faux plugin Joomla!®

Déclaration d’une classe bidon dont le constructeur va récupérer un cookie initialisé par le pirate.

Faux fichier robots.txt

Le fichier robots.txt est présumé se trouver dans le dossier racine. Si vous le trouvez dans un autre dossier, c’est un bon candidat à "allons voir ce qu’il contient".

Une fausse page 404

Fichier qui pourrait se nommer 404.php à la racine du site ou dans un dossier /templates dont le but est de vous tromper quant à son contenu.

Code inséré dans des fichiers natifs

Injection de code dans le fichier \libraries\joomla\application\module\helper.php

Code inséré dans des fichiers natifs

Le code de l’attaque se cache au milieu des commentaires et de code propre mais inutile dont le seul but est de faire croire à un fichier inoffensif.

Attention aux <<< - Syntaxe Heredoc

Le pirate a camouflé son code dans du code qui semble être propre

move_uploaded_file

En l’occurrence, un formulaire d’upload planqué dans un dossier "à priori" sain et avec un nom passe-partout (library.php)

Keskildit ?

Là, clairement, à moins de parler le Vénusien méridional, le programmeur a vraiment tenté de vous cacher ses intentions

aeSecure QuickScan

  • Scanner php universel gratuit qui permet de détecter rapidement des fichiers suspects sur son site et de vous permettre de les supprimer.
  • Concept de liste blanche et de liste noire pour optimiser le scan.
  • 22 CMS supportés nativement.
  • Disponible en Français, Néerlandais et Anglais.

aeSecure QuickScan

https://www.aesecure.com/fr/blog/aesecure-quickscan.html

 

Sucuri Sitecheck

https://sitecheck.sucuri.net/
Scanne l’URL soumise et quelques fichiers prédéfinis comme p.ex. le script de jQuery.

Google SERP

http://www.google.fr
De temps à autre, lancer une recherche Google sur votre propre site et vérifiez l’absence des notifications ci-dessus.
Testez votre site avec p.ex. https://www.xml-sitemaps.com/se-bot-simulator.html afin de voir votre page "comme" Google.

Google Safebrowsing

https://www.google.com/transparencyreport/safebrowsing/diagnostic/?hl=fr
Safe Browsing est une base de données de Google permettant de vérifier s'il pense que votre site est suspect.

Google Black Hat SEO

Vérifiez régulièrement les URLs référencées par Google afin de détecter les liens vers du contenu n’étant pas le vôtre.

Chrome

https://www.google.com/transparencyreport/safebrowsing/?hl=fr
Chrome utilise l’API de Google Safe Browsing pour détecter la réputation du site : sain ou pas. Dans le cas contraire, c’est le RSOD (Red Screen Of Death).

Chrome Download

https://www.google.fr/chrome/browser/privacy/whitepaper.html
Chrome averti également de manière explicite si un logiciel en cours de téléchargement est réputé dangereux.

WinMerge - MeldMerge

  • Ces outils permettent de comparer des fichiers et/ou des dossiers : à gauche une installation saine de Joomla!® et à droite votre site web.
  • La comparaison permettra de mettre en évidence les fichiers ayant été ajoutés, supprimés ou altérés.

http://winmerge.org - http://meldmerge.org/

WinMerge - MeldMerge

  1. il s’agit d’un fichier ayant été ajouté, ne se trouvant pas dans la distribution de Joomla!®
  2. ce fichier a été altéré, il ne correspond pas à celui, natif, de Joomla.

XYplorer

Gestionnaire de fichiers pour Windows apportant quantité d’améliorations comme p.ex. une vue à plat, une seconde fenêtre de visualisation des fichiers (contenu ou rendu), de puissants filtres, critères de sélection, une coloration des fichiers, une recherche, …

Un Must have !

XYplorer

XYplorer
http://www.xyplorer.com/

Supprimer la menace

XYplorer
coyote

Backups

Avant toute action de votre part; prenez une sauvegarde de votre site en l’état, même s’il est hacké.

Si, par inadvertence, vous supprimez un fichier nécessaire au fonctionnement du site, si vous n’avez pas une sauvegarde, vous serez comme coyote… oups!.

Joomla!® 3.6

Depuis sa version 3.6, Joomla!® propose maintenant de réinstaller les fichiers du core, si vous n'avez pas apporté de modifications dans les fichiers natifs, vous supprimerez déjà quantité de virus en réinstallant les fichiers du CMS.

Cette option est proposée dans l'écran Composants - Mise à jour de Joomla!

Restaurer une archive saine

Si vous avez adopté les bonnes pratiques qui sont de prendre des sauvegardes régulières de votre site, récupérer une version ayant été faite avant le hack et restaurez cette version.

Attention : si le hack a pu réussir, c’est que votre site était failible => mettez-le à jour et protégez-le. Ne vous arrêtez pas après l’avoir restauré.

Restaurer le site => le mettre à jour => le protéger

Travaillez sur une version locale

Même si votre site de production est hacké, il est préférable de travailler en local : prenez un backup de votre site et restaurez-le sur votre ordinateur.

Vous aurez moins de stress et, de fait, vous aurez toujours un backup des fichiers au cas où…

Les outils dont vous allez avoir besoin

  • Un éditeur de texte style Notepad++ càd permettant de sauver en UTF-8 NoBom
  • WinMerge ou MeldMerge pour les comparaisons de fichiers
  • Idéalement un excellent gestionnaire de fichiers permettant des recherches, d’avoir une vue « à plat », ... Personnellement, j’utilise XYplorer, pour Windows.

Et surtout, vos yeux, votre maîtrise de Joomla!® et votre bon sens.

N’exécutez pas un virus

Lorsque vous aurez détecté un fichier suspect sur votre serveur, n’y accédez surtout pas depuis une URL (ne surfez pas vers http://localhost/le-fichier-suspect.php) mais éditez le fichier pour en lire son contenu (depuis son client FTP pour un site distant).

Accéder à un fichier par URL revient à l’exécuter

Besoin d'aide ?

Si vous avez besoin de l'aide d'un professionnel, n'hésitez pas à prendre contact avec moi, j'ai développé un scanner "DeepScan" permettant de nettoyer votre site web.

https://www.aesecure.com/fr/telechargement.html

Protéger son site Joomla!®

Je vous invite à consulter le document “La sécurité et Joomla!®” pour apprendre à sécuriser votre site web afin de ne plus être victime de pirate :

https://www.aesecure.com/fr/blog/joomla-securite.html

Merci pour votre attention!

logo aeSecure
Slideshow: Reveal.js (@hakimel)