
x64 Linux용 간단한 ptrace 없는 공유 라이브러리 인젝터
x64 Linux용 ptrace 없는 간단한 공유 라이브러리 인젝터입니다.
linux_injector <mode> <pid> <file>
mode
pid
대상 프로세스 ID. 대상에 대한 ptrace 권한이 있어야 합니다 (/proc/$pid/mem 접근에 필요). ptrace를 사용하지 않으므로 다른 프로세스가 자유롭게 ptrace할 수 있습니다.
file
모드 1의 경우: 주입할 모듈. 원격 프로세스에서 dlopen됩니다. 그렇지 않으면 원격 LD_LIBRARY_PATH가 해석에 사용되므로 전체 경로를 사용하는 것이 좋습니다.
모드 2의 경우: 주입할 모듈. 콘텐츠가 복사될 memfd에서 원격 프로세스로 dlopen됩니다.
모드 3의 경우: 주입할 원시 셸코드. 16바이트 정렬 주소에 매핑되고, 무작위로 하이재킹된 스레드에서 실행을 시작합니다. 훅을 설치하거나 스레드를 만든 다음 반환하세요.
제어 흐름 하이재킹을 위해 이 프로그램에는 하이재킹 후보가 필요합니다. 여기에 제시된 코드는 malloc을 사용하며, FUN_NAME을 편집하고 다시 컴파일하여 변경할 수 있습니다. 하이재킹된 함수가 100ms 이내에 실행될 수 있는지 확인하십시오. 실행되는 동안 덮어쓰이지 않아야 하기 때문입니다. 즉, sleep이나 wait 같은 호출은 초기 셸코드에 적합하지 않습니다. 해당 함수는 셸코드가 다른 함수를 덮어쓰지 않도록 0x50보다 길어야 합니다.
대상 및 소스 프로세스 모두에 대해 Glibc와 musl을 지원합니다. 대상 프로세스는 컨테이너에서 실행 중일 수 있으며 다른 libc를 사용할 수 있습니다. 모드 2와 3은 대상 프로세스가 접근 가능한 경로를 요구하지 않습니다.
모드 2는 Linux 3.17이 필요합니다.
Oracle Linux 7 (모드 2 미지원), Fedora 37, Alpine Linux 3.17에서 테스트됨