通过ICMP实现C2通信:红队渗透技巧详解

本文详细介绍了如何利用ICMP协议建立命令与控制通道的技术方法,包括攻击端和受害端的工具配置,以及如何绕过基于代理的防火墙检测,实现隐蔽通信。

通过ICMP实现C2通信

Darin Roberts //

在之前的博客中,我已经展示了如何获取各种C2会话。在这篇博客中,我将展示如何通过ICMP进行C2通信。首先,什么是ICMP?ICMP是互联网控制消息协议。它允许互联网连接的设备在遇到数据包传递问题时向源IP地址发送错误消息。这听起来像是一个非常有用的协议,确实如此。但是,它对攻击者也同样非常有用。似乎几乎所有可以用于好的方面的事物也可以并且被用于坏的方面。ICMP也不例外。

为了设置我们的会话,我们需要下载几个文件。第一个文件将在攻击机器上运行。您可以在这里下载:https://github.com/inquisb/icmpsh。我刚刚在我的Kali机器上克隆了它。第二个文件是一个PowerShell脚本,我们将在受害者机器上运行。您可以在这里下载脚本:https://github.com/samratashok/nishang/blob/master/Shells/Invoke-PowerShellIcmp.ps1。

在我的攻击机器实例上,我克隆了icmpsh。

为了让我的ICMP C2工作,我必须禁用基于机器的ICMP。我能够使用以下命令来完成这个操作。

然后我运行了python脚本来启动我的监听器。

如您所见,为了让脚本运行,我们需要给它我们的源IP和目标IP。

如您所见,什么都没有发生。这是因为我们的客户端还没有设置好。转到上面提到的GitHub仓库并保存原始代码。

现在我们有了PowerShell代码,我们需要将其传输到受害者计算机。当然,有无数种方法可以做到这一点。我不会详细说明如何在实践中做到这一点,由于这只是一个试验,我只是复制了过去。

现在我的脚本准备好了,我将运行它。这是一个PowerShell脚本,所以我需要获取一个PowerShell命令提示符。

现在我们有了PowerShell提示符,我需要运行我的脚本。我将导航到我放置文件的位置并运行以下命令。

然后我被要求输入我设置的监听器的IP地址。

当我运行命令时,脚本运行,并且我在Kali上启动的监听器连接了。这几乎就像魔法一样!

您可以在屏幕截图的底部看到,我有来自Windows机器的PowerShell命令提示符。现在我可以运行任何命令,就像我在受害者的计算机上一样。

那么,使用ICMP作为C2方法的好处是什么?所有通信都被注入到ICMP数据包中,包括请求和响应。因为所有流量都在ICMP数据包中,所以基于代理的防火墙无法检测到该流量。这并不是说这些连接无法被检测到,但它们可以绕过一些防火墙规则。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计