Comment l’IA peut aider à désosser les logiciels malveillants : prédire les noms de fonction du code

  • FrançaisFrançais



  • CGV Le désassemblage et l’analyse des logiciels malveillants pour voir comment ils fonctionnent, ce pour quoi ils sont conçus et comment s’en protéger sont généralement une tâche longue et manuelle qui nécessite une solide compréhension du code d’assemblage et de la programmation, des techniques et des exploits utilisés par les malfaiteurs, ainsi que d’autres compétences. qui sont difficiles à trouver.

    Avec l’essor de l’apprentissage en profondeur et d’autres recherches sur l’IA, les spécialistes de la sécurité informatique étudient les moyens d’utiliser l’apprentissage automatique pour accroître la vitesse, l’efficacité et l’automatisation de ce processus. Ces systèmes automatisés doivent faire face à un code malveillant diaboliquement obscurci conçu pour échapper à la détection. L’un des principaux objectifs est de permettre aux systèmes d’IA d’effectuer des tâches plus routinières, libérant ainsi les rétro-ingénieurs pour qu’ils se concentrent sur des tâches plus importantes.

    Mandiant est l’une de ces entreprises qui voit où les réseaux de neurones et les technologies associées peuvent changer la façon dont les logiciels malveillants sont décomposés et analysés. Cette semaine, lors de l’événement GTC 2022 de Nvidia, Sunil Vasisht, scientifique des données au sein de la société infosec, a présenté l’une de ces initiatives : un modèle de traduction automatique neuronale (NMT) capable d’annoter des fonctions.

    Ce modèle de prédiction, d’après ce que nous comprenons, peut prendre du code décompilé – des instructions en langage machine reconverties en code de langage de haut niveau correspondant – et l’utiliser pour suggérer des noms descriptifs appropriés pour chacun des blocs fonctionnels. Ceci est utile lorsque les noms de fonctions ou de symboles ont été supprimés d’un binaire ou obscurcis, et constituent une alternative aux outils basés sur les signatures, tels que IDA FLIRT.

    Si vous faites de l’ingénierie inverse, vous pouvez ignorer les fonctions qui, par exemple, obligent le système d’exploitation à gérer un appel printf() et accéder directement aux fonctions identifiées comme effectuant un chiffrement ou augmentant les privilèges. Vous pouvez ignorer un bloc étiqueté par le modèle comme tolower() et passer après celui inject_into_process(). Vous pouvez éviter de perdre du temps sur des impasses ou des fonctions sans conséquence.

    Plus précisément, le modèle fonctionne en prédisant les mots-clés de nom de fonction (par exemple, ‘get’, ‘registry’, ‘value’) à partir de jetons d’arbre de syntaxe abstraite (AST) à partir de fichiers exécutables décompilés. Il a été montré que le modèle était capable d’étiqueter une fonction comme ‘des’, ‘encrypt’, ‘openssl’, ‘i386’, ‘libeay32’, alors qu’un analyste impliqué dans l’expérience ne pouvait que suggérer encode(). Mandiant a également construit un deuxième NMT qui a fait des prédictions à partir de graphiques de flux de contrôle et d’appels de code API.

    Vasisht a décrit les méthodes typiques utilisées pour désosser les logiciels malveillants et les innombrables défis qui en découlent, y compris les techniques utilisées par les créateurs de logiciels malveillants pour créer leur code afin de rendre plus difficile pour les chasseurs de menaces de le trouver et de le désassembler. Cela crée ce qui devient une situation intenable.

    “Inverser est un travail extrêmement difficile et consacrer plus d’heures d’analystes au problème n’est pas durable”, a-t-il déclaré lors de sa présentation.

    En automatisant les annotations de fonctions, Mandiant vise à relever les grands défis rencontrés par la plupart des rétro-ingénieurs lors de l’analyse des logiciels malveillants modernes. Le fournisseur, racheté par Google pour 5,4 milliards de dollars, souhaite intensifier les rapports sur les fonctionnalités et les capacités des logiciels malveillants, réduire les défis auxquels sont confrontés ses analystes et rendre l’inversion plus efficace. En d’autres termes, il est plus facile d’identifier le cœur du code malveillant délicat. Nous imaginons que cela pourrait également être utile pour comparer les souches de logiciels malveillants.

    “Nous espérons nous attaquer aux cas faciles afin que les analystes puissent passer leur temps précieux sur des cas plus importants”, a déclaré Vasisht. “Chez Mandiant, ce sont les défis que nous avons décidé de relever avec une approche d’apprentissage automatique unifiée. Notre énoncé de problème est le suivant : comment pouvons-nous augmenter la couverture des noms de fonction dans le désassemblage binaire afin d’accélérer le triage des logiciels malveillants ?”

    Nous espérons nous attaquer aux cas faciles afin que les analystes puissent passer leur temps précieux sur des cas plus importants

    Les analystes de logiciels malveillants utilisent un certain nombre de techniques relevant de l’analyse statique et dynamique ; le premier consiste à étudier le code exécutable, le second à l’exécuter et à observer son fonctionnement. Il existe des outils comme IDA Pro, Binary Ninja, Ghidra, des débogueurs, des émulateurs et des hyperviseurs pour vous aider. Même ainsi, les fonctions décompilées et désassemblées peuvent être difficiles à suivre, obligeant les inverseurs à passer des heures avant de comprendre ce que fait une section de code, et de nombreux échantillons sont beaucoup trop volumineux pour une analyse complète. Le code peut également être crypté, ce qui rend l’analyse statique pénible.

    De plus, les logiciels malveillants peuvent être écrits pour s’auto-terminer ou agir de manière inoffensive s’ils détectent qu’ils s’exécutent sous analyse dynamique. “Les logiciels malveillants peuvent détecter quand ils s’exécutent dans une machine virtuelle et masquer son véritable comportement. Ils peuvent peut-être vérifier le système d’exploitation ou même vérifier la température du processeur et déterminer s’il faut s’exécuter ou simplement se cacher”, a-t-il déclaré.

    Vasisht a détaillé deux façons de transformer le code binaire en entrées pour un modèle NMT prédictif. L’une consiste à utiliser code2seq qui décompose le code source et le code décompilé en un AST de jetons représentatifs. L’autre est Nero, qui décrit le graphe de flux de contrôle (CFG) du code.

    Les ingénieurs de Mandiant se sont penchés sur les deux initiatives pour créer leur modèle de dénomination des fonctions, a-t-il déclaré. Comme décrit ci-dessus, l’un s’est concentré sur les AST et d’autres CFG.

    “En nous inspirant des architectures de type code2seq et Nero, nous avons cherché à voir si nous pouvions appliquer ces techniques au désassemblage des logiciels malveillants en utilisant les représentations AST et CFG pour prédire une fonction significative et, dans le processus, nous espérons réduire l’effort entourant un processus inverse fastidieux. workflow d’ingénierie », a déclaré Vasisht.

    Les ingénieurs ont utilisé un serveur Linux avec 48 cœurs de processeur, 500 Go de RAM système. et huit GPU Nvidia Tesla M40 avec 24 Go de mémoire. La plate-forme a été utilisée pour exécuter simultanément plusieurs recherches d’hyperparamètres – des contextes AST max aux sous-jetons max d’étiquettes de sortie – et pour former le modèle final, a-t-il déclaré. Ils ont utilisé un ensemble de données d’entrée de plus de 360 000 fonctions et annotations désassemblées tirées de 4 000 fichiers Windows PE malveillants, certains générés automatiquement à partir du FLIRT d’IDA et d’autres à partir d’une décennie d’annotations d’inverseur manuscrites de Mandiant.

    Le pipeline d’analyse automatisé et évolutif de Mandiant a montré des améliorations par rapport aux modèles code2seq et Nero, a-t-il déclaré. L’entreprise doit maintenant réfléchir à la manière dont elle déploiera le modèle.

    “Il s’agit notamment d’utiliser ces prédictions de modèles avec IDA Pro et [the NSA’s open-source] Plug-ins Ghidra », a déclaré Vasisht. « Nous envisageons également de déployer ce modèle dans le pipeline d’analystes de logiciels malveillants. De plus, cela nous permettra de recueillir des commentaires sur les prédictions, ainsi que de recueillir de nouvelles annotations afin que nous puissions itérer et améliorer ce modèle à l’avenir.”

    Les travaux futurs comprennent l’amélioration de l’étiquetage et de la qualité des données ; en utilisant un modèle combiné AST et CFG ; et en utilisant différents mélanges de binaires pour former le modèle, a-t-il déclaré. ®

    L'équipe de Comparaland

    L'équipe rédactionnnelle du site

    Pour contacter personnellement le taulier :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée.