「NAT」- 安全隐患

问题描述

数据通过 NAT 设备后,NAT 设备会建立 NAT 映射表。当 NAT 设备收到回程报文后根据映射表决定是否是合法回程报文,然后决定是否进行转发;

如果外部主机以 NAT 映射表中的公网 IP+Port 为目标发送数据,数据是否会被转发?—— 数据是会被转发的,原因在于 NAT 并不强制检查源地址,即针对源地址的检查是可选的;

解决方案

WIP

Tuple

内部 Tuple:内部主机的私有地址和端口号所构成的二元组,即内部主机所发送报文的源地址、端口所构成的二元组;

外部 Tuple:内部 Tuple 经过 NAT 的源地址 / 端口转换之后,所获得的外部地址、端口所构成的二元组,即外部主机收到经 NAT 转换之后的报文时,所看到的该报文的源地址和源端口;

目标 Tuple:外部主机的地址、端口所构成的二元组,即内部主机所发送报文的目标地址、端口所构成的二元组;

安全类型

NAT 可以分成两大类:Cone NAT(圆锥型 NAT)与 Symmetric NAT(对称型 NAT);

Cone NAT 又可以分为 Full Cone NAT(完全圆锥型)、Restricted Cone NAT(限制圆锥型)、Port -Restricted Cone NAT(端口限制圆锥型);

NAT 有 4 种不同的类型:

Full Cone NAT

Full Cone NAT(完全圆锥型):同一内部 Tuple 请求被 NAT 转换至同一外部 Tuple,任意外部主机就都能以外部 Tuple 中的地址和端口为目标发送报文,NAT 设备对收到的报文能正确转发。Full Cone NAT 处理方法简单,但安全性有缺陷;

内网 PC1 与 Web 服务器通信以后,NAT 设备生成 NAT 映射表,如果是 Full Cone NAT 类型,则攻击者以外部 Tuple(122.1.2.2:1025)为目标发送数据,则数据会被发送给 PC1;

Restricted Cone NAT

Restricted Cone NAT(限制圆锥型):Full Cone NAT 的受限版本,于 Full Cone NAT 概念类似,主要区别是 NAT 设备收到外部主机的报文时,除了查看报文目的地址+端口是否与外部 Tuple 一致外,还会查看报文源 IP 是否与目标 Tuple 中的 IP 地址一致,如果都一致则转发;

内网 PC1 与 Web 服务器通信以后,NAT 设备生成 NAT 映射表,如果是 Restricted Cone NAT 类型,则攻击者需要以外部 Tuple(122.1.2.2:1025)为目标地址+端口,以目标 Tuple IP(200.1.2.3)为源发送数据,数据才会被发送给 PC1;

Port Restricted Cone NAT

Port Restricted Cone NAT(端口限制圆锥型):Restricted Cone NAT 的进一步受限版本,此类 NAT 对于收到的外部主机回包除了检查数据源 IP+端口与外部 Tuple 是否一致外,还需要检查数据目的 IP+端口是否与目标 Tuple 一致,如果都一致则转发,此类 NAT 安全性很高。

内网 PC1 与 Web 服务器通信以后,NAT 设备生成 NAT 映射表,如果是 Port Restricted Cone NAT 类型,则攻击者需要以外部 Tuple(122.1.2.2:1025)为目标地址+端口,以目标 Tuple(200.1.2.3:80)为源发送数据,数据才会被发送给 PC1;

Symmetric NAT

Symmetric NAT(对称型 NAT):此类 NAT 在进行转换时,同一内部 Tuple 加上同一目标 Tuple 才会被 NAT 转换成同一外部 Tuple,否则会转换成不同外部 Tuple。对于返回数据的处理和 Port Restricted Cone NAT 类似,需要查看回程数据的源 IP+端口,目的 IP+端口与外部 Tuple 和目标 Tuple 是否一致;

内网 PC1 与 Web 服务器和 DNS 服务器通信时,NAT 设备对于不同的目标会生成不同 NAT 映射表项,即使源 IP+端口都一致。攻击者需要以外部 Tuple(122.1.2.3:1025)为目标地址+端口,以目标 Tuple(200.1.2.3:53)为源发送数据,数据才会被发送给 PC1;

应用场景

现网中 NAPT 或 Easy-IP 技术一般使用的是 Symmetric NAT 类型;
现网中可能会存在 NAT 穿越的要求,此时可以使用 Cone NAT 支持 NAT 穿越技术;