Stowaway:安全工作者的多級代理工具
寫在前面:
此工具是因為看到了Dliv3師傅的Venom工具后,想著自己也寫一個屬于自己的多級代理工具,故而利用閑暇時間編寫的(是的,我又在重復造輪子), 在此感謝Dliv3師傅 XD。
廢話不多說,我把我的README先搬過來給大家瞅瞅
Stowaway是一個利用go語言編寫的多級代理工具用戶可使用此程序將外部流量通過多個節點代理至內網,并實現管理功能
此工具僅限于安全研究和教學,用戶承擔因使用此工具而導致的所有法律和相關責任!作者不承擔任何法律和相關責任!
特性
1、一目了然的節點管理
2、多平臺適配
3、正向/反向連接
4、多級socks5流量代理轉發
5、ssh代理連接
6、遠程交互式shell
7、上傳及下載文件
8、節點間流量以AES-256(CBC模式)進行加密
Usage
Stowaway分為admin端和agent端兩種形式
不想編譯的盆油可以直接用release下編譯完成的程序
第一種情況:
Admin端監聽,等待startnode連接:./stowaway admin -l 9999 -s 123
命令解析:
admin代表以admin模式啟動
-l 參數代表監聽端口
-s 參數代表節點通信加密密鑰(admin端與agent端必須一致!)
startnode端:./stowaway agent -m 127.0.0.1:9999 -l 10000 –startnode -s 123 –reconnect 5
命令解析:
agent代表以agent端模式啟動
-m 代表上一級節點的地址
-l 代表監聽端口
-s 參數代表節點通信加密密鑰(admin端與agent端必須一致!)
–startnode 代表此節點是agent端的第一個節點(第一個節點必須加上–startnode選項!若無–startnode表示為普通節點,命令與startnode一致)
–reconnect 代表startnode將在admin下線后主動嘗試不斷重連(此例子中為每5秒重連一次)注意:若需要重連功能,只需要在startnode使用此參數即可,其后節點無需此參數,正常啟動即可
此時若后續的節點希望以passive模式啟動(即本節點等待上一級節點的主動連接,而不是主動連接上一節點)
那么,上述命令可改為 ./stowaway agent -m 127.0.0.1:9999 –startnode -s 123 –reconnect 5
后續節點啟動命令為:./stowaway agent -l 10001 -s 123 -r
-r 代表以passive模式啟動(即本節點等待上一級節點的主動連接,而不是主動連接上一節點,若正向連接可以去除此選項)
此時在admin端進入startnode(use 1),使用connect命令(connect 127.0.0.1:10001)即可將后續節點加入網絡
若后續節點希望以active模式啟動(即本節點主動連接上一級節點)
那么,startnode啟動命令可以保持不變
后續節點啟動命令為:./stowaway agent -m 127.0.0.1:10000 -l 10001 -s 123
此時即可將后續節點加入網絡
第二種情況
Admin端主動連接startnode端:./stowaway admin -s 123 -c 127.0.0.1:9999
命令解析:
admin代表以admin模式啟動
-s 同上
-c 代表startnode所在的地址
此時startnode端: ./stowaway agent -l 9999 -s 123 –startnode –reconnect 0 -r –single
命令解析:
agent代表以agent模式啟動
-l,-s ,–startnode同上
–reconnect:當statnode端以passive模式啟動時,請將此值設置為0(active模式下,此值為每隔x秒嘗試重連)
-r/–reverse:代表以passive模式啟動
–single:當設置此選項時,代表整個網絡只有admin和startnode兩個節點(即沒有后續節點),若不設置此選項,代表后續還有節點
后續節點同第一種情況啟動即可
此時,若未設置–single選項,則先后啟動startnode端及admin端,將后續節點加入網絡后,admin就可以選擇下線(或者保持在線)
下一次想要重連時,再次執行./stowaway admin -s 123 -c 127.0.0.1:9999,即可重建網絡
若設置了–single選項,則先后啟動startnode端及admin端,admin就可以選擇下線(或者保持在線)
下一次想要重連時,再次執行./stowaway admin -s 123 -c 127.0.0.1:9999,即可重建網絡
Example
一個簡單的例子(以一個admin端三個agent端為例):
Admin端:
Startnode端:
第一個普通Node(設置為反向連接模式):
此時,進入(use命令,本例中為use 1)此節點的上級節點(即startnode),利用命令connect 127.0.0.1:10001 即可將此反向模式節點加入網絡
第二個普通Node:
連入完成后,admin端查看節點:
此時在admin端操控第二個普通node節點:
打開遠程shell:
此時就可以在admin端操縱第二個普通節點的shell
打開socks5代理:
此時用戶即可以將admin端的7777端口作為socks5代理端口,將流量代理至第二個普通node節點(當想關閉socks服務時,在節點模式下輸入stopsocks即可關閉與此節點相關的socks代理服務)
打開ssh:
此時第二個普通節點會作為ssh客戶端,(此節點)會發起ssh連接來訪問指定的ssh服務,并將ssh數據回傳至admin端
PS: 在ssh模式下,你可以用pwd來判斷自己所處的文件夾(好吧,其實就是沒法把banner傳回來。。)
上傳/下載文件:
上傳下載功能命令為 upload/download 后加文件路徑(注意要在節點模式下使用),此時就可以上傳文件至指定節點/下載指定節點的文件
具體命令使用可輸入help查詢
TODO
[x] 節點間通信流量加密
[x] 關閉代理與端口轉發
[ ] 重連功能
[ ] 清理代碼,優化邏輯
[ ] 增加cc功能
[x] 節點反向連接
[ ] 支持端口復用
注意事項:
1. 此程序僅是閑暇時開發學習,結構及代碼結構不夠嚴謹,功能可能存在bug,請多多諒解
2. 當admin端掉線,所有后續連接的agent端都會退出(當startnode未開啟重連模式(主動或者被動)時)
3. 當多個agent端中有一個掉線,后續的agent端都會掉線
4. 在admin啟動后,必須有節點連入才可操作
5. 如需從源代碼編譯本項目,請運行build_admin.sh/build_agent.sh文件來編譯對應類型的Stowaway(注意!!!!!!默認編譯的是agent模式,此時請運行build_agent.sh,如需編譯admin,請查看main.go文件中的提示,按照提示進行操作后,運行build_admin.sh文件)
寫在最后:
本人僅是安全愛好者(別問,問就是菜雞),*山代碼生產者,代碼框架不夠嚴謹(相信有不少bug,同時也寫的不夠優雅),僅是練習,也是希望與大家一起進步,大佬們勿噴 XD。
最后的最后,切勿在未授權的情況下使用此工具,網絡安全法大家可以了解一下
*本文作者:Phantom11235,轉載請注明來自FreeBuf.COM