
프로세스 인젝션과 관련된 샘플 및 자료 모음
Linux용 프로세스 인젝션 기법의 종합적인 모음으로, 실행 중인 프로세스에 코드를 주입하는 다양한 방법을 시연합니다. 이 예제들은 교육 목적, 보안 연구, 그리고 저수준 Linux 프로세스 조작 이해를 위해 제공됩니다.
프로세스 인젝션은 다른 프로세스의 컨텍스트에서 코드를 실행하는 데 사용되는 기술입니다. 종종 악성 코드와 연관되지만, 이러한 기법들은 다음 측면에서도 유용합니다:
디렉터리: ptrace/
ptrace() 시스템 호출을 사용하여 셸코드를 프로세스 메모리에 직접 작성하고 실행 흐름을 리디렉션하는 고전적인 프로세스 인젝션 방법입니다.
주요 특징:
사용 사례: 저수준 프로세스 제어 및 직접 코드 인젝션 이해
디렉터리: ld_preload/
다른 라이브러리보다 먼저 악성 라이브러리를 로드하기 위해 LD_PRELOAD 환경 변수를 사용하는 함수 인터포지션 기법입니다.
주요 특징:
사용 사례: 함수 후킹, API 모니터링, 동작 수정
디렉터리: proc_mem/
프로세스 제어를 위해 ptrace와 결합하여 /proc/<pid>/mem 파일시스템 인터페이스를 통해 직접 메모리에 쓰는 기법입니다.
주요 특징:
사용 사례: 빠른 대량 메모리 인젝션, 기존 ptrace 한계 우회
디렉터리: dlopen_inject/
실행 흐름을 하이재킹하여 dlopen()을 호출하도록 강제함으로써 실행 중인 프로세스가 공유 라이브러리를 로드하게 하는 정교한 기법입니다.
주요 특징:
사용 사례: 고급 지속성 인젝션, 런타임 라이브러리 조작
# Build ptrace injection
cd ptrace && make all
# Build LD_PRELOAD injection
cd ../ld_preload && make all
# Build /proc/mem injection
cd ../proc_mem && make all
# Build dlopen injection
cd ../dlopen_inject && make all
각 기법은 유사한 패턴을 따릅니다:
피해자 프로세스 시작:
cd <technique>/victim-process
./sample
표시된 PID를 확인하세요
인젝션 수행:
cd <technique>
sudo ./<injector> <PID> [additional args]
결과 확인: 피해자 프로세스 출력에서 주입된 코드 실행을 확인하세요
기법별 지침은 각각의 README 파일을 참조하세요.
| 기법 | 복잡성 | 은닉성 | 지속성 | 속도 | 실행 중인 프로세스에 동작 |
|---|---|---|---|---|---|
| ptrace | 중간 | 낮음 | 아니요 | 중간 | 예 |
| LD_PRELOAD | 낮음 | 매우 낮음 | 아니요 | 빠름 | 아니요 |
| /proc/mem | 중간 | 낮음 | 아니요 | 빠름 | 예 |
| dlopen | 높음 | 중간 | 예 | 중간 | 예 |
Yama ptrace_scope: ptrace를 권한 있는 사용자로 제한
echo 1 | sudo tee /proc/sys/kernel/yama/ptrace_scope
SELinux/AppArmor: 강제 접근 제어
모니터링: auditd를 사용하여 ptrace 및 프로세스 인젝션 시도를 기록
auditctl -a exit,always -F arch=b64 -S ptrace
런타임 무결성 검사: 프로세스 메모리를 주기적으로 검증
코드 서명: 라이브러리 서명 검증
/proc/<pid>/maps에서 예상치 못한 메모리 영역이나 라이브러리를 모니터링lsof, pmap 및 프로세스 모니터링 유틸리티 같은 도구 사용중요: 이러한 기법은 승인된 환경에서만 사용해야 합니다:
이 저장소는 교육 및 연구 목적으로만 제공됩니다. 저자는 이러한 기법의 오용에 대해 책임을 지지 않습니다. 어떤 시스템에서든 테스트 전에 반드시 적절한 승인을 받으십시오.
권한 거부 오류:
sudo로 실행/proc/sys/kernel/yama/ptrace_scope 확인인젝션이 조용히 실패함:
세그멘테이션 오류:
구체적인 문제 해결 지침은 각 기법의 README를 참조하세요.
기여를 환영합니다! 추가할 수 있는 항목:
man 2 ptrace - 프로세스 추적 시스템 호출man 5 proc - /proc 파일시스템 문서man 3 dlopen - 동적 라이브러리 로딩자세한 내용은 LICENSE.txt를 참조하세요.
이 소프트웨어는 교육 목적으로 "있는 그대로" 제공됩니다. 책임감 있고 윤리적으로 사용하십시오. 소유하지 않은 시스템에서 보안 기법을 테스트하기 전에 항상 적절한 승인을 받으십시오.