
Persistnux — Updated!
Ferramenta de detecção de persistência em Linux baseada em Bash para investigações DFIR. Escaneia mais de 15 mecanismos de persistência (systemd, cron, módulos do kernel, SSH, contêineres) com pontuação de confiança e gera relatórios CSV/JSONL para análise forense.
Persistnux
Uma ferramenta abrangente de detecção de persistência em Linux para investigações de Resposta a Incidentes e Forense Digital (DFIR).
Visão Geral
Persistnux é uma ferramenta baseada em bash projetada para identificar mecanismos conhecidos de persistência em Linux usados por atacantes para manter acesso a sistemas comprometidos. Ela realiza verificações abrangentes no sistema e gera relatórios detalhados nos formatos CSV e JSONL para análise posterior.
Funcionalidades
- Detecção Abrangente: Cobre todos os principais mecanismos de persistência em Linux
- Análise ao Vivo: Executa diretamente em sistemas ativos com dependências mínimas
- Saída Detalhada: Gera relatórios CSV e JSONL com hashes de arquivos, metadados e pontuações de confiança
- Root e Não-Root: Funciona com ou sem privilégios root (com escopo limitado para não-root)
- Pronto para DFIR: Formatos de saída compatíveis com ferramentas e fluxos de trabalho DFIR comuns
- Pontuação de Suspeição: Pontuação de confiança automática (LOW, MEDIUM, HIGH, CRITICAL) baseada em indicadores
- Redução de Falsos Positivos: Integração com gerenciador de pacotes e lista de permissões de serviços conhecidos como seguros
- Análise Baseada em Tempo: Arquivos modificados recentemente recebem pontuações de confiança mais altas
- Correspondência de Padrões: Detecta reverse shells, padrões de download-e-execução, técnicas de ofuscação
Mecanismos de Persistência Detectados
1. Serviços Systemd
- Arquivos de serviço (
.service) em/etc/systemd/system,/lib/systemd/system,/usr/lib/systemd/system - Serviços systemd no nível do usuário
- Filtra serviços desabilitados e serviços sem ExecStart
- Detecta comandos ExecStart suspeitos
- Verifica a integridade dos pacotes de binários/scripts executados
2. Cron Jobs e Tarefas Agendadas
- Crontabs do sistema (
/etc/crontab,/etc/cron.d/*) - Diretórios de execução periódica (
/etc/cron.{daily,hourly,weekly,monthly}) - Crontabs de usuário para todos os usuários (modo root)
- At jobs
- Padrões de comando suspeitos em tarefas agendadas
- Arquivos ACL
/etc/cron.allowe/etc/cron.deny— entradas referenciando usuários inexistentes sinalizadas
3. Perfis de Shell e Arquivos RC
- Perfis do sistema (
/etc/profile,/etc/bash.bashrc,/etc/zshrc) - Scripts Profile.d (
/etc/profile.d/*) - Perfis de usuário (
.bashrc,.bash_profile,.zshrc,.profile, etc.) - Configurações do Fish shell
- Detecta comandos maliciosos em arquivos de perfil
4. Scripts Init e RC.local
/etc/rc.locale variantes- Scripts init SysV (
/etc/init.d) - Scripts de runlevel (
/etc/rc*.d) - Detecta comandos suspeitos de download/execução
5. Módulos do Kernel e Pré-carregamento de Bibliotecas
- Configurações LD_PRELOAD (
/etc/ld.so.preload) — cada biblioteca listada verificada via gerenciador de pacotes - Configurações do linker dinâmico (
/etc/ld.so.conf,/etc/ld.so.conf.d/) — integridade do arquivo de configuração + arquivos.soem caminhos não padrão verificados /etc/environmentLD_PRELOAD/LD_LIBRARY_PATH — arquivo de ambiente sinalizado HIGH; caminhos de bibliotecas referenciados verificados (não gerenciado/modificado → CRITICAL)- Parâmetros de módulos do kernel (
/etc/modprobe.d/,/etc/modprobe.conf) — integridade do arquivo; diretivasinstallanalisadas para alvos de comando suspeitos;blacklistde módulos de segurança (apparmor, selinux, seccomp) sinalizado HIGH - Configurações de carregamento automático de módulos do kernel (
/etc/modules,/etc/modules-load.d/) — integridade da configuração; nomes de módulos referenciados resolvidos para arquivos.koviamodinfoe verificados - Módulos do kernel carregados (
lsmod) — enumeração e verificação de integridade
6. Mecanismos Adicionais
- Entradas XDG autostart (
.config/autostart,/etc/xdg/autostart) — todos os diretórios home de usuários verificados quando root - Arquivos de ambiente do sistema (
/etc/environment) — caminhos de bibliotecas LD_PRELOAD/LD_LIBRARY_PATH verificados - Configurações sudoers e drop-ins (
/etc/sudoers,/etc/sudoers.d/) — padrões NOPASSWD/ALL → HIGH - PAM (Módulos de Autenticação Conectáveis):
- Todos os módulos
.soverificados via gerenciador de pacotes; diretivas@includeseguidas;/etc/pam.confincluído - Análise de scripts
pam_exec.so— scripts ausentes/suspeitos → CRITICAL - Detecção de relay
pam_python.so/pam_perl.so— script extraído e analisado - Detecção de arquivo hook
pam_script.soem/etc/security/ - Integridade do arquivo de configuração — configurações PAM modificadas pertencentes a pacotes → CRITICAL
- Verificação de bibliotecas LD_PRELOAD em
pam_env.confe~/.pam_environment - Varredura geral de
/etc/security/
- Todos os módulos
- Scripts MOTD (
/etc/update-motd.d/) — verificação de pacote; modificado → CRITICAL - Git credential helpers e configurações core.pager — análise de conteúdo para todos os usuários
- Web shells em diretórios web comuns
8. Persistência SSH
~/.ssh/authorized_keyspor usuário — chaves modificadas recentemente sinalizadas; opçãocommand=analisada para padrões suspeitos~/.ssh/rcpor usuário — presença sinalizada MEDIUM; conteúdo de reverse shell suspeito → HIGH/CRITICAL
9. Sequestro de Binários
- Verifica binários instalados do sistema contra o banco de dados de pacotes (
dpkg -Vno Debian/Ubuntu,rpm -Vano RHEL/CentOS) - Arquivos modificados em
/usr/bin,/usr/sbin,/bin,/sbin→ achado CRITICAL - Módulos PAM modificados em
/lib/security→ achado CRITICAL - Conffiles (arquivos de configuração do dpkg) são excluídos para evitar falsos positivos
10. Bootloader e Initramfs
- Injeção de parâmetro do kernel
init=no GRUB (/etc/default/grub,/etc/default/grub.d/*.cfg) - Scripts init descartados no nível root em
/ - Módulos initramfs do Dracut com hooks
pre-pivotescrevendo em/sysroot/etc/shadow - Scripts hook do initramfs-tools do Ubuntu em
/etc/initramfs-tools/scripts/e/hooks/ - Imagens
/boot/initrd.img-*modificadas recentemente (baseado em mtime)
11. Manipulação do Polkit (PolicyKit)
- Arquivos
.pklacomResultAny/ResultInactive/ResultActive=yesincondicional - Concessões de identidade curinga (
unix-user:*) - Arquivos
.rulescompolkit.Result.YESincondicional (Polkit >= 0.106 baseado em JavaScript)
12. D-Bus e NetworkManager
- Registro malicioso de serviço de sistema D-Bus
Exec=(/usr/share/dbus-1/system-services/) - Diretivas curinga de política D-Bus
allow own="*"ousend_destination="*" - Scripts do dispatcher do NetworkManager (
/etc/NetworkManager/dispatcher.d/)
13. Regras Udev
- Diretivas Udev
RUN+=executando comandos ou scripts arbitrários (/etc/udev/rules.d/,/lib/udev/rules.d/) - Regras injetadas em tempo de execução em
/run/udev/rules.d/ - Padrões de delegação
at/cronemRUN+=(desvio comum de restrição de foreground)
14. Fuga de Contêiner
- Contêineres Docker privilegiados (
--privileged,--pid=host) - Bind-mounts de
docker.sockem contêineres (controle total do host via API Docker) nsenter -t 1em entrypoints de contêineres ou Dockerfiles- Dockerfiles em diretórios graváveis por usuário contendo técnicas de fuga
15. Verificações Avançadas de Binários e Privilégios
- Varredura ativa do sistema de arquivos por SUID/SGID em diretórios do sistema
- Varredura de capacidades de arquivos via
getcap—cap_setuid+epem GTFOBins → CRITICAL - Sequestro de binários: originais renomeados (
.original,.old,.bak,.real) com scripts wrapper - Contas não root com UID 0 em
/etc/passwd - Mascaramento de shell via espaço à direita no campo shell de
/etc/passwd - Contas de sistema (UID 1-999) com arquivos
authorized_keysSSH
Instalação
# Clone o repositório
git clone https://github.com/seuusuario/persistnux.git
cd persistnux
# Torne o script executável
chmod +x persistnux.sh