해킹 이슈 : 전 세계 900개 서버 장악한 EncystPHP 웹쉘

FreePBX 로고와 시스템 다이어그램 배경 위에 Encyst PHP 웹쉘 파일(websh.php)과 취약점(CVE-2025-64222) 침투, 권한 탈취, 웹쉘 배포, 악성 행위 단계를 시각화한 공격 흐름도

해킹 이슈 : 전 세계 900개 서버 장악한 EncystPHP 웹쉘

올해 초 오픈소스 IP PBX 플랫폼인 FreePBX에서 심각한 보안 사고가 발생했습니다.

단순한 침투를 넘어 시스템 권한을 무력화하고 데이터를 탈취하는 ‘무기화된 웹쉘’의 등장은 보안 담당자들에게 큰 충격을 주고 있습니다.

오늘은 이번 사고의 핵심인 EncystPHP 웹쉘의 위험성과 그 대응책을 심층 분석합니다.

1. 900여 개의 서버를 삼킨 취약점

2026년 2월 27일, 보안 매체 The Hacker News는 전 세계적으로 900개 이상의 Sangoma FreePBX 인스턴스가 웹쉘에 감염되었다고 보도했습니다.

  • 취약점 명칭: CVE-2025-64328 (Command Injection)
  • 사고 여파: 공격자는 해당 취약점을 악용해 원격에서 명령을 실행하고, 백도어 역할을 하는 웹쉘을 심어 시스템 제어권을 완전히 획득했습니다.

이 사고는 단순히 특정 소프트웨어의 문제를 넘어, 한 번의 취약점 노출이 얼마나 대규모의 인프라 마비를 초래할 수 있는지 보여주는 대표적인 사례가 되었습니다.

2. EncystPHP 기술 분석

단순한 웹쉘이 ‘열린 뒷문’이라면, EncystPHP는 아예 건물의 자물쇠를 통째로 바꾸고 집주인을 쫓아내는 ‘무기’입니다.

아래 다이어그램은 공격자가 취약점(CVE-2025-64328)을 뚫고 들어온 순간부터 시스템을 완전히 장악하기까지의 전 과정을 보여줍니다.

Fortinet이 분석한  공격 흐름을 핵심 3단계로 요약해 드립니다. 해커가 FreePBX 서버에 침투하여 Encyst PHP 웹쉘을 무기화하는 과정은 다음과 같습니다.
그림 1.The EncystPHP File Flow (출처: Fortinet)

1. 다중 ‘드로퍼(Dropper)’ 체계: 탐지 우회

공격자는 취약점을 통해 c라는 초기 드로퍼를 설치합니다. 이 c는 다시 k.php라는 또 다른 드로퍼를 생성합니다. 이는 보안 솔루션이 첫 번째 드로퍼를 탐지하더라도 두 번째, 세 번째 드로퍼가 살아남아 공격을 지속하게 만드는 고도의 우회 기법입니다.

2. ‘chmod 000’ 봉쇄: 자가 보호

그림 1에서 가장 무서운 부분은 .htaccesstest.sh 파일로 이어지는 흐름입니다. 이 웹쉘은 설치 직후 스스로 chmod 000 명령을 실행하여 자신의 파일 권한을 없애버립니다. 이는 관리자나 보안 솔루션이 해당 파일을 읽거나, 수정하거나, 삭제하려 해도 접근 자체가 차단되는 상태를 만듭니다. ‘삭제 불가능한 백도어’가 완성되는 순간입니다.

3. 데이터베이스 침탈 및 계정 조작 (Persistence)

마지막 단계로, 웹쉘은 시스템 설정 파일(freepbx.conf)을 파싱하여 DB 자격 증명을 탈취합니다. 이후 ajax.php 웹쉘(그림 1의 문 아이콘)을 통해 DB에 직접 접속하고, 관리자 정보를 가로채는 동시에 정당한 사용자의 계정을 삭제하거나 변조하여 시스템을 완전한 지배하에 둡니다.

3. 대응 가이드 : 실시간 감시와 시그마(Sigma) 룰의 결합

보안 전문가 그룹 SOC Prime은 이번 EncystPHP 공격의 전술을 분석하여 대응 가이드를 공개했습니다.

  • 실시간 파일 모니터링 : 최근 생성된 파일 중 k.php, c, ajax.php, test.sh, license.php라는 이름이 있는지 확인하세요. 특히 이미지 파일이나 라이선스 파일인 척 위장하고 있을 확률이 높습니다. 또한 웹 서버 내 쓰기 권한이 있는 디렉터리에 새로운 파일이 생성되는 순간을 즉시 감지해야 합니다.
  • ‘읽기 불가능’ 파일 추적: 리눅스 서버에서 ls -l 명령어를 입력했을 때, 권한 설정이 ---------- (000)으로 되어 있어 관리자조차 열 수 없는 PHP 파일이 있다면 99% 감염 신호입니다.
  • 비정상적인 프로세스: 웹 서버(httpdnginx)가 갑자기 시스템 설정 파일인 /etc/freepbx.conf를 읽거나 외부의 낯선 IP로 대량의 데이터를 보내고 있다면 즉시 네트워크를 차단해야 합니다.
  • 행위 기반 식별: 파일이 난독화되어 있어도, 시스템 로그에 남는 공격자의 행위 공식과 대조하여 그 의도를 즉각 식별합니다.

4. 사후 분석이 아닌 ‘실시간 탐지 및 처리’가 답입니다.

이번 Encyst PHP 웹쉘 해킹 사건에서, SOC Prime의 분석이 가리키는 결론은 단 하나입니다.

웹쉘 방어의 성패는 웹쉘이 업로드되는 그 순간에 실시간으로 탐지하고 처리하는 것에 달려 있습니다.

Encyst PHP와 같은 고도화된 웹쉘이 서버에 안착하여 악성 행위를 시작하기 전, 업로드 단계에서 위협을 판단(Judgment)하고 즉각 무력화해야 합니다.

공격자가 단 한 번의 명령도 내리지 못하도록 차단하는 실시간 선제 대응만이 무기화된 웹쉘로부터 기업의 핵심 자산을 지키는 가장 확실한 방법입니다.

5. 출처