關于MoveKit

MoveKit是一款功能強大的Cobalt Strike橫向滲透套件,本質上來說MoveKit是一個Cobalt Strike擴展,它利用的是SharpMove和SharpRDP .NET程序集的execute_assembly函數實現其功能,攻擊腳本能夠通過讀取指定類型的模板文件來處理Payload創建任務。

Cobalt Strike

Cobalt Strike是一款美國Red Team開發的滲透測試神器,常被業界人稱為CS。

最近這個工具大火,成為了滲透測試中不可缺少的利器。其擁有多種協議主機上線方式,集成了提權,憑據導出,端口轉發,socket代理,office攻擊,文件捆綁,釣魚等功能。同時,Cobalt Strike還可以調用Mimikatz等其他知名工具,因此廣受黑客喜愛。

腳本運行機制

在使用該腳本的過程中,用戶僅需要加載MoveKit.cna腳本即可,它將加載所有其他的所需腳本。除此之外,用戶可能還需要對代碼進行編譯,并存放至Assemblies目錄中,具體取決于SharpMove和SharpRDP程序集所要采取的行為。最后,某些文件移動操作可能需要動態編譯,這里將需要用到Mono。

在加載腳本時,會有一個名為Move的選擇器被加載進menubar中,這里將給用戶提供多個可用選項。首先,用戶需要選擇一個在遠程系統上執行的命令,命令將通過WMI、DCOM、計劃任務、RDP或SCM執行。接下來,腳本將會通過Command命令執行機制來獲取執行文件。然后,使用File方法將文件存儲至目標系統并執行它。這里所使用到的“Write File Only”只會對數據進行移動。最后,工具會使用默認配置和信標命令進行操作。

在使用信標命令時,它將讀取默認配置,并使用幾個命令行參數。信標命令樣本如下:

   
move-msbuild 192.168.1.1 http move.csproj

自定義預構建信標命令則有些許不同,命令樣本為:

move-pre-custom-file <target> <local-file> <remote-filename>
move-pre-custom-file computer001.local /root/payload.exe legit.exe

對于上面的位置字段,當選擇WMI方法時會用到,如果選擇的是SMB,則無需使用該字段。Location字段接受三個不同的值,第一個是Cobalt Strile Web服務器的URL地址,第二個則是待上傳文件的遠程目標系統的Windows目錄路徑,第三則是一個存儲事件寫入的Linux路徑或“local”單詞。

腳本將會針對所有的文件方法創建Payload,但是,如果Payload已經在之前創建好了的話,腳本只會移動或執行它。

支持的橫向滲透技術

MoveKit包含了各種不同的橫向滲透技術、執行觸發器和Payload類型。

文件移動指的是獲取文件或將文件移動到遠程主機所使用的方法:

SMB to flat file
WMI to flat file
WMI to Registry Key Value
WMI to Custom WMI Class property

命令觸發器指的是觸發在遠程主機上執行命令的方法:

WMI
SCM
RDP
DCOM
計劃任務
修改計劃任務
修改服務路徑

Shellcode執行:

Excel 4.0 DCOM
WMI事件描述

劫持攻擊:

服務DLL劫持
DCOM服務器劫持

工具下載

廣大研究人員可以使用下列命令將該工具源碼克隆至本地:

git clone https://github.com/0xthirteen/MoveKit.git

依賴組件

需要使用Mono(MCS)編譯.NET程序集。

項目地址

https://github.com/0xthirteen/MoveKit