283. 프로세스·지속성 — 프로세스 인젝션·후킹 징후 탐지

changseop lee·2026년 10월 7일

시스템 보안 · 취약점

목록 보기
283/450

시스템 보안 · 취약점 › F. 비정상 프로세스 · 지속성 징후 · 33/50편 (전체 283/450)
학습 단계: 백도어·C2·은닉 징후
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

프로세스 인젝션은 악성 코드를 정상 프로세스의 메모리에 주입해 실행하는 은닉 기법입니다. 자체 프로세스를 만들지 않고 정상 프로세스(sshd·nginx 등)에 숨어, 프로세스 목록 기반 탐지를 회피합니다.

프로세스 인젝션·후킹 기법
 ptrace 주입: ptrace(PTRACE_ATTACH)로 타 프로세스 제어·코드 주입
 /proc/<pid>/mem 쓰기: 메모리 직접 수정
 LD_PRELOAD 후킹: 함수 가로채기(F24)
 __libc_start 후킹: 실행 흐름 변경

특징: 정상 프로세스에 숨음 → ps에 안 보임, 탐지 회피

인젝션은 정상 프로세스(sshd 등)의 메모리에서 동작하므로 프로세스 목록에 악성 프로세스가 없습니다. ptrace·메모리 접근 감사로 주입 행위를 포착합니다.

2. 왜 중요한가

  • 프로세스 인젝션은 정상 프로세스에 숨어 프로세스 목록 기반 탐지를 회피합니다.
  • ptrace(PTRACE_ATTACH)·/proc/pid/mem 쓰기가 주입의 핵심 시스템 콜·경로입니다.
  • 정상적으로 ptrace를 쓰는 건 디버거(gdb·strace)뿐이라, 그 외 ptrace는 의심입니다.

3. 핵심 명령어 / 설정

인젝션 기법메커니즘위험
ptrace 주입PTRACE_ATTACH높음
/proc/pid/mem 쓰기메모리 직접 수정높음
LD_PRELOAD 후킹함수 가로채기(F24)높음
process_vm_writev메모리 쓰기높음
정상 디버거gdb·strace정상

4. 실습 (실습 예시)

# 프로세스 인젝션·후킹 탐지 (분석 방법)
# ptrace 시스템 콜 감사(디버거 외)
sudo ausearch -k proc_exec,proc_inject -i --start recent 2>/dev/null | grep -E 'ptrace' | grep -vE 'comm="(gdb|strace|ltrace)"' | tail
# /proc/pid/mem 쓰기 접근
sudo ausearch -k proc_inject -i --start recent 2>/dev/null | grep -E '/proc/[0-9]+/mem'

5. 정상 상태

$ (ptrace) (없음 또는 정상 디버거만)
$ (/proc/pid/mem 쓰기) (없음)

ptrace가 정상 디버거(gdb·strace)에 그치고, /proc/pid/mem 쓰기 접근이 없는 상태가 정상입니다.

6. 이상 상태

$ (ptrace)
comm="/tmp/.inj" syscall=ptrace a0=PTRACE_ATTACH target_pid=980(sshd)
$ (/proc/pid/mem 쓰기)
comm="/tmp/.inj" /proc/980/mem (쓰기)
  • /tmp/.inj가 sshd(980)에 ptrace ATTACH → sshd 메모리에 코드 주입
  • /proc/980/mem 쓰기 → 메모리 직접 수정(인젝션)
  • 비디버거 프로세스의 ptrace·메모리 쓰기 → 인젝션 → 정탐

7. 로그 분석 (분석 방법)

프로세스 인젝션 분석입니다(가상의 예시).

[주입 도구] /tmp/.inj 실행
   ↓
[ptrace] PTRACE_ATTACH sshd(980)
   ↓
[메모리 쓰기] /proc/980/mem에 악성 코드 주입
   ↓
[실행] sshd 프로세스 안에서 악성 코드 동작
 = ps엔 sshd만 보임(악성 프로세스 없음) → 은닉
[탐지] ptrace·메모리 쓰기 감사(프로세스 목록 우회)
요소해석
ptrace ATTACH타 프로세스 제어
/proc/mem 쓰기코드 주입
sshd 대상정상 위장
ps 은닉탐지 회피

프로세스 목록엔 안 보이므로 ptrace·메모리 접근 감사로 주입을 포착합니다.

8. SOC 관제 포인트

  • 프로세스 인젝션은 악성 코드를 정상 프로세스 메모리에 주입해 프로세스 목록 탐지를 회피합니다.
  • ptrace(PTRACE_ATTACH)·/proc/pid/mem 쓰기가 핵심 시스템 콜·경로입니다.
  • 정상 ptrace는 디버거뿐이라, 비디버거의 ptrace·메모리 쓰기는 인젝션 신호입니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_f,process,">
  <rule id="105320" level="13">
    <if_sid>105000</if_sid>
    <field name="audit.syscall" type="pcre2">^(ptrace|process_vm_writev)$</field>
    <field name="audit.comm" type="pcre2">^(?!(gdb|strace|ltrace|lldb))[a-zA-Z0-9._/-]+$</field>
    <description>비디버거 프로세스의 ptrace·메모리 주입(프로세스 인젝션)</description>
    <mitre><id>T1055</id></mitre>
  </rule>
</group>

ptrace 감사와 정상 디버거 화이트리스트로 인젝션을 탐지합니다. yama ptrace_scope 설정으로 주입을 제한할 수도 있습니다.

10. 대응 방법

  1. 초기 확인 — ptrace·메모리 쓰기 주체(비디버거)·대상 프로세스를 확인합니다.
  2. 범위 확인 — PTRACE_ATTACH·/proc/mem 쓰기·대상(정상 프로세스 위장)을 확인합니다.
  3. 증거 확보 — 인젝션 시스템 콜·주입 도구·대상 프로세스를 보존합니다.
  4. 차단/조치 — 인젝션 정탐이면 주입 도구·대상 프로세스 종료·메모리 분석을 진행합니다.
  5. 재발 방지 — ptrace·메모리 접근 감사 기반 인젝션 탐지를 운영합니다.

11. 핵심 정리

인젝션 기법메커니즘
ptrace 주입PTRACE_ATTACH
/proc/pid/mem 쓰기메모리 수정
LD_PRELOAD 후킹함수 가로채기
process_vm_writev메모리 쓰기
면접 포인트"인젝션은 정상 프로세스에 숨음 — ps 우회, ptrace·메모리 감사로 탐지"

12. 다음 편 예고

다음 편 284. 프로세스·지속성 — 프로세스 은닉(rootkit·hiding) 탐지 에서는 프로세스 은닉을 다루는 프로세스 은닉(rootkit·hiding) 탐지를 다룹니다.


이전 편: 282. 프로세스·지속성 — 웹셸 실행 징후 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글