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

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

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

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

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

Категории

Все категории
Loading categories
Darkcloak — Инструмент для маскировки идентичности процессов Linux, который подменяет comm, argv, cmdline, environ, путь exe и VMA с помощью 11-фазного конвейера prctl, чтобы выдать себя за другой процесс. | Kitploit
Инструменты/GitHubGitHub/0x574r/darkcloak
Повышение привилегийМеханизмы персистентностиОбход IDS/IPSИнструменты для выдачи себя за другое лицоПост-эксплуатацияАнализ Бинарных ФайловСтатьи и ИсследованияRed TeamingПодмена Цифрового Отпечатка
GitHub0x574r/darkcloak

Darkcloak

Инструмент для маскировки идентичности процессов Linux, который подменяет comm, argv, cmdline, environ, путь exe и VMA с помощью 11-фазного конвейера prctl, чтобы выдать себя за другой процесс.

11233 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

DARKCLOAK

NASM Platform Architecture

Маскировка идентичности Linux-процесса

DARKCLOAK объединяет манипуляции всеми видимыми из пространства пользователя источниками идентичности в последовательный конвейер из 11 фаз, который постепенно преобразует процесс, пока он не станет неотличим от выдаваемого за него процесса для инструментов мониторинга пространства пользователя. Насколько нам известно, ни один опубликованный инструмент не сочетает одновременную манипуляцию всеми видимыми из пространства пользователя источниками идентичности.

Полное техническое описание доступно в блоге RAZOR.

Что подменяется

  • task_struct->comm: через PR_SET_NAME
  • argv[0]: через прямую перезапись стека
  • Командная строка (/proc/$PID/cmdline): через PR_SET_MM_ARG_START/END
  • Окружение (/proc/$PID/environ): через PR_SET_MM_ENV_START/END
  • Путь к исполняемому файлу (/proc/$PID/exe): через PR_SET_MM_EXE_FILE
  • VMAs, привязанные к файлам (/proc/$PID/maps): заменяются анонимной памятью
  • Видимость пространства имён процесса: через unshare

Как это работает

Конвейер выполняется в строгом порядке, определяемом зависимостями между манипулируемыми подсистемами ядра:

  1. Интроспекция ELF: разбирает вспомогательный вектор в _start, чтобы разрешить PHT и получить диапазоны виртуальных адресов всех трёх сегментов PT_LOAD
  2. Чтение учётных данных: getresuid / getresgid для сохранения исходных UID и GID для последующего восстановления
  3. Повышение UID: setresuid(0,0,0), если любой из трёх UID равен 0
  4. Повышение привилегий: копирует разрешённый набор в эффективный и наследуемый наборы через capget/capset
  5. Маскировка идентичности:
    • prctl(PR_SET_NAME) → перезаписывает task_struct->comm
    • прямая запись в стек по [rsp+8] → перезаписывает argv[0]
    • prctl(PR_SET_DUMPABLE, 0) → блокирует доступ к и из непривилегированных процессов

mmap-трамплин

PR_SET_MM_EXE_FILE завершается с ошибкой EBUSY, пока какой-либо VMA всё ещё привязан к исходному бинарнику. Поскольку сегмент .text нельзя отобразить обратно, пока RIP находится внутри него, анонимизация выполняется из временной анонимной страницы:

  1. Выделить анонимную страницу размером 4096 байт (mmap)
  2. Скопировать в неё код анонимизации (mm_start→mm_end) и метаданные сегментов
  3. Сделать страницу исполняемой (mprotect)
  4. Перейти в неё: RIP покидает .text
  5. Для каждого из трёх сегментов PT_LOAD: mmap свежего анонимного региона → memcpy содержимого сегмента → munmap оригинала → mremap анонимной копии обратно на исходный адрес → mprotect для восстановления исходных прав
  6. Вернуться в теперь уже анонимный .text, отобразить обратно страницу трамплина

Бинарник — это статический ELF без интерпретатора, поэтому расположение VMA во время выполнения полностью детерминировано: три сегмента PT_LOAD, стек и vDSO ядра.

Сборка

root@kitploit:~
nasm -f elf64 darkcloak.asm -o darkcloak.o
ld darkcloak.o -o darkcloak

Конфигурация

Цели маскировки определяются во время компиляции в секции .data. По умолчанию выдаётся за sshd:

root@kitploit:~
mimic_name    db 'sshd', 0
mimic_argv    db './sshd', 0
mimic_exe     db '/usr/sbin/sshd', 0
mimic_cmdline db '/usr/sbin/sshd', 0, '-D', 0, '[email protected]', 0, ...
mimic_environ db 'LANG=en_US.UTF-8', 0, 'NOTIFY_SOCKET=/run/systemd/notify', 0, ...

Чтобы выдать себя за другой процесс, обновите эти значения перед сборкой.

Использование

root@kitploit:~
./darkcloak

Требует CAP_SYS_RESOURCE, CAP_SETUID, CAP_SETGID и CAP_SETPCAP в разрешённом наборе. Если CAP_SYS_RESOURCE отсутствует, блок подмены MM (анонимизация VMA + замена EXE_FILE) полностью пропускается. Если CAP_SETPCAP отсутствует, инструмент переключается с PR_SET_SECUREBITS на PR_SET_KEEPCAPS.

Проверка

root@kitploit:~
./darkcloak &
PID=$!

cat /proc/$PID/comm
readlink /proc/$PID/exe
cat /proc/$PID/cmdline | tr '\0' ' '
cat /proc/$PID/environ | tr '\0' '\n' | head -3
cat /proc/$PID/maps | head -5
cat /proc/$PID/status | grep -E 'Uid|Gid|Cap'
ps aux | grep $PID

Отказ от ответственности

Опубликовано исключительно в образовательных и исследовательских целях. Используйте только на системах, которыми вы владеете или на тестирование которых у вас есть явное письменное разрешение.

Скачать инструмент
/proc/$PID/mem
ptrace(PTRACE_ATTACH)
  • анонимизация VMA через mmap-трамплин (см. ниже) → удаляет все привязки к файлам
  • prctl(PR_SET_MM_ARG_START/END) → перенаправляет /proc/$PID/cmdline
  • prctl(PR_SET_MM_ENV_START/END) → перенаправляет /proc/$PID/environ
  • prctl(PR_SET_MM_EXE_FILE) → заменяет mm_struct->exe_file
  • Сохранение привилегий: PR_SET_SECUREBITS (если есть CAP_SETPCAP) или PR_SET_KEEPCAPS (запасной вариант), чтобы пережить понижение UID
  • Понижение UID: setresuid(1000,1000,1000) или восстановление исходных значений
  • Понижение GID: setresgid(1000,1000,1000) или восстановление исходных значений
  • Понижение привилегий: очищает эффективный и наследуемый наборы
  • Изоляция пространства имён: unshare(CLONE_NEWUSER | CLONE_NEWPID | CLONE_NEWNET | CLONE_NEWIPC)
  • Удержание: nanosleep(120s), затем exit