Dans l’article d’aujourd’hui, nous discutons des techniques émergentes utilisées par les attaquants pour masquer la présence de logiciels malveillants. Dans l’exemple dont nous parlons ci-dessous, l’objectif de l’attaquant est de faire en sorte que tout semble routinier pour un analyste afin qu’il ne creuse pas plus profondément et ne découvre pas la présence de logiciels malveillants et ce qu’ils font. Nous décrivons le fonctionnement de cette technique et nous abordons les fondements psychologiques de la technique utilisée par l’attaquant.
Wordfence détecte le logiciel malveillant décrit dans cet article, même s’il peut être manqué par un analyste de la sécurité humaine effectuant une inspection manuelle. Nous assurons la détection de cette variante de malware depuis 2019, à la fois gratuitement et Prime Clients de Wordfence.
L’un des mécanismes les plus sophistiqués utilisés par les créateurs de logiciels malveillants consiste en un fichier « chargeur » d’apparence anodine qui inclut ou exécute une porte dérobée plus traditionnelle qui est compressée, masquée ou récupérée à distance et peut donc ne pas avoir de modèles détectables dans le corps du fichier.
Nous sommes tombés sur un échantillon de malware intelligent qui mérite d’être partagé. Dans ce fichier, un code malveillant était généré en temps réel à l’aide d’une technique d’obscurcissement simple mais bien cachée dans ce qui ressemblait à une classe PHP parfaitement normale et inoffensive.
L’abstraction du code semblait presque parfaite, chaque méthode de classe était bien commentée, la logique métier semblait raisonnable et le code suivait les dernières normes de qualité du code.
L’un des « dits » typiques des logiciels malveillants est qu’ils sont en grande partie écrits de manière médiocre ou aléatoire à l’aide de pratiques de programmation procédurale, et qu’une grande partie est obscurcie. Ce malware a été bien écrit en utilisant des pratiques de programmation orientée objet, ce qui implique qu’il a été créé par un développeur professionnel, et ne semble pas être obscurci. Tous ces facteurs contribuent à obscurcir le fichier de manière très efficace : cela semble normal et il faudrait un analyste de sécurité chevronné pour détecter quoi que ce soit de suspect à son sujet.
Dans ses recherches et ses écrits, le lauréat du prix Nobel Daniel Kahneman décrit un esprit ‘Système 1’ et ‘Système 2’. Votre esprit System 1 effectue des tâches de routine. Le système 2 est votre esprit analytique, qui ne s’engage que lorsque la routine est brisée ou remise en question. Un analyste inexpérimenté, regardant ce code pourrait ne pas engager son esprit System 2 parce que tout semble comme il se doit. Cela semble routinier.
La classe se décrit comme un simple service d’extension de définitions de type mime et ses init
la méthode semble normale :
Cependant, avec les logiciels malveillants, les choses peuvent ne pas toujours être telles qu’elles apparaissent.
Si nous regardons de plus près les getMimeDescription
méthode:
On remarque que les indices sélectionnés dans le $indicies
variable sont un peu suspectes.
2 => wp-content
6 => themes
5 => allegro-theme
3 => includes
En d’autres termes, le getMimeDescription
La méthode générera le chemin suivant :
wp-content/themes/allegro-theme/includes/admin/buttons-formatting/buttons/btn-accordion1.png
Une partie de la magie opère dans le createMarker
méthode:
Les createMarker
La méthode renvoie les chaînes suivantes selon que le $type
paramètre qui lui a été transmis par le createExtension
méthode est définie sur 0, 1 ou 2 :
[0] => file_get_contents
[1] => gzinflate
[2] => eval
Il utilise une gamme prédéfinie de lettres de l’alphabet de a-z dans le $alpha
variable:
$alpha = range('a', 'z');
Cette fonction utilise en fait un standard for
boucle pour générer des fonctions suspectes couramment utilisées tout en échappant à la détection et constitue la partie du code la plus visiblement obscurcie.
Par exemple, dans le cas 2 nous avons :
Et dans le $alpha
variable, nous avons chaque lettre de l’alphabet liée à un nombre :
Depuis le for
la boucle incrémente l’index du tableau de $numbers
par 1 sur chaque boucle, il finit par ajouter ce qui suit au $marker
variable::
5(e), 22(v), 1(une), 12(l) qui se traduit par : évaluer
Ces techniques d’obscurcissement simples mais élégantes montrent comment le code malveillant peut être dissimulé de manière inattendue.
La prochaine partie intéressante commence lorsque le prepareDir
méthode est appelée.
Il fonctionne à la sortie du getMimeDescription
méthode:
Le code ci-dessus utilise join
pour définir la valeur de $markers
à create_function
et appelle createExtension
, qui appelle createMarker
et place le code suivant dans le $extension
variable:
$mime=file_get_contents($mime);$mime=gzinflate($mime);$mime=eval($mime);
Ceux-ci sont ensuite combinés avec create_function
dans le $dircreator
variable afin d’exécuter le code malveillant caché dans le btn-accordion1.png
déposer.
Le fichier PNG btn-accordion1.png
contenait un code malveillant compressé (gzdeflated) pour agir comme une couche supplémentaire d’obscurcissement qui peut être difficile à détecter à l’aide de techniques traditionnelles. Ce code, une fois gonflé et décodé en base64, révèle une porte dérobée plus manifestement malveillante, mais toujours développée par des professionnels, utilisée pour interagir avec l’infrastructure de commandement et de contrôle (C2) appartenant à l’attaquant.
Ci-dessous un échantillon de btn-accordion1.png
contenu d’origine du fichier :
1ère couche d’obscurcissement(gzdeflated):
2ème couche d’obscurcissement (encodé en base64):
Désobscurcir:
Cela révèle plus de 3000 lignes de code malveillant écrit par des professionnels, prenant en charge un ensemble de commandes à distance, notamment l’exécution de code, les mises à jour et l’accès aux fichiers :
Les créateurs de logiciels malveillants développent en permanence de nouvelles techniques d’obscurcissement afin de masquer les indicateurs malveillants. Même les logiciels malveillants courants peuvent échapper à la détection s’ils présentent un obscurcissement intelligent et inattendu. Dans de tels cas, un examen plus approfondi est nécessaire afin d’identifier et de comprendre le malware. Les analystes feraient également bien de garder leur esprit du système 2 engagé, comme le dirait Kahneman, lors de l’analyse des logiciels malveillants suspectés.
Les logiciels malveillants évoluent, mais les techniques utilisées par les chercheurs en logiciels malveillants évoluent également. Notre équipe continue de développer de nouvelles technologies, comme notre initiative d’apprentissage automatique, qui accélèrent l’identification des variantes émergentes de logiciels malveillants qui peuvent être plus difficiles à détecter pour les analystes. Wordfence détecte les malwares mentionnés dans cet article, et inclut cette détection depuis 2019, pour notre gratuit et Premium Wordfence les clients.
Bonne chasse!
Source link