Aujourd’hui, tous les services exposés publiquement sur internet subissement malheureusement des attaques continuelles, variés et évolutives de la part de groupes cybercriminels.
Ces derniers profitent du fait que les attaques qu’ils mènent sont difficiles à retracer, et misent sur la probabilité de trouver 100 cibles vulnérables sur un million, et ainsi rentabiliser des attaques rapides et massives.
SERMA dispose d’équipes « Blue Team » qui ont pour activité de surveiller les infrastructures des clients de SERMA, où il peut y avoir des services exposés sur internet.
Dans ce cadre, nous avons observés une attaque inédite visant les services de nos clients. Cet article propose une analyse approfondie de cette attaque, utilisant une technique avancée d’obfuscation basée sur PHPfilter.
Nous vous présenterons les différentes étapes de l’analyse menée par notre équipe pour comprendre cette menace.
Contexte de l'attaque
Il y a quelques mois, une des équipes Blue Team SERMA a vu un des assets web qu’elle protège être la cible d’une série d’attaque inédite.
L’origine de cette attaque reposait sur l’exploitation de la fonctionnalité php://filter et l’obfuscation de caractères via différents encodages, rendant l’analyse particulièrement complexe[1].
Le but de l’attaque était de dissimuler un code malveillant à travers une série de conversion entre formats de caractère et encodage base64.
[1] https://www.synacktiv.com/publications/php-filters-chain-what-is-it-and-how-to-use-it
Forme de l'attaque
L’attaque prenait la forme suivante :
Aucune autre information n’avait semblé intéressante au niveau des métadonnées de l’attaque. Les IP d’attaquant et les métadonnées associés laissaient penser aux schémas d’attaques massifs et automatisés d’internet que nous observons de manière usuelle.
En revanche la technique d’obfuscation observée, qui utilise le format « URL Encoded » contenant une suite de caractères unicode dans un php://filter n’avait jamais été observé avant.
Cela a poussé l’équipe Blue Team à réaliser une analyse complète du contenu du payload obfusqué.
Méthode d'analyse
Pour comprendre l’attaque, l’équipe Blue Team a pu toutefois retrouver des outils de génération d’exploit PHP conçu pour générer ces payload. Cela nous a permis de trouver des tables de conversion permettant de déduire pour chaque élément la valeur appropriée :
Cependant, l’équipe Blue Team a alors découvert des effets de collision à la désobfuscation.
En effet, certains caractères possibles sont contenus dans les payload d’autres caractères.
Par exemple, la valeur « C » est contenue dans au moins 3 autres valeurs, ce qui donne :
- C → « iconv.UTF8.CSISO2022KR»
- 0 → « convert.iconv.UTF8.UTF16LE|iconv.UTF8.CSISO2022KR|convert.iconv.UCS2.UTF8|convert.iconv.8859_3.UCS2 »
- 5 → « convert.iconv.UTF8.UTF16LE|iconv.UTF8.CSISO2022KR|convert.iconv.UTF16.EUCTW|convert.iconv.8859_3.UCS2 »
- v → « convert.iconv.UTF8.UTF16LE|iconv.UTF8.CSISO2022KR|convert.iconv.UTF16.EUCTW|convert.iconv.ISO-8859-14.UCS2 »
Ce qui entraine au décodage mécaniquement des situations où lors de la conversion, l’équipe s’est retrouvé avec des valeurs tels que :
« convert.iconv.UTF8.UTF16LE|C|convert.iconv.UTF16.EUCTW|convert.iconv.ISO-8859-14.UCS2 »
Qui étaient donc cassés.
Pour résoudre cela, l’astuce a été de créer un modèle de conversion basé sur la taille des conversions de caractères :
De cette façon, une fois la conversion effectuée, on obtient :
Et ainsi une fois le base64 ultimement décodé, l’équipe a pu retrouver le payload originel :
Ce dernier est une commande PHP system() permettant d’exécuter des commandes arbitraire. Le paramètre $_POST[‘a’] que l’utilisateur avait également transmis contient tout simplement un « reverse shell » (technique permettant de prendre le contrôle à distance d’une machine).
En résumé, l’analyse de cette attaque inédite à permis à l’équipe Blue Team de :
- Confirmer la nature malveillante de l’attaque
- Développer une méthode d’analyse à même d’extraire l’information utile de l’attaque
- La récupération et l’adaptation par les cybercriminels de techniques d’obfuscation développés par des sociétés de pentest
- L’utilisation de techniques d’obfuscations avancés pour passer sous les radars des équipes Blue Team