Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Darkcloak — Strumento Linux per l'occultamento dell'identità dei processi che falsifica comm, argv, cmdline, environ, percorso exe e VMA tramite una pipeline prctl a 11 fasi per impersonare un altro processo. | Kitploit
Strumenti/GitHubGitHub/0x574r/darkcloak
Escalation di PrivilegiMeccanismi di PersistenzaEvasione IDS/IPSStrumenti di ImpersonificazionePost-ExploitAnalisi di BinariPaper e RicercaRed TeamingSpoofing dell'Impronta Digitale
GitHub0x574r/darkcloak

Darkcloak

Strumento Linux per l'occultamento dell'identità dei processi che falsifica comm, argv, cmdline, environ, percorso exe e VMA tramite una pipeline prctl a 11 fasi per impersonare un altro processo.

11233 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository

DARKCLOAK

NASM Platform Architecture

Occultamento dell'identità dei processi su Linux

DARKCLOAK concatena la manipolazione di tutte le sorgenti di identità visibili nello spazio utente in una pipeline sequenziale a 11 fasi che trasforma progressivamente un processo finché non diventa indistinguibile da quello impersonato per gli strumenti di monitoraggio dello spazio utente. Per quanto ne sappiamo, nessuno strumento pubblicato combina la manipolazione simultanea di tutte le sorgenti di identità visibili nello spazio utente.

Il resoconto tecnico completo è disponibile sul blog RAZOR.

Cosa viene falsificato

  • task_struct->comm: tramite PR_SET_NAME
  • argv[0]: tramite sovrascrittura diretta dello stack
  • Riga di comando (/proc/$PID/cmdline): tramite PR_SET_MM_ARG_START/END
  • Ambiente (/proc/$PID/environ): tramite PR_SET_MM_ENV_START/END
  • Percorso dell'eseguibile (/proc/$PID/exe): tramite PR_SET_MM_EXE_FILE
  • VMA mappate su file (/proc/$PID/maps): sostituite con memoria anonima
  • Visibilità del namespace del processo: tramite unshare

Come funziona

La pipeline viene eseguita in un ordine rigoroso definito dalle dipendenze tra i sottosistemi del kernel manipolati:

  1. Introspezione ELF: analizza il vettore ausiliario a _start per risolvere la PHT e ottenere gli intervalli di indirizzi virtuali di tutti e tre i segmenti PT_LOAD
  2. Lettura delle credenziali: getresuid / getresgid per memorizzare gli UID e GID originali per il successivo ripristino
  3. Escalation degli UID: setresuid(0,0,0) se uno dei tre UID è 0
  4. Escalation delle capability: copia il set permesso nei set effective e inheritable tramite capget/capset
  5. Falsificazione dell'identità:
    • prctl(PR_SET_NAME) → sovrascrive task_struct->comm
    • scrittura diretta sullo stack a [rsp+8] → sovrascrive argv[0]
    • prctl(PR_SET_DUMPABLE, 0) → blocca l'accesso a e da processi non privilegiati

Il trampolino mmap

PR_SET_MM_EXE_FILE fallisce con EBUSY finché una qualsiasi VMA è ancora supportata dal binario originale. Poiché il segmento .text non può essere smappato mentre RIP è al suo interno, l'anonimizzazione viene eseguita da una pagina anonima temporanea:

  1. Alloca una pagina anonima di 4096 byte (mmap)
  2. Copia il codice di anonimizzazione (mm_start→mm_end) e i metadati dei segmenti al suo interno
  3. Rende la pagina eseguibile (mprotect)
  4. Salta al suo interno: RIP lascia .text
  5. Per ciascuno dei tre segmenti PT_LOAD: mmap di una nuova regione anonima → memcpy del contenuto del segmento → munmap dell'originale → mremap della copia anonima all'indirizzo originale → mprotect per ripristinare i permessi originali
  6. Ritorna al .text ora anonimo, smappa la pagina trampolino

Il binario è un ELF statico senza interprete, quindi il layout delle VMA a runtime è completamente deterministico: tre segmenti PT_LOAD, lo stack e il vDSO del kernel.

Compilazione

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

Configurazione

Gli obiettivi della falsificazione sono definiti in fase di compilazione nella sezione .data. I valori predefiniti impersonano 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, ...

Per impersonare un processo diverso, aggiorna questi valori prima della compilazione.

Utilizzo

root@kitploit:~
./darkcloak

Richiede CAP_SYS_RESOURCE, CAP_SETUID, CAP_SETGID e CAP_SETPCAP nel set permesso. Se CAP_SYS_RESOURCE è assente, il blocco di falsificazione MM (anonimizzazione delle VMA + scambio EXE_FILE) viene saltato completamente. Se CAP_SETPCAP è assente, lo strumento passa da PR_SET_SECUREBITS a PR_SET_KEEPCAPS.

Verifica

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

Disclaimer

Pubblicato esclusivamente per scopi educativi e di ricerca. Utilizzare solo su sistemi di propria proprietà o per i quali si dispone di esplicita autorizzazione scritta per i test.

Scarica lo strumento
/proc/$PID/mem
ptrace(PTRACE_ATTACH)
  • Anonimizzazione delle VMA tramite trampolino mmap (vedi sotto) → rimuove tutte le mappature basate su file
  • prctl(PR_SET_MM_ARG_START/END) → reindirizza /proc/$PID/cmdline
  • prctl(PR_SET_MM_ENV_START/END) → reindirizza /proc/$PID/environ
  • prctl(PR_SET_MM_EXE_FILE) → sostituisce mm_struct->exe_file
  • Conservazione delle capability: PR_SET_SECUREBITS (se CAP_SETPCAP) o PR_SET_KEEPCAPS (fallback) per sopravvivere alla riduzione degli UID
  • De-escalation degli UID: setresuid(1000,1000,1000) o ripristino degli originali
  • De-escalation dei GID: setresgid(1000,1000,1000) o ripristino degli originali
  • De-escalation delle capability: azzera i set effective e inheritable
  • Isolamento del namespace: unshare(CLONE_NEWUSER | CLONE_NEWPID | CLONE_NEWNET | CLONE_NEWIPC)
  • Attesa: nanosleep(120s) poi exit