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 ?

Christophe Avonture - 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

video 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!®

Joomla root

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!®

Joomla admin

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!®

Joomla cache

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!®

Joomla components

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!®

Joomla images

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!®

Joomla languages

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!®

Joomla logs

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!®

Joomla media

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!®

Joomla modules

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!®

Joomla plugins

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!®

Joomla templates

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!®

Joomla tmp

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 ?

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

Keep safe

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

x-httpd

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

gif-php

Une image jpg... Ben non

jpg-ssh

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!®

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

Faux fichier robots.txt

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

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

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

Code inséré dans des fichiers natifs

puzzle
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

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

move_uploaded_file

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

Keskildit ?

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

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

 

Sucuri Sitecheck

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

Google SERP

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. Pour cela, faites une recherche `* site:votre-site.fr`

Google - Voir ce que vois Google

Pour voir votre site comme Google et donc déceler d'éventuels ajouts fait par un pirate (comme du Black Hat SEO), utilisez le lien suivant : https://www.google.com/webmasters/tools/googlebot-fetch (remarque : il faut avoir un compte Google Search Console)

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

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.

Google - Hameçonnage

Si votre site était marqué par Google comme faisant du phising (hameçonnage), une fois nettoyé vous pourrez demander une demande de réexamen sur https://safebrowsing.google.com/safebrowsing/report_error/?hl=fr.

Google - Contrôle d'un de ses sites

Si vous avez un compte Google Search Console (anciennement Webmaster Tools), vous pouvez obtenir les éventuels avertisssements de sécurité émis par Google. Plus d'info : https://www.google.com/webmasters/tools/security-issues.

Chrome

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

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

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

clean
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)