cd ../blog
MITRE

프로세스 트리 조작: 공격자가 부모 프로세스 추적을 차단하는 원리 | T1036.009

읽는 시간 약 8분
조회수 0
MITRE ATT&CKT1036.009프로세스 위장

해커가 fork() 시스템 콜로 프로세스 관계를 끊어 EDR 탐지를 우회하는 방법. BPFDoor 실제 공격 사례와 init 프로세스 위장 기법 분석. 지금 확인하세요.

share:
프로세스 트리 조작: 공격자가 부모 프로세스 추적을 차단하는 원리 | T1036.009

MITRE ATT&CK: T1036.009 (Break Process Trees) | 전술: Defense Evasion | 플랫폼: Linux, macOS

도입: 왜 이 공격이 중요한가

2022년 중국 Red Menshen 위협 그룹의 BPFDoor 백도어가 전 세계 수천 대의 Linux 서버를 감염시켰을 때, 보안 전문가들은 한 가지 이상한 점을 발견했습니다. 프로세스 모니터링 도구로 악성 프로세스를 추적하려 해도, 마치 시스템에서 저절로 실행된 것처럼 보였거든요.

이게 바로 Break Process Trees 기법입니다. 공격자가 악성코드의 부모 프로세스 ID(PPID)를 조작해서 "누가 이 프로세스를 실행했는지" 추적을 불가능하게 만드는 거죠.

💡 쉬운 비유: 가족 관계를 추적하는 족보에서 부모 정보를 지워버리는 것과 같습니다. 자식은 존재하지만 누가 낳았는지 알 수 없게 되죠.


1. 공격자 관점

왜 이 기법을 사용하는가

  • EDR 탐지 우회: 대부분의 보안 도구는 프로세스 트리 분석으로 악성 행위를 탐지하는데, 부모-자식 관계가 끊어지면 탐지 로직이 무력화됩니다
  • 포렌식 분석 방해: 사고 대응팀이 공격 경로를 역추적할 때 프로세스 실행 체인을 따라가는데, 이 연결고리가 끊어지면 분석이 어려워집니다
  • 정상 시스템 프로세스로 위장: init 프로세스(PID 1)의 자식으로 위장하면 시스템이 부팅할 때 자동 실행되는 정상 서비스처럼 보입니다

동작 흐름

공격자는 주로 double-fork 기법을 사용해서 프로세스 관계를 끊습니다.

단계동작설명
1초기 실행공격자가 악성코드를 실행 (예: ./malware)
2첫 번째 fork()자식 프로세스 생성, 원본 부모 프로세스는 종료
3두 번째 fork()손자 프로세스 생성, 첫 번째 자식도 종료
4init 입양고아가 된 손자 프로세스가 init(PID 1)에게 자동 입양됨
5위장 완료악성코드가 시스템 프로세스처럼 보이게 됨

또 다른 방법으로는 daemon() 시스템 콜을 사용해서 현재 부모 프로세스에서 분리되어 백그라운드에서 실행되도록 하는 방법도 있어요.

💡 쉬운 비유: 부모가 아이를 낳고 바로 사라져버리면, 그 아이는 고아원(init)에서 키워지게 되잖아요. 나중에 누가 진짜 부모인지 알기 어려워지는 거죠.


2. 실제 공격 사례

📌 BPFDoor - Red Menshen 위협 그룹 (2022년)

배경: 중국 Red Menshen 위협 그룹이 전 세계 Linux 서버를 대상으로 장기간 잠복하기 위해 개발한 백도어입니다. 수천 대의 시스템에 몇 년간 탐지되지 않고 설치되어 있었죠.

공격 과정:

  1. 초기 실행: BPFDoor가 --init 플래그와 함께 자기 자신을 fork하여 실행
  2. 프로세스 분리: 부모 프로세스는 정리 작업을 수행한 후 종료되고, fork된 자식 프로세스만 남음
  3. init 입양: 고아가 된 자식 프로세스가 자동으로 init 프로세스(PID 1)에게 입양되어 시스템 프로세스처럼 위장

피해 규모: 전 세계적으로 수천 개의 Linux 서버가 감염되었으며, 몇 년간 탐지되지 않고 지속적인 백도어 액세스를 제공했습니다.

출처: BPFDoor - An Evasive Linux Backdoor Technical Analysis


3. 왜 탐지가 어려운가?

공식 탐지 방법

[DET0443] Detection Strategy for Masquerading via Breaking Process Trees - AN1223: 프로세스 생성 후 부모 프로세스가 빠르게 종료되거나 'init' (PID 1)으로 재입양되는 비정상적인 프로세스 실행 패턴을 탐지합니다. 이러한 행위는 double-fork 또는 daemon 스타일의 분리를 나타내며 프로세스 트리 분석에서 실행 출처를 모호하게 만듭니다.

공격자가 이 기법을 선호하는 이유

  • 정상 행위와 구분 어려움: Unix/Linux 시스템에서 daemon 프로세스 생성은 정상적인 관리 작업이기 때문에, 공격자의 행위와 구분하기 매우 어렵습니다
  • 기존 탐지 로직 우회: 대부분의 EDR 솔루션은 "의심스러운 부모 프로세스에서 실행된 자식 프로세스"를 탐지하는데, 부모 관계가 끊어지면 이런 규칙이 작동하지 않아요
  • 포렌식 증거 인멸: 사고 조사 시 공격자가 어떤 경로로 시스템에 침입했는지 추적하기 어려워집니다

탐지의 현실적 한계

공식 탐지 방법이 있다고 해도 실제 환경에서는 여러 한계가 있습니다:

  • 높은 오탐률: 정상적인 시스템 관리자나 애플리케이션도 daemon 프로세스를 자주 생성하기 때문에 false positive가 많이 발생해요
  • 로그 분석 복잡성: 프로세스 생성과 종료 이벤트를 실시간으로 연관 분석해야 하는데, 이를 위한 고성능 SIEM이 필요합니다
  • 타이밍 이슈: fork와 부모 프로세스 종료가 매우 빠르게 일어나기 때문에 모니터링 도구가 놓칠 수 있습니다

4. 나도 위험할까? 자가 진단

이 공격이 나와 관련 있는지 확인해보세요.

이런 환경이라면 주의가 필요합니다

  • Linux/Unix 서버를 운영하고 있으며, 외부에서 SSH 접근이 가능한 경우
  • 웹 애플리케이션이나 API 서버를 운영하여 인터넷에 노출된 서비스가 있는 경우
  • 프로세스 모니터링이나 EDR 솔루션 없이 서버를 운영하는 경우
  • 시스템 관리자가 스크립트나 자동화 도구를 자주 사용하는 환경

당장 할 수 있는 것

  • 프로세스 모니터링 강화: ps aux --forest 명령으로 프로세스 트리를 정기적으로 확인하고, init의 자식 프로세스 중 의심스러운 것이 없는지 점검하세요
  • 시스템 로그 확인: /var/log/auth.log/var/log/syslog에서 비정상적인 프로세스 실행 패턴이나 알 수 없는 네트워크 연결을 찾아보세요
  • 🏢 보안 담당자: auditd를 활성화하여 fork/execve 시스템 콜을 모니터링하고, 프로세스 생성 후 부모가 즉시 종료되는 패턴을 탐지하는 규칙을 설정하세요

5. 관련 기술

기법설명링크
T1036.005 Match Legitimate Name or Location프로세스 트리를 끊은 후 정상 프로세스 이름으로 위장하여 추가적인 은폐 효과를 얻습니다상세 분석 보기
T1562.001 Disable or Modify ToolsEDR이나 모니터링 도구를 무력화한 후 프로세스 트리 조작을 수행하여 탐지 가능성을 더욱 낮춥니다상세 분석 보기
T1036.004 Masquerade Task or Service프로세스 관계를 끊은 후 정상 시스템 서비스나 작업으로 위장하는 추가 단계로 사용됩니다상세 분석 보기

참고 자료


관련 글 더 보기


안내 및 법적 고지

AI 활용 안내 이 글은 AI(Claude)의 도움을 받아 작성되었으며, MITRE ATT&CK (최신 버전) 기준 정보를 포함합니다. 기술적 내용은 MITRE ATT&CK 공식 데이터를 기반으로 하며, 보안 교육 목적으로 제공됩니다.

면책 조항 본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다. 언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라 처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.

COMMENTS (0)

댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.