Alerte infection WordPress : ELF Malware (LD_PRELOAD, libworker.so)

Cet article est inspiré par ce ReTweet :

 

Edit : Et pas seulement WordPress !!

  Revoici le Panda, défenseur des serveurs en détresse et #infosec fan, pour vous parler d’une infection sévissant sur des environnements WordPress depuis fin mars 2014 minimum. Au sommaire :

1. Comment fonctionne le malware 2. La liste des sites WordPress compromis 3. Comment détecter l’infection ? 4. Comment stopper l’infection ? 5. LD_PRELOAD : un hook connu

1. Comment fonctionne le malware

Voir un exemple des sites infectés via Google Il agit en compromettant des sites utilisant WordPress et les infecte via un malware agissant côté serveur. Ce malware combine notamment :

    • le scan de répertoires sous wp-content/uploads, des permissions UNIX mal configurées et déconseillés…#777

 

    • et un freeBSD avec des binaries Linux

 

  LD_preload-code Il fonctionne grâce à un script PHP exploitant une variable d’environnement permettant de charger une librairie à la place des bibliothèques de bases. Il s’agit de la variable LD_PRELOAD.

LD_PRELOAD is an environment variable that affects the runtime linker. It allows you to put a dynamic object, that will create some sort of a buffer layer, between the application references and the dependencies. It also grants you the possibility of linking with the application and relocating symbols/references.

En résumé :

The simplest thing that LD_PRELOAD allows is to hijack a function.

Cette fonction permet à une personne malveillante de hacker le système… Si vous avez envie de voir comment ça marche en détail c’est par ici la ressource : http://www.exploit-db.com/papers/13233/

2. La liste des sites WordPress compromis

Malware Must Die a tweeté la liste des sites WordPress compromis par ce malware, mais il y en a sûrement d’autres :

3. Comment détecter l’infection ?

Google peut aider via une recherche du fichier libworker.so sur vos domaines indexés.

Ce malware va réaliser un dump des data sur le disque du répertoire où il s’exécute avec un nom de fichier en  .sd0, essayez la fonction grep sur .sd0 dans le répertoire de votre WordPress pour vérifier si votre système est infecté.

Il existe des cas où le répertoire WordPress hacké est remplacé par le librairie .so du malware (libworker.so) et ne sera pas exécutée : il n’y aura donc pas de fichier .sd0 mais en recherchant 1.sh, le nom du script d’installation de LD_PRELOAD, dans le même répertoire compromis, ou encore en recherchant libworker.so ou 1.sh via un Google Dork.

Malware Must Die nous explique comment procéder pour repérer cette infection :

Vous pouvez aussi rechercher la signature du malware (class ELF) par les chaînes de caractères fournies par Malware Must Die : http://blog.malwaremustdie.org/2014/05/elf-shared-so-dynamic-library-malware.html

Bien entendu, le nom du script d’installation à trouver pour détecter la librairie responsable du désastre aura un nom passe-partout qui n’attire pas l’attention.

4. Comment stopper l’infection ?

  1. Si vous trouvez le script d’installation, supprimez-le directement car il peut se propager à distance sur d’autres processus.
  2. Une fois que vous connaissez le nom du script d’installation, recherchez son PID via un grep sur le nom du script puis tuez le process à l’avance pour être sûr qu’il n’est plus exécuté (kill -9).
  3. Ensuite vérifiez qu’il n’y a pas de LD_PRELOAD dans votre environnement avec la commande unset.
  4. Répétez le processus tant que vous repérez un LD_PRELOAD mais comme le signale MMD, ne pensez surtout pas qu’un reboot serveur va vous sauver !

 

5. LD_PRELOAD : un hook connu

Cette variable est un hook déjà exploité dans de nombreux exemples. En effet, on trouve notamment des posts de 2011 sur des forums de World of Warcraft notamment afin de permettre de configurer des bots ou programmes fonctionnant avec le célèbre MMORPG de Blizzard.

If you are hacking on Linux chances are you are using LD_PRELOAD method. It’s a very powerful, and easy, way to hook into another process.

Source : http://www.ownedcore.com/forums/world-of-warcraft/world-of-warcraft-bots-programs/wow-memory-editing/330135-linux-ld_preload-injection-without-patching-wine.html
Pour en apprendre plus sur la méthode LD_PRELOAD et ce, en français, allons voir chez Nico qui fait de chouettes tutos : http://www.lestutosdenico.com/tutos-de-nico/introduction-a-ld_preload

 

Note : Finalement un blog, c’est plutôt pratique quand Twitter ne permet que 140 caractères…

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *