Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
dlinject — 라이브 리눅스 프로세스에 ptrace 없이 공유 라이브러리(즉, 임의의 코드)를 주입합니다. | Kitploit
도구/GitHubGitHub/davidbuchanan314/dlinject
ExploitationShellcodeRed Teaming
GitHubdavidbuchanan314/dlinject

dlinject

라이브 리눅스 프로세스에 ptrace 없이 공유 라이브러리(즉, 임의의 코드)를 주입합니다.

저장소 보기
827861년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

dlinject.py

공유 라이브러리(임의 코드)를 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.

왜?

  • 내가 할 수 있으니까.

  • 다양한 anti-ptrace 기법이 존재하는데, 이 도구는 ptrace를 사용하지 않음으로써 이를 회피합니다.

  • 나는 ptrace를 좋아하지 않습니다.

  • LD_PRELOAD를 사용하는 것은 주입하려는 프로세스가 깨끗한 환경의 다른 프로세스에 의해 생성된 경우 까다롭거나 불가능할 수 있습니다.

작동 방식

  • 대상 프로세스에 중지 신호를 보냅니다. (선택 사항)

  • _dl_open() 심볼을 찾습니다.

  • /proc/[pid]/syscall을 통해 RIP와 RSP를 획득합니다.

  • /proc/[pid]/mem에서 읽어서 스택 일부와 셸코드로 덮어쓸 코드의 백업을 만듭니다.

  • 1차 및 2차 셸코드 버퍼를 생성합니다.

  • /proc/[pid]/mem에 쓰기를 통해 RIP에 1차 셸코드를 삽입합니다.

  • 1차 셸코드:

    • 공통 레지스터를 스택에 푸시합니다.
    • mmap()을 통해 2차 셸코드를 로드합니다.
    • 2차 셸코드로 점프합니다.
  • 2차 셸코드:

    • 스택과 프로그램 코드를 원래 상태로 복원합니다.
    • 스택을 피벗합니다 (원래 스택을 전혀 건드리지 않도록).
    • 사용자가 지정한 라이브러리를 로드하기 위해 _dl_open()을 호출합니다. 로드 시 생성자가 평소와 같이 실행됩니다.
    • 레지스터 상태를 복원하고, 스택을 원래대로 되돌린 후, 원래 SIGSTOP 시점에 있던 위치로 점프합니다.

제한 사항:

  • SIGSTOP을 보내면 원치 않는 부작용이 발생할 수 있습니다. 예를 들어 다른 스레드가 waitpid()를 기다리고 있는 경우입니다. --stopmethod=cgroup_freeze 옵션은 이를 회피하지만 (적어도 대부분의 배포판에서) root 권한이 필요합니다.

  • 복잡한 멀티스레드 애플리케이션과 어떻게 상호작용할지 완전히 확신할 수 없습니다. 분명히 문제가 발생할 가능성이 있습니다.

  • x86-64 리눅스 전용입니다 (현재로서는 - 32비트 지원이 추가될 가능성이 있습니다).

  • root 권한 또는 완화된 YAMA 설정이 필요합니다 (테스트 시 echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope가 유용합니다).

  • 대상 프로세스가 샌드박싱된 경우 (예: seccomp 필터), 2단계 셸코드를 mmap()하거나 라이브러리를 dlopen()할 권한이 없을 수 있습니다.

도구 다운로드