
Curso práctico de desarrollo de malware en Windows: hashing de API, carga lateral de DLL, ejecución de shellcode, manipulación de PE, alojamiento de payloads y laboratorios de entrega.
Desktop development with C++ al instalarAdicionalmente (opcional), para una experiencia de ingeniería inversa más completa, configura los símbolos:
setx _NT_SYMBOL_PATH c:\Symbols;srv*c:\Symbols*https://msdl.microsoft.com/download/symbols
mkdir \symbols
Abre PMD.sln dentro de Visual Studio.
Selecciona el proyecto setup y asegúrate de poder:
a. Compilar el proyecto
b. Ver la instrucción de impresión de depuración dentro de DebugView++.
Actualiza las banderas del compilador y del enlazador del proyecto template para manipular las entradas de la IAT y otras propiedades de PE.
a. Familiarízate con la resolución dinámica de API y la documentación de MSDN.
b. ¿Hay alguna otra propiedad que resalte? Si ejecutas Strings.exe contra el binario, ¿resalta alguna cadena?
c. ¿Puedes eliminarlas/actualizarlas?
Utiliza cualquier herramienta de tu elección para completar el ejercicio (p. ej. dumpbin/PE Bear). Se ha proporcionado un envoltorio alrededor de pefile en scripts\props.py (asegúrate de instalar los requisitos).
Descarga algunas muestras de malware desde VXUG
a. ¿Cuáles son las principales diferencias entre ejecutables benignos y maliciosos?
b. ¿Cuáles son las principales diferencias entre nuestro binario y los ejecutables benignos?
El algoritmo de hashing de API actual utilizado es fnv1a.
solution y llama a MessageBoxA utilizando el framework de hashing de API.Descarga Cisco Webex (https://www.webex.com/downloads.html)
Encuentra CiscoCollabHost y observa qué DLLs se cargan
Abre CiscoCollabHost en Ghidra e identifica diferentes formas de lograr ejecución de código mediante sideloading
Edita dll_template para hacer sideload de tu binario objetivo. Verifica que puedes ver la cadena de depuración en DebugView++.
Actualiza LastWriteTime y CreationTime de dll_template.dll para que coincidan con el DLL objetivo.
Compila y ejecuta el proyecto de utilidad.
a. Adicionalmente, considera ejecutarlo en tu sistema anfitrión.
Copia el DLL identificado al directorio x64/{Debug,Release} y actualiza el código del cargador.
Actualiza execute_sc para ejecutar tu shellcode con una función diferente utilizando el framework de hashing de API.
Regístrate en un proveedor de almacenamiento en la nube (p. ej. AWS/CloudFlare)
Empaqueta tu payload y súbelo
a. Adicionalmente, investiga formas de limitar/auditar el acceso a las descargas
Toma una instantánea de tu VM
Revierte a la VM base y ejecuta tu escenario completo de "entrega"
.github\workflows\build.yml para realizar procesamiento adicional previo/posterior como quieras que te ahorre tiempo. Aquí tienes algunas ideas:
props.py y valida/incluye la salidaLastWriteTime y CreationTime para que coincidan con un objetivo