一个网络安全方面的问题, NAT 映射有没有可能被劫持?
如题,纯粹好奇,问一个小白问题。
一般我们认为如果把机器放在一个子网络中,是比把 IP 直接暴露在公网安全的,因为外部没有办法主动连接内部网络中的某台机器。
那么有没有办法通过劫持实现某种映射呢?比如如果我是黑客的话,我伪造一个封包说我是来自于 xxx 的,要发送给你们网络内部的 10.10.10.10 ,请帮我转发,有办法这样攻入一个系统吗?
如题,纯粹好奇,问一个小白问题。
一般我们认为如果把机器放在一个子网络中,是比把 IP 直接暴露在公网安全的,因为外部没有办法主动连接内部网络中的某台机器。
那么有没有办法通过劫持实现某种映射呢?比如如果我是黑客的话,我伪造一个封包说我是来自于 xxx 的,要发送给你们网络内部的 10.10.10.10 ,请帮我转发,有办法这样攻入一个系统吗?
所以基本上你都听不懂,问了也白问,回答了也白回答。
第一个条件你满足不了,第二个条件反而还真的有企业是允许的(有些二货网管把三层交换机当路由器用,却偷懒不限制访问)
——–
分享一个小故事:(端口小明、小敏、小周)
我是端口小明,主人叫我看大门,我被设定成只能回答 ABCD,有一天一个神明路过看到了我,问我叫什么名字。我知道我叫小明,但是我回答不了他,纵使他是我信仰的神明,因为我被设定成只能回答 ABCD 。我可以选择不回答他,也可以回答他 ABCD,也可以抛出一个错误,然后装死。我家的大门坚不可摧;
我是端口小敏,主人叫我看大门,我被设定成只能回答 ABCD,主人本来想叫小明来看大门的,结果嘴糊叫了我“小敏”。我和小明不同,但是名字差不多,我有一个漏洞,那就是当有人问 999 次我的名字的时候我会告诉别人大门的密码,有一天一个神明路过看到了我,问我叫什么名字。我知道我叫小敏,但是我回答不了他,纵使他是我信仰的神明,因为我被设定成只能回答 ABCD 。我可以选择不回答他,也可以回答他 ABCD,也可以抛出一个错误,然后装死。但是这个神明有点奇怪,他坚信世界上没有攻不破的系统,他试过无数种办法也没有攻破我家的大门,但是最终,他问了 999 次我叫什么名字,然后我告诉了他我家的大门密码,攻无不破的系统就此被入侵了。
我是端口小周,主人叫我看大门,我被设定成传话筒,有一天一个神明看到我,问我叫什么名字。由于没有指定对象,我按照主人预设的方案,向屋内的人复读“你叫什么名字”,房子里的大小姐听到了,说我叫小九,我复读“我叫小九”。神明以为我就是小九,但我知道我不是,我是小周,我只是个传话筒。试探了我无数次之后神明终于发现我是一个传话筒的事实,神明很高兴,因为他在 github 上听说了小敏的漏洞,神明想试一下能不能攻破这个系统,让我传话给小明,对我说了 999 次我叫什么名字,小明没有说出大门的密码。可惜这个神明有点嘴糊,他想找的其实是小敏,我知道,但我没法告诉他,因为我被设定成一个传话筒,只能传话,不能说话。我家的大门坚不可摧。
我是端口小周,主人还叫我看大门,我被设定成传话筒,又有个神明看到了我,他听说了我是一个传话筒,他也在 github 上听说了小敏的漏洞,神明想试一下能不能攻破这个系统,让我传话给小敏,对我说了 999 次我叫什么名字,小敏告诉了他我家的大门密码,攻无不破的系统就此被入侵了。
我还是端口小周,主人还叫我看大门,我被设定成传话筒,但是这次我被设定了限制,只能传话给小明,不能传话给小敏。我是传话筒、小敏是傻子,只要问了 999 次我叫什么名字,就能得到我家的大门密码的消息被传的满世界都是,甚至我家大门上都贴着一条这样的小广告,无数的神明蜂拥而至,纷纷问我叫什么名字,但是我被设下限制,不能再向小敏传话。我家的大门坚不可摧。
>因为外部没有办法主动连接内部网络中的某台机器。
其实单独 NAT 本身并不能保证这件事情,而是需要有相应的防火墙规则配合,而且绝大多数路由器都这么配置了,才给人这样的错觉,只要 NAT 了就能防止外部主动连接内部的机器。
例如,iptables 里只在 nat 表里配置了 NAT 规则,而 filter 表里 FORWARD 链默认是 ACCEPT,也没有任何规则 DROP 目的地址是非外部网卡地址的包,那么如果有个攻击者在路由器外侧网卡的链路上,它可以指定数据包的目的地址是内网中的任意一台机器的地址,发给路由器,路由器就会转发。
这个攻击场景局限于攻击者需要在路由器外侧网卡的链路上,条件比较苛刻,所以一般难有巨大的风险,所以常常被人忽视了。而且这不是通过劫持 NAT 映射表实现的攻击,是路由器的防火墙没有配置好留下的漏洞。
至于有没有其他符合主说的可以劫持 NAT 映射表的攻击手段,我就不知道了。
然后再看一下 UPnP 的原理以及爆出来的安全漏洞,利用 UPnP 的 NAT 穿透还是可以从外部攻入内部系统的。