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
Darkcloak — Outil de masquage d'identité de processus Linux qui usurpe comm, argv, cmdline, environ, le chemin exe et les VMA via un pipeline prctl en 11 phases pour usurper l'identité d'un autre processus. | Kitploit
Outils/GitHubGitHub/0x574r/darkcloak
Escalade de PrivilègesMécanismes de PersistanceÉvasion IDS/IPSOutils d'ImpersonationPost-ExploitationAnalyse de BinairesArticles et RechercheRed TeamingUsurpation d'Empreinte Numérique
GitHub0x574r/darkcloak

Darkcloak

Outil de masquage d'identité de processus Linux qui usurpe comm, argv, cmdline, environ, le chemin exe et les VMA via un pipeline prctl en 11 phases pour usurper l'identité d'un autre processus.

1123il y a 3 moisPas encore vérifié

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
Voir le dépôt

DARKCLOAK

NASM Platform Architecture

Masquage de l'identité des processus sous Linux

DARKCLOAK enchaîne la manipulation de toutes les sources d'identité visibles depuis l'espace utilisateur dans un pipeline séquentiel en 11 phases qui transforme progressivement un processus jusqu'à ce qu'il devienne indiscernable de celui usurpé pour les outils de surveillance de l'espace utilisateur. À notre connaissance, aucun outil publié ne combine la manipulation simultanée de toutes les sources d'identité visibles depuis l'espace utilisateur.

L'article technique complet est disponible sur le blog RAZOR.

Ce qui est usurpé

  • task_struct->comm : via PR_SET_NAME
  • argv[0] : via écrasement direct de la pile
  • Ligne de commande (/proc/$PID/cmdline) : via PR_SET_MM_ARG_START/END
  • Environnement (/proc/$PID/environ) : via PR_SET_MM_ENV_START/END
  • Chemin de l'exécutable (/proc/$PID/exe) : via PR_SET_MM_EXE_FILE
  • VMA adossées à un fichier (/proc/$PID/maps) : remplacées par de la mémoire anonyme
  • Visibilité du namespace du processus : via unshare

Comment ça fonctionne

Le pipeline s'exécute dans un ordre strict défini par les dépendances entre les sous-systèmes du noyau manipulés :

  1. Introspection ELF : analyse le vecteur auxiliaire à _start pour résoudre le PHT et obtenir les plages d'adresses virtuelles des trois segments PT_LOAD
  2. Lecture des identifiants : getresuid / getresgid pour stocker les UID et GID d'origine en vue d'une restauration ultérieure
  3. Élévation des UID : setresuid(0,0,0) si l'un des trois UID vaut 0
  4. Élévation des capacités : copie l'ensemble permis dans les ensembles effectif et héritable via capget/capset
  5. Usurpation d'identité :
    • prctl(PR_SET_NAME) → écrase task_struct->comm
    • écriture directe dans la pile à [rsp+8] → écrase argv[0]
    • prctl(PR_SET_DUMPABLE, 0) → bloque l'accès à et depuis des processus non privilégiés

Le trampoline mmap

PR_SET_MM_EXE_FILE échoue avec EBUSY tant qu'une VMA est encore adossée au binaire d'origine. Comme le segment .text ne peut pas être dé-mappé tant que RIP s'y trouve, l'anonymisation s'exécute depuis une page anonyme temporaire :

  1. Allouer une page anonyme de 4096 octets (mmap)
  2. Y copier le code d'anonymisation (mm_start→mm_end) et les métadonnées des segments
  3. Rendre la page exécutable (mprotect)
  4. Y sauter : RIP quitte .text
  5. Pour chacun des trois segments PT_LOAD : mmap une nouvelle région anonyme → memcpy du contenu du segment → munmap de l'original → mremap de la copie anonyme vers l'adresse d'origine → mprotect pour restaurer les permissions d'origine
  6. Revenir dans le .text désormais anonyme, dé-mapper la page trampoline

Le binaire est un ELF statique sans interpréteur, donc la disposition des VMA à l'exécution est entièrement déterministe : trois segments PT_LOAD, la pile et le vDSO du noyau.

Compilation

root@kitploit:~
nasm -f elf64 darkcloak.asm -o darkcloak.o
ld darkcloak.o -o darkcloak

Configuration

Les cibles d'usurpation sont définies à la compilation dans la section .data. Les valeurs par défaut usurpent sshd :

root@kitploit:~
mimic_name    db 'sshd', 0
mimic_argv    db './sshd', 0
mimic_exe     db '/usr/sbin/sshd', 0
mimic_cmdline db '/usr/sbin/sshd', 0, '-D', 0, '[email protected]', 0, ...
mimic_environ db 'LANG=en_US.UTF-8', 0, 'NOTIFY_SOCKET=/run/systemd/notify', 0, ...

Pour usurper un autre processus, modifiez ces valeurs avant la compilation.

Utilisation

root@kitploit:~
./darkcloak

Nécessite CAP_SYS_RESOURCE, CAP_SETUID, CAP_SETGID et CAP_SETPCAP dans l'ensemble permis. Si CAP_SYS_RESOURCE est absent, le bloc de masquage MM (anonymisation des VMA + échange de EXE_FILE) est entièrement ignoré. Si CAP_SETPCAP est absent, l'outil se replie de PR_SET_SECUREBITS vers PR_SET_KEEPCAPS.

Vérification

root@kitploit:~
./darkcloak &
PID=$!

cat /proc/$PID/comm
readlink /proc/$PID/exe
cat /proc/$PID/cmdline | tr '\0' ' '
cat /proc/$PID/environ | tr '\0' '\n' | head -3
cat /proc/$PID/maps | head -5
cat /proc/$PID/status | grep -E 'Uid|Gid|Cap'
ps aux | grep $PID

Avertissement

Publié exclusivement à des fins éducatives et de recherche. À utiliser uniquement sur des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite explicite de test.

Télécharger l’outil
/proc/$PID/mem
ptrace(PTRACE_ATTACH)
  • anonymisation des VMA via un trampoline mmap (voir ci-dessous) → supprime tous les mappings adossés à un fichier
  • prctl(PR_SET_MM_ARG_START/END) → redirige /proc/$PID/cmdline
  • prctl(PR_SET_MM_ENV_START/END) → redirige /proc/$PID/environ
  • prctl(PR_SET_MM_EXE_FILE) → remplace mm_struct->exe_file
  • Rétention des capacités : PR_SET_SECUREBITS (si CAP_SETPCAP) ou PR_SET_KEEPCAPS (repli) pour survivre à la baisse des UID
  • Désescalade des UID : setresuid(1000,1000,1000) ou restauration des valeurs d'origine
  • Désescalade des GID : setresgid(1000,1000,1000) ou restauration des valeurs d'origine
  • Désescalade des capacités : efface les ensembles effectif et héritable
  • Isolation du namespace : unshare(CLONE_NEWUSER | CLONE_NEWPID | CLONE_NEWNET | CLONE_NEWIPC)
  • Maintien : nanosleep(120s) puis exit