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

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

선행 학습

1. 들어가며

공격자는 자신의 프로세스를 숨기거나 정상처럼 위장합니다. 이번 편은 ps, /proc, readlink로 위장·은닉 프로세스를 벗겨내는 구체적 기법을 정리합니다.

2. 핵심 개념

의심 프로세스의 대표 징후:

  1. 이름 위장: comm이 [kworker]처럼 커널 스레드를 흉내
  2. 실행 파일 삭제: /proc/PID/exe가 (deleted) — 디스크에서 지워졌지만 메모리에서 실행 중
  3. 비정상 경로: /tmp, /dev/shm, 홈 디렉터리에서 실행
  4. 높은 권한: 일반 사용자 컨텍스트인데 EUID=0
  5. 부모 없음/이상: 예상 밖 PPID
겉보기: ps에 [kworker/0:2] 처럼 보임 (정상 커널 스레드 흉내)
        │ readlink /proc/PID/exe
        ▼
실제:   /tmp/.x (deleted)   ← 삭제된 바이너리가 /tmp에서 실행 중
        │
        └ 위장 + 은닉 + 비정상 경로 = 강한 악성 지표

3. 동작 원리

커널 스레드는 exe 링크가 비어 있고 대괄호 이름([kthreadd])을 갖습니다. 악성 프로세스가 대괄호 이름을 흉내 내도, /proc/PID/exe를 읽으면 실제 파일 경로가 드러납니다. 진짜 커널 스레드는 exe가 없지만, 위장 프로세스는 실제 바이너리(종종 /tmp/... 또는 (deleted))를 가리킵니다.

'실행 파일 삭제'는 흔한 은닉 기법입니다. 공격자는 실행 후 바이너리를 지워 디스크 흔적을 없애지만, 프로세스가 살아 있는 한 /proc/PID/exe로 그 사실((deleted))과 메모리 이미지를 확보할 수 있습니다.

4. 명령어 실습

# 삭제된 실행 파일로 도는 프로세스 (강한 의심)
sudo ls -l /proc/*/exe 2>/dev/null | grep -i deleted

# 비정상 경로에서 실행 중인 프로세스
sudo ls -l /proc/*/exe 2>/dev/null | grep -E '/tmp/|/dev/shm/|/var/tmp/'

# 프로세스의 실제 실행 파일과 인자 확인
sudo readlink /proc/<PID>/exe; cat /proc/<PID>/cmdline | tr '\0' ' '; echo

5. 실행 결과

삭제 바이너리 탐지의 형식입니다. (예시 출력 — 은닉 프로세스 가정)

$ sudo ls -l /proc/*/exe 2>/dev/null | grep -i deleted
lrwxrwxrwx 1 root root 0 Sep 25 14:40 /proc/8123/exe -> '/tmp/.x (deleted)'

$ sudo cat /proc/8123/cmdline | tr '\0' ' '; echo
./.x -c 203.0.113.10:4444

PID 8123이 /tmp/.x(이미 삭제됨)로 실행 중이고 인자에 외부 IP:포트가 보입니다 — C2 연결 정황입니다. (참고: 본 실습 컨테이너에는 이런 악성 프로세스가 없어 위는 형식 예시입니다.)

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

  • 정상: 표준 경로 바이너리, 예측 가능한 계보, exe 링크 정상.
  • 악성 징후:
    • (deleted) 실행 파일
    • /tmp·/dev/shm 실행
    • 커널 스레드 위장(대괄호 이름인데 exe가 존재)
    • cmdline에 외부 IP·포트·인코딩된 명령

여러 징후가 겹칠수록 신뢰도가 높습니다. 단일 징후는 오탐일 수 있으니 조합으로 판단합니다.

7. 탐지 방법

  • (deleted) exe 스캔(핵심)
  • 임시 디렉터리 실행 프로세스 스캔
  • cmdline의 네트워크/인코딩 인자 확인
  • 커널 스레드 위장(대괄호+exe 존재) 탐지

8. SOC 관점 — SIEM · Wazuh · IOC

이 징후들은 MITRE ATT&CK의 T1036(Masquerading), T1055/실행 은닉 등에 대응합니다. Wazuh는 auditd execve와 rootcheck로 임시 디렉터리 실행·은닉 프로세스를 탐지하고, EDR은 (deleted) 실행을 강한 IOC로 봅니다. 탐지 시 프로세스 메모리 덤프·네트워크 연결(38편)을 함께 확보해 증거로 남깁니다.

9. 실습 체크리스트

[ ] (deleted) 실행 파일 스캔
[ ] 임시 디렉터리 실행 프로세스 확인
[ ] cmdline의 외부 IP/포트 확인
[ ] 커널 스레드 위장 여부 점검

10. 핵심 정리

  • 위장·은닉 프로세스는 /proc/PID/exe로 벗겨낸다.
  • (deleted) 실행 파일은 강한 은닉 악성 지표다.
  • /tmp·/dev/shm 실행은 우선 조사 대상이다.
  • 커널 스레드 이름을 흉내 내도 exe가 있으면 위장이다.
  • 단일 징후보다 조합으로 신뢰도를 판단한다.

11. 다음 편

다음 편에서는 28. 프로세스 트리 기반 침해 분석 를 다룹니다. 개별 프로세스를 넘어, 프로세스 '트리' 전체로 침해 흐름을 읽는 법을 봅니다.


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

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

0개의 댓글