{"id":13826037,"url":"https://github.com/ice-ice/dnstunnel","last_synced_at":"2025-07-08T23:31:15.119Z","repository":{"id":39171913,"uuid":"178344550","full_name":"ice-ice/dnstunnel","owner":"ice-ice","description":"dns tunnel backdoor  DNS隧道后门","archived":false,"fork":false,"pushed_at":"2019-05-17T06:44:19.000Z","size":37032,"stargazers_count":195,"open_issues_count":2,"forks_count":37,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-08-05T09:14:49.001Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","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/ice-ice.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":"2019-03-29T06:19:10.000Z","updated_at":"2024-08-05T07:59:23.000Z","dependencies_parsed_at":"2022-08-18T14:11:43.740Z","dependency_job_id":null,"html_url":"https://github.com/ice-ice/dnstunnel","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ice-ice%2Fdnstunnel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ice-ice%2Fdnstunnel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ice-ice%2Fdnstunnel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ice-ice%2Fdnstunnel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ice-ice","download_url":"https://codeload.github.com/ice-ice/dnstunnel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225470636,"owners_count":17479366,"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-04T09:01:31.126Z","updated_at":"2025-07-08T23:31:15.101Z","avatar_url":"https://github.com/ice-ice.png","language":"Go","funding_links":[],"categories":["Go","Go (531)","\u003ca id=\"01e6651181d405ecdcd92a452989e7e0\"\u003e\u003c/a\u003e工具"],"sub_categories":["\u003ca id=\"9d6789f22a280f5bb6491d1353b02384\"\u003e\u003c/a\u003e隧道\u0026\u0026穿透"],"readme":"# Ice Dns Tunnel Backdoor (DNS 隧道 渗透\u0026后门)\n本作品使用了DNS隧道技术，且是跨平台的（go语言），生成器使用了易语言，做界面简单粗暴。目前编译成了 windows 64位 和 linux64位的两个版本。功能和操作相同\u003cbr\u003e\n\n本作品是我花费了2天半的时间写的，遵循了标准的DNS MX协议，在极端网络屏蔽情况下，内网渗透变得复杂，我们只能把通信包装成dns协议才能继续内网渗透。本作品利用了超长域名分段传输数据\u003cbr\u003e\u003cbr\u003e\n\n**优势：**\u003cbr\u003e\n1】使用了aes对称加密算法，传输过程即使人工手动检测到DNS异常传输也难以解码\u003cbr\u003e\n2】传输协议稳定，客户端\u0026服务端严格遵循DNS MX协议，且传输过程分段打包传输\u003cbr\u003e\n3】使用了http扩展协议，可以通过http post的方式优雅关停服务。避免手动hook隐藏以后 找不到进程无法结束（例如linux上使用 curl 即可优雅关停，下文有使用说明）\u003cbr\u003e\n4】跨平台，多平台\u003cbr\u003e\n\n\n**劣势：**\u003cbr\u003e\n1】没有做相关的rookit hook 进程可见。在此推荐1个linux效果不错 兼容性很强的hook。可以自己手动hook。已经测试了可用。\u003cbr\u003e\n另一方面考虑是系统兼容性问题所以没有整合到代码中，还是自己make自己手动hook稳定性比较好。\u003cbr\u003e\nhttps://github.com/gianlucaborello/libprocesshider （使用了  ld preloader 技术）\u003cbr\u003e\u003cbr\u003e\n\n2】体积略大，因为是使用golang写的，在没压缩的情况下已经比较大了，可以自行加壳压缩。目前渗透工作，文件体积大小不是瓶颈\u003cbr\u003e\n3】只使用了dns隧道，其他隧道没有做，因为目前做工具只想做专精，不想整合太多隧道，恶意行为太多容易被一些极端防火墙告警。\n后续其他隧道预计独立项目开发。尽量不做整合\u003cbr\u003e\n4】传输略慢，因为dns隧道对数据包的大小有严格要求，所以只能分段传输，最后还要合包。效率不及普通TCP。\u003cbr\u003e\n命令回显需要等待一些时间。命令发送禁止超长命令。\u003cbr\u003e\n\n**使用场景：**\u003cbr\u003e\n内网极端环境下的渗透（防火墙只允许dns协议），以及拿到root权限后，配合hook隐藏技术，下后门。\u003cbr\u003e\n\n**用途：**\u003cbr\u003e\n可以使用此工具 远程执行shell命令\u003cbr\u003e\n\n\n## 目录结构\nclient 目录 -\u003e 目录里的_test文件是一些很重要的测试 \u003cbr\u003e\nserver_main.go.b  -\u003e  是服务端的main文件\u003cbr\u003e\nclient.main.go  -\u003e  是客户端的main文件\u003cbr\u003e\ngenerator 目录 -\u003e 是使用易语言写的生成器，只是生成方便一些，给菜鸟使用。大牛可以自行改代码编译\u003cbr\u003e\u003cbr\u003e\ngenerator.exe -\u003e 是易语言编译好的生成器\u003cbr\u003e\n\n\n## 使用说明\n1、使用生成器generator.exe 配置服务端端口 和 客户端连接的地址 设置aes密钥（16位）\u003cbr\u003e\n2、服务端启动、客户端启动。在服务端控制台上发送shell命令。稍作等待即可回显\u003cbr\u003e\n3、优雅关停： 配置http服务端口，， 向指定地址 /off 发送http post请求，即可关闭程序\u003cbr\u003e\n例如linux :  curl \"http://127.0.0.1:8080/off\" -X POST -d \"aes密钥\"   \u003cbr\u003e\n密钥必须记好 否则不能优雅关停。\u003cbr\u003e\n优雅关停场景：在hook进程或者内核hook的情况下，很难找到这个进程，销毁变得麻烦。使用优雅关停 http请求后自动销毁关闭，省心省力。\u003cbr\u003e\n4、在服务端使用过程中， /e 可以直接退出程序  /up 可以返回上层菜单\u003cbr\u003e\n5、该工具灵活运用，做好hook的情况下，可以在内网畅通无阻。\u003cbr\u003e\n\n## 更新计划\n1、添加win平台的自动 hook（感谢提建议）,linux平台依然建议使用上面的工具手动hook。\u003cbr\u003e\n2、添加端口复用\u003cbr\u003e\n\n## 回答疑问\n1、服务器只有web对外，无法通过转发等手段连接桌面3389，regeorg又被阻断（疑似检测到来了socket代理的缘故吧），这样的网络结构还有什么办法把3389转发出来么。\u003cbr\u003e\n\n答：可以通过端口复用拦截，走web服务，思路和隧道一样，也可以叫https http隧道，将3389的数据包转发出来。等上面2个功能更新好后，后续我这边会研究一下。类似于国外软件 reduh \u003cbr\u003e\n\n\n## 写给使用者\n【免责声明：无恶意代码，仅作隧道技术研究，用于非法用途自负】\u003cbr\u003e\u003cbr\u003e\n\n写的比较仓促，基础测试已经做过，基本命令可以执行，在windows环境上测试成功，linux还没来得及测试。有BUG可以提出。另外重申，不考虑整合入太多功能，而尽量是分散开。\u003cbr\u003e\n\n如果有急迫需要什么工具的可以提issues 或者 联系我 。可以给我提供一些新思路。谢谢\u003cbr\u003e\n\n\n## 写给golang爱好者\n\n该程序大量使用了chan管道，编程难点在利用dns协议，数据大小有限，格式固定的情况下进行分包，组包。\u003cbr\u003e\n\n### End\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fice-ice%2Fdnstunnel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fice-ice%2Fdnstunnel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fice-ice%2Fdnstunnel/lists"}