Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
OffensiveRust — Armement en Rust pour les engagements d'équipe rouge. | Kitploit
Outils/GitHubGitHub/trickster0/offensiverust
Escalade de PrivilègesExploitationÉvasion IDS/IPSRétro-ingénierieShellcodePost-ExploitationAnalyse de MalwareCommandement et ContrôleApprentissage et ÉducationRed TeamingDéveloppement de Charges UtilesExploitation de Binaires
3.0k34319il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
GitHubtrickster0/offensiverust

OffensiveRust

Armement en Rust pour les engagements d'équipe rouge.

Voir le dépôt

OffensiveRust

OffensiveRust

Mes expérimentations dans l’armement de Rust pour le développement d’implantations et les opérations offensives générales.

Table des matières

  • OffensiveRust
    • Pourquoi Rust ?
    • Exemples de ce dépôt
    • Compiler les exemples de ce dépôt
    • Compilation croisée
    • Optimisation de la taille des exécutables
    • Pièges que j’ai rencontrés
    • Bibliothèques Rust intéressantes
    • Opsec
    • Autres projets que j’ai créés en Rust
    • Projets Rust qui peuvent être utiles

Pourquoi Rust ?

  • Il est plus rapide que des langages comme C/C++
  • C’est un langage polyvalent, bénéficiant d’excellentes communautés
  • Il dispose d’un fantastique système de gestion de dépendances intégré appelé Cargo
  • Il est basé sur LLVM, ce qui en fait un très bon candidat pour contourner la détection antivirus statique
  • La compilation croisée vers Windows depuis *nix/MacOS est très simple : il suffit d’installer la chaîne d’outils mingw, même si certaines bibliothèques ne peuvent pas être compilées avec succès sur d’autres OS.

Exemples de ce dépôt

Compiler les exemples de ce dépôt

Ce dépôt ne fournit pas de binaires, vous devrez les compiler vous-même.

Installer Rust
Téléchargez simplement le binaire et installez-le.

Ce dépôt a été compilé sous Windows 10, je recommande donc de s’y tenir. Comme mentionné, les binaires OpenSSL auront des problèmes de dépendances qui nécessiteront l’installation d’OpenSSL et de perl. Pour le client/serveur TCP SSL, je recommande une compilation statique en raison des dépendances sur les hôtes où vous exécuterez les binaires. Pour créer un projet, exécutez :
cargo new <nom> Cela créera automatiquement les dossiers structurés du projet avec :```bash
project ├── Cargo.toml └── src └── main.rs

root@kitploit:~
Cargo.toml est le fichier qui contient les dépendances et la configuration pour la compilation.
main.rs est le fichier principal qui sera compilé avec les éventuels répertoires contenant des bibliothèques.

Pour compiler le projet, allez dans le répertoire du projet et exécutez :  
`cargo build`

Cela utilisera votre chaîne d'outils par défaut.
Si vous voulez construire la version finale "release", exécutez :  
`cargo build --release`

Pour les binaires statiques, avant la commande de compilation dans le terminal, exécutez :  
`"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"`  
`set RUSTFLAGS=-C target-feature=+crt-static`

Si vous trouvez qu'il n'est pas facile de lire mon code tel qu'il est écrit,  
vous pouvez également utiliser la commande ci-dessous dans le répertoire du projet pour le formater d'une meilleure manière  
`cargo fmt`

Certains exemples peuvent ne pas compiler et donner une erreur, car ils peuvent nécessiter une version  
nightly de Rust avec les fonctionnalités les plus récentes. Pour l'installer, faites simplement :  
`rustup default nightly`  



L'endroit le plus simple pour trouver les dépendances ou [Crates](https://crates.io/) comme on les appelle.

## Compilation croisée

La compilation croisée nécessite de suivre les instructions [ici](https://rust-lang.github.io/rustup/cross-compilation.html)
En installant différentes chaînes d'outils, vous pouvez compiler de manière croisée avec la commande ci-dessous  
`cargo build --target <toolchain>`  

Pour voir les chaînes d'outils installées sur votre système, faites :  
`rustup toolchain list`  

Pour vérifier toutes les chaînes d'outils disponibles que vous pouvez installer sur votre système, faites :  
`rustup target list`  

Pour installer une nouvelle chaîne d'outils, faites :  
`rustup target add <toolchain_name>`  


## Optimisation des exécutables pour la taille

Ce [repo](https://github.com/johnthagen/min-sized-rust) contient de nombreuses options de configuration et des idées pour réduire la taille du fichier.
Les binaires statiques sont généralement assez volumineux.

## Pièges dans lesquels je suis tombé

Attention aux octets \0, ne les oubliez pas pour les chaînes en mémoire, j'ai passé beaucoup de temps dessus mais windbg m'a toujours aidé à les résoudre.


## Bibliothèques Rust intéressantes

- WINAPI  
- [WINAPI2](https://github.com/MauriceKayser/rs-winapi2)  
- Windows - C'est celle officielle de Microsoft avec laquelle je n'ai pas beaucoup joué

## OPSEC

- Même si Rust a de bons avantages, il est assez difficile de s'y habituer et ce n'est pas très intuitif.  
- La génération de shellcode est un autre problème à cause de LLVM. J'ai trouvé quelques façons de l'aborder.  
[Donut](https://github.com/TheWover/donut) génère parfois du shellcode qui fonctionne, mais selon la façon dont le projet est fait, cela peut ne pas marcher.  
En général, pour la génération de shellcode, les outils créés doivent être conçus pour héberger tout le code dans le segment .text,
ce qui mène à cet incroyable [repo](https://github.com/b1tg/rust-windows-shellcode).
Il y a un exemple de shellcode dans ce projet qui peut vous montrer comment structurer votre code pour une génération réussie de shellcode.  
De plus, ce projet dispose également d'un générateur de shellcode qui récupère le segment .text d'un binaire et
déverse le shellcode après avoir exécuté quelques correctifs.  
Ce projet récupère le binaire à partir d'un emplacement spécifique, j'ai donc fait un fork qui reçoit le chemin du binaire comme argument [ici](https://github.com/trickster0/rust-windows-shellcode-custom).  
- Même si vous supprimez tous les symboles de débogage, Rust peut toujours conserver des références à votre répertoire personnel dans le binaire. La seule façon que j'ai trouvée pour les supprimer est de passer le drapeau suivant : `--remap-path-prefix {votre répertoire personnel}={un identifiant aléatoire}`. Vous pouvez utiliser des variables bash pour obtenir votre répertoire personnel et générer un espace réservé aléatoire : `--remap-path-prefix "$HOME"="$RANDOM"`. (Par [Yamakadi](https://github.com/yamakadi))
- Bien que pour ce qui précède, il y ait une autre façon de supprimer les informations sur le répertoire personnel en ajoutant en haut du Cargo.toml  
`cargo-features = ["strip"]` .  
Comme Rust laisse par défaut beaucoup de choses sous forme de chaînes dans le binaire, j'utilise surtout ce [cargo.toml](../master/cargo.toml) pour les éviter et aussi réduire la taille  
avec la commande de compilation   
`cargo build --release -Z build-std=std,panic_abort -Z build-std-features=panic_immediate_abort --target x86_64-pc-windows-msvc`
- [Yamakadi] a également souligné que selon les bibliothèques importées, le stripping n'est pas toujours cohérent pour masquer le répertoire personnel, donc une combinaison de sa solution pour remapper le chemin et l'utilisation du cargo ci-dessus fonctionnerait le mieux. Essayez d'être conscient et vérifiez vos binaires avant de les exécuter dans vos engagements pour d'éventuelles chaînes qui ne sont pas correctement supprimées.

## Autres projets que j'ai réalisés en Rust

- [UDPlant](https://github.com/trickster0/UDPlant) - Fondamentalement un reverse shell UDP  
- [EDR Detector](https://github.com/trickster0/EDR_Detector) - Détecte les EDR du système installé selon les fichiers .sys installés  
- [Lenum](https://github.com/trickster0/Lenum) - Un simple outil d'énumération Unix

## Projets en Rust qui peuvent être utiles 

- [houdini](https://github.com/yamakadi/houdini) - Aide à rendre votre exécutable auto-supprimant
Télécharger l’outil
FichierDescription
Allocate_With_SyscallsUtilise les fonctions NTDLL directement avec la bibliothèque ntapi
Create_DLLCrée une DLL et affiche une boîte de message, Rust ne supporte pas totalement cela donc les choses peuvent devenir étranges car les DLL Rust n’ont pas de fonction principale
DeviceIoControlOuvre un handle de driver et exécute DeviceIoControl
EnableDebugPrivilegesActive SeDebugPrivilege dans le processus courant
Shellcode_Local_injectExécute du shellcode directement dans le processus local en castant un pointeur
Execute_With_CMDExécute cmd en passant une commande via Rust
ImportedFunctionCallImporte minidump depuis dbghelp et l’exécute
Kernel_Driver_ExploitExploit de driver kernel pour un simple buffer overflow
Named_Pipe_ClientClient de tube nommé
Named_Pipe_ServerServeur de tube nommé
PEB_WalkRésout et invoque dynamiquement les API Windows
Process_Injection_CreateThreadInjection de processus dans un processus en cours avec CreateThread
Process_Injection_CreateRemoteThreadInjection de processus dans un processus distant avec CreateRemoteThread
Process_Injection_Self_EnumSystemGeoIDAuto-injecteur utilisant l’appel API EnumSystemsGeoID pour exécuter du shellcode.
UnhookingAppels de déshook
asm_syscallObtention de l’adresse PEB via asm
base64_system_enumEncodage/décodage Base64 de chaînes
http-https-requestsRequêtes HTTP/S en ignorant la vérification du certificat pour GET/POST
patch_etwPatch ETW
ppid_spoofUsurpation du processus parent pour le processus créé
tcp_ssl_clientClient TCP avec SSL ignorant la vérification du certificat (nécessite openssl et perl pour la compilation)
tcp_ssl_serverServeur TCP, avec paramètre de port (nécessite openssl et perl pour la compilation)
wmi_executeExécute une requête WMI pour obtenir les AV/EDR de l’hôte
Windows.h+ BindingsCe fichier contient les structures de Windows.h plus des LDR, PEB, etc. personnalisés complets non documentés officiellement par Microsoft, ajoutez en haut de votre fichier include!("../bindings.rs");
UUID_Shellcode_ExecutionPlace du shellcode depuis un tableau UUID dans l’espace heap et utilise le callback EnumSystemLocalesA pour exécuter le shellcode.
AMSI BypassContournement AMSI sur le processus local
Injection_AES_LoaderInjection NtTestAlert avec déchiffrement AES
Litcrypt_String_EncryptionUtilisation de la crate Litcrypt pour chiffrer les chaînes littérales au repos et en mémoire afin de contourner l’AV statique.
Api HookingAccrochage d’API en utilisant la bibliothèque detour
memfd_createExécution de payloads depuis la mémoire en utilisant la technique memfd_create (pour Linux)
RC4_EncryptionShellcode déchiffré RC4
Steal TokenVol de jeton depuis un processus
Keyboard HookingEnregistrement des frappes par accrochage du clavier avec SetWindowsHookEx
memN0ps arsenal: shellcode_runner_classic-rsLanceur/injecteur de shellcode classique utilisant ntapi
memN0ps arsenal: dll_injector_classic-rsInjection DLL classique utilisant windows-sys
memN0ps arsenal: module_stomping-rsModule Stomping / Module Overloading / DLL Hollowing utilisant windows-sys
memN0ps arsenal: obfuscate_shellcode-rsObfuscateur simple de shellcode XOR et AES
memN0ps arsenal: process_hollowing-rsProcess Hollowing utilisant ntapi
memN0ps arsenal: rdi-rsInjection DLL réfléchissante utilisant windows-sys
memN0ps: eagle-rsRusty Rootkit : pilote noyau Windows en Rust pour les red teamers utilisant winapi et ntapi
memN0ps: psyscalls-rsBibliothèque Rusty Parallel Syscalls utilisant winapi
memN0ps: mmapper-rsRusty Manual Mapper utilisant winapi
memN0ps: srdi-rsInjection DLL réfléchissante de shellcode en Rust utilisant windows-sys
memN0ps: mordor-rs - freshycalls_syswhispersBibliothèque Rusty FreshyCalls / SysWhispers1 / SysWhispers2 / SysWhispers3 utilisant windows-sys
memN0ps: mordor-rs - hells_halos_tartarus_gateBibliothèque Rusty Hell's Gate / Halo's Gate / Tartarus' Gate utilisant windows-sys
memN0ps: pemadness-rsBibliothèque Rusty d’analyse d’exécutables portables (bibliothèque d’analyse PE) utilisant windows-sys
memN0ps: mimiRustMimikatz réalisé en Rust par @ThottySploit. L’auteur original a supprimé son compte GitHub, donc il a été téléchargé pour un usage communautaire.
memN0ps et trickster0: ekko-rsRusty Ekko - Obfuscation de sommeil en Rust utilisant windows-sys.