Linux 시스템 보안 기초 · 26/50편

이 글은 리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 시리즈를 선행 학습으로 두고, 동일한 개념을 보안관제(SOC) 관점에서 한 단계 확장합니다.

선행 학습

1. 들어가며

파일과 권한이 '정적 상태'라면, 프로세스는 '살아 움직이는 행위자'입니다. 실제로 파일을 읽고 네트워크에 연결하고 다른 프로세스를 만드는 것이 프로세스죠. 침해 분석의 상당 부분은 결국 '이 프로세스가 정상인가'를 판단하는 일입니다.

2. 핵심 개념

보안 분석에서 봐야 할 프로세스 속성:

속성의미보안적 관점
PID프로세스 번호식별
PPID부모 PID실행 계보(누가 띄웠나)
UID/EUID실/유효 사용자권한 상승 판별(2편)
GID/EGID실/유효 그룹그룹 권한
exe실행 파일 실경로위장 탐지

특히 PPID(계보) 와 EUID(권한) 의 조합이 이상 탐지의 핵심입니다.

정상 계보                        의심 계보
systemd → sshd → bash            nginx → bash → curl → ./x
  (예상 가능한 부모)               (웹서버가 왜 쉘을?)
                                     │
                                     └ 웹셸/RCE 정황

3. 동작 원리

모든 프로세스는 fork()로 복제되고 exec()로 프로그램을 덮어씁니다(선행 시리즈). 그래서 모든 프로세스에는 부모가 있고, 이 계보를 거슬러 올라가면 '어떻게 실행되었는가'가 드러납니다.

권한 관점에서는 EUID가 핵심입니다. 일반 사용자가 띄운 프로세스의 EUID가 0이면 권한 상승이 일어난 것입니다. exe 링크(/proc/PID/exe)는 실제 실행 파일을 가리켜, comm(표시 이름)이 위장되어도 진짜 경로를 알려줍니다.

4. 명령어 실습

# 계보와 권한을 함께 보기
ps -eo pid,ppid,user,euser,comm --forest | head -20

# 특정 프로세스의 실제 실행 파일 경로
sudo ls -l /proc/<PID>/exe

# EUID가 0인데 실사용자가 일반계정인 프로세스(상승 의심)
ps -eo pid,user,euser,comm | awk '$2!=$3'

5. 실행 결과

실습 컨테이너의 프로세스 트리 실제 출력(일부)입니다. (실제 캡처)

$ ps -eo pid,ppid,user,euser,comm --forest | head
  PID  PPID USER   EUSER  COMMAND
    2     0 root   root   kthreadd
    3     2 root   root    \_ pool_workqueue_release
   14     2 root   root    \_ ksoftirqd/0

$ sudo ls -l /proc/1/exe
lrwxrwxrwx 1 root root 0 ... /proc/1/exe -> /usr/lib/systemd/systemd  # (예시: 일반 서버 기준)

--forest로 계보가 들여쓰기로 보입니다. /proc/PID/exe는 표시 이름과 무관한 실제 바이너리 경로라, 위장 프로세스(27편)를 벗기는 데 결정적입니다.

6. 보안 관점 — 정상 사용 vs 악용

  • 정상: 예측 가능한 부모(systemd/sshd/cron), 서비스는 전용 계정으로 실행.
  • 의심 징후:
    • 웹서버/DB의 자식으로 쉘·네트워크 도구(RCE)
    • 일반 사용자 프로세스의 EUID=0(상승)
    • comm과 exe 경로 불일치(위장)

프로세스 분석의 출발점은 '이 프로세스의 부모가 이것을 띄우는 게 자연스러운가'라는 질문입니다.

7. 탐지 방법

  • 계보(--forest)에서 부자연스러운 부모-자식 쌍
  • EUID≠UID 프로세스 탐지
  • /proc/PID/exe로 위장 여부 확인

8. SOC 관점 — SIEM · Wazuh · IOC

EDR과 auditd의 execve 이벤트는 프로세스 생성 시 PPID·UID·EUID·exe·cmdline을 기록합니다. 이 필드들이 있어야 SIEM에서 '웹서버→쉘' 같은 계보 기반 탐지가 가능합니다. Wazuh는 auditd 디코더로 이를 파싱하며, MITRE ATT&CK 기법(T1059 등)에 매핑해 알람합니다.

9. 실습 체크리스트

[ ] ps --forest로 계보 파악
[ ] EUID≠UID 프로세스 확인
[ ] /proc/PID/exe로 실경로 확인
[ ] 비정상 부모-자식 쌍 식별

10. 핵심 정리

  • 프로세스는 파일·네트워크에 실제로 접근하는 행위자다.
  • PPID(계보)와 EUID(권한)의 조합이 이상 탐지의 핵심이다.
  • /proc/PID/exe는 위장 이름 뒤의 실제 바이너리를 알려준다.
  • 웹서버의 자식 쉘은 RCE의 전형적 정황이다.
  • execve 이벤트의 계보 필드가 있어야 탐지가 가능하다.

11. 다음 편

다음 편에서는 27. 의심 프로세스 탐지 를 다룹니다. 이 기반 위에서 '의심 프로세스'를 구체적으로 식별하는 기법을 봅니다.


본 실습은 격리된 테스트 VM(Rocky Linux / Ubuntu, VMware) 및 테스트 계정 환경을 기준으로 하며, 운영 서버를 대상으로 하지 않습니다. 실행 결과는 실제 캡처와 예시 출력을 명확히 구분해 표기합니다.

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

0개의 댓글