Home

Awesome

Ecloud

Ecloud是一款基于http/1.1协议传输TCP流量的工具,适用于内网不出网时通过web代理脚本转发tcp流量,以达到socket5隧道、内网cs等程序上线、反弹虚拟终端等功能

初衷

在进行红蓝对抗时,经常会遇到外网打点拿下的服务器不出网,只有靠已有的工具进行web代理出网,例如:

那为什么重新造轮子写一款新的工具呢?主要是实战中碰到的问题:

项目设计

要实现以上所需功能,还是得采用 client端->web脚本转发流量->server端,优点是:

当然,也有缺点:

Socket5隧道

为了跨平台,采用golang语言开发,从零开始,不得不研究socket5协议、http协议转tcp优化、数据压缩等

要实现基于http/1.1协议搭建socket5隧道,因为TCP是字节流传输,并不是像http协议request->response这样回合制;故设计为:

client端

server端

web脚本

只是一个http请求转发,可以省略

过waf

项目演示

流量特征

内置ua协议头,每次发送不一致,内置1000+常用api变量名,可指定分段大小,如分段长度为20,则100大小的数据分为5个key-value形式;返回数据特征暂未处理

index

优化

[client.socket5]
        enable = true # 是否开启socket5代理功能
        listen = "127.0.0.1" # 本地Socket5监听地址
        listenPort = 1080 # 本地Socket5监听端口
        readTime = 500 # 读取TCP响应延迟(太快容易被安全设备拦截)
        writeTime = 200 # 发送TCP数据延迟
        sectionLength = 100 # 发送数据分段长度
        localRoute = false # 只代理局域网地址
        domain = ["baidu.com", "google.com", "googleapis.com"]  # 当未开启只代理局域网地址功能 则过滤以下域名,防止浏览器默认垃圾流量

使用教程

client端

配置好client.toml文件,直接运行即可,注意代理默认http://127.0.0.1:8080,测试时打开burp,或置为空

server端

配置好server.json,直接运行(webshell命令执行需要从后台运行:nohup ./server &),如果文件体积过大,可使用upx进行压缩后上传

web脚本端

如果是测试可以省略web脚本,url直接填server http监听地址,若需要使用web脚本,则将web脚本上传到web目录中,url填写web脚本地址

视频演示

https://www.bilibili.com/video/BV1bq4y1S7iC/

内网Http代理

要使内网使用socket5代理出网,那http发包量将是正向socket5隧道的几倍,因为socket读写在内网端;

考虑到内网出网情况下只有使用cs等c2后门程序,那么http代理将是最好选择,同时大大减少了http发包请求;目前只写了http代理post和get两种方法,同时支持header、cookies协议头,对cs来说足够用了,后面不够在完善;

CS使用教程

监听选择http代理,地址为server端web端口,server端只开了这一个监听端口:

index

可看到http代理功能发包请求相较于socket5隧道少

index

cs功能都能正常使用,除了数据流太大情况下,如截图、上下载文件等:

index

index

index

去做

该项目正在开发中