Skip to Content
logologo
AI Incident Database
Open TwitterOpen RSS FeedOpen FacebookOpen LinkedInOpen GitHub
Open Menu
Découvrir
Envoyer
  • Bienvenue sur AIID
  • Découvrir les incidents
  • Vue spatiale
  • Vue de tableau
  • Vue de liste
  • Entités
  • Taxonomies
  • Soumettre des rapports d'incident
  • Classement des reporters
  • Blog
  • Résumé de l’Actualité sur l’IA
  • Contrôle des risques
  • Incident au hasard
  • S'inscrire
Fermer
Découvrir
Envoyer
  • Bienvenue sur AIID
  • Découvrir les incidents
  • Vue spatiale
  • Vue de tableau
  • Vue de liste
  • Entités
  • Taxonomies
  • Soumettre des rapports d'incident
  • Classement des reporters
  • Blog
  • Résumé de l’Actualité sur l’IA
  • Contrôle des risques
  • Incident au hasard
  • S'inscrire
Fermer

Problème 2348

Loading...
Cylance, je te tue !
skylightcyber.com · 2019

Mise à jour : 07/Sep/2019 Nous avons eu l'honneur de présenter nos découvertes dans BSides Sydney ([Slides](https://skylightcyber.com/2019/07 /18/cylance-i-kill-you/Cylance%20-%20Adversarial%20Machine%20Learning%20Case%20Study.pdf)). Nous avons profité de cette occasion pour rendre publics certains des documents encore inédits. Nous pouvons maintenant révéler que le jeu non divulgué que nous avons utilisé est "Rocket League", mais beaucoup d'autres fonctionnent tout aussi bien (nous avons essayé Fortnite, par exemple). Quelques autres bonus incluent la "sauce spéciale" - la liste des chaînes qui apparaît dans l'exécutable de Rocket League et font partie du modèle de Cylance. Il suffit de les ajouter à n'importe quel exécutable malveillant pour faire croire à Cylance que c'est bénin. A ce jour, le bypass est toujours exploitable sur l'édition home (Cylance SmartAV). Le fournisseur nous a dit que l'édition entreprise (CylancePROTECT) a été corrigée, mais nous n'avons pas pu le vérifier. Si vous avez accès à l'édition entreprise et que vous pouvez confirmer le correctif, veuillez nous en informer dans la zone de commentaires au bas de la page. TL; DR ----- Les applications d'IA dans le domaine de la sécurité sont claires et potentiellement utiles, mais les produits basés sur l'IA offrent une surface d'attaque nouvelle et unique. À savoir, si vous pouviez vraiment comprendre le fonctionnement d'un certain modèle et le type de fonctionnalités qu'il utilise pour prendre une décision, vous auriez le potentiel de le tromper de manière cohérente, créant ainsi un contournement universel. En analysant attentivement le moteur et le modèle du produit antivirus basé sur l'IA de Cylance, nous identifions un biais particulier vers un jeu spécifique. En combinant une analyse du processus d'extraction de fonctionnalités, sa forte dépendance aux chaînes et son fort parti pris pour ce jeu spécifique, nous sommes capables de créer un contournement simple et plutôt amusant. À savoir, en ajoutant une liste sélectionnée de chaînes à un fichier malveillant, nous sommes capables de modifier son score de manière significative, en évitant la détection. Cette méthode s'est avérée efficace pour 100 % des 10 principaux logiciels malveillants de mai 2019, et près de 90 % pour un échantillon plus large de 384 logiciels malveillants. Lisez l'article complet pour comprendre le processus de recherche lui-même, le fonctionnement interne d'un EPP avancé basé sur l'IA et comment nous avons trouvé le contournement universel. Démonstration de notre contournement universel en action Another Brave New World ----------------------- Une fois toutes les quelques années, le monde de la cybersécurité est béni avec la naissance d'un bébé balle en argent. Cela commence petit, avec quelques sociétés mères enthousiastes saluant le prince nouveau-né comme notre sauveur, racontant les histoires de son pouvoir invincible. Quelques années et des millions de dollars de marketing plus tard, il grandit et devient une centrale électrique absolue. Le simple murmure de son nom ajoute de la confiance à votre produit, vous permet d'apparaître dans les conférences les plus influentes et aide à sceller ce cycle de financement indispensable. Avec le temps, l'argent semble n'être qu'un revêtement qui commence bientôt à s'estomper et certaines âmes courageuses commencent à le voir pour ce qu'il est - un autre outil, espérons-le efficace, dans le processus sans fin qu'est la cybersécurité. Telle est l'histoire de nombreuses "solutions miracles" que nous avons vues au fil des ans, et telle sera inévitablement l'histoire de l'IA et de l'apprentissage automatique. L'IA a été présentée comme la solution miracle pour y mettre fin avec une force marketing significative - après tout, si nous pouvons apprendre à une machine à penser comme un analyste humain, uniquement avec l'ajout de données volumineuses et d'une puissance de traitement presque infinie, alors sûrement, nous sera capable de créer un mécanisme invincible. Un cerveau si puissant qu'il ne pouvait être trompé par aucun autre mécanisme. Exact... Dans cet article, nous montrerons comment inverser le modèle d'un produit EPP basé sur l'IA et trouver un biais permettant un contournement universel. Nous avons choisi Cylance pour des raisons pratiques, à savoir qu'il est accessible au public et largement considéré comme un fournisseur leader dans le domaine. Cependant, nous pensons que le processus présenté dans cet article peut également être appliqué à d'autres produits d'IA pure. L'IA pour les Millennials ------------------ L'IA est un domaine technologique extrêmement important et fascinant avec de profondes implications pour la société humaine. Cependant, nous ne sommes pas des experts en IA, diable, nous ne sommes même pas des utilisateurs expérimentés. Avec cette clause de non-responsabilité à l'esprit, essayons de comprendre comment l'IA fonctionne conceptuellement, afin que nous puissions émettre des hypothèses plus tard sur la façon dont nous pourrions la tromper. Dans le cadre de la protection des terminaux, nous sommes confrontés à un problème de classification. Étant donné un fichier, nous devons le classer comme malveillant ou bénin. Il existe de nombreuses approches pour cela, mais d'une manière générale, vous essayez d'entraîner un cerveau artificiel pour identifier certaines propriétés du sujet, puis appliquez une forme de modèle mathématique pour calculer si ce que vous regardez est un certain objet. Supposons, par exemple, que nous souhaitions qu'une machine classe les objets comme des oiseaux ou des êtres humains. Un modèle d'IA spécifique peut examiner certains attributs de l'objet comme le poids, la taille, s'il a un bec, des ailes, etc. pour prendre une décision. En exposant un modèle à de nombreux échantillons d'oiseaux et d'êtres humains, les différences commenceront à apparaître. Par exemple, la plupart des êtres humains que nous connaissons n'ont ni bec ni ailes. Ainsi, si quelque chose possède l'un ou l'autre de ces attributs, il y a de fortes chances qu'il s'agisse d'un oiseau. C'est bien sûr une simplification excessive d'un domaine de connaissances vraiment magnifique, mais cela suffira pour l'instant. En appliquant la même approche à la classification des fichiers comme malveillants ou bénins, nous obtenons des avantages clairs et substantiels : . - Mises à jour peu fréquentes - un modèle est formé une fois et peut durer des années sans mises à jour. - Consommation de ressources réduite - Les fournisseurs d'IA affirment que la nature de leur technologie entraîne une consommation moindre de CPU, de mémoire et de disque. Dans l'ensemble, l'IA devrait vous aider à détecter plus de menaces, plus tôt, tout en réduisant les frais généraux de gestion et de ressources informatiques pour votre organisation. Puis-je en avoir deux s'il vous plaît? Data Nerd vs Hacker Mindset ---------------------------- Les pirates essaieront toujours de trouver le moyen le plus économique de se frayer un chemin. Pour en revenir au problème de classification des oiseaux et des êtres humains discuté ci-dessus - si nous comprenons que le modèle d'IA s'appuie fortement sur l'existence d'un bec et d'ailes pour prendre une décision, nous pouvons aller nous acheter un costume d'oiseau loufoque. Si, d'un autre côté, le modèle examine le rapport entre le poids du cerveau et le poids corporel, nous aurons besoin d'une astuce complètement différente. Pas un vrai poulet Quels que soient les attributs importants, si nous les identifions, nous avons de bonnes chances de vaincre systématiquement le cerveau artificiel, c'est-à-dire de rendre les fichiers malveillants bénins grâce à une sorte de traitement. Un journal bavard ------------ Très bien, il est temps de retrousser nos manches et de commencer nos recherches, passionnant ! Dans un premier temps, nous aimerions créer un processus pour déterminer la classification d'un fichier donné, tel que déterminé par le moteur Cylance. Cela nous permettrait de comprendre ultérieurement si nous étions capables de le tromper. En activant verbose logging, nous pouvons capturer des informations haute résolution que Cylance a la gentillesse de fournir. On dit toujours qu'un logiciel verbeux est comme un inconnu ivre dans un bar, il vous parlera de tous ses problèmes. Voici un extrait du fichier journal, indiquant une détection d'un fichier malveillant (Mimikatz avec un seul octet modifié) : Nous pouvons voir que le moteur a un mécanisme de scoring et notre Mimikatz modifié a été marqué -852. En testant empiriquement divers bons et mauvais fichiers, nous avons déterminé plus tard que le score peut aller de -1000 pour les fichiers les plus malveillants à +1000 pour les fichiers les plus bénins. Bon travail Cylance, vous avez identifié un Mimikatz muté, vous plaçant déjà bien au-delà de 50 % des produits de protection des terminaux (ne nous croyez pas ? Comparez [Mimikatz original](https://www.virustotal.com/gui/file /965b0968850b32d5f6a86052cb5460957cc7997f34ad0a42db44b7f9ed098a35/detection) with one-byte modified Mimikatz). Tenez-vous bien cependant, nous ne faisons que commencer. Plonger --------- Nous avions maintenant un objectif clair : comprendre le mécanisme de notation de Cylance, afin de pouvoir le contourner plus tard. Pour ce faire, nous avons commencé par rétroconcevoir le code, qui était bien sûr obscurci, mais construit de manière claire, permettant de suivre. Nous avons également trouvé des informations accessibles au public sur le fonctionnement interne du produit à partir de dépôts de brevets et de discussions publiques. L'une de ces ressources décrit le moteur comme étant un "Ensemble" (qui est un groupe de modèles) et nous avons trouvé une classe nommée "EnsembleReader". Il est utilisé pour charger l'ensemble à partir d'une ressource intégrée dans l'un des fichiers DLL. Le modèle extrait est crypté, cependant, l'algorithme et la clé assez originale sont plutôt clairs : En suivant la piste d'utilisation des informations du modèle, nous avons atteint l'assemblage 'SampleScore2PE'. Son nom suggère qu'il marque des fichiers PE, ce qui a naturellement piqué notre intérêt. Nous avons examiné les interfaces exposées de cet assemblage et avons trouvé le joyau suivant : avant de découvrir cette interface, nous prévoyions déjà d'utiliser la méthode à l'ancienne pour révéler les secrets du fichier de modèle : utilisez la clé pour décrypter le modèle et l'analyser minutieusement. jours ou semaines. Au lieu de cela, nous avons réalisé que nous pouvions simplement créer notre propre petit fichier . NET exécutable et lié à ces assemblages un peu comme le fait Cylance.Engine.Core. Nous avons ensuite appelé la fonction Create() avec un chemin vers le fichier de modèle que nous avons extrait plus tôt (toujours chiffré, BTW), et nous avons obtenu un objet qui expose une fonction ComputeScore(). Cela peut-il s'améliorer (c'est le cas en fait) ? En exécutant le code ci-dessus, nous avons reçu un score de -0,852764 en sortie pour notre fichier Mimikatz modifié, qui ressemble terriblement au -852 que nous avons remarqué dans les fichiers journaux plus tôt. Mimikatz a obtenu un score de -0,85276 Cela peut sembler peu, mais c'est en fait une base très solide pour notre recherche. Nous avons maintenant un processus simple pour tester les fichiers PE par rapport au moteur de notation de Cylance, et plus important encore, nous avons un point de départ pour déboguer dynamiquement le processus de notation. Caractéristiques Galore --------------- Nous avons utilisé une combinaison de techniques d'analyse statiques et dynamiques pour étudier le processus de notation. Le début du parcours de classification commence par l'examen et la mesure de différentes caractéristiques de l'objet cible. Pour en revenir à notre exemple oiseau contre humain, c'est la partie où vous prendriez des mesures, vérifieriez l'existence d'ailes et de bec, et quantifieriez d'autres aspects du sujet à classer. Cylance utilise une combinaison de code et de données du modèle lui-même pour produire le vecteur de caractéristiques. Le fichier PE est d'abord analysé de manière approfondie pour produire une grande quantité de propriétés différentes du fichier. Certaines sont simples, comme le nombre et les noms des sections, tandis que d'autres sont des observations plus complexes qui nécessitent un peu de traitement pour être produites. Par exemple, tester si le PE a un champ de somme de contrôle correct, compter la quantité d'instructions dans le point d'entrée et le nombre d'importations liées à l'injection de processus. La prochaine étape majeure du processus de classification consiste à transformer ces propriétés extraites en un vecteur de caractéristiques (AKA : feature extraction). Comme il existe des milliers de fonctionnalités (7 000 pour être précis), nous n'avons pas pris la peine de toutes les énumérer. Au lieu de cela, nous nous sommes concentrés sur le processus général utilisé par Cylance pour transformer les propriétés de fichier simples en un vecteur de caractéristiques. Des milliers de lignes de code transformant les propriétés du fichier en fonctionnalités Il existe des milliers de lignes de code gérant cette transformation, mais la logique générale est la même : le moteur prend une propriété d'entrée et la compare à une valeur connue ou à une liste de valeurs. Une comparaison pour des exemples compare le champ TimeDateStamp de l'en-tête de fichier du fichier PE à une liste de 3523 plages différentes d'horodatages. En fonction de la plage dans laquelle se situe l'horodatage, le moteur exécute une certaine action. Cette action n'est en réalité qu'une séquence d'instructions pour incrémenter ou décrémenter les valeurs du vecteur de caractéristiques. Chaque action peut affecter une ou plusieurs valeurs, et la liste des instructions est stockée dans les données du modèle. Analysons un exemple : dans cet extrait, nous appelons d'abord method_28 qui tentera de rechercher la propriété TimeDateStamp extraite dans 3 523 intervalles de temps et de date différents. Chaque plage est associée à une action correspondante. Si la propriété n'est trouvée dans aucune des plages d'heures et de dates, method_14 sera appelée, ce qui déclenchera une action, désignée pour les instances où cette propriété ne se trouve dans aucune des plages "connues". À la fin de ce très long processus, après avoir exécuté d'innombrables actions, nous nous retrouvons avec un vecteur contenant 7000 valeurs de caractéristiques. Ce vecteur de caractéristiques est l'extrait du fichier PE, et c'est lui seul qui déterminera le score et le classement du fichier. La phase suivante consiste à appliquer le modèle au vecteur de caractéristiques extrait. Le processus commence par la normalisation et le post-traitement supplémentaire du vecteur de caractéristiques, le transformant en un format utilisable mathématiquement (nous n'entrerons pas dans les détails ici). Ensuite, le moteur utilise 3 matrices différentes qui font partie des données du modèle pour transformer le vecteur de caractéristiques en une seule valeur, qui est le score final du fichier. Comme indiqué, nous ne sommes pas des experts en apprentissage automatique, mais nous avons vu des articles universitaires suggérant qu'il est possible d'approximer un réseau de neurones à l'aide de la multiplication matricielle, et tout semble s'additionner : afin d'améliorer les performances, Cylance a probablement créé une approximation de leur modèle sous la forme de plusieurs multiplications matricielles. Après chaque multiplication, le moteur applique une fonction d'activation (tanh/sigmoïde). Cela semble être une technique très courante utilisée dans les réseaux de neurones pour introduire de la non-linéarité dans le modèle afin de permettre le calcul de problèmes non triviaux. Les étapes d'approximation du réseau d'apprentissage profond : A, B et C sont les matrices qui forment le modèle Comment ces matrices ont-elles été calculées en premier lieu ? Nous ne pouvons pas en être sûrs, mais en combinant ce que nous avons appris de l'analyse du produit, des informations open source et le peu que nous savons de la façon dont l'IA est utilisée dans d'autres industries, nous pouvons tirer une explication plausible du processus qui a été utilisé. pour créer ces matrices. Cylance a probablement commencé par collecter un énorme référentiel de fichiers malveillants et bénins. Ils ont ensuite généré un très grand vecteur de caractéristiques pour chacun, beaucoup plus grand que les 7000 caractéristiques finales. À l'aide de modèles statistiques, ils ont réduit la liste des fonctionnalités aux 7000 les plus significatives (AKA : feature selection). Ensuite, ils ont créé des ensembles de réseaux de neurones profonds avec des configurations variables telles que le nombre de nœuds, de couches, de fonctions d'activation, etc., et ont formé les modèles sur le référentiel de fichiers. À l'aide d'un processus darwiniste itératif, ils ont continué à supprimer et à explorer les configurations, jusqu'à ce que celles qui présentaient les meilleures propriétés restent (par exemple, haute précision, faible taux de faux positifs). L'étape suivante aurait été d'approximer le modèle en utilisant la multiplication matricielle, dont l'essence sont les matrices que nous voyons dans les données du modèle. En revenant au code, nous pouvons voir que la première multiplication matricielle utilise le vecteur de caractéristiques 7000 comme entrée et produit 256 caractéristiques de 2ème ordre. Ceux-ci sont ensuite introduits dans une autre couche de réseau neuronal, représentée comme une autre matrice, produisant un ensemble supplémentaire de 256 caractéristiques de 3e ordre. La couche finale du réseau de neurones est approximée à l'aide de la dernière multiplication matricielle qui se traduit par un nombre unique, représentant le score final du fichier. Ces matrices et les processus d'extraction de caractéristiques associés sont stockés dans le fichier de modèle et livrés avec le produit que nous avons testé. Ce sont les "données du modèle" auxquelles nous faisions référence plus tôt, et elles représentent l'essence du moteur Cylance lui-même. Centroïde paranoïaque ----------------- Le produit final du long processus de notation des fichiers est un nombre compris entre -1 et 1, indiquant le degré de malveillance du fichier. Comme toujours, les défis de la vie réelle compliquent les choses : une fois la notation terminée à l'aide de la méthode décrite, un autre mécanisme entre en jeu avec un pouvoir prioritaire sur le modèle précédent. Nous ne pouvons que spéculer sur la raison pour laquelle ce mécanisme a été introduit, mais nous pensons que l'équipe de Cylance a rencontré des faux positifs et des faux négatifs dans le modèle principal. Ils auraient probablement pu adapter ou améliorer leur modèle, mais peut-être étaient-ils pressés par le temps, alors l'équipe R&D a dû trouver quelque chose rapidement qui ferait disparaître le problème. Quel que soit le drame dans les coulisses, ils ont introduit un mécanisme supplémentaire conçu pour cibler des familles spécifiques d'exécutables avec le pouvoir d'annuler la décision prise par le modèle précédent. Ce mécanisme s'appelle "Centroids" et il est couramment utilisé pour regrouper des objets. Son utilisation dans le cas de Cylance s'apparente à une liste d'exceptions : lorsque le modèle classe un fichier, on utilise les barycentres pour vérifier s'il est en liste blanche ou noire. Pour ce faire, le moteur utilise un vecteur de caractéristiques différent, qui utilise un ensemble modifié de valeurs de caractéristiques. Il normalise les valeurs de ces caractéristiques en les centrant autour de zéro, avec des valeurs comprises entre -3 et +3, puis calcule la distance euclidienne entre le vecteur résultant et certains vecteurs précalculés connus. En effet, il essaie de trouver si l'exécutable est très similaire à ceux qui ont été ajoutés à la liste blanche/noire du modèle. Si l'exécutable est exactement le même, les vecteurs de caractéristiques sont égaux et la distance est de 0. Cependant, si certaines caractéristiques sont différentes, la distance peut augmenter, et si elle dépasse un seuil donné, elle n'est pas considérée dans le même cluster que le blanc. ou centre de gravité sur liste noire. Crossroads ---------- Avec une bonne connaissance du fonctionnement du modèle, nous avons émis l'hypothèse sur la façon dont nous pouvons réellement contourner et confondre le moteur. Notre première hypothèse était d'essayer de faire ressembler un PE malveillant à l'un des fichiers de la liste blanche. Autrement dit, forcez les caractéristiques pertinentes à la bonne distance à partir d'un centroïde sur liste blanche. On s'est vite rendu compte que cette technique avait peu de chances de fonctionner car ce mécanisme s'appuie sur des milliers de fonctionnalités dont certaines sont extrêmement difficiles à modifier. Notre deuxième hypothèse était que nous pourrions peut-être trouver un biais dans le modèle lui-même : un petit ensemble de caractéristiques qui ont un effet significatif sur le résultat. Si nous pouvions modifier le binaire malveillant afin que ces fonctionnalités ressemblent à de bons fichiers, peut-être que le modèle sera dupe. Nous avons longuement examiné la liste des fonctionnalités et tenté d'estimer le travail nécessaire pour prendre un fichier malveillant et le modifier. C'était extrêmement difficile, car il y avait des milliers et des milliers de fonctionnalités. C'est-à-dire, jusqu'à ce que nous tombions sur les lignes de code suivantes : ces lignes parcourent toute la liste des chaînes trouvées dans le fichier, calculent leur hachage (en utilisant Murmur64), puis les recherchent dans une grande base de données contenant des hachages de chaîne (toutes parties des données du modèle). Pour chaque chaîne trouvée, une action est déclenchée, affectant le vecteur de caractéristiques. Décollage -------- La dernière découverte nous a amenés à croire qu'il pourrait y avoir un biais inhérent dans le modèle lui-même : de nombreuses fonctionnalités incluses dans l'ensemble de fonctionnalités (et rappelez-vous : c'est la seule valeur qui compte) sont le résultat direct des chaînes qui existent dans l'exécutable. Nous pouvons maintenant différencier deux types de fonctionnalités : celles qui sont basées sur des chaînes et celles qui sont basées sur une autre propriété de l'exécutable. Les fonctionnalités de chaîne sont plus faciles à manipuler et les ajouter à un exécutable ne devrait pas être trop difficile. D'autres propriétés peuvent être beaucoup plus difficiles à manipuler. Par exemple, réduire le nombre de sections est assez difficile et nécessite un travail très spécifique à l'exécutable lui-même. Donc les cordes sont une bonne direction, mais qui sont notre bec et nos ailes ? Quelles chaînes feraient normalement quelqu'un regarder un fichier et dire "oui, ça me semble bénin". Nous avons pu déchiffrer et analyser les données du modèle et récupérer la liste des hachages de chaînes et des actions associées. Cependant, nous n'avions pas les chaînes elles-mêmes. C'est à ce moment-là que nous avons eu un de ces moments d'eurêka, sans la baignoire. En réexaminant le mécanisme des centroïdes, nous avons pu observer les familles d'exécutables que l'équipe de Cylance a whitelistées. Peut-être qu'une entrée de liste blanche a été créée à un moment donné, après quoi un réentraînement complet du modèle a été effectué pour classer correctement cette famille ? Si tel est le cas, le modèle sera peut-être plus biaisé en faveur des chaînes extraites de ces types d'exécutables. Nous avons examiné la liste qui ne comprenait que quelques dizaines de centroïdes. Chaque définition de centroïde portait un nom d'identification et l'un d'eux se démarquait car il s'agissait du nom d'un jeu en ligne. Une conversation rapide avec l'un des enfants a confirmé que c'était bien connu. À tout le moins, il était suffisamment populaire pour causer des maux de tête et déclencher un traitement spécial de Cylance. Nous avons acheté le jeu et extrait toutes les chaînes contenues dans l'exécutable principal à l'aide d'une simple commande "strings", ce qui a donné environ 5 Mo de chaînes. Nous avons ensuite essayé de savoir exactement comment les chaînes sont analysées afin de mieux comprendre comment nous pouvons faire en sorte que l'analyseur les capte. C'est à ce moment-là que nous avons eu notre deuxième moment eureka/paresseux : essayons la solution la plus naïve et appliquons les cordes à la fin du fichier. Cela ne marcherait peut-être jamais, n'est-ce pas ? Nous avons utilisé la version Mimikatz qui a reçu un score de -852 et exécuté la commande suivante : nous l'avons ensuite renvoyée dans le mécanisme de notation et avons eu notre moment OMG² — Le score est maintenant de 0,9998944... (= 999). C'est presque un score parfait. Maintenant, notre Mimikatz modifié obtient un score parfait. Avons-nous trouvé un raccourci potentiel pour tuer le modèle ? Est-ce le costume d'oiseau bon marché que nous recherchions ? Nous sommes allés de l'avant et avons testé notre solution avec des fichiers malveillants et des outils de piratage connus supplémentaires et avons obtenu des résultats cohérents - le score est passé d'un fort négatif à un fort positif. Nous avons également confirmé qu'aucun autre mécanisme ne testait dynamiquement le comportement des fichiers et ne les bloquait, en exécutant avec succès ces versions modifiées sur des machines virtuelles exécutant Cylance. Notre conclusion était que nous avions réussi à trouver une dérivation universelle. C'est-à-dire une méthode simple et passive que nous pouvons appliquer à presque n'importe quel exécutable malveillant pour le transformer en FUD (entièrement non détecté). Nous avons beaucoup d'expérience dans le contournement des produits de protection des terminaux, et nous avons toujours pu prendre un exécutable et un produit antivirus spécifique et le modifier de manière à le faire passer sous le radar, mais c'était toujours très spécifique à l'exécutable et le temps et l'expertise nécessaires. Il existe des packers qui peuvent transformer un exécutable en FUD, mais le processus implique toujours une mise en scène qui complique les choses et souffre de problèmes de compatibilité. Avec cette approche, nous avons pu appliquer la même solution simple à n'importe quel exécutable pour le transformer en FUD. Tout ce que nous avions à faire était d'ajouter un ensemble spécifique de chaînes connues. Réglage fin ----------- Après notre succès initial, nous souhaitions réduire la liste des chaînes que nous utilisons, en filtrant les chaînes qui ne faisaient pas partie du modèle de Cylance. D'une part, nous avons analysé les tables pertinentes du modèle de Cylance pour avoir la liste complète des valeurs de hachage de chaîne prises en compte par le modèle. D'autre part, nous avons calculé le hachage pour toutes les chaînes du jeu. En combinant ces deux listes, nous avons réussi à réduire la taille des chaînes ajoutées ("sauce spéciale") à seulement 60 Ko. Nous avons confirmé que la réduction de la taille de la liste n'affectait pas notre contournement universel. En ajoutant ces 60 Ko à n'importe quel exécutable, nous pouvons modifier radicalement son score, même si, comme nous l'avons rapidement découvert, certains étaient toujours détectés comme malveillants, bien qu'avec des scores nettement meilleurs. Temps d'examen --------- Nos premiers tests ont été contre ce que nous considérerions comme les suspects habituels - Mimikatz, ProcessHacker, Meterpreter, etc., et se sont avérés concluants. Il était temps d'améliorer le jeu et d'examiner un groupe de test plus large. Nous avons commencé par une liste des dix principaux logiciels malveillants en mai 2019, publiée par le Center for Internet Security. Les résultats ont été stupéfiants : comme on peut le voir clairement, presque tous ces échantillons sont passés du fichier le plus diabolique de la planète à votre fichier de quartier amical. Encore une fois, le seul traitement appliqué à ces fichiers, est l'ajout de la "sauce spéciale" comme une simple concaténation. En élargissant davantage notre groupe de test, nous avons téléchargé une liste de 384 fichiers malveillants à partir de référentiels en ligne et avons exécuté le test, obtenant les résultats suivants : Nous avons également réalisé que si nous ajoutons la sauce secrète plusieurs fois, nous pouvons encore améliorer le score. Avec cette technique, nous avons atteint un score moyen de 750, et 88,54 % de nos fichiers malveillants étaient désormais marqués comme bénins. Impact et réflexions finales -------------------- Nous sommes toujours amusés de voir le choc sur le visage des gens lorsque vous leur dites que le nouveau jouet de sécurité qu'ils passé des millions de dollars à acheter et à intégrer peut être contourné. Il en va de même pour les nouvelles solutions miracles, comme la sécurité basée sur l'IA. Nous sommes tout sauf surpris des résultats, et nous sommes convaincus que le même type de processus peut être appliqué à d'autres fournisseurs d'IA pure pour obtenir des résultats similaires. Pourquoi? Trop souvent, les fournisseurs abordent le problème de sécurité avec une solution unique. Les hackers ne sont pas des mannequins de bois, ils se défendent et vous devez être prêt pour le contre-coup, en innovant constamment et en augmentant le coût de l'attaque. Le concept d'un modèle statique qui dure des années sans mise à jour peut tenir théoriquement, mais il échoue dans l'arène. Certes, il est plus difficile de trouver un biais dans un modèle d'IA que de contourner une simple signature AV, mais le coût de la réparation d'un modèle défectueux est tout aussi élevé. Nous pensons que la solution réside dans une approche hybride. Utilisation de l'IA/ML principalement pour l'inconnu, mais vérification avec des techniques éprouvées utilisées dans le monde hérité. Il ne s'agit en réalité que d'une autre mise en œuvre du concept de défense en profondeur, appliqué au monde de la protection des terminaux. Cela signifie que la promesse d'un produit d'IA pure pourrait ne pas se réaliser pour les EPP, et les fournisseurs devront maintenir et mettre à jour plusieurs systèmes de détection. La promesse d'une faible consommation de ressources, avec des cycles de mise à jour rares, n'est pas vraie pour un tel produit hybride, mais il offre une capacité de protection supérieure. Jusqu'à la prochaine solution miracle...

Lire la source

Recherche

  • Définition d'un « incident d'IA »
  • Définir une « réponse aux incidents d'IA »
  • Feuille de route de la base de données
  • Travaux connexes
  • Télécharger la base de données complète

Projet et communauté

  • À propos de
  • Contacter et suivre
  • Applications et résumés
  • Guide de l'éditeur

Incidents

  • Tous les incidents sous forme de liste
  • Incidents signalés
  • File d'attente de soumission
  • Affichage des classifications
  • Taxonomies

2024 - AI Incident Database

  • Conditions d'utilisation
  • Politique de confidentialité
  • Open twitterOpen githubOpen rssOpen facebookOpen linkedin
  • e1b50cd