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 :

Image montrant la méthode d'initialisation du malware

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:

La méthode getmimedescription du malware

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:

La méthode createmarker du malware

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 :

Le cas du malware 2

Et dans le $alpha variable, nous avons chaque lettre de l’alphabet liée à un nombre :

correspondance lettre-chiffre

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:

la méthode de préparation du malware

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

La première couche d'obscurcissement

2ème couche d’obscurcissement (encodé en base64):

Deuxième couche d'obscurcissement

Désobscurcir:

certaines fonctions dans le webshell désobscurci

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 :

Certaines fonctionnalités du webshell désobscurciPlus de capacités du webshell désobscurci

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