关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客
0x01:隧道技术介绍
攻击者通过边界主机进入目标内网,往往会利用边界主机作为跳板进行横向渗透,但现在的内部网络大多部署了很多安全设备,网络结构错综复杂,对于某些系统的访问会受到各种阻挠,此时就需要借助代理技术去突破这些限制,因此面对不同的网络环境选择合适的代理技术就显得尤为重要。
下面笔者介绍三种我们渗透时常见的情形,并以此引出隧道的作用(重点看第二个)。
0x0101:渗透场景 — 内网 <=> 公网
这种场景应该是小白入门安全时最常见到的场景了:
你在家里(内网)使用自己的笔记本电脑,开着扫描器,去对着一个公网服务器的网页扫描。此时,你是可以直接访问到目标的公网服务器进行渗透测试的,各种工具随便用,基本没啥限制。
如果发现目标网站存在漏洞,你可以上传一个 WebShell,然后通过远控工具,直接连接这个 WebShell 控制目标的公网服务器。
0x0102:渗透场景 — 内网 <=> 边界机器 <=> 内网
继续上面那个场景我们进行更深一步的利用,我拿到了目标的公网服务器,发现这个服务器有两个网卡,推测其中一个连着目标的内网,此时网络拓扑图就变成了下面这样:
我们想要去攻击目标内网的机器,是无法直接访问的。用过漏扫工具小伙伴应该比较清楚,我们扫描需要填上 IP 地址,如果我们直接填目标内网的 10.1.1.3 这种 IP 地址结果会是啥呢?
扫描器会直接去扫描你本地(攻击者)内网 10.1.1.3 IP 机器对应的漏洞,而不是目标内网的漏洞。此时,就需要隧道代理技术的发威了。
虽然我们无法直接访问目标内网,但那个边界机器可以啊,我们将目标内网需要被攻击的端口直接映射到这个边界机器的某个端口上,此时我们访问这个边界机器的对应端口就等于访问了目标内网对应的端口了,此时,我们就可以挂扫描器哐哐扫了(姿势还有很多,这里只是引出隧道技术对于我们内网渗透的作用)。
0x0103:渗透场景 — 公网 <=> 内网
这种场景是攻击者使用钓鱼技术经常遇到的场景,直接拿到一家公司内部员工的电脑权限:
代入攻击者视角,我要攻击一家公司的内部员工的一台电脑。我是无法直接访问这台电脑的,那么我应该咋办。既然我肯定无法直接访问它,那么能不能让他来访问我呢?
于是,攻击者买了一台公网服务器,任何人都可以访问它。然后攻击者又散播了木马,受害者下载恶意软件后一点击,软件执行,就自动将权限交给了攻击者的公网服务器(不是攻击者自己的笔记本电脑哦,因为员工也无法访问攻击者所处内网环境),由此,攻击者便可以直接进入内网(耗费了一台公网服务器)。
0x02:隧道的分类
隧道的种类多种多样,每种隧道对应的工具更是浩如烟海,这里先带大家了解一下隧道的基本分类,便于后期的学习。
0x0201:按流量层进行分类
将隧道按照流量层次(隧道所采用的协议对应的网络体系结构)进行分类,可以分为以下三类:
-
应用层隧道: DNS、SOCKS、HTTP、SSH
-
传输层隧道: TCP 隧道、UDP 隧道
-
网络层隧道: ICMP 隧道、IPv6 隧道
0x0202:按作用进行分类
将隧道按照作用(实现技术)可以大致分为以下五类:
-
反弹 SHELL 类: Nc、Python、Bash
-
端口转发类: LCX、SSH、iptables、telnet
-
端口映射类: LCX、NPS、FRP
-
正向代理类: EW、NSP、FRP
-
反向代理类: EW、NSP、FRP
0x03:隧道相关概念
这部分主要是介绍一些与 “隧道技术” 有关的概念,只有弄清了这些概念,后面学习隧道才能事半功倍。
0x0301:端口转发 & 端口映射
端口转发(Port Forwarding)是一种网络技术,用于将来自一个网络端口的数据流量重定向到另一个端口或设备。常见的端口转发可以分为以下几类:
-
本地端口转发: 将本地计算机的某个端口流量转发到远程服务器的指定端口。常用于访问远程服务。
-
远程端口转发: 将远程服务器的某个端口流量转发到本地计算机的指定端口。常用于从外部访问本地服务。
-
动态端口转发: 通过一个中间服务器动态转发流量,适用于需要访问多个远程服务的情况。常用于创建安全的代理连接。
端口映射(Port Mapping)是一种网络技术,用于将外部网络(如互联网)的请求转发到内部网络中的特定设备或服务。它通常用于让外部用户访问位于私有网络(如家庭或企业局域网)中的设备或服务。
端口映射与端口转发类似,但端口映射更常用于路由器或防火墙的配置中,用于将外部网络流量引导到内部网络的特定设备。
0x0302:HTTP 代理 & Socks 代理(隧道)
HTTP 代理 是一种专门用于处理 HTTP 和 HTTPS 协议的代理服务器,工作在应用层。它主要用于网页浏览、文件下载等基于 HTTP 协议的流量转发。
Socks 代理 是一种通用的代理协议,支持多种网络协议(如 TCP 和 UDP),工作在会话层。它比 HTTP 代理更加灵活,适用于各种类型的网络流量。
目前常见的有 Socks4 与 Socks 5 代理:
-
Socks4: 支持 TCP 协议,但不支持身份验证。
-
Socks5: 支持 TCP 和 UDP 协议,且支持身份验证和 IPv6。
0x0303:反弹 Shell 介绍
反弹 Shell(Reverse Shell),就是控制端监听本机的某 TCP/UDP 端口,被控端发起请求到该端口,并将自己的命令行输入输出都传递到控制端。
Reverse Shell 与 telnet、ssh 等标准 Shell 对应,本质上是网络概念的客户端与服务端的角色反转。
0x0304:正向代理 & 反向代理
1. 正向 & 反向
正向是攻击者电脑主动访问目标机器(适用于二者处于同一网络环境,能互相 Ping 通的情况)。例如你往目标上传了一个 WebShell,通过管理工具直接访问这个 WebShell 所拿到的 Shell 就是正向 Shell。
反向是目标机器主动连接攻击者电脑(适用于二者处于不同网络环境,受害者能访问攻击者,但是攻击者不能直接访问受害者的情况)。例如攻击者散播了一个木马程序,只要受害者一点击,就会自动将自己的权限连接到攻击者的公网服务器上。
2. 正向代理 & 反向代理
正向代理是客户端和目标服务器之间的中间服务器。客户端通过正向代理访问外部资源,代理服务器代表客户端向目标服务器发送请求并返回响应。
反向代理是目标服务器和客户端之间的中间服务器。客户端通过反向代理访问后端服务器,反向代理将请求转发给后端服务器并返回响应。(适用于 session 的维持,你登录了一个网站,你后面访问这个公司其他产品的时候都不需要再登录)



评论记录:
回复评论: