{"id":13843247,"url":"https://github.com/CTF-MissFeng/Ecloud","last_synced_at":"2025-07-11T18:31:08.377Z","repository":{"id":47600251,"uuid":"397982370","full_name":"CTF-MissFeng/Ecloud","owner":"CTF-MissFeng","description":"Ecloud是一款基于http/1.1协议传输TCP流量工具，适用于内网不出网时通过web代理脚本转发tcp流量","archived":false,"fork":false,"pushed_at":"2021-08-24T03:47:55.000Z","size":3048,"stargazers_count":106,"open_issues_count":2,"forks_count":23,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-11-17T05:27:13.540Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CTF-MissFeng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-08-19T15:03:02.000Z","updated_at":"2024-10-02T05:57:46.000Z","dependencies_parsed_at":"2022-08-19T01:40:26.731Z","dependency_job_id":null,"html_url":"https://github.com/CTF-MissFeng/Ecloud","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CTF-MissFeng%2FEcloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CTF-MissFeng%2FEcloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CTF-MissFeng%2FEcloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CTF-MissFeng%2FEcloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CTF-MissFeng","download_url":"https://codeload.github.com/CTF-MissFeng/Ecloud/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225745532,"owners_count":17517660,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T17:01:58.034Z","updated_at":"2024-11-21T14:30:56.628Z","avatar_url":"https://github.com/CTF-MissFeng.png","language":"Java","funding_links":[],"categories":["网络编程","Java"],"sub_categories":["Spring Cloud框架"],"readme":"# Ecloud\n\u003e Ecloud是一款基于http/1.1协议传输TCP流量的工具，适用于内网不出网时通过web代理脚本转发tcp流量，以达到socket5隧道、内网cs等程序上线、反弹虚拟终端等功能\n\n## 初衷\n\u003e 在进行红蓝对抗时，经常会遇到外网打点拿下的服务器不出网，只有靠已有的工具进行web代理出网，例如：\n- reGeorg/Neo-reGeorg: 通过web脚本搭建socket5隧道\n- ABPTTS: 和reGeorg类似，基于web脚本的就不一一介绍了\n- 毒刺(pystinger): 通过client-\u003eweb脚本流量转发-\u003eserver进行tcp连接\n\n\u003e 那为什么重新造轮子写一款新的工具呢？主要是实战中碰到的问题：\n- 过waf：这是最核心也是最重要的，分为数据包特征和http请求速率等（以上工具都已被waf拦截）\n- 需要的功能：socket5隧道、内网程序(如cs等)上线、虚拟终端(webshell的命令执行只是exec执行，不支持交互式)\n- 程序稳定性、跨平台性等\n- 发送和返回的数据太大\n- ......更多细节\n\n## 项目设计\n\u003e 要实现以上所需功能，还是得采用 client端-\u003eweb脚本转发流量-\u003eserver端，优点是：\n- 除能实现socket5隧道外，还能实现内网程序上线、虚拟终端等功能，有了TCP流量就能做更多事\n- web脚本代码简单，只是一个http请求转发，这样就能支持大部分web环境\n- TCP连接放在server端，可更容易管理和维护以及自定义流量加密等\n- 更少的http请求\n- 数据压缩，使用gzip压缩，越大数据压缩比例越好，减少数据体积\n\n\u003e 当然，也有缺点：\n- 需要上传server端并且执行\n\n## Socket5隧道\n\u003e 为了跨平台，采用golang语言开发，从零开始，不得不研究socket5协议、http协议转tcp优化、数据压缩等\n\n\u003e 要实现基于http/1.1协议搭建socket5隧道，因为TCP是字节流传输，并不是像http协议request-\u003eresponse这样回合制；故设计为：\n\n### client端\n- TCP监听某端口，解析socket5协议，获取目标主机和端口；发送connect命令让sever端建立tcp连接并保存；\n- 读取客户端输入，并将读取到的数据发送到server端进行tcp.write()\n- 读取server端tcp.read()结果，写入客户端中\n- 客户端断开，发送命令让server端相应的tcp连接断开，防止tcp打开过多，server端tcp连接池自身也进行自检，断开长时间未读写的连接\n\n### server端\n- 启一个web并监听某端口(监听本机地址和大数字端口只需普通用户权限即可)，接收web代理脚本转发的post数据\n- 内置tcp连接池，client端socket5每监听到一个客户端分配唯一标识，且connect时server tcp连接池分配\n\n### web脚本\n\u003e 只是一个http请求转发，可以省略\n\n### 过waf\n- 采用golang gob序列化+gzip数据压缩+base64替换编码，使其正常不能解码\n- 数据采用分段key-value形式，数据越大分段越多\n\n## 项目演示\n\n### 流量特征\n\u003e 内置ua协议头，每次发送不一致，内置1000+常用api变量名，可指定分段大小，如分段长度为20，则100大小的数据分为5个key-value形式；返回数据特征暂未处理\n\n![index](https://raw.githubusercontent.com/CTF-MissFeng/Ecloud/main/img/1.png)\n\n### 优化\n- 配置了只代理局域网功能，这样浏览器使用当前socket5打开外网地址不影响\n- 配置了域名过滤，浏览器会默认发送垃圾流量，配置此域名则进行过滤，最大程序减少http请求发送量\n\n```toml\n[client.socket5]\n        enable = true # 是否开启socket5代理功能\n        listen = \"127.0.0.1\" # 本地Socket5监听地址\n        listenPort = 1080 # 本地Socket5监听端口\n        readTime = 500 # 读取TCP响应延迟(太快容易被安全设备拦截)\n        writeTime = 200 # 发送TCP数据延迟\n        sectionLength = 100 # 发送数据分段长度\n        localRoute = false # 只代理局域网地址\n        domain = [\"baidu.com\", \"google.com\", \"googleapis.com\"]  # 当未开启只代理局域网地址功能 则过滤以下域名，防止浏览器默认垃圾流量\n```\n\n### 使用教程\n\n#### client端\n\u003e 配置好client.toml文件，直接运行即可，注意代理默认http://127.0.0.1:8080，测试时打开burp，或置为空\n\n#### server端\n\u003e 配置好server.json，直接运行（webshell命令执行需要从后台运行：nohup ./server \u0026），如果文件体积过大，可使用upx进行压缩后上传\n\n#### web脚本端\n\u003e 如果是测试可以省略web脚本，url直接填server http监听地址，若需要使用web脚本，则将web脚本上传到web目录中，url填写web脚本地址\n\n#### 视频演示\nhttps://www.bilibili.com/video/BV1bq4y1S7iC/\n\n\n## 内网Http代理\n\u003e 要使内网使用socket5代理出网，那http发包量将是正向socket5隧道的几倍，因为socket读写在内网端；\n\n\u003e 考虑到内网出网情况下只有使用cs等c2后门程序，那么http代理将是最好选择，同时大大减少了http发包请求；目前只写了http代理post和get两种方法，同时支持header、cookies协议头，对cs来说足够用了，后面不够在完善；\n\n### CS使用教程\n\n\u003e 监听选择http代理，地址为server端web端口，server端只开了这一个监听端口：\n\n![index](https://raw.githubusercontent.com/CTF-MissFeng/Ecloud/main/img/2.png)\n\n\u003e 可看到http代理功能发包请求相较于socket5隧道少\n\n![index](https://raw.githubusercontent.com/CTF-MissFeng/Ecloud/main/img/3.png)\n\n\u003e cs功能都能正常使用，除了数据流太大情况下，如截图、上下载文件等：\n\n![index](https://raw.githubusercontent.com/CTF-MissFeng/Ecloud/main/img/4.png)\n\n![index](https://raw.githubusercontent.com/CTF-MissFeng/Ecloud/main/img/5.png)\n\n![index](https://raw.githubusercontent.com/CTF-MissFeng/Ecloud/main/img/6.png)\n\n\n### 去做\n\u003e 该项目正在开发中\n\n- 内网程序出网 （已完成）\n- 虚拟终端\n- 更好想法\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCTF-MissFeng%2FEcloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCTF-MissFeng%2FEcloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCTF-MissFeng%2FEcloud/lists"}