В решении задач практической безопасности не редко приходится заниматься сканированием портов. Чаще всего, конечно, используется NMAP из поставки дистрибутива KALI LINUX. Но иногда когда нужно сделать чтото простое может пригодится консольная утилита Windows — PowerShell. Которая в последних версиях этой ОС достаточно мощная и позволяет решать множество задач при помощи командной строки.
PowerShell.
Предполагается, что читающий эту тему знает что такое сканер портов и имел опыт использования, иначе гугль.
Ещё нужна оболочка PowerShell, но она на многих машинах уже стандартно установлена.
В общем писатель из меня не очень, так что кратко о главном.
Скрин:
Исходник:
Param( [parameter(Mandatory = $true, Position = 0)] [ValidatePattern("bd{1,3}.d{1,3}.d{1,3}.d{1,3}b")] [string]$StartAddress, [parameter(Mandatory = $true, Position = 1)] [ValidatePattern("bd{1,3}.d{1,3}.d{1,3}.d{1,3}b")] [string]$EndAddress, [switch]$ResolveHost, [switch]$ScanPort, [int[]]$Ports = @(21,22,23,53,69,71,80,98,110,139,111,389,443,445,1080,1433,2001,2049,3001,3128,5222,6667,6868,7777,7878,8080,1521,3306,3389,5801,5900,5555,5901), [int]$TimeOut = 10000 ) function Invoke-TSPingSweep { Begin { $ping = New-Object System.Net.Networkinformation.Ping } Process { foreach($a in ($StartAddress.Split(".")[0]..$EndAddress.Split(".")[0])) { foreach($b in ($StartAddress.Split(".")[1]..$EndAddress.Split(".")[1])) { foreach($c in ($StartAddress.Split(".")[2]..$EndAddress.Split(".")[2])) { foreach($d in ($StartAddress.Split(".")[3]..$EndAddress.Split(".")[3])) { write-progress -activity PingSweep -status "$a.$b.$c.$d" -percentcomplete (($d/($EndAddress.Split(".")[3])) * 100) $pingStatus = $ping.Send("$a.$b.$c.$d",$TimeOut) if($pingStatus.Status -eq "Success") { if($ResolveHost) { write-progress -activity ResolveHost -status "$a.$b.$c.$d" -percentcomplete (($d/($EndAddress.Split(".")[3])) * 100) -Id 1 $getHostEntry = [Net.DNS]::BeginGetHostEntry($pingStatus.Address, $null, $null) } if($ScanPort) { $openPorts = @() for($i = 1; $i -le $ports.Count;$i++) { $port = $Ports[($i-1)] write-progress -activity PortScan -status "$a.$b.$c.$d" -percentcomplete (($i/($Ports.Count)) * 100) -Id 2 $client = New-Object System.Net.Sockets.TcpClient $beginConnect = $client.BeginConnect($pingStatus.Address,$port,$null,$null) if($client.Connected) { $openPorts += $port } else { # Wait Start-Sleep -Milli $TimeOut if($client.Connected) { $openPorts += $port } } $client.Close() } } if($ResolveHost) { $hostName = ([Net.DNS]::EndGetHostEntry([IAsyncResult]$getHostEntry)).HostName } # Return Object New-Object PSObject -Property @{ IPAddress = "$a.$b.$c.$d"; HostName = $hostName; Ports = $openPorts } | Select-Object IPAddress, HostName, Ports } } } } } } End { } } Invoke-TSPingSweep
Что с ним делать?
Исходник вбиваем в блокнот и сохраняем под названием Port-Scan.ps1
Для удобства можно закинуть его на С: или куда вам удобно.
Как пользоваться?
А пользоваться мы будем с помощью параметров, так же можно запустить дабл кликом по командлету, но мне так удобней.
Нажимаем Windows + R и вводим powershell
Запустили пс, теперь вводим параметры, как и что — ниже.
Моя часто-юзаемая схема:
<полный путь к файлу> -StartAddress <начальный айпишник> -EndAddress <конечный айпишник> -ResolveHost -Scanport -port <порты через запятую>
Примеры:
C:port-scan.ps1 -StartAddress 148.251.6.0 -EndAddress 148.251.6.100 -ResolveHost -ScanPort -Port 3389,21,139 //TimeOut -по умолчанию C:port-scan.ps1 -StartAddress 148.251.6.0 -EndAddress 148.251.6.100 -ResolveHost -ScanPort -TimeOut 300 //Порты будут сканиться по умолчанию C:port-scan.ps1 -StartAddress 148.251.6.0 -EndAddress 148.251.6.100 -ScanPort -Port 3389,21,139 //Хост не будет определяться и таймаут по умолчанию
Пояснение:
C:port-scan.ps1 -это полный путь к сканеру.
-StartAddress -этот параметр задает с какого айпишника пудем начинать сканить.
-EndAddress -этот параметр задает по какой айпишник сканить.
-ResolveHost -этот параметр определяет хост.
-ScanPort -этот параметр указывает, что мы будем сканить порты.
-Port -это сами порты, которые мы хотим отсканить.
-TimeOut -это таймаут времени ответа от хоста, в общем поймете 🙂
Заключение:
Все исходники и документацию можете найти по ссылке.
За материал спасибо Сrusty (Zloy.bz)
Чтобы взломать сеть Wi-Fi с помощью Kali Linux, вам нужна беспроводная карта, поддерживающая режим мониторинга…
Работа с консолью считается более эффективной, чем работа с графическим интерфейсом по нескольким причинам.Во-первых, ввод…
Конечно, вы также можете приобрести подписку на соответствующую услугу, но наличие SSH-доступа к компьютеру с…
С тех пор как ChatGPT вышел на арену, возросла потребность в поддержке чата на базе…
Если вы когда-нибудь окажетесь в ситуации, когда вам нужно взглянуть на спектр беспроводной связи, будь…
Elastic Security стремится превзойти противников в инновациях и обеспечить защиту от новейших технологий злоумышленников. В…
View Comments
Good work, bro
Как запустить этот скрипт из bat файла?