Tutoriales

Armamento oxidado de la participación del equipo rojo

Óxido ofensivo, estoy experimentando con el armamento de Rust para el desarrollo de implantes y operaciones ofensivas generales.

¿Por qué se oxida?

  • Es más rápido que lenguajes como C/C++
  • Es un lenguaje polivalente con una gran comunidad.
  • Tiene una increíble gestión de compilación de dependencias integrada llamada Cargo
  • Se basa en LLVM, lo que lo convierte en un muy buen candidato para eludir la detección de AV estático.
  • Compilación cruzada súper fácil de *nix/MacOS a Windows, simplemente instálelo mingw cadena de herramientas, aunque algunas bibliotecas no se compilan correctamente en otros sistemas operativos.

Ejemplos en este repositorio

documentodescribir
Asignar_con_llamadas al sistemaUtiliza funciones NTDLL directamente con la biblioteca ntapi
crear_DLLCree la DLL y abra un msgbox, Rust no es totalmente compatible con esto, por lo que las cosas pueden ponerse raras ya que las DLL de Rust no tienen una función principal
Dispositivo IoControlAbra el identificador del controlador y ejecute DeviceIoControl
Habilitar privilegios de depuraciónHabilite SeDebugPrivilege en el proceso actual
Shellcode_Local_injectToneladaEjecute shellcode directamente en el proceso local convirtiendo el puntero
Ejecutar_con_CMDEjecute cmd pasando comandos a través de Rust
llamada de función de importaciónImporta minidump desde dbghelp y lo ejecuta
Kernel_Driver_ExploitEl controlador del kernel aprovecha el desbordamiento de búfer simple
Cliente_de_tubería_nombradoCliente de canalizaciones con nombre
Named_Pipe_Serverservidor de canalización con nombre
Process_Injection_CreateThreadInyección de procesos en un proceso remoto usando CreateRemoteThread
desacoplamientodescolgar la llamada
asm_syscallObtenga la dirección PEB a través de asm
base64_system_enumCadena de codificación/decodificación Base64
http-https-solicitudSolicitudes HTTP/S a través de comprobaciones de certificados ignorando GET/POST
patch_etwParche ETW
ppid_spoofFalsificación del padre de un proceso ya creado
tcp_ssl_clienteCliente TCP con SSL que ignora las comprobaciones de certificados (requiere que se instalen openssl y perl para la compilación)
servidor_tcp_sslServidor TCP con parámetro de puerto (necesita instalar openssl y perl para compilar)
wmi_ejecutarRealice una consulta WMI para obtener AV/EDR en el host
Enlaces de Windows.h+Este archivo contiene la estructura de Windows.h y LDR, PEB, etc. personalizados completos. No documentado oficialmente por Microsoft, agregue include!(«../bindings.rs»); en la parte superior del archivo
UUID_Shellcode_EjecuciónRellene el espacio de almacenamiento dinámico con el shellcode en la matriz UUID y use EnumSystemLocalesA Devolución de llamada para ejecutar shellcode.

Compile los ejemplos en este repositorio

LEER  Cómo instalar la GUI de Openbox en Alpine Linux

Este repositorio no proporciona binarios, debe compilarlos usted mismo.

Instalar óxido
Simplemente descargue los binarios e instálelos.

Este repositorio está compilado en Windows 10, así que me quedaré con él. Como se mencionó anteriormente, los archivos binarios de OpenSSL tienen problemas de dependencia que requieren la instalación de OpenSSL y perl. Para el cliente/servidor TCP SSL, recomiendo usar una compilación estática debido a la dependencia del host en el que ejecutará el binario. Para crear un proyecto, ejecute:
cargo new Esto creará automáticamente carpetas de proyectos estructurados:

proyecto
├── Cargo.toml
└── fuente
└── principal.rs

Cargo.toml es el archivo que contiene las dependencias y la configuración de compilación. main.rs es el archivo principal que se compilará con cualquier directorio potencial que contenga la biblioteca.

Para compilar el proyecto, vaya al directorio del proyecto y ejecute:
cargo build

Esto utilizará su cadena de herramientas predeterminada. Si desea compilar la versión final de «lanzamiento», ejecute:
cargo build --release

Para binarios estáticos, antes de ejecutar el comando de compilación en la terminal:
"C:Program Files (x86)Microsoft Visual Studio2019CommunityVCAuxiliaryBuildvcvars64.bat"
set RUSTFLAGS=-C target-feature=+crt-static

En caso de que no creas que es fácil leer mi código de la forma en que lo escribo,
También puede formatearlo de una mejor manera usando el siguiente comando en el directorio de su proyecto
cargo fmt

Es posible que algunos ejemplos no se compilen y le den algunos errores, ya que puede requerir todas las noches.
Cree Rust con las funciones más recientes. Para instalarlo, solo haz lo siguiente:
rustup default nightly

El lugar más fácil para encontrar dependencias o cajas.

compilación cruzada

La compilación cruzada debe seguir las instrucciones aquí instalando una cadena de herramientas diferente, puede usar el siguiente comando para compilar de forma cruzada
cargo build --target

Para ver las cadenas de herramientas instaladas en su sistema:
rustup toolchain list

Para verificar todas las cadenas de herramientas disponibles que puede instalar en su sistema:
rustup target list

Para instalar una nueva cadena de herramientas:
rustup target add

Optimizar el tamaño del ejecutable

Este repositorio contiene muchas opciones de configuración e ideas para reducir el tamaño del archivo. Los binarios estáticos suelen ser grandes.

La trampa en la que me encontré

Tenga cuidado con bytes, no los olvide como cadenas en la memoria, me llevó mucho tiempo, pero windbg siempre me ayuda.

Interesante biblioteca de Rust

Seguridad operativa

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba