如何使用python检测TCP端口扫描

Posted

技术标签:

【中文标题】如何使用python检测TCP端口扫描【英文标题】:How to detect TCP Port Scan using python 【发布时间】:2022-01-19 20:16:04 【问题描述】:

我是 python 网络编程的新手。我想知道是否有任何方法可以在 python 中编码来检测这种扫描。我想使用您可能建议的方法来构建一个开源项目。 提前致谢!!

【问题讨论】:

【参考方案1】:

我猜你想要做的是检测是否有人在使用 nmap 或一些类似的程序来扫描机器上的开放端口。

您应该首先了解如何检测开放的 tcp 端口。这是通过向远程机器发送一个 SYN 数据包来完成的。当远程机器用 SYN-ACK 应答时,你就知道远程机器的端口是打开的。

你可以做的是编写python脚本来嗅探机器上的整个网络数据。如果您看到很多 SYN tcp 请求(通常发送到很多端口)但没有发送任何实际数据。您可以知道您可能正在扫描开放端口。 您可以使用scapy 进行网络嗅探和数据包分析

【讨论】:

【参考方案2】:

不幸的是没有实际的方法来实现这一点,因为端口扫描没有可以用来指示的标准协议,它就像一个普通的套接字连接,无论是客户端连接来获取一个例如网页。 (可以是端口80的端口扫描器或需要特定页面的实际客户)

您可以开发一种算法来检查收到的请求数,例如 100 个随机端口,如果其中至少 x 个指向其中的这些随机端口一个时间范围,它可能是一个端口扫描器。

请注意,这并不总是有效,因为端口扫描并不总是意味着所有端口,它也可以是端口范围特定端口等等。

【讨论】:

以上是关于如何使用python检测TCP端口扫描的主要内容,如果未能解决你的问题,请参考以下文章

Python3实现TCP端口扫描

Python 实现端口扫描

使用TCP协议批量扫描端口

Kali Linux 网络扫描秘籍 第三章 端口扫描(二)

47.使用TCP协议批量扫描端口

47.使用TCP协议批量扫描端口