Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: Advanced Threat Analytics versão 1.9
Nota
Este artigo só é relevante se implementar ATA Gateways em vez de ATA Lightweight Gateways. Para determinar se precisa de utilizar os ATA Gateways, veja Escolher os gateways certos para a sua implementação.
Os passos seguintes orientam-no ao longo do processo para validar que o espelhamento de porta está configurado corretamente. Para que o ATA funcione corretamente, o ATA Gateway tem de conseguir ver o tráfego de e para o controlador de domínio. A origem de dados principal utilizada pelo ATA é a inspeção aprofundada de pacotes do tráfego de rede de e para os controladores de domínio. Para o ATA ver o tráfego de rede, o espelhamento de porta tem de ser configurado. O espelhamento de porta copia o tráfego de uma porta (a porta de origem) para outra porta (a porta de destino).
Validar o espelhamento de porta com um script de Windows PowerShell
Guarde o texto deste script num ficheiro chamado ATAdiag.ps1.
Execute este script no ATA Gateway que pretende validar. O script gera tráfego ICMP do ATA Gateway para o controlador de domínio e procura esse tráfego na NIC de Captura no controlador de domínio. Se o ATA Gateway vir o tráfego ICMP com um endereço IP de destino da mesma forma que o IP dc endereçado que introduziu na ATA Console, considera que o espelhamento de porta está configurado.
Exemplo de como executar o script:
# ATAdiag.ps1 -CaptureIP n.n.n.n -DCIP n.n.n.n -TestCount n param([parameter(Mandatory=$true)][string]$CaptureIP, [parameter(Mandatory=$true)][string]$DCIP, [int]$PingCount = 10) # Set variables $ErrorActionPreference = "stop" $starttime = get-date $byteIn = new-object byte[] 4 $byteOut = new-object byte[] 4 $byteData = new-object byte[] 4096 # size of data $byteIn[0] = 1 # for promiscuous mode $byteIn[1-3] = 0 $byteOut[0-3] = 0 # Convert network data to host format function NetworkToHostUInt16 ($value) { [Array]::Reverse($value) [BitConverter]::ToUInt16($value,0) } function NetworkToHostUInt32 ($value) { [Array]::Reverse($value) [BitConverter]::ToUInt32($value,0) } function ByteToString ($value) { $AsciiEncoding = new-object system.text.asciiencoding $AsciiEncoding.GetString($value) } Write-Host "Testing Port Mirroring..." -ForegroundColor Yellow Write-Host "" Write-Host "Here is a summary of the connection we will test." -ForegroundColor Yellow # Initialize a first ping connection Test-Connection -Count 1 -ComputerName $DCIP -ea SilentlyContinue Write-Host "" Write-Host "Press any key to continue..." -ForegroundColor Red [void][System.Console]::ReadKey($true) Write-Host "" Write-Host "Sending ICMP and Capturing data..." -ForegroundColor Yellow # Open a socket $socket = new-object system.net.sockets.socket([Net.Sockets.AddressFamily]::InterNetwork,[Net.Sockets.SocketType]::Raw,[Net.Sockets.ProtocolType]::IP) # Include the IP header $socket.setsocketoption("IP","HeaderIncluded",$true) $socket.ReceiveBufferSize = 10000 $ipendpoint = new-object system.net.ipendpoint([net.ipaddress]"$CaptureIP",0) $socket.bind($ipendpoint) # Enable promiscuous mode [void]$socket.iocontrol([net.sockets.iocontrolcode]::ReceiveAll,$byteIn,$byteOut) # Initialize test variables $tests = 0 $TestResult = "Noise" $OneSuccess = 0 while ($tests -le $PingCount) { if (!$socket.Available) # see if any packets are in the queue { start-sleep -milliseconds 500 continue } # Capture traffic $rcv = $socket.receive($byteData,0,$byteData.length,[net.sockets.socketflags]::None) # Decode the header so we can read ICMP $MemoryStream = new-object System.IO.MemoryStream($byteData,0,$rcv) $BinaryReader = new-object System.IO.BinaryReader($MemoryStream) # Set IP version & header length $VersionAndHeaderLength = $BinaryReader.ReadByte() # TOS $TypeOfService= $BinaryReader.ReadByte() # More values, and the Protocol Number for ICMP traffic # Convert network format of big-endian to host format of little-endian $TotalLength = NetworkToHostUInt16 $BinaryReader.ReadBytes(2) $Identification = NetworkToHostUInt16 $BinaryReader.ReadBytes(2) $FlagsAndOffset = NetworkToHostUInt16 $BinaryReader.ReadBytes(2) $TTL = $BinaryReader.ReadByte() $ProtocolNumber = $BinaryReader.ReadByte() $Checksum = [Net.IPAddress]::NetworkToHostOrder($BinaryReader.ReadInt16()) # The source and destination IP addresses $SourceIPAddress = $BinaryReader.ReadUInt32() $DestinationIPAddress = $BinaryReader.ReadUInt32() # The source and destimation ports $sourcePort = [uint16]0 $destPort = [uint16]0 # Close the stream reader $BinaryReader.Close() $memorystream.Close() # Cast DCIP into an IPaddress type $DCIPP = [ipaddress] $DCIP $DestinationIPAddressP = [ipaddress] $DestinationIPAddress #Ping the DC at the end after starting the capture Test-Connection -Count 1 -ComputerName $DCIP -ea SilentlyContinue | Out-Null # This is the match logic - check to see if Destination IP from the Ping sent matches the DCIP entered by in the ATA Console # The only way the ATA Gateway should see a destination of the DC is if Port Spanning is configured if ($DestinationIPAddressP -eq $DCIPP) # is the destination IP eq to the DC IP? { $TestResult = "Port Spanning success!" $OneSuccess = 1 } else { $TestResult = "Noise" } # Put source, destination, test result in Powershell object new-object psobject | add-member -pass noteproperty CaptureSource $([system.net.ipaddress]$SourceIPAddress) | add-member -pass noteproperty CaptureDestination $([system.net.ipaddress]$DestinationIPAddress) | Add-Member -pass NoteProperty Result $TestResult | Format-List | Out-Host #Count tests $tests ++ } if ($OneSuccess -eq 1) { Write-Host "Port Spanning Success!" -ForegroundColor Green Write-Host "" Write-Host "At least one packet which was addressed to the DC, was picked up by the Gateway." -ForegroundColor Yellow Write-Host "A little noise is OK, but if you don't see a majority of successes, you might want to re-run." -ForegroundColor Yellow } else { Write-Host "No joy, all noise. You may want to re-run, increase the number of Ping Counts, or check your config." -ForegroundColor Red } Write-Host "" Write-Host "Press any key to continue..." -ForegroundColor Red [void][System.Console]::ReadKey($true)
Validar o espelhamento de porta com o Net Mon
Instale o Microsoft Network Monitor 3.4 no ATA Gateway que pretende validar.
Importante
Não instale o Microsoft Message Analyzer ou qualquer outro software de captura de tráfego no ATA Gateway.
Abra o Monitor de Rede e crie um novo separador de captura.
Selecione apenas o adaptador de rede Capture ou o adaptador de rede que está ligado à porta de comutador que está configurada como o destino do espelhamento de porta.
Certifique-se de que o Modo P está ativado.
Clique em Nova Captura.
Na janela Filtro de Visualização, introduza o seguinte filtro: KerberosV5 OU LDAP e, em seguida, clique em Aplicar.
Clique em Iniciar para iniciar a sessão de captura. Se não vir tráfego de e para o controlador de domínio, reveja a configuração do espelhamento de porta.
Nota
É importante certificar-se de que vê tráfego de e para os controladores de domínio.
Se apenas vir o tráfego numa direção, deve trabalhar com as suas equipas de rede ou virtualização para ajudar a resolver problemas com a configuração do espelhamento de porta.