뉴스 목록
Help Net Security2026. 09. 09.

해커, F5 BIG-IP APM 장비에 리눅스 루트킷 배포…웹 셸을 메모리에 숨겨

한 줄 요약

해커들이 기업·금융기관·정부기관에서 널리 쓰이는 네트워크 장비인 F5 BIG-IP APM에 리눅스 루트킷(운영체제 깊숙이 숨어드는 악성코드)을 심었습니다. 이 악성코드는 'PoisonedRefresh'라는 이름이 붙었으며, 파일을 디스크에 저장하지 않고 메모리 안에만 웹 셸(원격으로 서버를 조작할 수 있는 도구)을 숨기기 때문에 일반적인 파일 스캔으로는 탐지가 매우 어렵습니다. F5는 이 공격을 실제 악용이 확인된 인증 없이 원격 코드 실행(RCE)이 가능한 취약점 CVE-2025-53521과 연결 지었습니다. 보안기업 Sophos는 탐지 신호와 임시 대응 방법을 공개했으며, BIG-IP APM 관리자는 즉시 F5 공식 권고를 확인하고 조치해야 합니다.

사건

CVE-2025-53521(인증 불필요 원격 코드 실행) 취약점을 악용해 F5 BIG-IP APM 장비에 리눅스 루트킷 'PoisonedRefresh'가 배포됐다. 공격자는 Apache의 PHP 모듈을 후킹해 메모리 안에만 웹 셸을 숨기고, 추가로 로컬 Unix 소켓을 통한 인터랙티브 셸도 구성했다.

영향

기업·금융·정부기관에서 사용하는 F5 BIG-IP APM 장비가 원격 제어 가능 상태에 놓이며, 악성코드가 BIG-IP 업그레이드 이후에도 지속 생존할 수 있다. 파일 기반 탐지를 완전히 우회하므로 침해 여부 확인 자체가 매우 어렵다.

원인

CVE-2025-53521 취약점을 통한 초기 침투 후, 2단계 페이로드가 Apache 바이너리를 감염시키고 PHP 파일 I/O를 가로채 디스크 파일을 변경하지 않은 채 메모리 내 웹 셸을 주입한다.

대응

F5 공식 보안 권고를 즉시 확인하고 패치를 적용해야 한다. Sophos는 apm_css.php3 등 세 개 PHP3 파일에 대한 요청, CSS를 반환하면서 HTTP 201을 응답하는 PHP 엔드포인트, /proc/self/maps를 읽은 후 메모리 권한을 바꾸는 Apache 워커 프로세스를 탐지 신호로 제시했다.

실무 포인트

파일시스템 검사만으로는 이 악성코드를 놓칠 수 있다. 메모리 포렌식·런타임 행위 탐지를 병행해야 하며, 불필요한 .php3 실행 차단 및 ptrace 접근 제한도 검토해야 한다.

본문

Sophos에 따르면, 해킹된 F5 BIG-IP APM 장비에서 발견된 루트킷은 웹 셸을 디스크에 쓰는 일반적인 단계를 생략하고 메모리 안에만 숨긴다.

F5 BIG-IP APM은 앱·API·데이터에 대한 접근 정책을 강제하는 솔루션으로, 주로 기업·금융기관·정부기관·공공부문 조직에서 사용된다.

Sophos는 "이 임플란트는 웹 셸과 일반적으로 연관된 온디맨드 서버 측 코드 실행이라는 친숙한 결과를 제공하지만, 더 깊은 수준의 Linux 및 Apache 특화 기법으로 구현했다"고 밝혔다.

또한 "이 악성코드는 Apache, libphp, APR 모듈 로딩, BIG-IP APM 웹탑 컴포넌트, BIG-IP 업그레이드 워크플로우가 갖춰진 환경을 표적으로 삼고 있어, 특정 환경에 맞춰 개발된 것으로 보인다"고 덧붙였다.

F5는 관련 활동을 CVE-2025-53521과 연결했다. 이는 BIG-IP APM의 인증 없이 원격 코드 실행(RCE)이 가능한 취약점으로, 이미 실제 공격에 악용된 것이 확인됐다.

샘플을 분석하는 과정에서 Sophos 팀은 ESET이 동일한 악성코드를 이미 분석하고 PoisonedRefresh라는 이름을 붙였다는 사실을 알게 됐다.

메모리에 숨는 웹 셸

Sophos에 따르면 분석된 악성코드는 2단계 페이로드다. 관련 샘플 "umount"를 병행 분석하는 과정에서 연구진은 별도의 인스톨러 컴포넌트를 발견했다. 이 컴포넌트는 /usr/sbin/httpd에 있는 Apache 바이너리를 감염시키고, BIG-IP 업그레이드 이미지 전반에 걸쳐 지속성을 확보하며, SELinux 설정을 변경하고, 2단계 페이로드를 배포하는 역할을 담당한다.

"2단계 샘플은 RC4로 핵심 운영 문자열을 난독화하고, __libc_start_main을 가로채 호스트 애플리케이션의 main() 함수보다 먼저 실행되며, Apache Portable Runtime(APR) 모듈 로더(apr_dso_load)를 후킹해 Apache의 PHP 모듈을 표적으로 삼고, PHP 웹 셸을 메모리에 주입한다."

Apache가 PHP를 로드하면 2단계 임플란트는 PHP 파일 I/O를 가로채고, apm_css.php3·full_wt.php3·webtop_popup_css.php3 등 정상 스크립트 안에 웹 셸을 메모리 상에서 덮어쓴다.

Sophos는 이 파일들이 BIG-IP APM 웹탑 환경에서 흔히 쓰이며 주의를 끌 가능성이 낮기 때문에 선택된 것으로 보인다고 밝혔다. 디스크의 파일은 변경되지 않으므로 파일 기반 스캔으로 탐지할 수 있는 것이 크게 줄어든다.

"PHP가 해당 파일 중 하나를 열면 임플란트가 파일 디스크립터를 기록한다. 이후 그 파일이 메모리 맵으로 처리될 때 임플란트는 내장된 웹 셸과 원본 스크립트 내용을 모두 담은 수정된 인메모리 뷰를 생성한다. 디스크의 파일에는 최종 웹 셸 내용이 전혀 없어도 되며, 실행은 런타임에 임플란트가 만든 수정된 인메모리 표현을 따른다"고 연구진은 설명했다.

두 번째 셸 진입 경로

웹 셸과 함께 악성코드는 /run/bigtlog.pipe에 Unix 도메인 소켓을 설치한다. 간단한 토큰 확인 후 해당 소켓에 연결하면 /bin/bash로 직접 연결되어 공격자에게 인터랙티브 셸이 제공된다. 이는 TCP 포트 리스너가 아닌 로컬 소켓이기 때문에, 열린 TCP 포트만 확인하는 네트워크 모니터링에는 탐지되지 않는다.

연구진은 샘플 내에서 공격자가 서버 외부에서 해당 소켓에 접근할 수 있는 코드를 발견하지 못했다. 따라서 두 가지 접근 방식이 어떻게 함께 작동하도록 설계되었는지, 혹은 웹 셸이 소켓에 간접적으로 접근하는 데 사용되는지는 아직 명확하지 않다.

방어자가 찾아야 할 신호

Sophos는 Apache 서버에서 확인할 만한 신호 몇 가지를 제시했다. 위에서 언급한 세 개의 .php3 파일에 대한 요청, CSS 콘텐츠를 반환한다고 하면서 HTTP 201 상태를 응답하는 PHP 엔드포인트, /proc/self/maps를 읽은 직후 메모리 권한을 변경하는 Apache 워커 프로세스 등이 포함된다.

또한 필요하지 않은 곳에서의 .php3 실행을 차단하도록 권고했으나, BIG-IP APM 시스템 관리자는 변경 전에 F5 권고를 먼저 따라야 한다고 강조했다.

Sophos는 아울러 프로세스를 검사하거나 조작할 수 있는 다른 경로를 줄이기 위해 ptrace 접근을 제한할 것을 권고했다. 다만 이 조치가 임플란트의 인프로세스(in-process) 동작 자체를 반드시 막지는 않는다고 덧붙였다.

"관련 umount 및 감염된 httpd 샘플 분석을 토대로, 이 캠페인은 단계적 아키텍처를 사용하는 것으로 판단한다."

"가장 중요한 발견은 웹 셸이 디스크에 최종 형태로 존재할 필요가 없다는 점이다. 대신 임플란트는 특정 PHP 파일이 실행 중인 프로세스에 어떻게 보이는지를 변경하므로, Apache와 PHP가 인식하는 내용이 전통적인 파일 기반 검사에서 보이는 내용과 다를 수 있다. 결과적으로 파일시스템에만 집중하는 사고 대응자는 핵심 증거를 놓칠 수 있다"고 Sophos는 결론지었다.

출처
Help Net Security · helpnetsecurity.com
원문 보기

분야별 뉴스

관심 분야의 보안 이슈를 모아 보세요.

TORUN SECURITY

투런이 제공하는 보안 솔루션

공격 표면 관리부터 엔드포인트·내부정보 보호까지, 기업 환경에 맞는 보안 솔루션을 투런이 함께 설계합니다.