推荐群友的一个开源作品,文末模仿了一下播客交谈的形式,和作者聊了开发软件背后的故事。
rakshasa是一个使用Go语言编写的强大多级代理工具,专为实现多级代理,内网穿透而设计。它可以在节点群里面任意两个节点之间转发TCP请求和响应,同时支持socks5代理,http代理,并且可以引入外部http、socks5代理池,自动切换请求IP。
节点之间使用内置证书的TLS加密TCP通讯,再叠加一层自定义秘钥的AES加密,可以在所有Go支持的平台使用。可以在你所有的的Windows和Linux服务器上搭建节点并组成节点群网络。
自动实现多层代理
支持Tcp转发代理。
支持Tcp反向代理
支持Socks5代理 (包含UDP和TCP6)
支持Socks5反向代理
支持HTTP代理 (爬虫利器,流量出口支持代理池)
去中心化。
支持多个节点连接。
支持配置文件,可以配置代理服务器的端口、目标服务器的地址和端口、证书文件等信息。
支持日志记录,记录代理服务器的请求和响应信息。
CLI模式实现远程Shell。
执行shellcode。
首先生成证书:
cd gencert go run main.go cd ../
也可以使用其他工具生成证书,将 server.crt 和 server.key 放到 cert 目录下。然后再编译rakshasa
go build
在 Windows 下使用cmd跨平台编译 Linux 示例:
cd gencert go run main.go cd ../ set GOOS=linux go build
最近再看一些播客,想用播客交流的形式问了作者一些问题。
渗透中经常会遇到使用.NET反射、代理池、内网转发等软件,频繁切换这些工具很麻烦,因此我自己写了一个内网软件,支持以上功能。我一共写了四个软件,其中之一是Rakshasa,另外还有一个Rust的内网扫描器、Rust Beacon、以及C2。
在编写多级代理时,有一些困难。有人让我我支持UDP,但我认为国内会强。另外我写的那个Shellcode命令执行,使用Amssly和Donut使用的 .NET集合不同,我的可以带参数执行Shellcode命令。我还要实现节点上线广播、节点消息转发,以及解决广播风暴的问题,不过这些不困难。
有一点吧,考虑做一个mini版本,把文件上传,命令执行,节点,这些东西都删了,只留一个转发功能。
而且目前各节点是使用tcp传输的,测试环境也是以tcp为主,后面想要优化支持udp,icmp。受到我自己先入为主的思维影响,早期测试时候udp掉包厉害
对于一些特殊场景,例如节点需要经过多个节点才能出网,Rakshasa有解决方案。
只要每个节点能够连通,就可以出网。
例如节点1是内网,通过-D参数连接节点2、节点3和节点4,即节点1 → 节点2 → 节点3 → 节点4(外网)。在节点内会生成类似于键值对的节点关系表,例如在节点1内,是节点2-节点2、节点3-节点2和节点4-节点2,这表示请求节点2、3和4的数据包都发送到节点2。
如果节点1发送请求到节点4的socks5,那么根据映射表(节点4-节点2),其数据包将被发往节点2,节点2根据映射表(节点4-节点3)将其发往节点3,最终到达节点4。节点4会根据Socks5包含的外网IP请求外网。
开源地址:https://github.com/Mob2003/rakshasa ,点击阅读全文也能跳转到