
Cargador reflexivo definido por el usuario basado en Rust para payloads de Cobalt Strike. Evita las páginas de memoria RWX para seguridad OPSEC. Incluye una herramienta extractora para la extracción de la sección del cargador.

Un cargador reflectante definido por el usuario (User-Defined Reflective Loader) para Cobalt Strike, escrito íntegramente en Rust. Solo quería averiguar lo difícil que sería construirlo. Resulta que no es tan difícil. Puede que añada una función de ofuscación de suspensión (sleep obfuscation) en algún momento. Por ahora, es solo un cargador básico sin características especiales. La única característica de "seguridad opsec" es que no utiliza páginas RWX en ningún momento.
Descarga la versión publicada y carga el archivo .cna.
Puedes compilarlo tú mismo. Asegúrate de usar la cadena de herramientas MSVC y el perfil release. Puedes usar el extractor incluido para extraer la sección .text del cargador. Por ejemplo:
cd extractor
cargo run --release -- ../target/release/crabloader.exe ../bin/crabloader.bin
Usé este perfil para las pruebas: https://github.com/BC-SECURITY/Malleable-C2-Profiles/blob/master/APT/apt1_virtuallythere.profile
No contiene ajustes para cambiar los indicadores de memoria, solo cosas de red. Así que supongo que todos los valores predeterminados funcionan. Si cambias la cabecera MZ con magic_mz_x64, el cargador no funcionará, ya que busca esa cabecera.