
Crear malware DRM anti-copia
Este repositorio utiliza una técnica para modificar la Tabla de Direcciones de Importación (IAT) de un programa, reemplazando los nombres de las funciones importadas por sus ordinales correspondientes, lo que da como resultado un binario que importa funciones exclusivamente mediante ordinales.
Esta técnica reduce las posibilidades de que el binario sea analizado con éxito por los sistemas sandbox debido al desajuste en los valores de ordinales en los diferentes sistemas. Este contraste hace que el Cargador de Windows no logre localizar la dirección correcta de la función o que recupere una función incorrecta, lo que provoca que el binario se rompa en el entorno sandbox. Por último, esta técnica hace que sea más difícil realizar ingeniería inversa al binario.
Este repositorio incluye dos proyectos:
Lee un archivo PE del disco y sobrescribe sus funciones importadas por nombre con sus valores ordinales. El programa generado solo se ejecutará en un sistema donde las funciones importadas tengan los mismos valores ordinales que el sistema que lo generó.
TechTestBuilder.exe para generar mimikatzDRM.exe, que es mimikatz.exe pero con funciones importadas por ordinales.

mimikatzDRM.exe en un sistema diferente al que se usó para generarlo lanzará el siguiente error.

Este proyecto utiliza la propia técnica DRM cuando se ejecuta por primera vez. Esto significa que este binario no puede ejecutarse en otras máquinas con tanta facilidad. OrdinalDRMBin.exe aplica los siguientes pasos:
Comprueba si el programa local tiene funciones importadas por nombre; si no es así, omitirá aplicar el parche IAT.
Se lee a sí mismo desde el disco y convierte todas las funciones importadas por nombre para que sean importadas por ordinal.
Se elimina a sí mismo del disco.
Escribe la nueva imagen donde todas las funciones se importan por ordinal.
OrdinalDRMBin.exe sin ejecutar. Nótese que las funciones se importan por nombre.

OrdinalDRMBin.exe después de ejecutarse. Nótese que ahora las funciones se importan por sus ordinales.

Como se mencionó, los sistemas que tengan los valores ordinales exactos para todas las funciones importadas de la implementación generada podrán ejecutar el binario protegido. Sin embargo, las posibilidades de que esto ocurra pueden reducirse importando funciones de distintos DLL. El mismo enfoque utilizado en el módulo IAT Camouflage puede usarse con este fin.