263. 프로세스·지속성 — 삭제된 바이너리 실행(deleted binary) 탐지

changseop lee·7일 전

시스템 보안 · 취약점

목록 보기
263/450

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

선행 학습

1. 개념

공격자는 바이너리를 실행한 뒤 파일을 삭제해 디스크 흔적을 지웁니다. 프로세스는 메모리에서 계속 동작하지만 바이너리 파일은 사라져, 파일 기반 탐지·포렌식을 회피합니다. 이는 강한 악성 신호입니다.

삭제된 바이너리 실행
 공격: /tmp/.x 실행 → rm /tmp/.x (파일 삭제)
       프로세스는 살아있음(메모리), 파일은 없음
 흔적: /proc/<pid>/exe → "/tmp/.x (deleted)"
       파일 스캔·해시 검사 회피

정상 프로세스는 바이너리가 디스크에 존재함

리눅스는 실행 중 파일을 삭제해도 프로세스가 계속 돕니다. /proc/<pid>/exe가 (deleted)로 표시되는 것이 핵심 탐지 지표입니다.

2. 왜 중요한가

  • 삭제된 바이너리 실행은 디스크 흔적을 지워 파일 스캔·포렌식을 회피합니다.
  • 정상 프로세스는 바이너리가 디스크에 있으므로, (deleted) 상태는 강한 악성 신호입니다.
  • 메모리에서 바이너리를 덤프(/proc//exe 복사)해야 분석할 수 있습니다.

3. 핵심 명령어 / 설정

지표의미위험
/proc/*/exe (deleted)바이너리 삭제됨매우 높음
실행 직후 rm흔적 삭제높음
/tmp 삭제 바이너리비표준+삭제매우 높음
memfd 실행fileless(F14)높음
정상 업데이트 교체일시적맥락 확인

4. 실습 (실습 예시)

# 삭제된 바이너리 실행 탐지 (분석 방법)
# /proc/<pid>/exe가 (deleted)인 프로세스
ls -l /proc/*/exe 2>/dev/null | grep '(deleted)'
# 실행 후 삭제 연계(execve 후 같은 경로 unlink)
sudo ausearch -k proc_exec -i --start recent 2>/dev/null | grep -A5 'exe=/tmp' | grep -E 'unlink|delete'

5. 정상 상태

$ (deleted 바이너리) (없음)

실행 중 모든 프로세스의 바이너리가 디스크에 존재하고, (deleted) 상태 프로세스가 없는 상태가 정상입니다.

6. 이상 상태

$ (deleted 바이너리)
/proc/3002/exe -> /tmp/.x (deleted)
/proc/3100/exe -> /dev/shm/payload (deleted)
  • /tmp/.x 실행 후 파일 삭제 → 메모리에서만 동작(디스크 흔적 없음)
  • /dev/shm 삭제 바이너리 → 메모리 경로+삭제(이중 회피)
  • (deleted) 상태 프로세스 → 흔적 회피 악성 → 정탐

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

삭제된 바이너리 실행 분석입니다(가상의 예시).

[실행] execve /tmp/.x (프로세스 3002 생성)
   ↓
[삭제] rm /tmp/.x (디스크 파일 제거)
   ↓
[상태] /proc/3002/exe -> /tmp/.x (deleted)
       프로세스 살아있음, 파일 없음(흔적 회피)
   ↓
[대응] /proc/3002/exe 메모리 덤프로 바이너리 확보·분석
관찰해석
exe (deleted)바이너리 삭제
프로세스 생존메모리 동작
디스크 없음스캔 회피
/proc 덤프분석 확보

삭제돼도 /proc//exe로 메모리의 바이너리를 복원할 수 있습니다.

8. SOC 관제 포인트

  • 삭제된 바이너리 실행은 디스크 흔적을 지워 파일 스캔·포렌식을 회피합니다.
  • /proc/<pid>/exe (deleted) 상태가 핵심 탐지 지표이자 강한 악성 신호입니다.
  • 분석은 /proc//exe를 메모리에서 덤프해 확보합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_f,process,">
  <!-- 주기 점검: (deleted) 바이너리 실행 프로세스 -->
  <rule id="105120" level="13">
    <decoded_as>json</decoded_as>
    <field name="check">deleted_exe</field>
    <field name="status">found</field>
    <description>삭제된 바이너리 실행 프로세스(흔적 회피)</description>
    <mitre><id>T1070.004</id><id>T1620</id></mitre>
  </rule>
</group>

(deleted) 상태는 주기 점검 스크립트·EDR로 탐지해 로그로 수집합니다. 실행 후 unlink 연계는 auditd로 보완합니다.

10. 대응 방법

  1. 초기 확인 — (deleted) 상태 프로세스·경로·주체·계보를 확인합니다.
  2. 범위 확인 — 실행 후 삭제 연계·메모리 경로(/dev/shm)·흔적 회피를 확인합니다.
  3. 증거 확보 — /proc//exe 메모리 덤프로 바이너리를 확보·보존합니다.
  4. 차단/조치 — 흔적 회피 정탐이면 프로세스 종료(덤프 후)·IOC 등록·지속성 점검을 진행합니다.
  5. 재발 방지 — 삭제된 바이너리 실행 탐지를 운영합니다.

11. 핵심 정리

지표의미
/proc/*/exe (deleted)바이너리 삭제됨
실행 직후 rm흔적 삭제
/dev/shm 삭제메모리+삭제
/proc 덤프분석 확보
면접 포인트"실행 후 파일 삭제해도 /proc/exe로 복원 — (deleted) 상태는 강한 악성 신호"

12. 다음 편 예고

다음 편 264. 프로세스·지속성 — 메모리 전용 실행(fileless) 징후 탐지 에서는 메모리 전용 실행을 다루는 메모리 전용 실행(fileless) 징후 탐지를 다룹니다.


이전 편: 262. 프로세스·지속성 — 셸·인터프리터 비정상 실행 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글