ECSS - Modulo 15

OpenVAS no Ubuntu para scan do Windows Server e Windows 11

O aluno vai instalar o Greenbone Vulnerability Manager, conhecido historicamente como OpenVAS, no Ubuntu Server e executar uma varredura autorizada contra as maquinas Windows do proprio student.

Cenario

A equipe de seguranca precisa medir vulnerabilidades expostas nos hosts Windows antes de recomendar hardening. O Ubuntu sera o scanner, e os alvos serao o Windows Server e o Windows 11 da mesma rede isolada.

Troque X pelo numero do student: Windows Server 10.50.X.10, Windows 11 10.50.X.11 e Ubuntu 10.50.X.12.

Resumo

Duracao
120 a 180 min
Scanner
Ubuntu 10.50.X.12
Alvos
WS vulneravel .10 e W11 comparativo .11
Interface
GSA via tunnel SSH
Porta local
9443

Limite obrigatorio

Execute o OpenVAS somente contra 10.50.X.10 e 10.50.X.11 do seu student. Nao escaneie IP publico, internet, Guacamole, o portal, outro student ou ranges inteiros. Este lab usa varredura controlada, sem brute force e sem DoS.

Objetivos

  • Instalar Docker e subir os containers oficiais do Greenbone Community Edition.
  • Validar containers, feeds e interface Greenbone Security Assistant.
  • Preparar uma vulnerabilidade controlada de SMBv1 no Windows Server.
  • Acessar a interface por tunnel SSH seguro.
  • Criar targets para Windows Server e Windows 11.
  • Executar scan controlado, confirmar achado no Windows Server, exportar relatorio e priorizar remediacao.

1. Preparar variaveis no Ubuntu

Acesse o Ubuntu Server do seu student pelo Guacamole e ajuste o numero do aluno.

STUDENT_NUMBER=1
PREFIX="10.50.${STUDENT_NUMBER}"
WS_IP="${PREFIX}.10"
W11_IP="${PREFIX}.11"
EVIDENCE="$HOME/ecss-m15-openvas"

mkdir -p "$EVIDENCE"
printf "Student: student%02d\nWindows Server: %s\nWindows 11: %s\n" "$STUDENT_NUMBER" "$WS_IP" "$W11_IP" | tee "$EVIDENCE/00-targets.txt"
hostname -I | tee "$EVIDENCE/01-ubuntu-ip.txt"
free -h | tee "$EVIDENCE/02-memory.txt"
df -h / | tee "$EVIDENCE/03-disk.txt"

Resultado esperado: Ubuntu com IP 10.50.X.12, memoria suficiente e pelo menos 40 GB livres.

2. Validar conectividade com Windows Server e Windows 11

Antes de instalar o scanner, confirme que o Ubuntu consegue chegar aos alvos.

sudo apt update
sudo apt -y install nmap

nmap -Pn -p 135,139,445,3389,5985,5986 "$WS_IP" "$W11_IP" -oN "$EVIDENCE/04-windows-baseline-nmap.txt"
cat "$EVIDENCE/04-windows-baseline-nmap.txt"

Resultado esperado: ao menos RDP 3389/tcp deve aparecer como aberto quando os hosts Windows estiverem ligados. SMB 445/tcp tambem pode aparecer.

3. Preparar vulnerabilidade controlada no Windows Server

No Windows Server 10.50.X.10, habilite SMBv1 e desative a exigencia de assinatura SMB somente para este laboratorio. O Windows 11 fica sem essa mudanca para servir como comparacao.

# Executar no Windows Server como Administrador
$StudentNumber = 1
$Evidence = "C:\ECSS-M15-SMBV1"

New-Item -ItemType Directory -Path $Evidence -Force
Start-Transcript -Path "$Evidence\m15-smbv1-enable.txt" -Force

"OpenVAS SMBv1 lab" | Set-Content "$Evidence\readme.txt"
New-SmbShare -Name ECSS-M15-SMBV1 -Path $Evidence -ReadAccess Everyone -ErrorAction SilentlyContinue

Set-NetFirewallRule -DisplayGroup "File and Printer Sharing" -Enabled True
Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -All -NoRestart

Set-SmbServerConfiguration `
  -EnableSMB1Protocol $true `
  -RequireSecuritySignature $false `
  -EnableSecuritySignature $false `
  -Force

Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol, RequireSecuritySignature, EnableSecuritySignature
Stop-Transcript
Restart-Computer
Esta configuracao e propositalmente insegura e deve existir apenas no Windows Server do student. Ao terminar o lab, execute a limpeza para desabilitar SMBv1 novamente.

4. Confirmar SMBv1 a partir do Ubuntu

Depois que o Windows Server reiniciar, valide que a superficie vulneravel ficou visivel para o scanner.

nmap -Pn -p445 --script smb-protocols,smb-security-mode "$WS_IP" -oN "$EVIDENCE/04b-windows-server-smbv1-check.txt"
cat "$EVIDENCE/04b-windows-server-smbv1-check.txt"

Resultado esperado: o script smb-protocols deve indicar suporte a SMBv1 ou dialetos antigos no Windows Server. Se a porta 445/tcp estiver fechada ou filtrada, confira o firewall do Windows.

5. Instalar Docker no Ubuntu

O Greenbone Community Edition sera executado por containers oficiais, com GSA, gvmd, OpenVAS e feeds.

sudo apt update
sudo apt -y install ca-certificates curl gnupg nmap

if ! command -v docker >/dev/null 2>&1; then
  curl -fsSL https://get.docker.com | sudo sh
fi

sudo systemctl enable --now docker
sudo docker --version | tee "$EVIDENCE/05-docker-version.txt"
sudo docker compose version | tee "$EVIDENCE/06-docker-compose-version.txt"
O metodo por containers evita depender de pacotes incompletos da distribuicao e segue o fluxo oficial do Greenbone Community Edition.

6. Baixar e iniciar os containers Greenbone

Baixe o compose oficial e inicie os servicos em segundo plano.

export DOWNLOAD_DIR="$HOME/greenbone-community-container"
mkdir -p "$DOWNLOAD_DIR"

curl -f -O -L https://greenbone.github.io/docs/latest/_static/compose.yaml --output-dir "$DOWNLOAD_DIR"
cd "$DOWNLOAD_DIR"

sudo docker compose -f "$DOWNLOAD_DIR/compose.yaml" pull
sudo docker compose -f "$DOWNLOAD_DIR/compose.yaml" up -d

sudo docker compose -f "$DOWNLOAD_DIR/compose.yaml" ps | tee "$EVIDENCE/07-greenbone-compose-ps.txt"

Resultado esperado: containers como gvmd, ospd-openvas, gsa, gsad, nginx e containers de feed aparecem como criados ou em execucao.

7. Definir senha do admin do Greenbone

O ambiente cria admin/admin por padrao. Troque a senha antes de usar.

Na primeira execucao, aguarde os containers de feeds ficarem healthy e o gvmd concluir a importacao inicial. Se o comando de senha parecer travado, cancele com Ctrl+C, espere alguns minutos e confira os logs antes de tentar novamente.

GVM_PASSWORD="EcssOpenVAS-${STUDENT_NUMBER}!"
export DOWNLOAD_DIR="$HOME/greenbone-community-container"

sudo docker compose -f "$DOWNLOAD_DIR/compose.yaml" ps
sudo docker compose -f "$DOWNLOAD_DIR/compose.yaml" logs --tail 80 gvmd

sudo docker compose -f "$DOWNLOAD_DIR/compose.yaml" \
  exec -T -u gvmd gvmd gvmd --user=admin --new-password="$GVM_PASSWORD"

sudo docker compose -f "$DOWNLOAD_DIR/compose.yaml" ps | tee "$EVIDENCE/08-greenbone-compose-ps-after-password.txt"
echo "Usuario: admin" | tee "$EVIDENCE/10-gvm-login.txt"
echo "Senha: $GVM_PASSWORD" | tee -a "$EVIDENCE/10-gvm-login.txt"
Essa senha e apenas para o laboratorio. Em ambiente real, use uma senha unica e forte, guarde em cofre e limite acesso administrativo.

8. Validar feeds e scan configs

A interface pode abrir antes de todos os objetos de scan estarem importados. Nao crie a task enquanto get_configs ainda retornar 0.

export DOWNLOAD_DIR="$HOME/greenbone-community-container"

sudo docker compose -f "$DOWNLOAD_DIR/compose.yaml" run --rm --no-deps gvm-tools \
  gvm-cli --gmp-username admin --gmp-password "$GVM_PASSWORD" \
  socket --xml '<get_configs rows="10"/>' --pretty | tee "$EVIDENCE/09-gvm-scan-configs.xml"

grep -E '<config id=|<name>|<config_count>' "$EVIDENCE/09-gvm-scan-configs.xml"

Resultado esperado: pelo menos uma scan config disponivel. Se aparecer <config_count>0, aguarde o feed terminar e acompanhe com sudo docker compose -f "$DOWNLOAD_DIR/compose.yaml" logs -f gvmd data-objects scap-data.

9. Abrir a interface por tunnel SSH

No Windows Server ou Windows 11 do mesmo student, abra PowerShell e crie o tunnel para o Ubuntu.

$StudentNumber = 1
$UbuntuIp = "10.50.$StudentNumber.12"

ssh -L 9443:127.0.0.1:443 labjoin@$UbuntuIp

Com o tunnel aberto, no navegador do Windows acesse:

https://127.0.0.1:9443

O compose publica a interface HTTPS apenas no localhost do Ubuntu. Por isso usamos o tunnel SSH e evitamos expor o Greenbone para a rede. Aceite o certificado do laboratorio e entre com admin.

10. Criar os targets Windows

  1. No Greenbone, abra Configuration e depois Targets.
  2. Clique em New Target.
  3. Nome: ECSS-M15 SMBv1 Windows Targets.
  4. Hosts: 10.50.X.10, 10.50.X.11.
  5. Alive Test: escolha Consider Alive se ICMP estiver bloqueado.
  6. Port List: use All TCP and Nmap top 100 UDP.
  7. Credentials: deixe vazio para um scan nao autenticado neste primeiro exercicio.
Scan nao autenticado encontra superficie exposta. Scan autenticado e mais profundo, mas exige credenciais e deve ser feito em outro lab com autorizacao especifica.

11. Criar e executar a tarefa de scan

  1. Abra Scans e depois Tasks.
  2. Clique em New Task.
  3. Nome: ECSS-M15 SMBv1 WS and W11 Scan.
  4. Scan Targets: selecione ECSS-M15 SMBv1 Windows Targets.
  5. Scan Config: use Full and fast.
  6. Clique no botao de start e acompanhe o progresso.

Resultado esperado: o Windows Server deve gerar achado relacionado a SMBv1, assinatura SMB nao exigida ou fraqueza de configuracao SMB. O Windows 11 pode aparecer com menos achados, funcionando como comparacao.

Se o scan ficar em 0% ou falhar logo no inicio, volte ao terminal Ubuntu e rode sudo docker compose -f "$DOWNLOAD_DIR/compose.yaml" logs --tail 80 gvmd ospd-openvas.

12. Validar resultados por terminal

Enquanto o OpenVAS roda, mantenha uma evidencia simples de portas vistas a partir do Ubuntu.

nmap -Pn -sV -p 135,139,445,3389,5985,5986 "$WS_IP" "$W11_IP" -oN "$EVIDENCE/11-windows-services-nmap.txt"
grep -E "Nmap scan report|open|closed|filtered" "$EVIDENCE/11-windows-services-nmap.txt" | tee "$EVIDENCE/12-service-summary.txt"

Essa evidencia nao substitui o OpenVAS, mas ajuda a provar que os alvos estavam acessiveis durante o lab.

13. Exportar e interpretar o relatorio

  1. Ao terminar o scan, abra o relatorio na propria task.
  2. Filtre por severidade High, Medium e Low.
  3. Exporte o relatorio em PDF, HTML ou CSV.
  4. Anote para cada host: servico afetado, severidade, evidencia e recomendacao.
Campo O que registrar
Host 10.50.X.10 ou 10.50.X.11
Servico Porta e protocolo relacionados ao achado
Severidade CVSS ou classificacao exibida pelo Greenbone
Recomendacao Patch, hardening, firewall, desativar servico ou investigar falso positivo

Troubleshooting rapido

# Ubuntu: servicos e porta local
export DOWNLOAD_DIR="$HOME/greenbone-community-container"
sudo docker compose -f "$DOWNLOAD_DIR/compose.yaml" ps
sudo docker compose -f "$DOWNLOAD_DIR/compose.yaml" logs --tail 80 gvmd ospd-openvas nginx
sudo ss -tulpn | grep -E '9392|443'
curl -k -I https://127.0.0.1

# Ubuntu: conectividade com Windows
nmap -Pn -p 3389,445 "$WS_IP" "$W11_IP"

# Windows: tunnel SSH
ssh -V
Test-NetConnection 10.50.X.12 -Port 22
Test-NetConnection 127.0.0.1 -Port 9443

Evidencias para entregar

  • 04-windows-baseline-nmap.txt mostrando os alvos Windows acessiveis.
  • 04b-windows-server-smbv1-check.txt mostrando SMBv1 visivel no Windows Server.
  • 07-greenbone-compose-ps.txt ou print dos containers Greenbone em execucao.
  • 09-gvm-scan-configs.xml mostrando scan configs carregadas.
  • Print da interface Greenbone em https://127.0.0.1:9443.
  • Print da task ECSS-M15 SMBv1 WS and W11 Scan concluida.
  • Relatorio exportado do Greenbone ou CSV dos principais achados.
  • Print ou transcript C:\ECSS-M15-SMBV1\m15-smbv1-enable.txt do Windows Server.
  • Resposta curta: quais achados voce priorizaria e por que?

Limpeza opcional

Execute a reversao do Windows Server ao final do lab e remova o scanner do Ubuntu somente se o instrutor pedir.

# Windows Server: reverter SMBv1 e assinatura SMB
Set-SmbServerConfiguration `
  -EnableSMB1Protocol $false `
  -RequireSecuritySignature $true `
  -EnableSecuritySignature $true `
  -Force

Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart
Remove-SmbShare -Name ECSS-M15-SMBV1 -Force -ErrorAction SilentlyContinue
Remove-Item C:\ECSS-M15-SMBV1 -Recurse -Force -ErrorAction SilentlyContinue
Restart-Computer

# Ubuntu: remover containers do Greenbone, se solicitado
export DOWNLOAD_DIR="$HOME/greenbone-community-container"
sudo docker compose -f "$DOWNLOAD_DIR/compose.yaml" down

# Remover tambem os dados persistentes, somente com autorizacao do instrutor:
# sudo docker compose -f "$DOWNLOAD_DIR/compose.yaml" down -v