
Внедрение сборок .NET в существующий процесс
Этот инструмент является альтернативой традиционному fork and run для Cobalt Strike. Загрузчик может быть внедрён в любой процесс, включая текущий Beacon. Долго выполняющиеся сборки продолжат работу и будут отправлять вывод обратно в Beacon, аналогично поведению execute-assembly.
inject-assembly состоит из двух компонентов:
BOF-инициализатор: Небольшая программа, отвечающая за внедрение загрузчика сборки в удалённый процесс с переданными аргументами. Она использует BeaconInjectProcess для выполнения внедрения, что означает возможность настройки этого поведения в профиле Malleable C2 или с помощью BOF для внедрения процессов (начиная с версии 4.5).
PIC-загрузчик сборки: Основная часть проекта. Загрузчик инициализирует среду выполнения .NET, загружает предоставленную сборку и выполняет её. Загрузчик создаёт новый AppDomain в целевом процессе, чтобы загруженная сборка могла быть полностью выгружена после завершения выполнения.
Связь между удалённым процессом и Beacon осуществляется через именованный канал (named pipe). Агрессор-скрипт генерирует имя канала и передаёт его BOF-инициализатору.
Скачайте и загрузите агрессор-скрипт inject-assembly.cna в Cobalt Strike. Затем вы можете выполнять сборки с помощью следующей команды:
inject-assembly pid assembly [args...]
Укажите 0 в качестве PID для выполнения в текущем процессе Beacon.
Рекомендуется использовать другой инструмент, например FindObjects-BOF, чтобы найти процесс, который уже загружает среду выполнения .NET, но это не является обязательным требованием для работы inject-assembly.
jobkill.Этот проект был бы невозможен без следующих проектов:
Другие функции и вдохновение были взяты из следующих ресурсов: