Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


powershell:security-audit:powershell-script-for-network-scan-to-find-non-standard-non-administrative-shared-folders-on-computers-and-servers

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
powershell:security-audit:powershell-script-for-network-scan-to-find-non-standard-non-administrative-shared-folders-on-computers-and-servers [04.05.2018 09:39] – создано Алексей Максимовpowershell:security-audit:powershell-script-for-network-scan-to-find-non-standard-non-administrative-shared-folders-on-computers-and-servers [04.05.2018 13:27] (текущий) Алексей Максимов
Строка 1: Строка 1:
 ===== Powershell скрипт опроса сети для поиска нестандартных сетевых каталогов (исключая административные и служебные)  ===== ===== Powershell скрипт опроса сети для поиска нестандартных сетевых каталогов (исключая административные и служебные)  =====
  
-{{:powershell:security-audit:pasted:20180504-090818.png }} Иногда требуется провести аудит локальной сети на предмет наличия на компьютерах пользователей и серверах общих сетевых каталогов, не учитывая при этом какие-то служебные и стандартные административные сетевые каталоги.\\  +{{:powershell:security-audit:pasted:20180504-090818.png }} Иногда требуется провести аудит локальной сети на предмет наличия на компьютерах пользователей и серверах общих сетевых каталогов, не учитывая при этом какие-то служебные и стандартные административные сетевые каталоги. Здесь представлен вариант **Powershell**-скрипта, который решает данную задачу. 
-Здесь представлен вариант **Powershell**-скрипта, который решает данную задачу.  + 
 +Скрипт сканирует указанный в первых двух переменных диапазон IP-адресов. 
 +В переменной ''$ShareNameExclusions'' перечислены исключения имён сетевых шар, которые нужно игнорировать при обработке результата сканирования. 
 +Обнаружив в сканируемом диапазоне доступный хост, скрипт выполняет проверку доступности порта TCP 139 и, в случае успешного ответа, выполняет удалённый анонимный опрос всех сетевых шар, в том числе и скрытых (со знаком ''$'').  
 + 
 +<file powershell Network-Scan-for-SMB-Shares.ps1> 
 +[System.Net.IPAddress]$StartScanIP = "10.1.0.1" 
 +[System.Net.IPAddress]$EndScanIP =   "10.2.254.254" 
 +[string]$ShareNameExclusions = "^ADMIN$*|^IPC$*|^print$*|^[A-Z]\`$" 
 +
 +$Watch = [System.Diagnostics.Stopwatch]::StartNew() 
 +$Watch.Start() 
 +
 +$ScanIPRange = @()  
 +if($EndScanIP -ne $null)  
 +
 +  $StartIP = $StartScanIP -split '\.'  
 +  [Array]::Reverse($StartIP)    
 +  $StartIP = ([System.Net.IPAddress]($StartIP -join '.')).Address   
 +  #                
 +  $EndIP = $EndScanIP -split '\.'  
 +  [Array]::Reverse($EndIP)    
 +  $EndIP = ([System.Net.IPAddress]($EndIP -join '.')).Address   
 +  #                
 +  For ($x=$StartIP; $x -le $EndIP; $x++) {      
 +      $IP = [System.Net.IPAddress]$x -split '\.'  
 +      [Array]::Reverse($IP)     
 +      $ScanIPRange += $IP -join '.'   
 +  } 
 +}  
 +  else  
 +{  
 + $ScanIPRange = $StartScanIP  
 +}  
 + 
 +Workflow Network-Scan{ 
 + param($ippool,$exclusions)     
 + $WFResult = @() 
 + foreach -parallel -throttlelimit 50 ($ip in $ippool) 
 + { 
 +   $ItemReturn = inlinescript 
 +   { 
 +      [array]$ResultArray = "" 
 +       
 +      If (Test-Connection -Computername $USING:ip -BufferSize 16 -Count 1 -Quiet) { 
 +      If (Test-NetConnection -Computername $USING:ip -Port 139 -InformationLevel Quiet) { 
 + 
 +      $Response = (net view $USING:ip /all 2>$null | Where-Object { $_ -match '\sDisk\s' }) ` 
 +                   -replace '\s\s+', ',' | ForEach-Object{ ($_ -split ',')[0] } 
 +       ForEach($Line in $Response) { 
 +         If ($Line -notmatch $USING:exclusions) { 
 +            $ResultArray = $ResultArray + $Line 
 +         } 
 +       } 
 +       $ResultArray = $ResultArray | ? {$_}     
 + 
 +        If ($ResultArray) { 
 +             try{ 
 +                $hName = [System.Net.Dns]::GetHostByAddress($USING:ip).HostName 
 +             }  
 +             catch{ 
 +                $hName = " - " 
 +             } 
 +             $Item = New-Object System.Object 
 +             $Item | Add-Member -MemberType NoteProperty -Name "SrvIP" -Value $USING:ip 
 +             $Item | Add-Member -MemberType NoteProperty -Name "SrvName" $hName 
 +             $Item | Add-Member -MemberType NoteProperty -Name "Shares" $ResultArray 
 +             return $Item 
 +        } 
 +       } 
 +                  
 +    } #inlinescript 
 +    $WORKFLOW:WFResult += $ItemReturn 
 +  } 
 + return $WORKFLOW:WFResult 
 +
 + 
 +$Result = Network-Scan $ScanIPRange $ShareNameExclusions 
 + 
 +$Result | Sort-Object Version,SrvIP,Status | ` 
 +  Format-Table -GroupBy Version -Wrap -Autosize ` 
 +  @{Name="Host IP address";Expression = { $_.SrvIP }; Alignment="Center"}, 
 +  @{Name="Host name from DNS";Expression = { $_.SrvName }; Alignment="Center"}, 
 +  @{Name="Shares List";Expression = { $_.Shares -join ' , ' };Alignment="Left"
 +   
 +Write-Host $Result.Count "hosts found on network range " $StartScanIP "-" $EndScanIP 
 +$Watch.Stop() 
 +Write-Host "Script time:" $Watch.Elapsed 
 + 
 +</file> 
  
 ---- ----
 Проверено на следующих конфигурациях: Проверено на следующих конфигурациях:
-^ Версия +^ Версия ОС  ^ Версия Powershell 
-| |+Windows Server 2012 R2 Standard EN (6.3.9600)| Windows PowerShell 4.0 |
  
 ---- ----
powershell/security-audit/powershell-script-for-network-scan-to-find-non-standard-non-administrative-shared-folders-on-computers-and-servers.1525415962.txt.gz · Последнее изменение: 04.05.2018 09:39 — Алексей Максимов

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki