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