我的问题:
我已经读过,使用 IP 地址的单个数字等价物(作者称为“二进制等价物”)而不是实际的 IP 地址或域名可以“绕过基本 ACL ”。
我想知道这种“深奥”的做法是否真的被使用过,如果是,在哪些情况下?
我的理解是过滤可能发生在两层:
- 在应用层。此处代理将根据黑名单检查域名。使用IP绕过这个似乎是一种更实用的方法,
- 在网络层。在这里,防火墙会根据黑名单检查目标 IP:据我了解,无论一个人如何输入 IP 地址,无论他使用 DNS、IP、二进制还是其他任何方式,他仍然会被阻止。
我能想象的唯一理论场景是一个愚蠢的系统管理员使用配置错误的代理而不是防火墙来伪造基于 IP 的过滤。
有没有更真实的场景?除非我的理论情况实际上反映了现实生活中的安全问题?
所谓的“二进制等价”的东西:
对于那些不知道我指的是什么的人,我认为很少有人知道www.google.com可以通过三种方式到达主机(我们以清酒为例):
- 最明显的:它的域名:
www.google.com, - 一种更技术的方式:它的IP地址:
216.58.210.228, - 一种绝对技术含量更高的方法:使用 IP 地址的十进制表示:
3627733732.
我在这里感兴趣的是后者。要计算它,您需要从主机的 IP 地址开始:
$ host www.google.com
www.google.com has address 216.58.210.228
我读的书建议将每个 IP 地址组件转换为二进制数,将它们连接起来得到一个大的二进制数,然后将其转换回十进制。每个人都有自己的口味,我个人更喜欢简单地循环乘以 256 并添加每个组件,如下例所示:
$ bc
((( 216 * 256) + 58) * 256 + 210) * 256 + 228
3627733732
这会产生一个数字,您可以使用它使用不透明的 URL(例如http://3627733732)访问 Google 的服务器,或者通过 ping 来确保联系到正确的 IP 地址,例如:
$ ping 3627733732
PING 3627733732 (216.58.210.228) 56(84) bytes of data.
64 bytes from 216.58.210.228: icmp_seq=1 ttl=53 time=26.5 ms
这是一件很酷的事情,网络巫师,用这个奇妙的 1337 技巧让你的朋友惊叹不已,太棒了!但除此之外,我想知道这是否有任何实际用途?