ECSS - Modulo 12
Baseline de trafego normal
O aluno vai identificar o comportamento normal da rede do seu proprio student antes de investigar eventos suspeitos. O lab usa Windows 11, Windows Server e Ubuntu Server, sem criar recursos extras.
Resumo
- Duracao
- 35 a 50 min
- VM principal
- Windows 11
- Alvos
- WS e Ubuntu
- Ferramentas
- PowerShell, netstat, pktmon
- Custo extra
- Nenhum
Objetivos do lab
- Identificar os IPs principais do ambiente do aluno.
- Validar conectividade esperada entre Windows 11, Windows Server e Ubuntu.
- Registrar portas, protocolos, origem e destino do trafego normal.
- Gerar evidencias com comandos nativos do Windows.
- Criar uma tabela de baseline para comparar com eventos suspeitos.
Antes de comecar
Use somente os IPs do seu proprio student. Nao execute varreduras em IPs publicos, redes de outros alunos ou sistemas fora do laboratorio.
| Maquina | IP esperado | Funcao |
|---|---|---|
| Windows Server | 10.50.X.10 |
Servidor e dominio do student |
| Windows 11 | 10.50.X.11 |
Estacao do aluno |
| Ubuntu Server | 10.50.X.12 |
Servidor Linux, Docker, Wazuh ou servicos web |
1. Criar pasta de evidencias
No Windows 11, abra PowerShell e crie uma pasta para guardar os resultados.
$Student = "student01"
$Evidence = "C:\ECSS-M12-Baseline"
New-Item -ItemType Directory -Path $Evidence -Force | Out-Null
"Baseline de trafego - $Student" | Out-File "$Evidence\00-resumo.txt" -Encoding utf8
Altere student01 para o seu ambiente, se necessario.
2. Confirmar identidade e IP da estacao
Registre o nome da maquina, usuario e configuracao IP do Windows 11.
hostname | Out-File "$Evidence\01-hostname.txt" -Encoding utf8
whoami | Out-File "$Evidence\02-whoami.txt" -Encoding utf8
ipconfig /all | Out-File "$Evidence\03-ipconfig.txt" -Encoding utf8
Get-NetIPConfiguration | Format-List | Out-File "$Evidence\04-netipconfiguration.txt" -Encoding utf8
Anote: IP da estacao, gateway, DNS e dominio ou grupo de trabalho.
3. Definir os alvos do baseline
Defina os IPs do seu student para os testes.
$StudentNumber = 1
$WsIp = "10.50.$StudentNumber.10"
$W11Ip = "10.50.$StudentNumber.11"
$UbuntuIp = "10.50.$StudentNumber.12"
"Windows Server: $WsIp" | Out-File "$Evidence\05-alvos.txt" -Encoding utf8
"Windows 11: $W11Ip" | Add-Content "$Evidence\05-alvos.txt" -Encoding utf8
"Ubuntu Server: $UbuntuIp" | Add-Content "$Evidence\05-alvos.txt" -Encoding utf8
Get-Content "$Evidence\05-alvos.txt"
Para student02 use $StudentNumber = 2. Para student08 use $StudentNumber = 8.
4. Validar conectividade normal
Teste conexoes esperadas. Nem todos os servicos precisam estar abertos, mas o resultado deve ser registrado.
$Tests = @(
@{ Name = "RDP Windows Server"; Host = $WsIp; Port = 3389 },
@{ Name = "SSH Ubuntu"; Host = $UbuntuIp; Port = 22 },
@{ Name = "HTTPS Ubuntu"; Host = $UbuntuIp; Port = 443 },
@{ Name = "Portainer Ubuntu"; Host = $UbuntuIp; Port = 9443 },
@{ Name = "DNS publico"; Host = "1.1.1.1"; Port = 53 },
@{ Name = "HTTPS Internet"; Host = "www.microsoft.com"; Port = 443 }
)
$Results = foreach ($Test in $Tests) {
$Ok = Test-NetConnection $Test.Host -Port $Test.Port -InformationLevel Quiet
[pscustomobject]@{
Name = $Test.Name
Host = $Test.Host
Port = $Test.Port
Result = $Ok
}
}
$Results | Format-Table -AutoSize
$Results | Export-Csv "$Evidence\06-connectivity.csv" -NoTypeInformation -Encoding utf8
Resultado esperado: voce tera uma lista clara de quais conexoes fazem parte do comportamento normal.
5. Gerar trafego normal controlado
Execute atividades comuns para criar eventos normais.
Resolve-DnsName microsoft.com | Out-File "$Evidence\07-dns-microsoft.txt" -Encoding utf8
Resolve-DnsName google.com | Out-File "$Evidence\08-dns-google.txt" -Encoding utf8
curl.exe -I https://www.microsoft.com | Out-File "$Evidence\09-http-header-microsoft.txt" -Encoding utf8
Test-NetConnection $WsIp -Port 3389 | Out-File "$Evidence\10-rdp-ws.txt" -Encoding utf8
Test-NetConnection $UbuntuIp -Port 22 | Out-File "$Evidence\11-ssh-ubuntu.txt" -Encoding utf8
Test-NetConnection $UbuntuIp -Port 9443 | Out-File "$Evidence\12-portainer-ubuntu.txt" -Encoding utf8
Se uma porta retornar TcpTestSucceeded: False, registre como parte da baseline. Isso nao e erro automaticamente.
6. Coletar conexoes ativas
Liste conexoes TCP e cache DNS apos gerar o trafego.
Get-NetTCPConnection |
Sort-Object State,RemoteAddress,RemotePort |
Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,State,OwningProcess |
Out-File "$Evidence\13-nettcpconnection.txt" -Encoding utf8
netstat -ano | Out-File "$Evidence\14-netstat.txt" -Encoding utf8
Get-DnsClientCache | Out-File "$Evidence\15-dns-cache.txt" -Encoding utf8
Anote: quais portas remotas aparecem com mais frequencia.
7. Captura leve com pktmon
Se estiver em PowerShell como administrador, use o pktmon para capturar uma amostra curta.
pktmon filter remove
pktmon filter add -i $WsIp
pktmon filter add -i $UbuntuIp
pktmon start --capture --pkt-size 0 --file-name "$Evidence\baseline.etl"
Test-NetConnection $WsIp -Port 3389 | Out-Null
Test-NetConnection $UbuntuIp -Port 22 | Out-Null
curl.exe -I https://www.microsoft.com | Out-Null
pktmon stop
pktmon format "$Evidence\baseline.etl" -o "$Evidence\baseline.txt"
Get-Content "$Evidence\baseline.txt" -TotalCount 80
Se o comando pktmon nao estiver disponivel, pule esta etapa e use as evidencias dos passos anteriores.
8. Montar tabela de baseline
Preencha uma tabela com as comunicacoes observadas. Use a tabela abaixo como modelo.
| Origem | Destino | Porta | Protocolo | Esperado? | Justificativa |
|---|---|---|---|---|---|
| Windows 11 | Windows Server | 3389 | TCP/RDP | Sim | Acesso remoto ao servidor do lab |
| Windows 11 | Ubuntu Server | 22 | TCP/SSH | Sim | Administracao remota Linux |
| Windows 11 | Internet | 443 | TCP/HTTPS | Sim | Navegacao e atualizacoes |
$Baseline = @(
[pscustomobject]@{ Origem="Windows 11"; Destino="Windows Server"; Porta=3389; Protocolo="TCP/RDP"; Esperado="Sim"; Justificativa="Acesso remoto ao servidor" },
[pscustomobject]@{ Origem="Windows 11"; Destino="Ubuntu Server"; Porta=22; Protocolo="TCP/SSH"; Esperado="Sim"; Justificativa="Administracao Linux" },
[pscustomobject]@{ Origem="Windows 11"; Destino="Internet"; Porta=443; Protocolo="TCP/HTTPS"; Esperado="Sim"; Justificativa="Navegacao" }
)
$Baseline | Export-Csv "$Evidence\16-baseline.csv" -NoTypeInformation -Encoding utf8
9. Evidencias para entregar
- Arquivo
06-connectivity.csv. - Arquivo
13-nettcpconnection.txtou14-netstat.txt. - Tabela
16-baseline.csvpreenchida com pelo menos cinco comunicacoes. - Resposta curta: por que uma baseline ajuda a detectar incidentes?
Perguntas de revisao
- Qual a diferenca entre trafego esperado e trafego permitido?
- Por que uma conexao para porta aberta nao significa necessariamente ataque?
- Que evidencias voce usaria para diferenciar navegacao normal de exfiltracao?
- Quais portas do seu student devem aparecer na baseline?