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

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

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

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

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

Категории

Все категории
Loading categories
dlinject — Внедрить общую библиотеку (т.е. произвольный код) в активный процесс Linux, без ptrace | Kitploit
Инструменты/GitHubGitHub/davidbuchanan314/dlinject
ЭксплуатацияШелл-кодRed Teaming
GitHubdavidbuchanan314/dlinject

dlinject

Внедрить общую библиотеку (т.е. произвольный код) в активный процесс Linux, без ptrace

Репозиторий
827861 год назадПроверено Kitploit

Популярное

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

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

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

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

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

dlinject.py

Внедрение общей библиотеки (т.е. произвольного кода) в работающий процесс Linux без ptrace. Вдохновлено Cexigua и linux-inject, а также другими проектами.

asciicast

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

root@kitploit:~
    .___.__  .__            __               __
  __| _/|  | |__| ____     |__| ____   _____/  |_  ______ ___.__.
 / __ | |  | |  |/    \    |  |/ __ \_/ ___\   __\ \____ <   |  |
/ /_/ | |  |_|  |   |  \   |  \  ___/\  \___|  |   |  |_> >___  |
\____ | |____/__|___|  /\__|  |\___  >\___  >__| /\|   __// ____|
     \/              \/\______|    \/     \/     \/|__|   \/

source: https://github.com/DavidBuchanan314/dlinject

usage: dlinject.py [-h] [--stopmethod {sigstop,cgroup_freeze,none}]
                   pid /path/to/lib.so

Inject a shared library into a live process.

positional arguments:
  pid                   The pid of the target process
  /path/to/lib.so       Path of the shared library to load (note: must be
                        relative to the target process's cwd, or absolute)

optional arguments:
  -h, --help            show this help message and exit
  --stopmethod {sigstop,cgroup_freeze,none}
                        How to stop the target process prior to shellcode
                        injection. SIGSTOP (default) can have side-effects.
                        cgroup freeze requires root. 'none' is likely to cause
                        race conditions.

Зачем?

  • Потому что могу.

  • Существуют различные анти-ptrace техники, которые данный метод обходит, просто не используя ptrace.

  • Мне не нравится ptrace.

  • Использование LD_PRELOAD иногда может быть сложным или невозможным, если процесс, в который вы хотите внедриться, порождается другим процессом с чистым окружением.

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

  • Отправка сигнала остановки целевому процессу (опционально).

  • Поиск символа _dl_open().

  • Получение RIP и RSP через /proc/[pid]/syscall.

  • Создание резервной копии части стека и кода, который будет перезаписан шеллкодом, путём чтения из /proc/[pid]/mem.

  • Генерация буферов первичного и вторичного шеллкода.

  • Вставка первичного шеллкода по адресу RIP путём записи в /proc/[pid]/mem.

  • Первичный шеллкод:

    • Сохраняет распространённые регистры в стек.
    • Загружает вторичный шеллкод через mmap().
    • Переходит к вторичному шеллкоду.
  • Вторичный шеллкод:

    • Восстанавливает стек и программный код в исходное состояние.
    • Переключает стек (чтобы не затрагивать исходный стек вообще).
    • Вызывает _dl_open() для загрузки указанной пользователем библиотеки. Конструкторы выполняются при загрузке, как обычно.
    • Восстанавливает состояние регистров, возвращает стек обратно и переходит туда, где процесс находился в момент исходного .

Ограничения:

  • Отправка SIGSTOP может вызвать нежелательные побочные эффекты, например, если другой поток ожидает waitpid(). Опция --stopmethod=cgroup_freeze позволяет этого избежать, но требует прав root (по крайней мере, на большинстве дистрибутивов).

  • Я не совсем уверен, как это будет взаимодействовать со сложными многопоточными приложениями. Определённо существует вероятность поломок.

  • Только x86-64 Linux (пока; поддержка 32-битных систем может быть добавлена).

  • Требуются права root или ослабленная конфигурация YAMA (echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope полезно при тестировании).

  • Если целевой процесс изолирован (например, с помощью фильтров seccomp), у него может не быть разрешения на mmap() для второго этапа шеллкода или на dlopen() библиотеки.

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