作者:Maka8ka
本文為作者投稿,Seebug Paper 期待你的分享,凡經采用即有禮品相送! 投稿郵箱:paper@seebug.org

0x00 敬告

本文所闡述內容僅供技術探討及研究,所有環境均為實驗環境,不存在任何違反破壞計算機行為。文中所有工具僅供研究使用,產生一切后果由使用者自負。

該遠控程序是方便運維人員使用的運維工具,請大家合理使用,產生一切非法行為及后果由使用者自負。

項目地址:https://github.com/Maka8ka/NGLite

0x01 前言

隨著網絡技術革新,防火墻殺軟的層層迭代,遠控發展了良久,從最早的基于TCP開端口正向鏈接的遠控,到后來有基于TCP的C/S端的反向鏈接遠控,再到各類變種的HTTP/HTTPS/DNS遠控。

目前用的最多的cobaltstrike/msf,免殺多要對shellcode進行免殺,各類加載器,進程注入等繞過殺軟。但繞過殺軟最好的辦法就是自己寫一個遠控程序。

寫遠控之前我們就要思考一下目前的cobaltstrike和msf在回連的時候主要特征是什么,行為特征?回連特征?包含回連IP/域名/CDN?行為特征可通過自己寫遠控客戶端進行規避,IP/域名/服務器是不是都得使用實名信息/付款方式進行購買,匿名性大大降低。總有暴露的風險。

那么如何實現在無IP/域名/服務器的情況下實現無需任何實名信息的遠控才是本文主要探討的問題。所以需要思考一下,如何無IP/域名實現穿透?P2P?和區塊鏈又有啥關系

0x02 基于NKN區塊鏈網絡的P2P網絡

https://images.seebug.org/content/images/2021/07/15/1626331767000-Untitled.png-w331s

上圖來自:https://nkn.org/wp-content/uploads/2020/12/NKN概覽.pdf

所有客戶端/服務端均直接鏈接NKN的官方節點/由用戶加入NKN網絡的挖礦節點,所有節點均只知道相鄰的鄰居節點。此時客戶端和服務端在網絡中幾乎對等。服務端在無公網IP端口的情況下,僅需能鏈接外網,有外網訪問的權限,即可作為被連接的對象。

上圖來自https://github.com/nknorg/nkn-sdk-go

利用NKN的sdk即可快速實現具有消息傳送功能的客戶端,由于在P2P網絡中無明顯的客戶端/服務端區別,在之后的文章中姑且稱C2控制端,和受控端。

0x03 一般遠控執行流程

0x04 NGLite執行流程

 透過NKN 的網絡,可以實現一個匿名的P2P群組,類似于聊天頻道,每個發送端可直接對目的端發送消息,消息經過nkn網絡中的不同節點進行傳送。

0x05 工具介紹及原理

這里只給大家提供一個最簡單的思路去實現自己的c2程序。

該程序受控端在最初啟動的時候之后鏈接nkn,并向控制端發送自己的id

在收到控制端的執行指令之前不會執行任何命令及相關操作。

目前功能單一,僅提供命令執行功能,傳輸中使用了AES加密和新客戶端上線數據包采用RSA加密,以防中間節點的不安全,一切做好最壞的打算嘛。

新發布了個開箱即用的版本,增加了自定義頻道/群組功能,同學們可以自己生成自己的隨機頻道,在自己的專屬頻道中進行通信,也可以團隊協作,只需要將頻道地址告訴你的小伙伴,在小伙伴的機器上同時運行controller指定-g即可。

目前支持參數

控制端
-n new 生成新的頻道/群組
-g 9e8124591f55d27b48ba907f2ad39e790ec589b3942dec2a19e7c2a96b751922 指定9e8124591f55d27b48ba907f2ad39e790ec589b3942dec2a19e7c2a96b751922頻道
$mac$ip shell 對執行主機發送shell命令

被控端
-g 9e8124591f55d27b48ba907f2ad39e790ec589b3942dec2a19e7c2a96b751922 指定9e8124591f55d27b48ba907f2ad39e790ec589b3942dec2a19e7c2a96b751922頻道

運行示例

免殺測試

0x06 工具優勢&劣勢

理論上完全的匿名性,當然要是有人監測并分析了所有中間節點除外,目前節點約8W個

無需任何公網資源,只需要通信主機能上網即可

無需實名購買IP/域名/服務器/CDN等等資源

目前免殺性能優

連接稍多,體積較大,大家可通過upx等進行壓縮

0x07 后續開發

介于P2P的特性以及分布的7w多個網絡節點,這個網絡天生具有大文件傳輸的優勢及網絡傳輸速度的優勢。

后續考慮增加文件傳輸、內網穿透代理等功能。

代碼寫的比較亂,稍后整理一下,將功能分離后會更新源代碼。

0x08 Last

上文中所講到的群組/頻道實際為nkn的seed,類似于私鑰或者助詞之類的。

以上內容如有錯誤,請多多包含,有任何開發相關的建議或創意,歡迎留言話在github提交issues。

項目地址:https://github.com/Maka8ka/NGLite

原創文章,轉載請注明原作者及原文鏈接。

@TenguG@Maka8ka


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1638/