在隧洞里面用为什么卡放里面不能用通讯工具

本文为翻译文章原文链接见文末。(翻译为脉搏首发)

一般来说攻击者在行动过程中经常需要面对诸多的挑战,例如:

  • 克服网络障碍(网络策略、分段等)

  • 在“隐形模式”下完成各项操作,这样就不会被逮到了。

应对这些挑战的一个好方法是当试图创建一个能够跨越网络中各种障碍的隐蔽连接时,使用ICMP隧道技术

在计算机网络中,隧道技术通常是将一个网络协议封装为另一个网络协议的有效载荷(payload即传输的数据),详情请参阅这篇文章

Protocol)是Internet协议簇中的一个支持协议。网络设备可以使用它来发送错误消息和操作信息其中,最常见的ICMP消息可能也是最常用的消息就昰Ping消息

Ping消息可以从网络中的一个节点发送到另一个节点。该消息是由第2层和第3层报头(OSI模块定义的MACIP报头)以及一个特殊的ICMP数据包构成的发送节点需要设置目的地参数,如果目的地节点收到该消息它会立即返回该消息。

下面是ping数据包的IP数据报格式:

ICMP隧道可以通过修改有效载荷数据来实现这样,它就能在其中存放我们想要发送的数据了

如果将HTTP数据包封装在有效载荷数据中的话,就是这种方法最常用的┅种方式——WiFi蹭网

此外,这可以通过使用代理服务器来实现代理服务器会等待ping消息,并根据需要发送它们(例如作为HTTP)。

借助于正確的工具(如ptunnel)我们可以将要发送到GoogleHTTP数据包封装到ping数据包中(即有效载荷数据内)。然后将其发送到作为目的地的代理服务器IP地址處。

注意:该IP并非HTTP数据包的目的地(HTTP数据包的IP目的地应该是域名对应的IP地址)

由于机场的路由器通常允许ICMP流量流出网络因此,它会将Ping消息传递给代理服务器

代理服务器接收Ping数据包后,会将其分成两部分:

  • 包含原始HTTP消息的有效载荷

注意:代理发送给GoogleHTTP数据包的源IP地址应該是代理服务器本身的IP地址,而不是笔记本电脑的IP地址(或机场的路由器的地址......)因为Google应该回复的对象是代理,而不是您

这可能是ICMP隧噵最常见的用法,但作为一名红队成员我发现这的确是一种逃避防火墙和其他网络策略的“隐身”方法,所以它是非常有用的。

上面所说的这一切都是可能的因为Ping消息可以通过“Pay-for-WiFi”局域网中的路由器进入互联网。

那么为为什么卡放里面不能用人们会允许这种情况发苼呢?

作为一名前网络工程师我可以告诉大家的是,在尝试理解和解决非常复杂的网络问题时Ping是不可或缺的。

大多数网络故障排除过程都是从测试信息是否能够从一个节点传送到另一节点开始的即弄清楚:这条信息路线是否可行?网络组件是否处于可用状态并且能够囸常响应

面对这些问题,Ping消息可以用最简单的方式提供答案当然,它还能够用来解决许多其他方面的疑问

实际上,这些故障排除工莋几乎每天都会遇到这就意味着,相关的网络配置必须允许将网络上的Ping消息从一个节点传输到另一个节点同时,所有防火墙策略、路甴器策略和交换机ACL(访问列表)都必须允许ICMP消息从任何网络组件传输到任何其他组件

这就是为为什么卡放里面不能用Ping消息几乎不会受到網络分段和网络策略方面的影响的原因。

既然如此在网络中创建连接时,为了克服网络分段和网络策略等障碍可以让代理使用ICMP隧道来連接C&C服务器——这是一个非常棒的主意。

为此我用Python编写了一个简单的POC代码,以用来演示其工作机制

-PoC要求安装Scapy(实际上,Scapy是一个很好嘚学习工具)

-PoC没有涉及分段处理例如,如果来自代理的应答大于允许的有效载荷数据的上限则会对其进行分段。

PoC还包含了一个C&C服務器和一个代理其中,C2服务器将通过ICMP隧道向代理发送指令代理也将通过ICMP隧道来返回相应的结果。

本文为安全脉搏专栏作者发布转载請注明:

我要回帖

更多关于 为什么卡放里面不能用 的文章

 

随机推荐