ECSS - Modulo 12

Deteccao de reconhecimento e varredura

O aluno vai executar uma varredura pequena e autorizada contra o proprio ambiente, registrar evidencias e comparar os resultados com a baseline de trafego normal.

Cenario

Um analista percebe conexoes para portas incomuns no servidor Linux e precisa decidir se isso e apenas administracao normal ou uma tentativa de reconhecimento. Para isso, ele executa um teste controlado, coleta evidencias e descreve indicadores de comportamento suspeito.

Use somente o proprio student. Troque X pelo numero do aluno: Windows Server 10.50.X.10, Windows 11 10.50.X.11 e Ubuntu 10.50.X.12.

Resumo

Duracao
40 a 55 min
Origem
Windows 11
Alvo
Ubuntu Server
Opcional
Windows Server
Custo extra
Nenhum

Objetivos do lab

  • Executar uma varredura controlada de poucas portas.
  • Diferenciar conexao normal de comportamento de reconhecimento.
  • Coletar evidencias no Windows 11 e no Ubuntu Server.
  • Classificar eventos como informativo, suspeito ou incidente.
  • Aplicar uma mitigacao simples e reversivel.

Limites do exercicio

Nao execute DoS, flood, brute force ou varredura fora do seu student. Este lab usa uma lista pequena de portas e apenas alvos internos do laboratorio.

1. Preparar variaveis e pasta de evidencias

No Windows 11, abra PowerShell e configure o numero do seu student.

$StudentNumber = 1
$Evidence = "C:\ECSS-M12-Recon"
$WsIp = "10.50.$StudentNumber.10"
$W11Ip = "10.50.$StudentNumber.11"
$UbuntuIp = "10.50.$StudentNumber.12"

New-Item -ItemType Directory -Path $Evidence -Force | Out-Null
"Recon controlado student$StudentNumber" | Out-File "$Evidence\00-resumo.txt" -Encoding utf8
"Origem Windows 11: $W11Ip" | Add-Content "$Evidence\00-resumo.txt" -Encoding utf8
"Alvo Ubuntu: $UbuntuIp" | Add-Content "$Evidence\00-resumo.txt" -Encoding utf8
"Alvo Windows Server: $WsIp" | Add-Content "$Evidence\00-resumo.txt" -Encoding utf8

Para student02, altere $StudentNumber para 2. Para student08, altere para 8.

2. Confirmar conexoes normais antes da varredura

Antes do teste, confirme conexoes esperadas para comparar depois.

$Normal = @(
    @{ Name = "SSH Ubuntu"; Host = $UbuntuIp; Port = 22 },
    @{ Name = "Portainer Ubuntu"; Host = $UbuntuIp; Port = 9443 },
    @{ Name = "RDP Windows Server"; Host = $WsIp; Port = 3389 }
)

$NormalResults = foreach ($Test in $Normal) {
    [pscustomobject]@{
        Name = $Test.Name
        Host = $Test.Host
        Port = $Test.Port
        Open = Test-NetConnection $Test.Host -Port $Test.Port -InformationLevel Quiet
    }
}

$NormalResults | Format-Table -AutoSize
$NormalResults | Export-Csv "$Evidence\01-normal-connections.csv" -NoTypeInformation -Encoding utf8

Anote: quais portas abertas sao esperadas pela baseline do lab anterior.

3. Listar portas abertas no Ubuntu

No Ubuntu Server, execute os comandos abaixo para verificar servicos locais.

hostname -I
ip -4 addr
sudo ss -tulpen
sudo systemctl status ssh --no-pager

Anote: quais portas aparecem em estado LISTEN.

4. Executar varredura pequena com PowerShell

No Windows 11, execute uma varredura pequena e controlada contra o Ubuntu.

$Ports = 21,22,23,25,53,80,135,139,443,445,3389,8080,9443
$ScanResults = foreach ($Port in $Ports) {
    $Open = Test-NetConnection $UbuntuIp -Port $Port -InformationLevel Quiet
    [pscustomobject]@{
        Target = $UbuntuIp
        Port = $Port
        Open = $Open
        Time = Get-Date
    }
}

$ScanResults | Format-Table -AutoSize
$ScanResults | Export-Csv "$Evidence\02-ubuntu-port-scan.csv" -NoTypeInformation -Encoding utf8

Resultado esperado: poucas portas abertas. Muitas portas fechadas sao normais.

5. Opcional: usar Nmap se ja estiver instalado

Se o Nmap estiver instalado no Windows 11 ou Ubuntu, faca uma verificacao leve.

nmap -sV -Pn -p 21,22,23,25,53,80,135,139,443,445,3389,8080,9443 10.50.X.12

Substitua 10.50.X.12 pelo IP do seu Ubuntu. Nao use -A, -T5 ou ranges grandes.

6. Coletar evidencias no Windows 11

Registre conexoes recentes e resultados do teste.

Get-NetTCPConnection |
    Where-Object { $_.RemoteAddress -eq $UbuntuIp -or $_.RemoteAddress -eq $WsIp } |
    Sort-Object RemoteAddress,RemotePort |
    Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,State,OwningProcess |
    Out-File "$Evidence\03-recent-connections.txt" -Encoding utf8

Get-Process |
    Select-Object Id,ProcessName,Path |
    Sort-Object ProcessName |
    Out-File "$Evidence\04-processes.txt" -Encoding utf8

Anote: que processo no Windows gerou as conexoes da varredura.

7. Coletar evidencias no Ubuntu

No Ubuntu, procure eventos recentes relacionados a SSH e conexoes TCP.

sudo ss -tnp
sudo journalctl -u ssh --since "20 minutes ago" --no-pager
sudo tail -n 80 /var/log/auth.log

Se o arquivo /var/log/auth.log nao existir, use apenas journalctl.

Anote: houve tentativa de login ou apenas conexao de rede?

8. Comparar com a baseline

Classifique cada evento observado.

Evento Exemplo Classificacao Justificativa
RDP para Windows Server 10.50.X.11 para 10.50.X.10:3389 Normal Faz parte do acesso ao servidor do lab
SSH para Ubuntu 10.50.X.11 para 10.50.X.12:22 Normal ou suspeito Depende de horario, usuario e volume de tentativas
Teste em varias portas 21, 22, 23, 25, 80, 443, 9443 Reconhecimento Padrao de enumeracao de superficie de ataque
$Classification = @(
    [pscustomobject]@{ Event="RDP para WS"; Classification="Normal"; Reason="Acesso esperado ao servidor" },
    [pscustomobject]@{ Event="SSH para Ubuntu"; Classification="Normal"; Reason="Administracao Linux quando autorizado" },
    [pscustomobject]@{ Event="Varredura de varias portas"; Classification="Reconhecimento"; Reason="Tentativa de enumerar servicos" }
)
$Classification | Export-Csv "$Evidence\05-classificacao.csv" -NoTypeInformation -Encoding utf8

9. Mitigacao simples e reversivel

Opcionalmente, no Ubuntu, bloqueie temporariamente SSH vindo do Windows 11 e depois remova a regra. Faca isso apenas no seu student.

sudo ufw status
sudo ufw deny from 10.50.X.11 to any port 22 proto tcp
sudo ufw status numbered

# Teste novamente a partir do Windows 11:
# Test-NetConnection 10.50.X.12 -Port 22

# Remover a regra depois do teste:
sudo ufw delete deny from 10.50.X.11 to any port 22 proto tcp

Se o ufw nao estiver ativo, apenas descreva qual regra voce aplicaria em um firewall.

10. Evidencias para entregar

  • 01-normal-connections.csv com conexoes esperadas.
  • 02-ubuntu-port-scan.csv com a varredura controlada.
  • Print ou texto de ss -tulpen no Ubuntu.
  • 05-classificacao.csv com pelo menos tres eventos classificados.
  • Resposta curta: quais sinais diferenciam administracao normal de reconhecimento?

Perguntas de revisao

  1. Por que uma varredura de portas e considerada reconhecimento?
  2. Quais portas abertas no seu Ubuntu representam risco se expostas para a internet?
  3. Que evidencias voce usaria para confirmar que houve tentativa de login?
  4. Como uma baseline reduz falsos positivos?
  5. Qual seria uma resposta proporcional a uma varredura interna nao autorizada?