samedi 8 mars 2014

Malware et mutex

Les mutex sont un mécanisme de protection de données partagées, si deux threads concurrents essayaient d'accéder en même temps (avec le parallélisme d'exécution) à une même donnée, alors la donnée risque d'être corrompue, et le code deviendra buggé.
Pour cela on utilise un mutex afin de "synchroniser" l'accès aux données par les threads, si le thread A veut lire une valeur à une certaine adresse mémoire, il va "vérouiller" (lock) le mutex correspondant, empêchant tout autre thread B tentant de le vérouiller à son tour de continuer son exécution, faire son affaire avec la valeur, et libérer le mutex, afin qu'un éventuel thread B concurrent puisse prendre le contrôle du mutex et utiliser la donnée.

Voilà pour la théorie de programmation concurrente, les malwares multithreadés utilisent également ce système pour éviter d'avoir des problèmes de synchronisation, cependant en plus de cela, les mutex sont utilisés par ces malwares pour éviter d'infecter deux fois la même cible.
En effet le logiciel va au démarrage vérifier si un mutex global est présent sur le système (il identifie le mutex avec un nom spécial), si c'est le cas le programme malveillant s'interrompt car la machine est déjà infectée, sinon il crée ce mutex et continue son infection.

Il est possible d'analyser les mutex (aussi appelés "mutant") présents sur le système afin de vérifier si une machine est infectée ou non par une menace donnée.

Aucun commentaire:

Enregistrer un commentaire