Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Darkcloak — Linux-Prozessidentitätsverschleierungswerkzeug, das comm, argv, cmdline, environ, exe-Pfad und VMAs über eine 11-Phasen-prctl-Pipeline spoofed, um einen anderen Prozess zu imitieren. | Kitploit
Tools/GitHubGitHub/0x574r/darkcloak
Privilege EscalationPersistenzmechanismenIDS/IPS-UmgehungImpersonations-ToolsPost-ExploitationBinäranalysePapers & ForschungRed TeamingFingerabdruck-Spoofing
GitHub0x574r/darkcloak

Darkcloak

Linux-Prozessidentitätsverschleierungswerkzeug, das comm, argv, cmdline, environ, exe-Pfad und VMAs über eine 11-Phasen-prctl-Pipeline spoofed, um einen anderen Prozess zu imitieren.

1123vor 3 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

DARKCLOAK

NASM Platform Architecture

Identitätsverschleierung für Linux-Prozesse

DARKCLOAK verkettet die Manipulation aller im Userspace sichtbaren Identitätsquellen zu einer sequenziellen 11-Phasen-Pipeline, die einen Prozess schrittweise so transformiert, dass er für Userspace-Überwachungswerkzeuge nicht mehr von dem imitierten Prozess zu unterscheiden ist. Nach unserem besten Wissen kombiniert kein veröffentlichtes Werkzeug die gleichzeitige Manipulation aller im Userspace sichtbaren Identitätsquellen.

Die vollständige technische Ausarbeitung ist im RAZOR-Blog verfügbar.

Was gefälscht wird

  • task_struct->comm: über PR_SET_NAME
  • argv[0]: über direktes Überschreiben des Stacks
  • Kommandozeile (/proc/$PID/cmdline): über PR_SET_MM_ARG_START/END
  • Umgebung (/proc/$PID/environ): über PR_SET_MM_ENV_START/END
  • Ausführungspfad (/proc/$PID/exe): über PR_SET_MM_EXE_FILE
  • Dateigestützte VMAs (/proc/$PID/maps): ersetzt durch anonymen Speicher
  • Sichtbarkeit des Prozess-Namespace: über unshare

Wie es funktioniert

Die Pipeline läuft in einer strikten Reihenfolge ab, die durch die Abhängigkeiten zwischen den manipulierten Kernel-Subsystemen definiert ist:

  1. ELF-Introspektion: parst den Auxiliary-Vektor bei _start, um die PHT aufzulösen und die virtuellen Adressbereiche aller drei PT_LOAD-Segmente zu ermitteln
  2. Credential-Lesen: getresuid / getresgid, um die ursprünglichen UIDs und GIDs für die spätere Wiederherstellung zu speichern
  3. UID-Eskalation: setresuid(0,0,0), falls eine der drei UIDs 0 ist
  4. Capability-Eskalation: kopiert das Permitted-Set in das Effective- und Inheritable-Set über capget/capset
  5. Identitätsfälschung:
    • prctl(PR_SET_NAME) → überschreibt task_struct->comm
    • direkter Stack-Schreibzugriff bei [rsp+8] → überschreibt argv[0]
    • prctl(PR_SET_DUMPABLE, 0) → blockiert -Zugriff und von unprivilegierten Prozessen

Das mmap-Trampolin

PR_SET_MM_EXE_FILE schlägt mit EBUSY fehl, solange noch eine VMA durch die Original-Binary gestützt wird. Da das .text-Segment nicht entladen werden kann, während RIP sich darin befindet, läuft die Anonymisierung von einer temporären anonymen Seite aus:

  1. Eine 4096-Byte-anonyme Seite allozieren (mmap)
  2. Den Anonymisierungscode (mm_start→mm_end) und die Segment-Metadaten hineinkopieren
  3. Die Seite ausführbar machen (mprotect)
  4. Hineinspringen: RIP verlässt .text
  5. Für jedes der drei PT_LOAD-Segmente: eine frische anonyme Region mmapen → Segmentinhalte memcpyen → das Original munmapen → die anonyme Kopie mit mremap zurück an die Originaladresse verschieben → mprotect, um die ursprünglichen Berechtigungen wiederherzustellen
  6. Zurück zum nun anonymen .text, die Trampolin-Seite entladen

Die Binary ist eine statische ELF ohne Interpreter, daher ist das Laufzeit-VMA-Layout vollständig deterministisch: drei PT_LOAD-Segmente, der Stack und der Kernel-vDSO.

Build

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

Konfiguration

Die Spoofing-Ziele werden zur Kompilierzeit im .data-Abschnitt definiert. Die Standardwerte imitieren 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, ...

Um einen anderen Prozess zu imitieren, aktualisieren Sie diese Werte vor dem Build.

Verwendung

root@kitploit:~
./darkcloak

Erfordert CAP_SYS_RESOURCE, CAP_SETUID, CAP_SETGID und CAP_SETPCAP im Permitted-Set. Wenn CAP_SYS_RESOURCE fehlt, wird der MM-Spoofing-Block (VMA-Anonymisierung + EXE_FILE-Austausch) vollständig übersprungen. Wenn CAP_SETPCAP fehlt, weicht das Werkzeug von PR_SET_SECUREBITS auf PR_SET_KEEPCAPS aus.

Überprüfen

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

Haftungsausschluss

Ausschließlich für Bildungs- und Forschungszwecke veröffentlicht. Nur auf Systemen verwenden, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Testgenehmigung besitzen.

Tool herunterladen
/proc/$PID/mem
ptrace(PTRACE_ATTACH)
  • VMA-Anonymisierung über mmap-Trampolin (siehe unten) → entfernt alle dateigestützten Mappings
  • prctl(PR_SET_MM_ARG_START/END) → leitet /proc/$PID/cmdline um
  • prctl(PR_SET_MM_ENV_START/END) → leitet /proc/$PID/environ um
  • prctl(PR_SET_MM_EXE_FILE) → ersetzt mm_struct->exe_file
  • Capability-Erhalt: PR_SET_SECUREBITS (falls CAP_SETPCAP) oder PR_SET_KEEPCAPS (Fallback), um den UID-Drop zu überleben
  • UID-Deeskalation: setresuid(1000,1000,1000) oder Wiederherstellung der Originale
  • GID-Deeskalation: setresgid(1000,1000,1000) oder Wiederherstellung der Originale
  • Capability-Deeskalation: löscht Effective- und Inheritable-Sets
  • Namespace-Isolation: unshare(CLONE_NEWUSER | CLONE_NEWPID | CLONE_NEWNET | CLONE_NEWIPC)
  • Halten: nanosleep(120s), dann exit