shadow-rs 🦀

shadow-rs est un rootkit pour le noyau Windows écrit en Rust, démontrant des techniques avancées de manipulation du noyau tout en exploitant les fonctionnalités de sécurité et de performance de Rust. Ce projet est destiné à des fins éducatives et de recherche.
Table des matières
Avis
[!IMPORTANT]
Ce projet est en cours de développement.
Fonctionnalités
Processus
- ✅ Masquer et afficher les processus.
- ✅ Modifier les niveaux de signature des processus pour gérer
Protected Processes (PP) et Protected Process Light (PPL).
- ✅ Protéger les processus contre la terminaison et le vidage mémoire.
- ✅ Élever les privilèges des processus au niveau SYSTEM, accordant un accès administratif complet.
- ✅ Terminer les processus ciblés.
- ✅ Lister tous les processus protégés et masqués.
Fil d'exécution
- ✅ Masquer et afficher les fils d'exécution.
- ✅ Protéger les fils d'exécution contre la terminaison ou la suspension.
- ✅ Lister tous les fils d'exécution protégés et masqués.
Pilote
- ✅ Masquer et afficher les pilotes en mode noyau.
- ✅ Énumérer tous les pilotes chargés.
- ✅ Activer ou désactiver l'application de la signature des pilotes (
DSE) pour permettre le chargement de pilotes non signés.
- ✅ Bloquer le chargement de pilotes.
Callback
- ✅ Lister les callbacks enregistrés pour la création de processus, la création de fils d'exécution, le chargement d'images et les opérations de registre.
- ✅ Supprimer ou restaurer des callbacks spécifiques.
- ✅ Lister tous les callbacks supprimés.
Divers
- ✅ Capturer les frappes clavier de l'utilisateur en temps réel grâce à une interception au niveau du noyau.
- ✅ Désactiver Microsoft-Windows-Threat-Intelligence (
EtwTi).
- ✅ Nettoyer les artefacts de pilotes des dumps mémoire en cas de BSOD.
- ✅ Compiler des chaînes chiffrées.
- ✅ Prise en charge du chargement réflexif de pilotes.
Exécution de code en mode utilisateur
- ✅ Injecter du shellcode ou des DLL dans les processus via
ZwCreateThreadEx.
- ✅ Injection par appel de procédure asynchrone (
APC) pour exécuter du shellcode ou des DLL dans des fils d'exécution alertables.
- ✅ Exécuter du shellcode dans les processus via le détournement de fils d'exécution (
Thread Hijacking).
Module
- ✅ Masquer les modules des listes de mémoire des processus.
- ✅ Énumérer tous les modules chargés.
Registre
- ✅ Masquer et afficher les clés et valeurs de registre pour empêcher la détection et la manipulation.
- ✅ Appliquer une protection du registre pour empêcher la suppression ou l'écrasement de clés ou de valeurs.
Réseau
- ✅ Masquer et afficher les ports réseau de netstat et des outils de surveillance similaires.
Installation
- Installez Rust à partir d'ici.
- Suivez le guide de Microsoft pour configurer Rust pour le développement de pilotes noyau.
- ✅ Windows 10 / 11 (x64 uniquement)
Instructions de compilation
Pilote
Naviguez vers le répertoire driver et compilez le pilote noyau :
cargo make default --release
[!IMPORTANT]
Remarque : la première compilation doit être exécutée en tant qu'administrateur. Les compilations suivantes ne nécessitent pas de privilèges élevés.
Pour activer la prise en charge du mapping pour des outils comme kdmapper, compilez avec :
cargo make default --release --features mapper
Client
Naviguez vers le répertoire client et compilez le client en mode utilisateur :
Pour la compatibilité avec les pilotes mappés :
cargo build --release --features mapper
Instructions de configuration
Activer le mode test ou le mode de signature de test
bcdedit /set testsigning on
Créer / Démarrer le service
Vous pouvez utiliser le gestionnaire de contrôle des services ou OSR Driver Loader pour charger votre pilote.
Débogage
Utilisez Windbg pour vous attacher au noyau et surveiller l'activité du pilote.
bcdedit /debug on
bcdedit /dbgsettings net hostip:<IP> port:<PORT>
Contribuer à shadow-rs
Pour contribuer à shadow-rs, suivez ces étapes :
- Forkez ce dépôt.
- Créez une branche :
git checkout -b <branch_name>.
- Effectuez vos modifications et validez-les :
git commit -m '<commit_message>'.
- Envoyez vers la branche d'origine :
git push origin <project_name> / <local>.
- Créez la pull request.
Vous pouvez également consulter la documentation GitHub sur la création d'une pull request.
Avertissement
Ce projet est destiné à des fins éducatives et de recherche. Toute utilisation malveillante du logiciel est strictement interdite et découragée. Je ne suis pas responsable des dommages causés par une utilisation inappropriée du logiciel.
Références
Je tiens à exprimer ma gratitude envers ces projets qui m'ont inspiré pour créer shadow-rs et contribuer à certaines de ses fonctionnalités :
Autres ressources essentielles :
Ces documents et travaux de recherche ont été inestimables pour approfondir ma compréhension du développement du noyau Windows :
Licence
Ce projet est sous licence MIT. Consultez le fichier LICENSE pour plus de détails.
Contributeurs