AI prompts
base on A socksv5 proxy tool Written by CLang. 一款纯C实现的基于socks5协议的轻量内网穿透工具,支持ew的全部数据转发方式,支持跨平台使用 # README
<h1>yuze🤗 (项目正在重构中,向方便的多级代理模式改进)</h1>
## 简介
yuze 是一款纯C实现的轻量的内网穿透工具,支持正向,反向socksv5代理隧道的搭建,支持EarthWorm (ew) 的全部数据转发方式,可跨平台使用。
特点
- 支持正向、反向代理
- 支持多种数据转发方式,穿透复杂的网络环境
- 支持任意以tcp协议为基础的服务
- 体积小, 极轻量的内网穿透工具 (仅有25kb)
- 跨平台,支持Windows、Linux ( 2024.1.31 update)
## 使用简介
下面是对具体功能的使用场景和演示,为了方便使用,工具的部分功能承袭了ew,lcx的命名
1. yuze提供的正向代理
使用场景
```
可控主机有公网IP且可开启任意监听端口
```
示意图
![image-20240131141116234](./img/image-20240131141116234.png)
```
a) ./yuze -m s_server -l 7878
b) HackTools可使用Host_One主机的7878端口提供的socks5代理
```
![s_server](./img/s_server.gif)
2. yuze提供的反向代理
使用场景
```
可控主机不存在公网IP,但是可出网,通过主动连接的方式建立反向socks代理。类似frp
```
示意图
![image-20240131141335692](./img/image-20240131141335692.png)
```
a) ./yuze -m yuze_listen -s 7878 -e 9999
// 在具有公网IP的主机上添加转接隧道,将7878端口收到的代理请求转交给反连9999端口的主机
b) ./yuze -m r_server -r 127.0.0.1 -s 9999
// 将目标主机反向连接公网转接主机
c) HackTools可使用Host_One主机的7878端口提供的socks5代理
```
![r_server](./img/r_server.gif)
同时支持了ew的几种二重网络环境的数据转发方式
3. yuze_tran 使用场景
```
1. 获得目标网络内两台主机 A、B 的权限,情况描述如下:
A 主机:存在公网 IP,且自由监听任意端口,无法访问特定资源
B 主机:目标网络内部主机,可访问特定资源,但无法访问公网
A 主机可直连 B 主机
```
示意图
![image-20240131141802647](./img/image-20240131141802647.png)
```
a) ./yuze -m s_server -l 9999
// 在 Host_Two 主机上利用 s_server 模式启动 9999 端口的正向 socks 代理
b) ./yuze -m yuze_tran -s 7878 -d 127.0.0.1 -e 9999
// 在Host_One上将 7878 端口收到的 socks 代理请求转交给 Host_Two 主机。
c) HackTools可使用Host_One主机的7878端口提供的socks5代理
```
![yuze_tran](./img/yuze_tran.gif)
4. yuze_slave 使用场景
```
场景描述:获得目标网络内两台主机 A、B 的权限,情况描述如下:
A 主机:目标网络的边界主机,无公网 IP,无法访问特定资源。
B 主机:目标网络内部主机,可访问特定资源,却无法回连公网。
A 主机可直连 B 主机
```
![image-20240131141837559](./img/image-20240131141837559.png)
```
a) ./yuze -m yuze_listen -s 7878 -e 8888
// 在 Host_One 公网主机添加转接隧道,将 7878 收到的代理请求
// 转交给反连 8888 端口的主机
b) ./yuze -m s_server -l 9999
// 在 Host_Three 主机上利用 s_server 模式启动 9999 端口的正向 socks 代理
c) ./yuze -m yuze_slave -r 127.0.0.1 -s 8888 -d 127.0.0.1 -e 9999
// 在 Host_Two 上,通过工具的 yuze_slave 模式,
// 打通Host_One:8888 和 Host_Three:9999 之间的通讯隧道
d) HackTools可使用Host_One主机的7878端口提供的socks5代理
```
![yuze_slave](./img/yuze_slave.gif)
## TODO
1. 跨平台支持 ( 2024.1.31 update)
2. 通信流量加密
## 闲谈
yuze是我学习socket网络编程后产出的工具,它帮助我深入了解了内网渗透中常见基于socks协议的隧道代理,流量转发的原理。最初用go语言实现了正向、反向代理。由于编译后体积问题,改用纯C实现,支持ew的全部数据转发方式。
它的很多的灵感来自于对EarthWorm(ew)的逆向,向前辈致敬。
## 致谢
https://rootkiter.com/EarthWorm/", Assign "at most 3 tags" to the expected json: {"id":"7240","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"