Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
OffensiveRust — Weaponização em Rust para Engajamentos de Red Team. | Kitploit
Ferramentas/GitHubGitHub/trickster0/offensiverust
Escalada de PrivilégiosExploraçãoEvasão de IDS/IPSEngenharia ReversaShellcodePós-ExploraçãoAnálise de MalwareComando e ControleAprendizado e EducaçãoRed TeamingDesenvolvimento de PayloadsExploração de Binários
3.0k34344há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHubtrickster0/offensiverust

OffensiveRust

Weaponização em Rust para Engajamentos de Red Team.

Ver Repositório

OffensiveRust

OffensiveRust

Meus experimentos em armazenar Rust para desenvolvimento de implantes e operações ofensivas em geral.

Tabela de Conteúdos

  • OffensiveRust
    • Por que Rust?
    • Exemplos neste repositório
    • Compilando os exemplos
    • Compilando os exemplos neste repositório
    • Compilação cruzada
    • Otimizando executáveis para tamanho
    • Armadilhas que encontrei
    • Bibliotecas Rust Interessantes
    • Opsec
    • Outros projetos que fiz em Rust
    • Projetos em Rust que podem ser úteis

Por que Rust?

  • É mais rápido que linguagens como C/C++
  • É uma linguagem multi-propósito, com excelentes comunidades
  • Possui um incrível gerenciador de dependências integrado chamado Cargo
  • É baseado em LLVM, o que o torna um excelente candidato para contornar a detecção estática de AV
  • Compilação cruzada super fácil para Windows a partir de *nix/MacOS, requer apenas a instalação do toolchain mingw, embora algumas bibliotecas não possam ser compiladas com sucesso em outros SOs.

Exemplos neste repositório

Compilando os exemplos neste repositório

Este repositório não fornece binários, você terá que compilá-los você mesmo.

Instale o Rust
Simplesmente baixe o binário e instale.

Este repositório foi compilado no Windows 10, então eu recomendo manter-se nele. Como mencionado, binários OpenSSL terão problemas de dependência que exigirão a instalação de OpenSSL e perl. Para o cliente/servidor TCP SSL, recomendo build estático devido às dependências nos hosts onde você executará os binários. Para criar um projeto, execute:
cargo new <nome> Isso criará automaticamente as pastas do projeto estruturadas com:```bash
project ├── Cargo.toml └── src └── main.rs

root@kitploit:~
Cargo.toml é o arquivo que contém as dependências e a configuração para a compilação.
main.rs é o arquivo principal que será compilado junto com quaisquer diretórios potenciais que contenham bibliotecas.

Para compilar o projeto, vá até o diretório do projeto e execute:  
`cargo build`

Isto usará sua toolchain padrão.
Se quiser compilar a versão final "release", execute:  
`cargo build --release`

Para binários estáticos, no terminal antes do comando de compilação execute:  
`"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"`  
`set RUSTFLAGS=-C target-feature=+crt-static`

Caso não seja fácil para você ler meu código da forma como está escrito,  
você também pode usar o comando abaixo dentro do diretório do projeto para formatá-lo de uma maneira melhor:  
`cargo fmt`

Certos exemplos podem não compilar e causar algum erro, pois podem exigir uma versão nightly  
do Rust com as funcionalidades mais recentes. Para instalá-la, basta fazer:  
`rustup default nightly`  

O lugar mais fácil para encontrar as dependências ou [Crates](https://crates.io/) como são chamadas.

## Compilação Cruzada

A compilação cruzada requer seguir as instruções [aqui](https://rust-lang.github.io/rustup/cross-compilation.html).
Instalando diferentes toolchains, você pode compilar de forma cruzada com o comando abaixo:  
`cargo build --target <toolchain>`  

Para ver as toolchains instaladas no seu sistema, faça:  
`rustup toolchain list`  

Para verificar todas as toolchains disponíveis que você pode instalar no seu sistema, faça:  
`rustup target list`  

Para instalar uma nova toolchain, faça:  
`rustup target add <toolchain_name>`  

## Otimizando executáveis para tamanho

Este [repositório](https://github.com/johnthagen/min-sized-rust) contém muitas opções de configuração e ideias sobre como reduzir o tamanho do arquivo.
Binários estáticos costumam ser bastante grandes.

## Armadilhas nas quais me vi caindo

Cuidado com bytes \0, não os esqueça para strings na memória; passei muito tempo nisso, mas o windbg sempre ajudou a resolver.


## Bibliotecas interessantes do Rust

- WINAPI  
- [WINAPI2](https://github.com/MauriceKayser/rs-winapi2)  
- Windows - Esta é a oficial da Microsoft com a qual não brinquei muito

## OPSEC

- Embora Rust tenha boas vantagens, é bastante difícil se acostumar com ele e não é muito intuitivo.  
- A geração de shellcode é outro problema devido ao LLVM. Encontrei algumas maneiras de abordar isso.  
[Donut](https://github.com/TheWover/donut) às vezes gera shellcode que funciona, mas dependendo de como o projeto é feito, pode não funcionar.  
Em geral, para geração de shellcode, as ferramentas que são feitas devem ser feitas para hospedar todo o código no segmento .text,
o que leva a este incrível [repositório](https://github.com/b1tg/rust-windows-shellcode).
Há um exemplo de shellcode neste projeto que pode mostrar como estruturar seu código para uma geração de shellcode bem-sucedida.  
Além disso, este projeto também possui um gerador de shellcode que captura o segmento .text de um binário e
despeja o shellcode após executar alguns patches.  
Este projeto captura o binário de um local específico, então fiz um fork que recebe o caminho do binário como argumento [aqui](https://github.com/trickster0/rust-windows-shellcode-custom).  
- Mesmo se você remover todos os símbolos de depuração, Rust ainda pode manter referências ao seu diretório home no binário. A única maneira que encontrei para remover isso é passar a seguinte flag: `--remap-path-prefix {seu diretório home}={algum identificador aleatório}`. Você pode usar variáveis bash para obter seu diretório home e gerar um placeholder aleatório: `--remap-path-prefix "$HOME"="$RANDOM"`. (Por [Yamakadi](https://github.com/yamakadi))
- Embora para o acima exista outra maneira de remover informações sobre o diretório home, adicionando no topo do Cargo.toml  
`cargo-features = ["strip"]` .  
Como o Rust, por padrão, deixa muitas coisas como strings no binário, geralmente uso este [cargo.toml](../master/cargo.toml) para evitá-las e também reduzir o tamanho  
com o comando de compilação  
`cargo build --release -Z build-std=std,panic_abort -Z build-std-features=panic_immediate_abort --target x86_64-pc-windows-msvc`
- [Yamakadi] também apontou que, dependendo das bibliotecas importadas, a remoção nem sempre é consistente para ocultar o diretório home, então uma combinação da solução dele para remapear o caminho e usar o cargo acima funcionaria melhor. Tente estar ciente e verifique seus binários antes de executá-los em seus engajamentos para possíveis strings que não são removidas adequadamente.

## Outros projetos que fiz em Rust

- [UDPlant](https://github.com/trickster0/UDPlant) - Basicamente um reverse shell UDP  
- [EDR Detector](https://github.com/trickster0/EDR_Detector) - Detecta os EDRs do sistema instalado de acordo com os arquivos .sys instalados  
- [Lenum](https://github.com/trickster0/Lenum) - Uma ferramenta simples de enumeração Unix

## Projetos em Rust que podem ser úteis 

- [houdini](https://github.com/yamakadi/houdini) - Ajuda a tornar seu executável auto-excluível
Baixar ferramenta
ArquivoDescrição
Allocate_With_SyscallsUtiliza funções NTDLL diretamente com a biblioteca ntapi
Create_DLLCria DLL e exibe uma msgbox, Rust não suporta isso totalmente, então as coisas podem ficar estranhas, já que DLLs Rust não têm uma função main
DeviceIoControlAbre handle do driver e executa DeviceIoControl
EnableDebugPrivilegesHabilita SeDebugPrivilege no processo atual
Shellcode_Local_injectExecuta shellcode diretamente no processo local através de ponteiro
Execute_With_CMDExecuta cmd passando um comando via Rust
ImportedFunctionCallImporta minidump do dbghelp e executa
Kernel_Driver_ExploitExploit de driver de kernel para um buffer overflow simples
Named_Pipe_ClientCliente de Pipe Nomeado
Named_Pipe_ServerServidor de Pipe Nomeado
PEB_WalkResolve e invoca APIs do Windows dinamicamente
Process_Injection_CreateThreadInjeção de processo em processo em execução com CreateThread
Process_Injection_CreateRemoteThreadInjeção de processo em processo remoto com CreateRemoteThread
Process_Injection_Self_EnumSystemGeoIDAuto-injetor que usa a chamada de API EnumSystemsGeoID para executar shellcode.
UnhookingChamadas de desvinculação
asm_syscallObtenção do endereço PEB via asm
base64_system_enumCodificação/decodificação de strings Base64
http-https-requestsRequisições HTTP/S ignorando verificação de certificado para GET/POST
patch_etwPatch no ETW
ppid_spoofSpoof do processo pai para processo criado
tcp_ssl_clientCliente TCP com SSL que ignora verificação de certificado (Requer openssl e perl instalados para compilação)
tcp_ssl_serverServidor TCP, com parâmetro de porta (Requer openssl e perl instalados para compilação)
wmi_executeExecuta consulta WMI para obter os AVs/EDRs no host
Windows.h+ BindingsEste arquivo contém estruturas do Windows.h mais LDR, PEB, etc. personalizados e não documentados oficialmente pela Microsoft. Adicione no topo do seu arquivo include!("../bindings.rs");
UUID_Shellcode_ExecutionPlanta shellcode de um array UUID no espaço heap e usa o callback EnumSystemLocalesA para executar o shellcode.
AMSI BypassBypass do AMSI no Processo Local
Injection_AES_LoaderInjeção NtTestAlert com descriptografia AES
Litcrypt_String_EncryptionUsando o crate Litcrypt para criptografar strings literais em repouso e em memória para derrotar AV estático.
Api HookingHooking de API usando a biblioteca detour
memfd_createExecuta payloads da memória usando a técnica memfd_create (Para Linux)
RC4_EncryptionShellcode descriptografado com RC4
Steal TokenRoubo de Token de Processo
Keyboard HookingKeylogging por hooking do teclado com SetWindowsHookEx
memN0ps arsenal: shellcode_runner_classic-rsRunner/injetor clássico de shellcode usando ntapi
memN0ps arsenal: dll_injector_classic-rsInjeção clássica de DLL usando windows-sys
memN0ps arsenal: module_stomping-rsModule Stomping / Module Overloading / DLL Hollowing usando windows-sys
memN0ps arsenal: obfuscate_shellcode-rsObfuscador simples de shellcode XOR e AES
memN0ps arsenal: process_hollowing-rsProcess Hollowing usando ntapi
memN0ps arsenal: rdi-rsInjeção reflexiva de DLL usando windows-sys
memN0ps: eagle-rsRootkit Rusty: Driver de kernel do Windows em Rust para Red Teamers usando winapi e ntapi
memN0ps: psyscalls-rsBiblioteca Rusty de syscalls paralelas usando winapi
memN0ps: mmapper-rsMapeador manual Rusty usando winapi
memN0ps: srdi-rsInjeção reflexiva de shellcode DLL Rusty usando windows-sys
memN0ps: mordor-rs - freshycalls_syswhispersBiblioteca Rusty FreshyCalls / SysWhispers1 / SysWhispers2 / SysWhispers3 usando windows-sys
memN0ps: mordor-rs - hells_halos_tartarus_gateBiblioteca Rusty Hell's Gate / Halo's Gate / Tartarus' Gate usando windows-sys
memN0ps: pemadness-rsBiblioteca Rusty de parsing de Portable Executable (Biblioteca de Parsing PE) usando windows-sys
memN0ps: mimiRustMimikatz feito em Rust por @ThottySploit. O autor original deletou sua conta no GitHub, então foi enviado para uso da comunidade.
memN0ps e trickster0: ekko-rsRusty Ekko - Ofuscação de sono em Rust usando windows-sys.