Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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
MemFiles — Un toolkit CobaltStrike pour écrire les fichiers produits par Beacon en mémoire plutôt que sur le disque. | Kitploit
Outils/GitHubGitHub/octoberfest7/memfiles
Exfiltration de DonnéesPost-ExploitationCommandement et ContrôleRed Teaming
GitHuboctoberfest7/memfiles

MemFiles

Un toolkit CobaltStrike pour écrire les fichiers produits par Beacon en mémoire plutôt que sur le disque.

Voir le dépôt
4776212il y a 2 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

MemFiles

AVERTISSEMENT :

Ce projet est complexe et une mauvaise compréhension de son fonctionnement ou un test inadéquat peut entraîner le crash des Beacons et la perte d'accès !

Je vous encourage vivement à lire toute la documentation jusqu'à la section « Technical Details, Design Considerations, and Commentary » !

Introduction

MemFiles est une boîte à outils pour CobaltStrike qui permet aux opérateurs d'écrire en mémoire les fichiers produits par le processus Beacon, plutôt que de les écrire sur le disque du système cible. Il a été testé avec succès sur Windows 7, 10 et 11 ; les versions serveur correspondantes devraient fonctionner sans problème. MemFiles est limité aux Beacons x64.

Pour ce faire, il hooke plusieurs NtAPI différentes dans NTDLL.dll et redirige les appels vers ces API vers des fonctions injectées dans l'espace mémoire du processus Beacon.

MemFiles suppose une copie propre/non hookée de NTDLL dans le processus Beacon. Aucune garantie n'est fournie quant à la viabilité de MemFiles dans un processus Beacon où des hooks EDR sont toujours en place. Réparez/actualisez NTDLL avant d'utiliser MemFiles !

Un répertoire « spécial », inexistant, est défini dans la boîte à outils MemFiles ; tous les fichiers écrits dans ce répertoire spécial sont capturés par MemFiles et écrits en mémoire, où ils peuvent ensuite être téléchargés vers le Teamserver.

MemFiles est compatible avec la plupart (pas tous) des outils qui s'exécutent dans le processus Beacon et qui peuvent être configurés pour écrire leur sortie dans un répertoire spécifique. Il ne nécessite PAS de privilèges élevés pour fonctionner.

Cela inclut :
-Les BOF
-Les assemblys .NET exécutés en ligne via quelque chose comme inline-executeAssembly
-Les PE exécutés en ligne via quelque chose comme Inline-Execute-PE

Tous ces éléments sont compatibles car ils s'exécutent dans le processus Beacon, où les NtAPI concernées ont été hookées.

MemFiles ne fonctionne PAS avec des éléments comme :
-execute-assembly
-shell
-run

Aucun de ces éléments n'est compatible car ils lancent tous d'autres processus dont les NtAPI n'ont PAS été hookées.

MemFiles a été testé avec succès avec des outils comme Rubeus, SharpHound, Procdump et PowerShell lorsqu'ils sont exécutés dans le processus Beacon.

Installation

Clonez le dépôt et modifiez éventuellement la variable hookdir définie à la ligne 56 dans /PIC/Source/NtCreateFile.c et /PIC/Source/NtOpenFile.c. Cette variable est le répertoire « spécial » qui indique à MemFiles qu'il doit intercepter le fichier en cours de création. La variable hookdir est définie sur « redteam » par défaut. Assurez-vous que cette variable ne correspond pas à un répertoire réel sur le système cible et qu'elle est identique dans les deux fichiers !

image

Exécutez 'make all' pour compiler à la fois les BOF nécessaires et les fonctions PIC.

Chargez MemFiles.cna dans le client CobaltStrike. Assurez-vous que le répertoire à partir duquel CobaltStrike est exécuté est accessible en écriture par votre utilisateur ; MemFiles y crée un fichier texte (memfiles.txt) afin de garantir la disponibilité des données nécessaires au fonctionnement de MemFiles.

MemFiles peut être configuré pour s'installer dans chaque nouveau Beacon qui se connecte au Teamserver ; cela s'effectue via l'élément de menu MemFiles->Config. Par défaut, MemFiles ne s'installe PAS automatiquement dans les nouveaux Beacons. Notez qu'il s'agit d'un paramètre global ; si deux Clients sont connectés au Teamserver et que les deux ont chargé MemFiles.cna, si le Client A active le paramètre « Install on beacon initial », la modification s'appliquera également au Client B !

image

Commandes

MemFiles comprend 4 commandes orientées cible qui exécutent des BOF et 1 commande interne qui manipule la structure de données du projet.

Côté cible :

  1. meminit
  2. memlist
  3. memfetch
  4. memclean

Structure de données interne :

  1. memtable

meminit

meminit est responsable de l'installation de MemFiles dans le processus Beacon.

La liste des NtAPI hookées par MemFiles est la suivante :

  1. NtCreateFile
  2. NtWriteFile
  3. NtClose
  4. NtQueryVolumeInformationFile
  5. NtQueryInformationFile
  6. NtSetInformationFile
  7. NtOpenFile
  8. NtReadFile
  9. NtFlushBuffersFile

meminit effectue les actions principales suivantes :

  1. Envoie au Beacon une fonction de remplacement indépendante de la position pour chaque NtAPI hookée
  2. Crée une structure dans la mémoire du Beacon pour contenir diverses valeurs nécessaires à MemFiles tout au long de son cycle de vie
  3. Patche l'adresse de cette structure dans chacune des fonctions de remplacement PIC
  4. Alloue de la mémoire et injecte chaque fonction de remplacement PIC dans la mémoire du processus Beacon
  5. Crée un trampoline pour chaque NtAPI hookée
  6. Hooke chaque NtAPI listée en écrasant une partie ou la totalité des octets, redirigeant l'exécution vers la fonction de remplacement PIC.

memlist

memlist est utilisé pour afficher tous les fichiers actuellement stockés en mémoire par MemFiles pour un Beacon donné.
image
Plusieurs champs sont affichés, les plus pertinents et intéressants pour l'utilisateur étant le nom du fichier et la longueur des données stockées.

memfetch

memfetch est utilisé pour récupérer effectivement les fichiers stockés en mémoire par MemFiles pour un Beacon donné.

Par défaut, memfetch récupère tous les fichiers stockés par MemFiles dont le « handle » a été fermé. Ce choix de conception a été fait pour éviter tout problème lié au téléchargement d'un fichier qu'un programme ou une application n'a pas fini d'écrire.

Cela signifie que si un programme ou une application ne ferme pas le handle qu'il ouvre sur le fichier, le fichier ne sera pas téléchargé par memfetch.

Cela peut être atténué en utilisant l'argument « force » avec memfetch, c.-à-d. 'memfetch force', afin de récupérer tous les fichiers depuis la mémoire, quel que soit l'état de leur handle.

Les fichiers que memfetch récupère depuis la mémoire sont renvoyés au Teamserver sous forme de téléchargement et peuvent être synchronisés du Teamserver vers le Client via l'onglet Downloads dans CobaltStrike.

Une fois qu'un fichier a été téléchargé par le Teamserver, il est effacé de la mémoire du processus Beacon et son entrée, telle qu'affichée via memlist, est supprimée.

memclean

memclean est responsable du nettoyage et de la suppression de MemFiles d'un processus Beacon.

Le cas d'usage standard de MemFiles consiste à l'installer et à le laisser installé pendant toute la durée de vie du Beacon ; cependant, si l'on souhaite utiliser MemFiles en conjonction avec un outil pour capturer et récupérer la sortie de fichiers, puis désinstaller MemFiles afin que ses artefacts ne soient pas en mémoire, memclean peut être utilisé pour ramener le processus Beacon à son état d'origine avant l'exécution de meminit.

Cela implique :

  1. Déhooker chaque NtAPI hookée
  2. Mettre à zéro et libérer chaque trampoline créé
  3. Mettre à zéro et libérer chaque fonction de remplacement PIC injectée
  4. Mettre à zéro et libérer la structure MemFiles
Télécharger l’outil