Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Portspoof — 模拟所有65535个TCP端口的开放端口和服务签名,以减缓侦察、迷惑扫描器,并通过逼真的虚假服务和诱捕浪费攻击者资源。 | Kitploit
工具/GitHubGitHub/drk1wi/portspoof
防御工具侦察漏洞分析IDS/IPS规避网络安全红队
GitHubdrk1wi/portspoof

Portspoof

模拟所有65535个TCP端口的开放端口和服务签名,以减缓侦察、迷惑扫描器,并通过逼真的虚假服务和诱捕浪费攻击者资源。

查看仓库
2.4k1797天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

Portspoof

License Platform Build Status

Portspoof 在所有 65535 个 TCP 端口上模拟开放端口和服务指纹,将侦查阶段从快速扫描转变为一个漫长且资源密集的过程。扫描器会看到数千个令人信服但虚假的服务,使得识别真实攻击面变得不切实际。

目录

  • 概述
  • 主要特性
  • 工作原理
  • 设计思路
  • 安装
  • 配置
  • 使用
  • 使用 iptables 加固
  • Portspoof Pro
  • 作者与许可

概述

Portspoof 的主要目标是让攻击者的侦查过程变得缓慢、代价高昂且不可靠。与标准的 5 秒 Nmap 扫描就能映射系统上每个真实服务不同,面对 Portspoof 的攻击者会看到 65535 个开放端口,每个看起来都像一个不同的合法服务。没有快速的方法来判断哪些是真实的。

主要特性

  • 所有 65535 个 TCP 端口始终开放: Portspoof 不会告诉攻击者某个端口是 CLOSED 或 FILTERED,而是对每个连接尝试返回 SYN+ACK。
  • 服务模拟: 超过 9000 个动态服务签名,由正则表达式生成。每个端口都会用不同的、令人信服的服务身份来响应探测。
  • 混合交付模式: 每个端口在启动时被分配不同的行为模式(立即发送横幅、延迟响应或静默保持),保持时间在很宽的范围内分布。全端口范围版本检测(nmap -sV -p-)将远超实际可行限制。
  • 攻击性防御: 可用作“利用框架前端”,以利用攻击者自身扫描工具中的漏洞。
  • 轻量级且安全: 在用户空间运行(无需 root 权限),每个运行实例仅绑定一个 TCP 端口,CPU/内存使用极低。

工作原理

1. 击败端口扫描器

示例 Nmap 扫描:

root@kitploit:~
$ nmap -p 1-20 target
Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for target
Host is up (0.00016s latency).
PORT   STATE SERVICE
1/tcp  open  tcpmux
2/tcp  open  compressnet
3/tcp  open  compressnet
4/tcp  open  unknown
5/tcp  open  rje
6/tcp  open  unknown
7/tcp  open  echo
8/tcp  open  unknown
9/tcp  open  discard
10/tcp open  unknown
11/tcp open  systat
12/tcp open  unknown
13/tcp open  daytime
14/tcp open  unknown
15/tcp open  netstat
16/tcp open  unknown
17/tcp open  qotd
18/tcp open  unknown
19/tcp open  chargen
20/tcp open  ftp-data

2. 混淆版本检测

Portspoof 会使用基于海量正则表达式数据库动态生成的、有效的签名来响应服务探测。因此,攻击者将无法确定你的系统真正使用了哪些端口号。

示例版本扫描(端口 1–100):

root@kitploit:~
$ nmap -sV -p 1-100 target
Nmap scan report for target
Host is up (0.00016s latency).
PORT    STATE SERVICE            VERSION
1/tcp   open  tcpmux?
2/tcp   open  irc                ircu ircd
3/tcp   open  tcpwrapped
5/tcp   open  http               Polycom CMA Global Address Book (GAB) httpd
10/tcp  open  http               PGP Universal httpd
11/tcp  open  http               SnapStream Media Beyond TV PVR http config
12/tcp  open  pop3               Novell GroupWise pop3d
13/tcp  open  http               micro_httpd
15/tcp  open  ssh                OpenSSH r (protocol 8; NCSA GSSAPI authentication patch)
16/tcp  open  ftp                QMS/Minolta Magicolor 2200 DeskLaser printer ftpd
17/tcp  open  smtp               Network Box smtpd
21/tcp  open  ftp?
22/tcp  open  ssh                OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
23/tcp  open  tcpwrapped
25/tcp  open  smtp?
27/tcp  open  http               BMC/Marimba Management http config
37/tcp  open  http               Indy httpd qlRKjiF
39/tcp  open  pop3
41/tcp  open  ftp                VSE ftpd WhH
43/tcp  open  imap               Scalix imapd 6
46/tcp  open  telnet             AXIS webcam telnetd 96747 (Linux)
49/tcp  open  smtp               Openwave Email Mx smtpd
50/tcp  open  http               3Ware web interface 3v (RAID storage)
51/tcp  open  ftp                WebStar 4dftp ...
53/tcp  open  tcpwrapped
55/tcp  open  webdav             Tonido WebDAV
56/tcp  open  tor-control        Tor control port (Authentication required)
59/tcp  open  irc                ircu ircd
60/tcp  open  rtsp               GStreamer rtspd
64/tcp  open  http               BaseHTTPServer CAxoE (Mercurial hg serve; Python LDkW)
66/tcp  open  telnet             Slirp PPP/SLIP-on-terminal emulator telnetd
70/tcp  open  smtp               qpsmtpd
71/tcp  open  smtp               Microsoft Exchange smtpd
73/tcp  open  http               Avaya IP Office VoIP PBX httpd
77/tcp  open  smtp               Zeus SMTPS smtpd
79/tcp  open  ftp                Sambar ftpd
80/tcp  open  tcpwrapped
81/tcp  open  imap-proxy         nginx imap proxy
82/tcp  open  ssh                (protocol 811)
83/tcp  open  http               peercast.org
88/tcp  open  csta               Alcatel OmniPCX Enterprise
90/tcp  open  http               WASD httpd
91/tcp  open  http               Fortinet FortiGate 50B firewall http config
93/tcp  open  imap               ModusMail imapd 4
98/tcp  open  ssh                Sysax Multi Server sshd 7 (protocol 940)
99/tcp  open  http               2Wire HomePortal http config 5473
100/tcp open  newacct?

结果

结合这些技术意味着:

  • 没有快速的方法来区分真实服务和虚假服务。时序、行为和横幅内容在整个端口范围内各不相同。
  • 使用默认诱捕设置的全端口版本扫描(nmap -sV -p-)需要 10 小时以上,并生成数百兆字节的伪造数据。
  • 攻击者的扫描器在连接上浪费时间和线程,而这些连接最终不会产生任何结果。

设计思路

真实服务(SSH、SMTP、FTP、HTTP)会发送一个横幅并保持连接打开,等待客户端输入。令人信服的模拟意味着做同样的事情:接受、发送、保持。但每个客户端一个线程的模型会消耗内存和 CPU 进行上下文切换,而且在大规模情况下,防御者的资源会在攻击者失去耐心之前耗尽。这种欺骗工具变成了一个自我 DOS 的向量。

方法: 一个单线程的 epoll 事件循环。每个端口在启动时被分配一个交付模式:有的立即推送横幅,有的等待客户端发送数据后才响应,还有的保持静默。保持时间跨数量级分布(几十毫秒到几分钟),并带有每连接抖动,因此对同一端口的重复探测不会返回相同的时序。

这一点很重要,因为如果没有它,攻击者可以向每个端口发送垃圾数据并测量响应时间:真实服务会快速关闭(错误协议),而天真的诱捕会保持数秒。通过混合模式和较宽的时序分布,数千个虚假端口也会在真实服务的相同范围内关闭。没有清晰的阈值可供过滤。

这种经济性源于不对称性:

  • 防御者成本: 每个空闲连接约 1–2 KB 内核内存。epoll 循环是单线程的,没有上下文切换开销。一台适中的机器可以轻松保持 10k+ 并发连接。
  • 攻击者成本: 时间和努力。端口扫描无法告诉他们任何信息——每个端口都是开放的。要找到真实服务,他们需要对所有 65535 个端口进行版本检测,然后对任何看起来合理的端口进行协议级探测。一个 5 秒的扫描变成了 10 小时以上的活跃工作,结果仍然是一个大海捞针,大多数攻击者会转向更容易的目标。

每个端口的交付模式在进程生命周期内固定,但重启后不可预测。保持时间具有每连接随机分量,因此重复探测会显示自然变化,类似于负载下的真实服务。

v2.0 取代了原有的“横幅后关闭”行为,该行为容易受到连接关闭绕过的影响(参见 Vicarius/Hored1971 的博客文章)。诱捕引擎使用混合时序保持所有连接打开,从而击败了连接关闭过滤、时序指纹、横幅分析和统计模式建模。


安装

前提条件

确保已安装 C++ 编译器和 CMake(3.10+)。

从源码构建

root@kitploit:~
mkdir build && cd build
cmake -DCMAKE_INSTALL_SYSCONFDIR=/etc .. 
make
sudo make install

配置

Portspoof 在用户空间运行,但依赖系统防火墙规则来拦截发往其他端口的流量。

1. 配置防火墙(iptables)

将所有传入 TCP 流量(端口 1-65535)重定向到 Portspoof 端口(默认 4444)。

Linux(iptables):

root@kitploit:~
# 首先排除真实服务,然后将其余流量重定向到 Portspoof
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j RETURN
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp -j REDIRECT --to-ports 4444

注意:将 eth0 替换为你的网络接口。为每个运行真实服务的端口添加一条 RETURN 规则。

要使其持久化,你可以保存 iptables 规则,或使用 system_files 目录中提供的 iptables-config。

2. 系统启动

你可以使用 system_files/init.d/ 中的示例将 Portspoof 添加到启动脚本中。


使用

服务模拟模式(推荐)

此模式生成并向端口扫描器提供虚假的服务签名。

root@kitploit:~
portspoof -c /etc/portspoof.conf -s /etc/portspoof_signatures -D

使用自定义诱捕时间(保持每个连接 10 到 60 秒):

root@kitploit:~
portspoof -s /etc/portspoof_signatures -t 10 -T 60 -D

开放端口模式

此模式仅对每个连接尝试返回 OPEN 状态,而不发送服务横幅。连接仍会被诱捕。

root@kitploit:~
portspoof -D

模糊测试模式

Portspoof 可用于通过发送随机或基于词表的载荷来模糊测试扫描工具。

使用内部生成器进行模糊测试:

root@kitploit:~
# 生成随机大小的随机载荷
portspoof -1 -v

使用词表进行模糊测试:

root@kitploit:~
portspoof -f payloads.txt -v

使用 iptables 加固

上面的基本 REDIRECT 规则有效,但激进的扫描器仍可能试图用连接压垮 Portspoof。以下规则集增加了速率限制,并自动禁止超过连接阈值的主机。托管真实服务(此例中为 SSH)的端口不被重定向,但仍受全局禁止规则保护。

root@kitploit:~
# --- NAT:排除真实服务后重定向所有流量 ---
# 为你实际使用的每个端口(SSH、HTTP 等)添加一条 RETURN 规则
iptables -t nat -A PREROUTING -p tcp --dport 22 -j RETURN
iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-ports 4444

# --- FILTER:深度防御 ---

# 允许环回(关键:防止破坏本地服务)
iptables -A INPUT -i lo -j ACCEPT

# 如果该 IP 被标记为滥用,丢弃所有数据包(静默,不发送 RST)
iptables -A INPUT -m recent --name PORTSCAN --rcheck --seconds 60 -j DROP

# 限制每个源 IP 的新 SYN 速率
iptables -A INPUT -p tcp --syn -m hashlimit \
  --hashlimit-above 10/sec --hashlimit-burst 30 \
  --hashlimit-mode srcip --hashlimit-name syn_throttle -j DROP

# 如果单个 IP 与 portspoof 保持 100+ 连接,标记并丢弃
iptables -A INPUT -p tcp --syn --dport 4444 -m connlimit \
  --connlimit-above 100 --connlimit-mask 32 \
  -m recent --name PORTSCAN --set -j DROP

# 允许已建立的流量和新连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --syn -j ACCEPT
iptables -A INPUT -j DROP

对于高流量部署,增加 xt_recent 列表大小:

root@kitploit:~
echo "options xt_recent ip_list_tot=10000" > /etc/modprobe.d/xt_recent.conf

并调整内核连接跟踪:

root@kitploit:~
sysctl -w net.netfilter.nf_conntrack_max=131072
sysctl -w net.core.somaxconn=4096

Portspoof Pro

Portspoof Pro 将欺骗从单个主机扩展到整个网络。单个传感器即可模拟整个 /16 网络:数千个 IP,每个 IP 在所有端口上拥有独特的服务,并保持有状态的多步骤会话。

  • 网络级欺骗。 将黑暗 IP 空间和未使用的子网转变为活跃的欺骗网格。每个模拟主机都呈现独特的服务,并针对每个源 IP 具有不同的个性。主动诱捕消耗攻击者的套接字池并限制自动化工具。
  • 扫描检测与工具指纹识别。 检测 SYN、FIN、NULL、XMAS、ACK 扫描技术。识别 Nmap、Masscan、ZMap 和自定义扫描器。输出结构化的 JSON 遥测数据并附带 MITRE ATT&CK 映射,可传输到你的 SIEM。
  • 生产安全部署。 在沙盒环境中运行,与生产流量共存。路由策略将欺骗流量导向传感器。无需在线接入,不会对真实工作负载造成风险。
  • 开箱即用的合规性。 支持 NIS2、DORA、ISO 27001、NIST CSF 和 CIS Controls。

portspoof.io


作者与许可

作者: Piotr Duszyński(@drk1wi)

许可: GNU 通用公共许可证 v2.0(GPLv2)。详情请参见 LICENSE 文件。

如需商业合法应用,请联系作者获取适当的许可安排。


报告问题

如果你遇到任何错误或有功能请求,请在 GitHub Issue Tracker 上报告,或通过电子邮件 piotr [at] duszynski.eu 联系作者。

下载工具