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() | 손자 프로세스 생성, 첫 번째 자식도 종료 |
| 4 | init 입양 | 고아가 된 손자 프로세스가 init(PID 1)에게 자동 입양됨 |
| 5 | 위장 완료 | 악성코드가 시스템 프로세스처럼 보이게 됨 |
또 다른 방법으로는 daemon() 시스템 콜을 사용해서 현재 부모 프로세스에서 분리되어 백그라운드에서 실행되도록 하는 방법도 있어요.
💡 쉬운 비유: 부모가 아이를 낳고 바로 사라져버리면, 그 아이는 고아원(init)에서 키워지게 되잖아요. 나중에 누가 진짜 부모인지 알기 어려워지는 거죠.
2. 실제 공격 사례
📌 BPFDoor - Red Menshen 위협 그룹 (2022년)
배경: 중국 Red Menshen 위협 그룹이 전 세계 Linux 서버를 대상으로 장기간 잠복하기 위해 개발한 백도어입니다. 수천 대의 시스템에 몇 년간 탐지되지 않고 설치되어 있었죠.
공격 과정:
- 초기 실행: BPFDoor가
--init플래그와 함께 자기 자신을 fork하여 실행 - 프로세스 분리: 부모 프로세스는 정리 작업을 수행한 후 종료되고, fork된 자식 프로세스만 남음
- init 입양: 고아가 된 자식 프로세스가 자동으로 init 프로세스(PID 1)에게 입양되어 시스템 프로세스처럼 위장
피해 규모: 전 세계적으로 수천 개의 Linux 서버가 감염되었으며, 몇 년간 탐지되지 않고 지속적인 백도어 액세스를 제공했습니다.
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 Tools | EDR이나 모니터링 도구를 무력화한 후 프로세스 트리 조작을 수행하여 탐지 가능성을 더욱 낮춥니다 | 상세 분석 보기 |
| T1036.004 Masquerade Task or Service | 프로세스 관계를 끊은 후 정상 시스템 서비스나 작업으로 위장하는 추가 단계로 사용됩니다 | 상세 분석 보기 |
참고 자료
- [MITRE ATT&CK - T1036.009](https://attack.mitre.org/techniques/T1036/009/)
관련 글 더 보기
- 위장 공격(Masquerading) T1036: 12가지 파일 위장 기법과 탐지 방법
- 소프트웨어 공급망 침해: 한 번 감염으로 수백만 피해자를 만드는 원리 | T1195.002
- NPM 패키지 위조 공격: 개발 도구가 백도어가 되는 원리 | T1195.001
- 공급망 침해 공격: 왜 가장 효과적인 침투 방법인가 (3가지 기법) | T1195
- 매직 바이트 조작: .exe를 .jpg로 위장하는 파일 헤더 공격 | T1036.008
- 이중 확장자 공격: report.pdf.exe가 문서로 보이는 이유 | T1036.007
- 프로세스 인수 덮어쓰기: 공격자가 정상 데몬으로 위장하는 원리 | T1036.011
- 브라우저 핑거프린트 위조: 공격자가 네트워크 탐지를 우회하는 원리 | T1036.012
- Kerberos 티켓 탈취·위조: 도메인 인증을 우회하는 5가지 기법 | T1558
- Golden Ticket 공격: 도메인 전체를 영구 지배하는 Kerberos 위조 원리 | T1558.001
안내 및 법적 고지
AI 활용 안내 이 글은 AI(Claude)의 도움을 받아 작성되었으며, MITRE ATT&CK (최신 버전) 기준 정보를 포함합니다. 기술적 내용은 MITRE ATT&CK 공식 데이터를 기반으로 하며, 보안 교육 목적으로 제공됩니다.
면책 조항 본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다. 언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라 처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.
COMMENTS (0)
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.