Ghostport:用 Rust 写一个端口欺骗工具

一个用 Rust 写的端口欺骗工具 Ghostport,目前收获了 480 个 Star:

正文顶部截图

README区域截图

Ghostport 的设计目标是迷惑端口扫描器。当扫描器向目标端口发起连接时,它会返回伪造的服务指纹,让对方误以为端口上运行着 Apache、OpenSSH 或 FTP 等服务。这个项目受到了 portspoof 的启发,用 Rust 和 Tokio 重新实现,强调异步处理能力和灵活的配置方式。

从防御者的角度看,这种工具的价值在于拉长攻击者的信息收集阶段。扫描结果越不可靠,后续渗透决策就越容易出现偏差。

核心功能比较直接:

动态端口模拟:针对端口扫描返回多种服务签名,覆盖常见协议特征。

可自定义签名:通过文本文件添加或修改服务指纹,不需要重新编译代码。

高性能:基于 Rust 和 Tokio 实现异步连接处理,单进程也能处理大量并发连接。

灵活日志:支持 debug、verbose 和 quiet 三种日志级别,方便调试或静默运行。

简单 CLI:命令行参数少,默认配置即可启动,适合快速部署。


安装

Ghostport 依赖 Rust 工具链。克隆仓库后进入目录执行 cargo 构建:

cargo build --release

编译完成后,可执行文件位于 target/release/ghostport。如果本地没有 Rust 环境,可以先安装 rustup,再用它获取最新稳定版工具链。


使用方法

最基本的启动方式是指定签名文件:

./target/release/ghostport -s signatures.txt

默认监听地址是 127.0.0.1:8888。也可以自定义监听地址和日志级别:

./target/release/ghostport -s signatures.txt -l 0.0.0.0:8888 -v

常用参数包括:

-s 指定签名文件路径,默认是 signatures

-l 指定监听地址,默认是 127.0.0.1:8888

-d 开启 debug 日志

-v 开启 verbose 日志

-q 开启 quiet 日志

-V 输出版本信息


签名文件格式

签名文件每行一条,可以是原始文本,也可以是正则表达式。例如:

HTTP/1.1 200 OK\r\nServer: Apache/2.4.41 (Unix)\r\n
SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.1
220 (vsFTPd 3.0.3)

项目自带的 signatures.txt 文件里还有更多示例。修改签名后只需重启进程即可生效,不需要重新编译。


流量重定向

Ghostport 本身监听单个端口。要让它响应所有端口的扫描请求,可以借助 iptables 把流量重定向到 Ghostport:

INTERFACE="eth0"
iptables -t nat -A PREROUTING -i $INTERFACE -p tcp -m tcp -m multiport --dports 1:65535 -j REDIRECT --to-ports 8888

这条规则会把 eth0 网卡上 1 到 65535 端口的入站 TCP 流量重定向到 8888。执行时需要 root 权限,且会影响指定网卡上的全部入站 TCP 连接。在正式环境中使用要格外谨慎,建议先在测试网络验证规则效果。移除规则时把 -A 换成 -D 即可。


Ghostport 适合用于安全测试场景,帮助防御方干扰扫描器的判断。项目采用 GNU 许可证开源,感兴趣的可以下载源码自己编译试试。

-A 换成 -D 即可。


Ghostport 适合用于安全测试场景,帮助防御方干扰扫描器的判断。项目采用 GNU 许可证开源,感兴趣的可以下载源码自己编译试试。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐