You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Bash脚本检测虚假端口/服务 | portspoof:如何识别开放端口是否为虚假端口?

这种情况绝对不正常,大概率是遇到了端口欺骗系统

首先,正常业务场景下,没有任何服务器会开放1-3500全部端口——尤其是大部分端口显示tcp/*(无对应已知服务),这明显是目标系统部署了端口欺骗/反扫描诱饵机制,目的是迷惑扫描工具,隐藏真实开放的服务端口。

为什么你的Netcat扫描会显示全端口开放?

你用的netcat -z是"零I/O"扫描模式,它只尝试完成TCP三次握手的前两步(发送SYN,等待SYN-ACK),只要对方返回SYN-ACK,nc就判定连接"succeeded"。而端口欺骗系统会对所有端口的SYN请求都返回SYN-ACK,让nc误以为连接成功,但实际上这些端口根本没有真实服务在监听。

如何检测哪些是虚假端口?

这里有几个实用的方法:

  • 发送对应服务的验证数据
    不要只用-z模式,尝试向端口发送符合对应服务协议的测试数据,看是否有真实响应。比如:

    # 测试HTTP端口(比如80)
    echo -e "HEAD / HTTP/1.1\r\nHost: xyz.com\r\n\r\n" | nc xyz.com 80
    # 测试MySQL端口(比如3306)
    nc xyz.com 3306
    

    虚假端口要么无响应,要么返回乱码/不符合协议的内容;真实服务会返回标准的协议响应(比如HTTP的200/404,MySQL的握手数据包)。

  • 使用专业扫描工具Nmap
    Nmap的探测逻辑比Netcat复杂得多,它会进行SYN扫描、服务版本探测,甚至尝试发送应用层数据来验证服务真实性。比如:

    nmap -sV -p 1-3500 xyz.com
    

    对于虚假端口,Nmap通常会标记为open|filtered,或者无法识别出有效服务;真实开放的端口会显示具体的服务名称和版本。

  • 抓包分析TCP连接全过程
    用tcpdump抓取扫描时的数据包,观察TCP三次握手后的行为:

    tcpdump host xyz.com and port 1-3500
    

    虚假端口的连接通常在三次握手完成后,会立即收到RST(重置)包;而真实服务会保持连接,或者返回应用层数据。

总结

你遇到的全端口开放结果是异常的,属于典型的反扫描策略。通过上面的方法,就能有效区分出真实开放的端口和用来迷惑扫描者的虚假端口。

内容的提问来源于stack exchange,提问作者hotpotcookie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 11:57:30