web-dev-qa-db-fra.com

Identifier le ou les auteurs d'un malware

Lorsqu'un nouveau logiciel malveillant apparaît, les utilisateurs peuvent essayer de déterminer d'où il vient et qui pourraient être ses auteurs.

Comment les experts en sécurité tentent-ils d'identifier les auteurs d'un nouveau logiciel malveillant divulgué publiquement? Quelles techniques (par exemple l'ingénierie inverse) sont disponibles?

29
user3404735

Il existe un certain nombre de techniques différentes, selon le niveau de compétence de l'auteur du malware:

  • Métadonnées intégrées - les programmes compilés peuvent contenir des détails sur leurs auteurs. Ceci est le plus souvent vu dans les programmes légitimes, et apparaît dans l'écran de détails si vous regardez dans les propriétés Windows. Les attaquants qui sont connus pour la gloire pourraient bien mettre des détails d'identification dans ces domaines
  • Incorporation accidentelle - les compilateurs incluent souvent des détails sur les indicateurs de compilateur utilisés, qui peuvent très bien inclure des chemins d'accès aux fichiers source. Si le fichier source était dans /users/evilbob/malware, vous pouvez faire une assez bonne supposition que le mal Bob l'a écrit. Il existe des moyens de désactiver ces inclusions, mais tout le monde fait parfois des erreurs
  • Code commun - les auteurs de logiciels malveillants sont comme tout autre programmeur et réutilisent des morceaux de code utiles issus de travaux antérieurs. Il est parfois possible de remarquer qu'une section de code compilé correspond si étroitement à une section de code découverte précédemment qu'il semble probable que le même code source a été utilisé pour chacun. Si tel est le cas, peut en déduire que le deuxième auteur a eu accès au code du premier, ou peut être la même personne.
  • Chaîne d'outils commune - si un développeur a tendance à utiliser Visual Studio, il serait inattendu de voir son code compilé avec GCC. S'ils utilisent un packer spécifique, il serait étrange de les voir utiliser un packer différent. Ce n'est pas parfait, mais cela pourrait suggérer une distinction.
  • Techniques courantes - similaires aux précédentes, les codeurs ont souvent des schémas de codage spécifiques. Il est peu probable que les gens changent de modèle, vous pouvez donc raisonnablement deviner que si du code compilé n'a pas pu être généré dans un style de codage particulier, il n'a probablement pas été écrit par quelqu'un qui était auparavant connu pour utiliser un style différent. C'est beaucoup plus facile avec les langages interprétés, car voir une utilisation cohérente, par exemple, des boucles for plutôt que des boucles while est plus facile que de repérer les différences entre la sortie compilée de chacun (les compilateurs modernes peuvent bien réduire les à exactement le même ensemble d'instructions).
  • Origine des logiciels malveillants - d'où vient-elle? Y a-t-il du texte dans des langues spécifiques ou des fautes de frappe qui suggèrent un arrière-plan particulier? (par exemple colour suggérerait que l'auteur n'était pas américain, generale pourrait suggérer une personne habituée à écrire dans une langue romane comme le français ou l'italien)

Aucun de ces éléments n'est suffisant à lui seul pour déterminer un auteur, mais combinés, ils peuvent suggérer un auteur commun avec des logiciels malveillants précédents, ou même avec un autre code connu (par exemple, à partir de projets OS).

49
Matthew

La réponse de Matthew était excellente. Il existe également quelques autres méthodes.

  • Pas beaucoup d'auteurs de malware sont si brillants. Par exemple, vous pouvez ouvrir un grand nombre d'exécutables dans bloc-notes et rechercher des données de chaîne. J'ai vu d'innombrables auteurs qui ont simplement mis leur adresse e-mail/nom de serveur, nom d'utilisateur et mots de passe à l'intérieur les programmes dans une chaîne, et il affiche littéralement le bloc-notes.
  • Logiciel malveillant de rétro-ingénierie créé par des auteurs qui ont masqué l'étape ci-dessus.
  • Trouver l'adresse à laquelle le logiciel malveillant se connecte et enquêter sur toute personne se trouvant derrière. S'il s'agit d'un type spécifique de malware qui infecte de nombreuses machines, le développeur est probablement déjà connu pour commencer. Sinon, suivez-le jusqu'à la source. Il y a des pistes de données partout.
26
Mark Buffalo