Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
MemFiles — Набор инструментов для CobaltStrike для записи файлов, создаваемых Beacon, в память вместо диска. | Kitploit
Инструменты/GitHubGitHub/octoberfest7/memfiles
Эксфильтрация данныхПост-эксплуатацияКомандование и УправлениеRed Teaming
GitHuboctoberfest7/memfiles

MemFiles

Набор инструментов для CobaltStrike для записи файлов, создаваемых Beacon, в память вместо диска.

Репозиторий
47762132 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

MemFiles

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ:

Этот проект сложен, и если не понять, как он работает, и не протестировать его должным образом, это может привести к краху Beacon'ов и потере доступа!

Настоятельно рекомендую прочитать всю документацию вплоть до раздела «Технические детали, проектные решения и комментарии»!

Введение

MemFiles — это набор инструментов для CobaltStrike, который позволяет операторам записывать файлы, создаваемые процессом Beacon, в память, а не на диск целевой системы. Он успешно протестирован на Windows 7, 10 и 11; соответствующие серверные версии должны работать без проблем. MemFiles ограничен x64 Beacon.

Это достигается за счёт перехвата нескольких различных NtAPI в NTDLL.dll и перенаправления вызовов этих API на функции, внедрённые в адресное пространство процесса Beacon.

MemFiles предполагает наличие чистой/неперехваченной копии NTDLL в процессе Beacon. Никаких гарантий работоспособности MemFiles в процессе Beacon, где всё ещё присутствуют перехваты EDR, не даётся. Восстановите/обновите NTDLL перед использованием MemFiles!

В составе MemFiles определена «особая», несуществующая директория; любые файлы, записываемые в эту особую директорию, перехватываются MemFiles и помещаются в память, откуда их затем можно скачать на Teamserver.

MemFiles совместим с большинством (но не со всеми) инструментов, которые работают внутри процесса Beacon и которые можно настроить на запись вывода в конкретную директорию. Для работы не требуются повышенные привилегии.

Сюда входят:
-BOF'ы
-.NET-сборки, запускаемые инлайн с помощью чего-то вроде inline-executeAssembly
-PE'шки, запускаемые инлайн с помощью чего-то вроде Inline-Execute-PE

Все они совместимы, потому что работают внутри процесса Beacon, где соответствующие NtAPI перехвачены.

MemFiles НЕ работает с такими вещами, как:
-execute-assembly
-shell
-run

Ни один из этих вариантов не совместим, поскольку все они порождают другие процессы, NtAPI которых НЕ перехвачены.

MemFiles успешно протестирован с такими инструментами, как Rubeus, SharpHound, Procdump и Powershell, при их запуске внутри процесса Beacon.

Установка

Клонируйте репозиторий и при желании измените переменную hookdir, которая определена в строке 56 в обоих файлах /PIC/Source/NtCreateFile.c и /PIC/Source/NtOpenFile.c. Эта переменная является «особой» директорией, которая сообщает MemFiles, что создаваемый файл следует перехватить. По умолчанию переменная hookdir установлена в "redteam". Убедитесь, что эта переменная не является реальной директорией на целевой системе и что она одинакова в обоих файлах!

image

Выполните 'make all', чтобы скомпилировать необходимые BOF'ы и PIC-функции.

Загрузите MemFiles.cna в клиент CobaltStrike. Убедитесь, что директория, из которой запущен CobaltStrike, доступна для записи вашим пользователем; MemFiles создаёт там текстовый файл (memfiles.txt), чтобы гарантировать доступность данных, необходимых для работы MemFiles.

MemFiles можно настроить на установку в каждый новый Beacon, который связывается с Teamserver; это делается с помощью пункта меню MemFiles->Config. По умолчанию MemFiles НЕ устанавливается автоматически в новые Beacon'ы. Обратите внимание, что это глобальная настройка; если к Teamserver подключены два клиента и в обоих загружен MemFiles.cna, то когда клиент A переключает настройку «Install on beacon initial», изменение также затронет клиента B!

image

Команды

MemFiles состоит из 4 команд, исполняемых на цели, которые запускают BOF'ы, и 1 внутренней команды, которая управляет структурой данных проекта.

Команды, исполняемые на цели:

  1. meminit
  2. memlist
  3. memfetch
  4. memclean

Внутренняя структура данных:

  1. memtable

meminit

meminit отвечает за установку MemFiles в процесс Beacon.

Список NtAPI, перехватываемых MemFiles, выглядит следующим образом:

  1. NtCreateFile
  2. NtWriteFile
  3. NtClose
  4. NtQueryVolumeInformationFile
  5. NtQueryInformationFile
  6. NtSetInformationFile
  7. NtOpenFile
  8. NtReadFile
  9. NtFlushBuffersFile

meminit выполняет следующие основные действия:

  1. Отправляет в Beacon позиционно-независимую функцию замены для каждого перехватываемого NtAPI
  2. Создаёт в памяти Beacon структуру для хранения различных значений, необходимых MemFiles на протяжении всего его жизненного цикла
  3. Патчит адрес этой структуры в каждую из PIC-функций замены
  4. Выделяет память и внедряет каждую PIC-функцию замены в память процесса Beacon
  5. Создаёт трамплин для каждого перехватываемого NtAPI
  6. Перехватывает каждый из перечисленных NtAPI, перезаписывая некоторые/все байты и перенаправляя выполнение на PIC-функцию замены.

memlist

memlist используется для отображения всех файлов, которые в данный момент хранятся в памяти MemFiles для конкретного Beacon.
image
Отображается несколько полей; наиболее значимые и интересные для пользователя — имя файла и длина хранящихся данных.

memfetch

memfetch используется для непосредственного получения файлов, хранящихся в памяти MemFiles для конкретного Beacon.

По умолчанию memfetch загружает все файлы, хранящиеся в MemFiles, чей «handle» был закрыт. Такое проектное решение было принято, чтобы избежать проблем, связанных с попыткой скачать файл, который программа/приложение ещё не закончила записывать.

Это означает, что если программа/приложение не закроет открытый ею handle файла, файл не будет скачан memfetch.
Эту проблему можно обойти с помощью аргумента "force" у memfetch, т.е. 'memfetch force', чтобы получить все файлы из памяти независимо от состояния их handle.

Файлы, которые memfetch извлекает из памяти, отправляются обратно на Teamserver как загрузка (download) и могут быть синхронизированы с Teamserver на клиент через вкладку Downloads в CobaltStrike.

После того как файл был загружен Teamserver'ом, он стирается из памяти процесса Beacon, а его запись, отображаемая через memlist, удаляется.

memclean

memclean отвечает за очистку и удаление MemFiles из процесса Beacon.

Стандартный сценарий использования MemFiles подразумевает его установку и оставление установленным на всё время жизни Beacon; однако если требуется использовать MemFiles совместно с инструментом для перехвата и получения файлового вывода, а затем удалить MemFiles, чтобы его артефакты не оставались в памяти, memclean можно использовать для возврата процесса Beacon в исходное состояние, в котором он был до запуска meminit.

Это включает:

  1. Снятие перехвата с каждого перехваченного NtAPI
  2. Обнуление и освобождение каждого созданного трамплина
  3. Обнуление и освобождение каждой внедрённой PIC-функции замены
  4. Обнуление и освобождение структуры MemFiles

Обратите внимание, что перед выполнением этих действий memclean принудительно скачает все файлы, хранящиеся в памяти MemFiles. Если вы планируете использовать MemFiles с одним инструментом, а затем удалить его, можно пропустить memfetch и использовать только memclean, чтобы одновременно и получить файлы, и удалить MemFiles из процесса Beacon за один раз.

memtable

memtable используется для отображения и отслеживания информации о Beacon'ах, в которых в данный момент установлен MemFiles. Он также отображает глобальную конфигурационную информацию.

Скачать инструмент