Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Advanced Threat Analytics версии 1.9
Замечание
Эта статья относится только к развертыванию шлюзов ATA вместо упрощенных шлюзов ATA. Чтобы определить, нужно ли использовать шлюзы ATA, см. статью "Выбор правильных шлюзов для развертывания".
Ниже описан процесс проверки правильной настройки зеркального отображения портов. Для правильной работы ATA шлюз ATA должен иметь возможность просматривать трафик, идущий к контроллеру домена и от него. Основной источник данных, используемый ATA, — это глубокий анализ пакетов сетевого трафика к вашим контроллерам домена и от них. Чтобы ATA видел сетевой трафик, необходимо настроить зеркальное отображение портов. Зеркальное отображение портов копирует трафик из одного порта (исходного порта) в другой (целевой порт).
Проверка зеркального отображения портов с помощью скрипта PowerShell Windows
Сохраните текст этого скрипта в файл с именем ATAdiag.ps1.
Запустите этот скрипт на шлюзе ATA, который требуется проверить. Скрипт генерирует трафик ICMP от шлюза ATA к контроллеру домена и отслеживает этот трафик на адаптере захвата на контроллере домена. Если шлюз ATA видит трафик ICMP с целевым IP-адресом, таким же, как IP-адрес контроллера домена, который вы указали в консоли ATA, он считает, что зеркальное отображение портов настроено.
Пример запуска скрипта:
# 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)
Проверка зеркального отображения портов с помощью Net Mon
Установите Microsoft сетевой монитор 3.4 на шлюзе ATA, который требуется проверить.
Это важно
Не устанавливайте анализатор сообщений Microsoft или любое другое программное обеспечение для отслеживания трафика на шлюзе ATA.
Откройте сетевой монитор и создайте новую вкладку записи.
Выберите только адаптер захвата или сетевой адаптер, который подключен к порту коммутатора, настроенному в качестве назначения зеркального отображения портов.
Убедитесь, что режим P включен.
Нажмите кнопку "Создать запись".
В окне фильтра отображения введите следующий фильтр: KerberosV5 ИЛИ LDAP , а затем нажмите кнопку "Применить".
Нажмите кнопку "Пуск" , чтобы начать сеанс записи. Если вы не видите трафик, идущий к и от контроллера домена, просмотрите конфигурацию дублирования портов.
Замечание
Важно убедиться, что вы видите трафик на и с контроллеров домена.
Если трафик отображается только в одном направлении, вы должны работать с группами сети или виртуализации, чтобы помочь устранить неполадки с конфигурацией зеркального отображения портов.