Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/trickster0/offensiverust
Escalada de PrivilegiosExplotaciónEvasión de IDS/IPSIngeniería InversaShellcodePost-ExplotaciónAnálisis de MalwareComando y ControlAprendizaje y EducaciónRed TeamingDesarrollo de PayloadsExplotación de Binarios
3.0k34321hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
GitHubtrickster0/offensiverust

OffensiveRust

Armamentización en Rust para Ejercicios de Red Team.

Ver Repositorio

OffensiveRust

OffensiveRust

Mis experimentos en convertir Rust en un arma para el desarrollo de implantes y operaciones ofensivas generales.

Tabla de contenidos

  • OffensiveRust
    • ¿Por qué Rust?
    • Ejemplos en este repositorio
    • Compilando los ejemplos
    • Compilando los ejemplos en este repositorio
    • Compilación cruzada
    • Optimizando ejecutables para tamaño
    • Errores en los que caí
    • Bibliotecas interesantes de Rust
    • Opsec
    • Otros proyectos que he hecho en Rust
    • Proyectos en Rust que pueden ser útiles

¿Por qué Rust?

  • Es más rápido que lenguajes como C/C++
  • Es un lenguaje multipropósito, con excelentes comunidades
  • Tiene un increíble sistema de gestión de dependencias integrado llamado Cargo
  • Está basado en LLVM, lo que lo convierte en un muy buen candidato para evadir la detección estática de AV
  • Compilación cruzada muy fácil a Windows desde *nix/MacOS, solo requiere instalar la cadena de herramientas mingw, aunque ciertas bibliotecas no se pueden compilar con éxito en otros SO.

Ejemplos en este repositorio

Compilando los ejemplos en este repositorio

Este repositorio no proporciona binarios, tendrás que compilarlos tú mismo.

Instalar Rust Simplemente descarga el binario e instálalo.

Este repositorio fue compilado en Windows 10, por lo que me ceñiría a eso. Como se mencionó, los binarios de OpenSSL tendrán problemas de dependencias que requerirán tener instalados OpenSSL y perl. Para el cliente/servidor TCP SSL recomiendo compilación estática debido a las dependencias en los hosts donde ejecutarás los binarios. Para crear un proyecto, ejecuta: cargo new <name> Esto creará automáticamente las carpetas estructuradas del proyecto con:```bash
project ├── Cargo.toml └── src └── main.rs

root@kitploit:~
Cargo.toml es el archivo que contiene las dependencias y la configuración para la compilación.
main.rs es el archivo principal que se compilará junto con cualquier directorio potencial que contenga bibliotecas.

Para compilar el proyecto, entra en el directorio del proyecto y ejecuta:  
`cargo build`

Esto usará tu cadena de herramientas predeterminada.
Si deseas compilar la versión final "release", ejecuta:  
`cargo build --release`

Para binarios estáticos, en la terminal antes del comando de compilación ejecuta:  
`"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"`  
`set RUSTFLAGS=-C target-feature=+crt-static`

En caso de que no te sea fácil leer mi código tal como está escrito,  
también puedes usar el comando siguiente dentro del directorio del proyecto para formatearlo de una mejor manera  
`cargo fmt`

Ciertos ejemplos podrían no compilar y darte algún error, ya que podría requerir una versión nightly  
de Rust con las características más recientes. Para instalarla solo haz:  
`rustup default nightly`  



El lugar más fácil para encontrar las dependencias o [Crates](https://crates.io/) como se les llama.

## Cross Compiling

La compilación cruzada requiere seguir las instrucciones [aquí](https://rust-lang.github.io/rustup/cross-compilation.html)
Instalando diferentes cadenas de herramientas, puedes compilar de forma cruzada con el siguiente comando  
`cargo build --target <toolchain>`  

Para ver las cadenas de herramientas instaladas en tu sistema ejecuta:  
`rustup toolchain list`  

Para verificar todas las cadenas de herramientas disponibles que puedes instalar en tu sistema ejecuta:  
`rustup target list`  

Para instalar una nueva cadena de herramientas ejecuta:  
`rustup target add <toolchain_name>`  


## Optimizing executables for size

Este [repositorio](https://github.com/johnthagen/min-sized-rust) contiene muchas opciones de configuración e ideas sobre cómo reducir el tamaño del archivo.
Los binarios estáticos suelen ser bastante grandes.

## Pitfalls I found myself falling into

Cuidado con los bytes \0, no los olvides para las cadenas en memoria, pasé mucho tiempo pero windbg siempre ayudó a resolverlo.


## Interesting Rust libraries

- WINAPI  
- [WINAPI2](https://github.com/MauriceKayser/rs-winapi2)  
- Windows - Este es el oficial de Microsoft con el que no he jugado mucho

## OPSEC

- Aunque Rust tiene buenas ventajas, es bastante difícil acostumbrarse a él y no es muy intuitivo.  
- La generación de shellcode es otro problema debido a LLVM. He encontrado algunas formas de abordar esto.  
[Donut](https://github.com/TheWover/donut) a veces genera shellcode que funciona, pero dependiendo de cómo esté hecho el proyecto, podría no hacerlo.  
En general, para la generación de shellcode, las herramientas que se crean deben estar hechas para alojar todo el código en el segmento .text,
lo que lleva a este increíble [repositorio](https://github.com/b1tg/rust-windows-shellcode).
Hay un ejemplo de shellcode en este proyecto que puede mostrarte cómo estructurar tu código para una generación exitosa de shellcode.  
Además, este proyecto también tiene un generador de shellcode que toma el segmento .text de un binario y
extrae el shellcode después de ejecutar algunos parches.  
Este proyecto toma el binario de una ubicación específica, así que hice un fork que recibe la ruta del binario como argumento [aquí](https://github.com/trickster0/rust-windows-shellcode-custom).  
- Incluso si eliminas todos los símbolos de depuración, Rust aún puede mantener referencias a tu directorio home en el binario. La única forma que he encontrado para eliminar esto es pasar la siguiente bandera: `--remap-path-prefix {tu directorio home}={algún identificador aleatorio}`. Puedes usar variables bash para obtener tu directorio home y generar un marcador de posición aleatorio: `--remap-path-prefix "$HOME"="$RANDOM"`. (Por [Yamakadi](https://github.com/yamakadi))
- Aunque para lo anterior hay otra forma de eliminar información sobre el directorio home añadiendo al principio de Cargo.toml  
`cargo-features = ["strip"]` .  
Dado que Rust por defecto deja muchas cosas como cadenas en el binario, normalmente uso este [cargo.toml](../master/cargo.toml) para evitarlas y también reducir el tamaño  
con el comando de compilación   
`cargo build --release -Z build-std=std,panic_abort -Z build-std-features=panic_immediate_abort --target x86_64-pc-windows-msvc`
- [Yamakadi] también señaló que dependiendo de las bibliotecas importadas, el stripping no siempre es consistente para ocultar el directorio home, por lo que una combinación de su solución para reasignar la ruta y usar el cargo anterior funcionaría mejor. Intenta estar atento y revisa tus binarios antes de ejecutarlos en tus compromisos para detectar posibles cadenas que no se hayan eliminado correctamente.

## Other projects I have have made in Rust

- [UDPlant](https://github.com/trickster0/UDPlant) - Básicamente una reverse shell UDP  
- [EDR Detector](https://github.com/trickster0/EDR_Detector) - Detecta los EDR del sistema instalado según los archivos .sys instalados  
- [Lenum](https://github.com/trickster0/Lenum) - Una herramienta simple de enumeración Unix

## Projects in Rust that can be hepfull 

- [houdini](https://github.com/yamakadi/houdini) - Ayuda a que tu ejecutable se autodestruya
Descargar herramienta
ArchivoDescripción
Allocate_With_SyscallsUsa funciones de NTDLL directamente con la biblioteca ntapi
Create_DLLCrea una DLL y muestra un msgbox, Rust no soporta esto completamente, por lo que las cosas pueden volverse extrañas ya que las DLL de Rust no tienen función main
DeviceIoControlAbre un manejador de controlador y ejecuta DeviceIoControl
EnableDebugPrivilegesHabilitar SeDebugPrivilege en el proceso actual
Shellcode_Local_injectEjecuta shellcode directamente en el proceso local mediante la conversión de puntero
Execute_With_CMDEjecuta cmd pasando un comando a través de Rust
ImportedFunctionCallImporta minidump de dbghelp y lo ejecuta
Kernel_Driver_ExploitExploit de controlador de kernel para un desbordamiento de búfer simple
Named_Pipe_ClientCliente de tubería con nombre
Named_Pipe_ServerServidor de tubería con nombre
PEB_WalkResolver e invocar APIs de Windows dinámicamente
Process_Injection_CreateThreadInyección de procesos en un proceso en ejecución con CreateThread
Process_Injection_CreateRemoteThreadInyección de procesos en un proceso remoto con CreateRemoteThread
Process_Injection_Self_EnumSystemGeoIDAutoinyector que utiliza la llamada a la API EnumSystemsGeoID para ejecutar shellcode.
UnhookingLlamadas de desenganche
asm_syscallObtener la dirección del PEB mediante asm
base64_system_enumCodificación/decodificación de cadenas en Base64
http-https-requestsSolicitudes HTTP/S ignorando la verificación de certificados para GET/POST
patch_etwParchear ETW
ppid_spoofSuplantar el proceso padre para el proceso creado
tcp_ssl_clientCliente TCP con SSL que ignora la verificación de certificados (Requiere tener instalados openssl y perl para compilar)
tcp_ssl_serverServidor TCP, con parámetro de puerto (Requiere tener instalados openssl y perl para compilar)
wmi_executeEjecuta una consulta WMI para obtener los AV/EDR en el host
Windows.h+ BindingsEste archivo contiene estructuras de Windows.h más LDR, PEB, etc. personalizados completos que no están documentados oficialmente por Microsoft, agregue al principio de su archivo include!("../bindings.rs");
UUID_Shellcode_ExecutionPlanta shellcode desde un array UUID en el espacio del montón y usa el callback EnumSystemLocalesA para ejecutar el shellcode.
AMSI BypassBypass de AMSI en el proceso local
Injection_AES_LoaderInyección NtTestAlert con descifrado AES
Litcrypt_String_EncryptionUsando la crate Litcrypt para cifrar cadenas literales en reposo y en memoria para derrotar el AV estático.
Api HookingApi Hooking usando la librería detour
memfd_createEjecutar payloads desde memoria usando la técnica memfd_create (para Linux)
RC4_EncryptionShellcode descifrado con RC4
Steal TokenRobar token de un proceso
Keyboard HookingKeylogging mediante hooking del teclado con SetWindowsHookEx
memN0ps arsenal: shellcode_runner_classic-rsClásico runner/injector de shellcode usando ntapi
memN0ps arsenal: dll_injector_classic-rsInyección clásica de DLL usando windows-sys
memN0ps arsenal: module_stomping-rsModule Stomping / Module Overloading / DLL Hollowing usando windows-sys
memN0ps arsenal: obfuscate_shellcode-rsOfuscador simple de shellcode con XOR y AES
memN0ps arsenal: process_hollowing-rsProcess Hollowing usando ntapi
memN0ps arsenal: rdi-rsInyección reflectante de DLL usando windows-sys
memN0ps: eagle-rsRusty Rootkit: Controlador de kernel de Windows en Rust para Red Teamers usando winapi y ntapi
memN0ps: psyscalls-rsLibrería Rusty Parallel Syscalls usando winapi
memN0ps: mmapper-rsMapeador manual Rusty usando winapi
memN0ps: srdi-rsInyección reflectante de DLL en shellcode Rusty usando windows-sys
memN0ps: mordor-rs - freshycalls_syswhispersLibrería Rusty FreshyCalls / SysWhispers1 / SysWhispers2 / SysWhispers3 usando windows-sys
memN0ps: mordor-rs - hells_halos_tartarus_gateLibrería Rusty Hell's Gate / Halo's Gate / Tartarus' Gate usando windows-sys
memN0ps: pemadness-rsLibrería Rusty de análisis de ejecutables portátiles (PE Parsing Library) usando windows-sys
memN0ps: mimiRustMimikatz hecho en Rust por @ThottySploit. El autor original eliminó su cuenta de GitHub, por lo que se ha subido para uso de la comunidad.
memN0ps and trickster0: ekko-rsRusty Ekko - Ofuscación de sueño en Rust usando windows-sys.