• Stars
    star
    196
  • Rank 198,553 (Top 4 %)
  • Language
    Go
  • Created over 5 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

dns tunnel backdoor DNS隧道后门

Ice Dns Tunnel Backdoor (DNS 隧道 渗透&后门)

本作品使用了DNS隧道技术,且是跨平台的(go语言),生成器使用了易语言,做界面简单粗暴。目前编译成了 windows 64位 和 linux64位的两个版本。功能和操作相同

本作品是我花费了2天半的时间写的,遵循了标准的DNS MX协议,在极端网络屏蔽情况下,内网渗透变得复杂,我们只能把通信包装成dns协议才能继续内网渗透。本作品利用了超长域名分段传输数据

优势:
1】使用了aes对称加密算法,传输过程即使人工手动检测到DNS异常传输也难以解码
2】传输协议稳定,客户端&服务端严格遵循DNS MX协议,且传输过程分段打包传输
3】使用了http扩展协议,可以通过http post的方式优雅关停服务。避免手动hook隐藏以后 找不到进程无法结束(例如linux上使用 curl 即可优雅关停,下文有使用说明)
4】跨平台,多平台

劣势:
1】没有做相关的rookit hook 进程可见。在此推荐1个linux效果不错 兼容性很强的hook。可以自己手动hook。已经测试了可用。
另一方面考虑是系统兼容性问题所以没有整合到代码中,还是自己make自己手动hook稳定性比较好。
https://github.com/gianlucaborello/libprocesshider (使用了 ld preloader 技术)

2】体积略大,因为是使用golang写的,在没压缩的情况下已经比较大了,可以自行加壳压缩。目前渗透工作,文件体积大小不是瓶颈
3】只使用了dns隧道,其他隧道没有做,因为目前做工具只想做专精,不想整合太多隧道,恶意行为太多容易被一些极端防火墙告警。 后续其他隧道预计独立项目开发。尽量不做整合
4】传输略慢,因为dns隧道对数据包的大小有严格要求,所以只能分段传输,最后还要合包。效率不及普通TCP。
命令回显需要等待一些时间。命令发送禁止超长命令。

使用场景:
内网极端环境下的渗透(防火墙只允许dns协议),以及拿到root权限后,配合hook隐藏技术,下后门。

用途:
可以使用此工具 远程执行shell命令

目录结构

client 目录 -> 目录里的_test文件是一些很重要的测试
server_main.go.b -> 是服务端的main文件
client.main.go -> 是客户端的main文件
generator 目录 -> 是使用易语言写的生成器,只是生成方便一些,给菜鸟使用。大牛可以自行改代码编译

generator.exe -> 是易语言编译好的生成器

使用说明

1、使用生成器generator.exe 配置服务端端口 和 客户端连接的地址 设置aes密钥(16位)
2、服务端启动、客户端启动。在服务端控制台上发送shell命令。稍作等待即可回显
3、优雅关停: 配置http服务端口,, 向指定地址 /off 发送http post请求,即可关闭程序
例如linux : curl "http://127.0.0.1:8080/off" -X POST -d "aes密钥"
密钥必须记好 否则不能优雅关停。
优雅关停场景:在hook进程或者内核hook的情况下,很难找到这个进程,销毁变得麻烦。使用优雅关停 http请求后自动销毁关闭,省心省力。
4、在服务端使用过程中, /e 可以直接退出程序 /up 可以返回上层菜单
5、该工具灵活运用,做好hook的情况下,可以在内网畅通无阻。

更新计划

1、添加win平台的自动 hook(感谢提建议),linux平台依然建议使用上面的工具手动hook。
2、添加端口复用

回答疑问

1、服务器只有web对外,无法通过转发等手段连接桌面3389,regeorg又被阻断(疑似检测到来了socket代理的缘故吧),这样的网络结构还有什么办法把3389转发出来么。

答:可以通过端口复用拦截,走web服务,思路和隧道一样,也可以叫https http隧道,将3389的数据包转发出来。等上面2个功能更新好后,后续我这边会研究一下。类似于国外软件 reduh

写给使用者

【免责声明:无恶意代码,仅作隧道技术研究,用于非法用途自负】

写的比较仓促,基础测试已经做过,基本命令可以执行,在windows环境上测试成功,linux还没来得及测试。有BUG可以提出。另外重申,不考虑整合入太多功能,而尽量是分散开。

如果有急迫需要什么工具的可以提issues 或者 联系我 。可以给我提供一些新思路。谢谢

写给golang爱好者

该程序大量使用了chan管道,编程难点在利用dns协议,数据大小有限,格式固定的情况下进行分包,组包。

End