windows PowerShell内置的端口扫描器使用
前言
可能我们想知道远程主机的端口开放,首先想到的都是Nmap工具,但有时工具获取困难,且Nmap获取信息有限,这时PowerShell就有用武之地了。
用PowerShell实现基本的端口扫描
CMD进入powershell:
【示例1】: 针对单个IP的多个端口的扫描
PS C:\User\my>1..1024 | % {echo ((new-object Net.Sockets.TcpClient).Connect
("10.0.0.100",$_)) "Port $_ is open!"} 2>$null
参数说明:
1) 1..1024 - 创建值为从1到1024的一系列变量
2)| - 管道运算符,将上述对象传递给循环体
3)% - 在PowerShell中,%是foreach对象的别名,用来开始一个循环。循环体为接下来使用大括号{}括起来
的内容
4)echo - 将输出打印至屏幕
5)new-object Net.Sockets.TcpClient - 新建一个.Net TcpClient类的实例,它允许我们和TCP端口
之间建立socket连接
6).Connect("10.0.0.100",$_)) -调用TcpClient类的Connect函数,参数为10.0.0.100和端口$_。
其中$_这个变量表示当前对象,即本轮循环中的数字(1..1024)
7)"Port $_ is open!") - 当程序发现一个开放的端口时,屏幕打印『Port # is open!』
8)2>$null - 告诉PowerShell遇到任何错误都不显示
上述示例中扫描的端口范围是1-1024,可修改为你想扫描的端口范围,如(22…58)、(8080…9000)等端口范围。
此外,PowerShell中另一种可用的方法是用Test-NetConnection命令,其能够输出更多有用的信息。
**【示例2】:Test-Netconnection 针对某IP段中单个端口的扫描
PS C:\User\my>foreach ($ip in 1..20) {Test-NetConnection -Port 80 -InformationLevel
"Detailed" 192.168.1.$ip}
注:win7版本的powershell没有Test-NetConnection ,win0系统有该命令
注: Test-NetConnection的最大的不足是:该命令是在4.0版本的PowerShell中才引入的。
参数说明:
1)foreach ($ip in 1…20) {} - 循环遍历数字1到20
2)Test-NetConnection - Test-Connection是一个用来测试不同种类的网络连接的工具
3)-Port 80 - 检查80端口是否可用
4)-InformationLevel “Detailed” - 提供详细的输出信息
5)192.168.1.ip从1循环至20
当然,构建一个可以遍历多个系统的多个端口的扫描器也是可行的。
【示例3】: ** 针对某IP段 & 多个端口的扫描器
PS C:\User\my>1..20 | % { $a = $_; 1..1024 | % {echo ((new-object Net.Sockets.TcpClient).
Connect("10.0.0.$a",$_)) "Port $_ is open!"} 2>$null}
上述命令执行较慢,改进版如下:
PS C:\User\my>1..20 | % { $a = $_; write-host "------"; write-host "10.0.0.$a"; 22,53,80,445
| % {echo ((new-object Net.Sockets.TcpClient).Connect("10.0.0.$a",$_))
"Port $_ is open!"} 2>$null}
许多安全的网络环境会开启出口流量过滤控制,以限制对某些服务的出口协议的访问。这对于提升HTTP/HTTPS/DNS通道的安全性是有好处的,原因之一就在于此。然而,当需要识别出可替代的出站访问时,我们可以在内网中使用PowerShell来评估网络防火墙上的出口过滤器。
PowerShell测试出口过滤器:
PS C:\User\my>1..1024 | % {echo ((new-object Net.Sockets.TcpClient).Connect("allports.exposed",$_)) "Port $_ is open" } 2>$null
推荐阅读
-
使用PowerShell操作Windows服务的命令小结
-
Windows自带的端口转发工具netsh使用方法
-
windows和linux下使用命令查找端口对应的进程pid并杀死进程
-
Windows Terminal powershell 内置SSH使用、SSH指定端口链接远程服务器
-
使用PowerShell操作Windows服务的命令小结
-
windows下nginx的安装使用及解决80端口被占用nginx不能启动的问题
-
使用Python3制作TCP端口扫描器的图文代码详解
-
使用Python编写简单的端口扫描器的实例分享
-
使用Python3制作TCP端口扫描器的图文代码详解
-
使用Python编写简单的端口扫描器的实例分享