Movekit is an extension of built in Cobalt Strike lateral movement by leveraging the execute_assembly function with the SharpMove and SharpRDP .NET assemblies. The aggressor script handles payload creation by reading the template files for a specific execution type.
IMPORTANT: To use the script a user will only need to load the MoveKit.cna
aggressor script which will load all the other necessary scripts with it. Additionally, depending on actions taken the SharpMove and SharpRDP assemblies will need to be compiled and placed into the Assemblies
directory. Finally, some of the file moving requires dynamic compiling which will require Mono.
When loading the aggressor script there will be a selector loaded to the menubar
named Move
. There are multiple selections a user can select. First, users can select to execute a command on a remote system through WMI, DCOM, Task Scheduler, RDP, or SCM. Second, there is the Command
execution mechanism which uses download cradles to grab and execute the files. Third, the File
method drops a file on the system and executes it. There is Write File Only
that does not do any execution, move data only. Finally, there is a Default
settings to make using GUI faster and used with beacon commands. The default settings are used for anything that can accept a default.
To use the beacon commands it will read the default settings and use a few command line arguments. A beacon command example: <exec-type> <target> <listener> <filename>
move-msbuild 192.168.1.1 http move.csproj
Additionally, the custom pre built beacon command is a little bit different. Command example: move-pre-custom-file <target> <local-file> <remote-filename>
move-pre-custom-file computer001.local /root/payload.exe legit.exe
The location field is the trickiest part of the project. When selecting WMI
file movement location
will be used, if SMB is selected then it will not be used (so it can be left empty). Location
takes three different values. First, it location
is a URL then when the payload is created it will be hosted by Cobalt Strike’s web server. The beacon host where the assembly will be executed from will make a web request to the URL and grab the file, which will be used in an event sub on the target host to write the file. Second, if location
is a Windows directory then it will upload the created file to the beacon host and the assembly will read it from the file system and store in the event sub to write to the remote host. Finally, if the location
field is a linux path or the word local
then it will dynamically compile the payload into the assembly being executed. However, if the file is above the 1MB file size limit then it will show an error.
For all file methods the payload will be created through the aggressor script. However, if a payload is already created users can select to use the Custom (Prebuilt)
option to move and execute it.
The kit contains different file movement techniques, execution triggers, and payload types.
File movement is considered the method used for getting a file to a remote host File movement types:
Command trigger is considered the method used for executing a specific command on a remote host. Command trigger types:
Shellcode only execution:
Hijacks:
Note: It is recommended not using the default templates with the project.
To replace a template you must meet two requirements. First, the template must be named the technique (example: msbuild.csproj
). Second, the source code must contain the string $$PAYLOAD$$
where base64 encoded shellcode will go and be able to convert a base64 string to a byte array. Example for C#:
string strSC = “$$PAYLOAD$$”;
byte[] sc = Convert.FromBase64String(strSC);
A change was added that allows for the defaults to update the ‘Find and Replace string’ and the shellcode formats in the ‘Update Defaults dialog’. By default these are $$PAYLOAD$$
and base64.
Operational Considerations
execute-assembly
function so it will inject into a sacrificial process like other post ex jobsFile
or Command
methodsCredits
Some of the code, templates or inspiration comes from other people and projects
There are probably bugs somewhere, they tend to come up from time to time. Just bring them up and I’ll fix them
bomber is an application that scans SBOMs for security vulnerabilities. So you've asked a vendor…
Embed a payload within a PNG file by splitting the payload across multiple IDAT sections.…
Exploit-Street, where we dive into the ever-evolving world of cybersecurity with a focus on Local…
Shadow Dumper is a powerful tool used to dump LSASS (Local Security Authority Subsystem Service)…
shadow-rs is a Windows kernel rootkit written in Rust, demonstrating advanced techniques for kernel manipulation…
Extract and execute a PE embedded within a PNG file using an LNK file. The…