
Créez un malware DRM anti-copie
Ce dépôt utilise une technique pour modifier la table d'adresses d'importation (IAT) d'un programme en remplaçant les noms des fonctions importées par leurs ordinaux correspondants, ce qui donne un binaire qui n'importe les fonctions que par ordinaux.
Cette technique réduit les chances que le binaire soit analysé avec succès par les systèmes sandbox en raison de la non-concordance des valeurs d'ordinaux sur les différents systèmes. Ce contraste amène le chargeur Windows (Windows Loader) à ne pas localiser l'adresse correcte de la fonction ou à récupérer une fonction incorrecte, ce qui conduit à un binaire cassé dans l'environnement sandbox. Enfin, cette technique rend la rétro-ingénierie du binaire plus difficile.
Ce dépôt comprend deux projets :
Lit un fichier PE depuis le disque et remplace ses fonctions importées par nom par leurs valeurs d'ordinaux. Le programme généré ne s'exécutera que sur un système où les fonctions importées ont les mêmes valeurs d'ordinaux que le système qui l'a généré.
TechTestBuilder.exe pour générer mimikatzDRM.exe, qui est mimikatz.exe mais avec des fonctions importées par ordinaux.

mimikatzDRM.exe sur un système différent de celui utilisé pour le générer entraînera l'erreur suivante.

Ce projet utilise la technique DRM elle-même lors de sa première exécution. Cela signifie que ce binaire ne peut pas être exécuté aussi facilement sur d'autres machines. OrdinalDRMBin.exe applique les étapes suivantes :
Vérifie si le programme local a des fonctions importées par nom ; si ce n'est pas le cas, il ignore l'application du patch IAT.
Se lit lui-même depuis le disque et convertit toutes les fonctions importées par nom en fonctions importées par ordinal.
Se supprime lui-même du disque.
Écrit la nouvelle image où toutes les fonctions sont importées par ordinal.
OrdinalDRMBin.exe sans qu'il soit exécuté. Remarquez que les fonctions sont importées par nom.

OrdinalDRMBin.exe après son exécution. Remarquez que les fonctions sont désormais importées par leurs ordinaux.

Comme mentionné, les systèmes qui possèdent les valeurs d'ordinaux exactes pour toutes les fonctions importées de l'implémentation générée pourront exécuter le binaire protégé. Cependant, les chances que cela se produise peuvent être réduites en important des fonctions depuis différentes DLL. La même approche utilisée dans le module IAT Camouflage peut être employée à cette fin.