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.
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.csvcom conexoes esperadas.02-ubuntu-port-scan.csvcom a varredura controlada.- Print ou texto de
ss -tulpenno Ubuntu. 05-classificacao.csvcom pelo menos tres eventos classificados.- Resposta curta: quais sinais diferenciam administracao normal de reconhecimento?
Perguntas de revisao
- Por que uma varredura de portas e considerada reconhecimento?
- Quais portas abertas no seu Ubuntu representam risco se expostas para a internet?
- Que evidencias voce usaria para confirmar que houve tentativa de login?
- Como uma baseline reduz falsos positivos?
- Qual seria uma resposta proporcional a uma varredura interna nao autorizada?