Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Darkcloak — Ferramenta de ocultação de identidade de processos Linux que falsifica comm, argv, cmdline, environ, caminho do exe e VMAs por meio de um pipeline prctl de 11 fases para se passar por outro processo. | Kitploit
Ferramentas/GitHubGitHub/0x574r/darkcloak
Escalada de PrivilégiosMecanismos de PersistênciaEvasão de IDS/IPSFerramentas de ImpersonaçãoPós-ExploraçãoAnálise de BináriosPapers e PesquisaRed TeamingFalsificação de Impressão Digital
GitHub0x574r/darkcloak

Darkcloak

Ferramenta de ocultação de identidade de processos Linux que falsifica comm, argv, cmdline, environ, caminho do exe e VMAs por meio de um pipeline prctl de 11 fases para se passar por outro processo.

1124há 3 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório

DARKCLOAK

NASM Platform Architecture

Ocultação de identidade de processos no Linux

O DARKCLOAK encadeia a manipulação de todas as fontes de identidade visíveis no espaço do usuário em um pipeline sequencial de 11 fases que transforma progressivamente um processo até que ele se torne indistinguível do processo personificado para ferramentas de monitoramento no espaço do usuário. Até onde sabemos, nenhuma ferramenta publicada combina a manipulação simultânea de todas as fontes de identidade visíveis no espaço do usuário.

O artigo técnico completo está disponível no blog RAZOR.

O que é falsificado

  • task_struct->comm: via PR_SET_NAME
  • argv[0]: via sobrescrita direta da pilha
  • Linha de comando (/proc/$PID/cmdline): via PR_SET_MM_ARG_START/END
  • Ambiente (/proc/$PID/environ): via PR_SET_MM_ENV_START/END
  • Caminho do executável (/proc/$PID/exe): via PR_SET_MM_EXE_FILE
  • VMAs com arquivo de apoio (/proc/$PID/maps): substituídas por memória anônima
  • Visibilidade do namespace do processo: via unshare

Como funciona

O pipeline é executado em uma ordem estrita definida pelas dependências entre os subsistemas do kernel que estão sendo manipulados:

  1. Introspecção de ELF: analisa o vetor auxiliar em _start para resolver o PHT e obter os intervalos de endereços virtuais de todos os três segmentos PT_LOAD
  2. Leitura de credenciais: getresuid / getresgid para armazenar os UIDs e GIDs originais para restauração posterior
  3. Escalação de UID: setresuid(0,0,0) se qualquer um dos três UIDs for 0
  4. Escalação de capacidades: copia o conjunto permitido para os conjuntos efetivo e herdável via capget/capset
  5. Falsificação de identidade:
    • prctl(PR_SET_NAME) → sobrescreve task_struct->comm
    • escrita direta na pilha em [rsp+8] → sobrescreve argv[0]
    • prctl(PR_SET_DUMPABLE, 0) → bloqueia o acesso a e de processos sem privilégios

O trampolim mmap

PR_SET_MM_EXE_FILE falha com EBUSY enquanto qualquer VMA ainda estiver apoiada no binário original. Como o segmento .text não pode ser desmapeado enquanto o RIP estiver dentro dele, a anonimização é executada a partir de uma página anônima temporária:

  1. Aloca uma página anônima de 4096 bytes (mmap)
  2. Copia o código de anonimização (mm_start→mm_end) e os metadados dos segmentos para ela
  3. Torna a página executável (mprotect)
  4. Salta para ela: o RIP deixa o .text
  5. Para cada um dos três segmentos PT_LOAD: mmap de uma nova região anônima → memcpy do conteúdo do segmento → munmap do original → mremap da cópia anônima de volta ao endereço original → mprotect para restaurar as permissões originais
  6. Retorna ao .text agora anônimo, desmapeia a página do trampolim

O binário é um ELF estático sem interpretador, então o layout de VMA em tempo de execução é totalmente determinístico: três segmentos PT_LOAD, a pilha e o vDSO do kernel.

Compilação

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

Configuração

Os alvos de falsificação são definidos em tempo de compilação na seção .data. Os padrões personificam o 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, ...

Para personificar um processo diferente, atualize esses valores antes de compilar.

Uso

root@kitploit:~
./darkcloak

Requer CAP_SYS_RESOURCE, CAP_SETUID, CAP_SETGID e CAP_SETPCAP no conjunto permitido. Se CAP_SYS_RESOURCE estiver ausente, o bloco de falsificação de MM (anonimização de VMA + troca de EXE_FILE) é totalmente ignorado. Se CAP_SETPCAP estiver ausente, a ferramenta recorre de PR_SET_SECUREBITS para PR_SET_KEEPCAPS.

Verificação

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

Aviso legal

Publicado exclusivamente para fins educacionais e de pesquisa. Use apenas em sistemas que você possui ou para os quais tem autorização escrita explícita para testar.

Baixar ferramenta
/proc/$PID/mem
ptrace(PTRACE_ATTACH)
  • Anonimização de VMA via trampolim mmap (veja abaixo) → remove todos os mapeamentos com arquivo de apoio
  • prctl(PR_SET_MM_ARG_START/END) → redireciona /proc/$PID/cmdline
  • prctl(PR_SET_MM_ENV_START/END) → redireciona /proc/$PID/environ
  • prctl(PR_SET_MM_EXE_FILE) → substitui mm_struct->exe_file
  • Retenção de capacidades: PR_SET_SECUREBITS (se CAP_SETPCAP) ou PR_SET_KEEPCAPS (fallback) para sobreviver à queda de UID
  • Desescalação de UID: setresuid(1000,1000,1000) ou restaura os originais
  • Desescalação de GID: setresgid(1000,1000,1000) ou restaura os originais
  • Desescalação de capacidades: limpa os conjuntos efetivo e herdável
  • Isolamento de namespace: unshare(CLONE_NEWUSER | CLONE_NEWPID | CLONE_NEWNET | CLONE_NEWIPC)
  • Espera: nanosleep(120s) e então exit