理论上可以在高于65535的端口上部署后门吗?

信息安全 网络 视窗 linux 港口 后门
2021-08-28 06:17:22

假设您能够修改服务器/客户端的操作系统/固件/设备以在高于 65535 的端口上发送和侦听,是否可以植入后门并让它侦听,例如,端口 70000?

我想真正的问题是这样的:

如果您在机器上本地重建 TCP/IP 堆栈,由于RFC 793 - Transmission Control Protocol Standard下面某些答案中提到的工作方式,整体概念是否不起作用?无法访问在高于 65535 的端口上运行的服务。

关于硬件和设备创建了只有政府才能进行监控的后门的讨论太多了,我只是好奇这是否可能是他们这样做并避免被发现和被发现的一种方式?

4个回答

不,TCP 标头中的端口号字段在技术上限制为 2 个字节。(给你2^16=65536可能的端口)

如果您通过为更高的端口保留更多位来更改协议,则您违反了TCP 段的规范,并且客户端不会理解。换句话说,您不再说 TCP,并且“TCP 源/目标端口”中的“端口”一词将不适用。UDP 端口也存在同样的限制。

也就是说,后门可以通过与 TCP 或 UDP 不同的协议进行通信,以掩盖其通信。例如,icmpsh是一个仅使用 ICMP 的反向 shell。最终,您还可以使用原始套接字实现您自己的自定义传输层协议,这些原始套接字可以有自己的端口概念,其范围大于 0-65535。

如果您在机器上本地重建 TCP/IP 堆栈,由于 RFC 793 - 传输控制协议标准的工作方式如下面的一些答案所述,整体概念是否不起作用?无法访问在高于 65535 的端口上运行的服务。

高于 65535 的端口没有 TCP/UDP 服务。如果它支持 2 16 -1 以上的端口号不再TCP(或 UDP)

你能有别的……吗?当然。它会不会与 TCP 非常相似?到向后兼容的地步?两个问题都是。

关于创建后门的硬件和设备的讨论太多了,只有政府才能访问以进行监控,我只是好奇这是否可能是他们这样做并避免被发现和被发现的一种方式?

如果我开发了这样一个设备,它将依赖于一个足够普通以至于不起眼的协议。一个未知/非法的协议数据包,之后会产生一些额外的流量,这将是非常可疑的。

隐藏在(几乎)视线中

例如,这样的设备可能会检查有效负载中的某些字节。它们通常是不相关的值;然后,我可以将数据包发送到目标,或者如果它是路由器,甚至没有自己的 IP 地址,发送到目标之外的某个随机甚至可能不存在的主机,伪装成(比如说)HTTPS 请求或 SSH 登录试图。

如果你看到一个你不知道的数据包,你可能会怀疑。但即使你在日志中看到类似

SSH: failed attempt for user maintenance
SSH: failed attempt for user maintenance
SSH: failed attempt for user maintenance

你不会担心,特别是如果你没有用户“维护”。您可能会假设某人在某处发现了针对默认用户为“维护”的某些设备的攻击(见鬼,如果我是政府,我可以销售这样的设备,让它易受攻击,而不是修复它,仅在完全不同的设备上证明这种连接的目的。看到这种尝试你会做的第一件事是什么?要么什么都没有(“无害的蛮力。白痴”),谷歌和耸耸肩(“哦,有人认为我有一个 CheapRouter 2000。白痴” ,可能会写一个防火墙规则来阻止 IP - 除了数据包仍然到达网卡)。

实际发生的是路由器、网卡、主板或其他设备中的恶意固件识别数据包返回答案它可以通过伪造覆盖“真实”数据包的响应数据包来做到这一点。

如果您比较来自邪恶路由器的入站和出站流量,则发生非常糟糕的事情的唯一症状是:

带有 SSH 服务器的主机:

--> SSH SYN --> ROUTER --> SSH SYN --> HOST
<-- SSH S+A --- ROUTER <-- SSH S+A <-- HOST
--> SSH ACK --> ROUTER --> SSH ACK --> HOST
...
--> LOGIN ----> ROUTER --> LOGIN ----> HOST
<-- FAIL2------ ROUTER <-- FAIL1 <---- HOST    packets are different!

没有 SSH 服务器的主机:

--> SSH SYN --> ROUTER --> SSH SYN --> HOST
<-- SSH S+A --- ROUTER <-- SSH RST <-- HOST    wait, WTF?
--> SSH ACK --> ROUTER                 HOST
...
--> LOGIN ----> ROUTER                 HOST
<-- FAIL2------ ROUTER                 HOST

如果您在受感染设备左侧或右侧的电缆上嗅探,您会立即发现没有任何问题。

另一个可疑的事情是发件人显然使用了TCP 快速打开扩展。请注意,即使没有 TCP/FO,您也可以在 SYN 中发送额外数据,它只会被非 FO 和未妥协的设备忽略

如前所述,端口号用无符号 16 位整数表示,不能超过 65535。

但是有可能使用不同的协议(不是 TCP 或 UDP)。在 IP 报头中有一个 8 位字段,称为“协议号”,表示该数据包内使用的传输协议。

您可以在此处查看传输协议表:http ://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml

此列表中的一些协议是用户广泛使用的(例如,TCP 或 UDP),有些则很少使用(DCCP 或 UDPLite)。有些协议号尚未使用,有些已弃用(ARGUS、EMCON)。

因此,后门可以使用未使用的协议号向其服务器发送数据。当然,这种技术很难实现(需要访问 rawsocket 或实现后门作为 OS 内核模块)。