【发布时间】:2010-09-12 14:01:02
【问题描述】:
我发现一篇关于在机器上获取活动 tcp/udp 连接的文章。
http://www.codeproject.com/KB/IP/iphlpapi.aspx
但我的问题是我需要能够远程确定活动连接 - 以查看特定端口是否正在运行或侦听而不篡改机器。
这可能吗?
本机看起来不像,否则可能会造成安全问题。另一种方法是查询远程服务,然后可以在本地机器上进行必要的调用。
有什么想法吗?
【问题讨论】:
我发现一篇关于在机器上获取活动 tcp/udp 连接的文章。
http://www.codeproject.com/KB/IP/iphlpapi.aspx
但我的问题是我需要能够远程确定活动连接 - 以查看特定端口是否正在运行或侦听而不篡改机器。
这可能吗?
本机看起来不像,否则可能会造成安全问题。另一种方法是查询远程服务,然后可以在本地机器上进行必要的调用。
有什么想法吗?
【问题讨论】:
Nmap 就是你要找的。p>
【讨论】:
在远程计算机不知道的情况下,无法知道打开了哪些端口。但是您可以在端口上运行的程序不知道的情况下确定信息(即不干扰程序)。
使用 SYN 扫描:
为了建立连接,TCP 使用三次握手。可以在程序不知道的情况下,利用它来查明端口是否打开。
握手过程如下:
SYN 扫描是最流行的 TCP扫描。而不是使用 操作系统的网络功能, 端口扫描器生成原始 IP 数据包本身,并监控 回应。这种扫描类型也是 被称为“半开扫描”,因为 它实际上从未打开完整的 TCP 联系。端口扫描器生成 一个SYN包。如果目标端口是 打开,它将以 SYN-ACK 响应 包。扫描仪主机响应 一个RST数据包,关闭连接 在握手完成之前。
原始网络的使用有几个 优点,使扫描仪充分 控制发送的数据包和 响应超时,并允许 详细报告答复。 关于哪种扫描存在争议 对目标主机的干扰较小。同步 扫描的优点是 个人服务从未真正 接收连接,而一些 服务可能会因连接而崩溃 扫描。然而,在 RST 握手可能会给某些人带来问题 网络堆栈,特别简单 打印机等设备。没有 无论哪种方式都有结论性的论据。
如下所述,我认为nmap 可以进行SYN 扫描。
使用套接字进行 TCP 端口扫描:
确定哪些端口已打开的一种方法是打开该端口的套接字。或者到一个不同的端口,它会像你提到的那样为你找到信息。
例如从命令提示符或终端:
telnet google.com 80
UDP 端口扫描:
如果一个 UDP 数据包被发送到一个未打开的端口,系统将响应一个 ICMP 端口不可达消息。您可以使用此方法来确定端口是打开还是关闭。但是接收程序会知道。
【讨论】: