wp-vcd.php 파일에서 이름을 따온 WP-VCD 멀웨어는 워드프레스 생태계에 큰 혼란을 일으키고 있습니다. 보안 위협 인텔리전스 팀이 처음 발견한 지 1년이 넘는 동안 이 멀웨어는 끊임없이 진화하며 더욱 정교해졌습니다. 이 글에서는 악명 높은 이 멀웨어의 진화 과정을 살펴보고, 웹사이트에서 wp-vcd 멀웨어 감염을 치료하고 예방하는 방법까지 자세히 알아보겠습니다.
WP-VCD 멀웨어의 주요 증상
- 새로운 관리자 계정 추가: 해커가 스스로 관리자 권한을 가진 사용자로 워드프레스에 등록하는 사례가 다수 확인되었습니다.
- 서버 리소스 과다 사용: WP-VCD 멀웨어는 서버 리소스를 대량으로 소모하는 것으로 알려져 있습니다. 실제로 호스팅 업체가 '리소스 과다 사용'을 이유로 계정을 정지시킨 사례도 있었습니다.
- 웹사이트 로딩 속도 저하: 이 멀웨어에 감염된 사이트는 로딩 시간이 크게 늘어나는 경우가 많습니다. 평소 2~3초 걸리던 사이트가 30초 이상 걸리는 경우도 목격했습니다.
- 출처 불명의 자바스크립트 코드: functions.php, index.php 같은 중요 워드프레스 파일 또는 거의 모든 코어 파일에 알 수 없는 자바스크립트 코드가 삽입되는 사례가 있었습니다. 특히 후자의 경우 수정이 매우 까다롭고, 웹사이트가 악성 도메인으로 리디렉션되기도 합니다.
- 코어 폴더 내 악성 PHP 코드: 'WP-VCD' 코드는 워드프레스 곳곳에 삽입되며, 멀웨어의 이름도 여기서 유래했습니다. 파일 이름만 보면 워드프레스의 일부처럼 보이지만, 코드 분석을 해보면 악성코드로 드러납니다.
다음은 Astra Security의 멀웨어 스캐너가 탐지한, wp-includes 디렉터리 안에 교묘하게 숨어 있던 WP-VCD 멀웨어의 실제 예입니다.
WP-VCD 바이러스 감염의 주요 원인
일단 감염되면 감염을 제거하고 앞으로 워드프레스를 철저히 보호하는 것이 필수적입니다. 동시에 처음에 어떤 경로로 감염되었는지 파악하는 것도 똑같이 중요합니다. 지금까지 확인된 주요 침입 경로는 다음과 같습니다.
- 불법 복제·널링(nulled) 테마: WP-VCD 멀웨어는 유료 테마/플러그인의 불법 복제본에 미리 심어진 채 배포됩니다. 이런 널링 테마와 플러그인에는 설치하는 순간 실행되는 악성 스크립트가 포함되어 있습니다.
널링 테마를 통해 웹사이트에 발판을 마련한 뒤에는 사이트의 다른 모든 테마까지 차례로 감염시킵니다. 공유 서버 환경에서는 해당 서버에서 호스팅되는 보안이 취약한 모든 사이트로 번져나갑니다. 그래서 컨테이너화되지 않은 서버에서는 같은 서버의 모든 웹사이트가 함께 감염되는 경우를 자주 볼 수 있습니다. - 업데이트되지 않은 플러그인과 테마: 거의 모든 워드프레스 감염의 최대 원인 중 하나입니다. 다만 감염이 발생한 후 테마/플러그인을 모두 업데이트한다고 해서 감염이 저절로 사라지는 것은 아닙니다. 여전히 감염 제거 작업과 선제적인 보안 조치가 필요합니다(자세한 내용은 아래 참조).
- 선제적 보안 대책 부재: 솔직히 말해 해커들은 수년간 공격 기법을 끊임없이 발전시켜 왔습니다. 이런 해킹으로 수천 달러를 벌기 때문에, 수백 달러를 투자해 해킹을 자동화하고 한 번에 수천~수백만 개의 웹사이트를 감염시킬 수 있습니다.
이렇게 진화한 워드프레스 해킹 기법에 맞서려면 보안 도구에 대한 작은 투자가 큰 효과를 발휘합니다. 이런 상황에서 겪는 골칫거리를 덜어줄 뿐 아니라, 다운타임으로 인한 SEO·마케팅·매출 손실을 예방하는 부수적인 이점도 있습니다.
WP-VCD 멀웨어는 정확히 어떻게 작동할까?
[약간의 기술적(그러나 매우 중요한) 용어가 등장합니다]
WP-VCD가 정확히 무엇을 하는지, 그리고 어떻게 소중한 서버 리소스를 잠식하며 웹사이트를 느리게 만드는지 이해하는 것이 매우 중요합니다.
악성 코드가 웹사이트에 삽입되면 보통 functions.php, index.php 같은 코어 파일에 자리 잡습니다. 이 악성 코드는 웹사이트 내부의 파일들을 호출합니다. 브라우저에서 웹사이트가 열리면 멀웨어가 호출하는 파일들에 접근하려 시도하는데, 이 파일들은 존재하지 않을 수도 있어 functions.php가 다시 실행됩니다. 결과적으로 웹사이트 로딩 과정이 거대한 반복문에 빠지게 됩니다. 보안 용어로 이것을 '포크폭탄(forkbomb)'이라고 부릅니다.
1단계: 악성 스크립트 배포
테마 내 functions.php 파일에서 다음과 유사한 코드를 발견할 수 있습니다.
<?php if (file_exists(dirname(__FILE__) . '/<b>class.theme-modules.php</b>')) <b>include_once</b>(dirname(__FILE__) . '/<b>class.theme-modules.php</b>'); ?>
이 코드는 배포자 스크립트가 존재하는지 확인한 뒤 이를 실행합니다. 위 코드에서 호출되는 파일은 class.theme-modules.php입니다. 감염 경로(테마 또는 플러그인)에 따라 악성 스크립트는 각각 class.theme-modules.php 또는 class.plugin-modules.php 파일에 위치합니다.
2단계: 백도어 생성
<?php
//install_code1
error_reporting(0);
ini_set('display_errors', 0);
DEFINE('MAX_LEVEL', 2);
DEFINE('MAX_ITERATION', 50);
DEFINE('P', $_SERVER['DOCUMENT_ROOT']);
$GLOBALS['<b>WP_CD_CODE</b>'] = 'PD9waHANCmVycm9y...(base64-encoded string of PHP code)
...
이 코드는 100010010과 유사한 이름의 새 관리자 계정을 생성합니다. 이 백도어 관리자 계정의 목적은 악성 코드를 삭제하더라도 해커가 웹사이트에 계속 접근할 수 있도록 해두는 것, 즉 공격자가 나중에 다시 웹사이트를 공격할 수 있게 만드는 것입니다.
3단계: 해커로부터 지시 수신
해커는 때때로 C2(Command & Control) 서버의 URL을 삽입합니다. 이 URL은 나중에 호출되어 감염된 사이트 전반에 걸쳐 한 번에 명령을 실행하는 데 사용됩니다. www.krilns[.]com/code.php, krilns[.]pw, krilns[.]top 등의 도메인이 다수의 WP-VCD 감염 사이트에서 이런 역할을 하는 것으로 확인되었습니다.
4단계: 다른 파일과 사이트 감염
WP-VCD 멀웨어가 수행하는 다음 작업은 자신을 확장하는 것입니다. 사이트의 모든 테마와 플러그인에 악성 스크립트를 배포한 뒤, 같은 서버에 있는 취약한 사이트를 찾아내 감염시킵니다.
이 확산은 wp-includes/wp-vcd.php에 위치한 스크립트 배포로 시작됩니다. 이어서 코어 파일인 wp-includes/post.php가 수정되어, 최종적으로 모든 페이지에서 wp-vcd.php의 코드가 실행됩니다.
WP-VCD 워드프레스 멀웨어 치료 및 제거 방법
- 악성 코드 찾기 및 제거: 악성 코드가 발견될 가능성이 높은 위치가 몇 군데 있습니다. 해커들이 멀웨어를 더 교묘하게 숨기려고 방법을 개선하고 있긴 하지만, 서버의 다음 파일/폴더부터 찾아보는 것이 좋습니다.
- wp-includes/wp-vcd.php
- wp-includes/wp-tmp.php
- wp-content/themes/*/functions.php (활성화 여부와 관계없이 서버에 설치된 모든 테마)
- class.wp.php
- code1.php
- class.theme-modules.php (테마 폴더 내부)
- 악성 문자열 패턴 검색: 감염된 멀웨어 파일에서 발견되는 문자열 패턴을 검색하면 탐색 범위를 좁히는 데 큰 도움이 됩니다. 대표적인 패턴은 다음과 같습니다.
- tmpcontentx
- function wp_temp_setupx
- wp-tmp.php
- derna.top/code.php
- stripos($tmpcontent, $wp_auth_key)
- functions.php 분석: 이 파일은 해커들이 가장 많이 감염시키는 파일 중 하나입니다. functions.php의 코드를 꼼꼼히 검토하면 wp-vcd 멀웨어의 제어 코드를 발견할 수 있습니다.
- diff 검사로 코드 진위 확인: 서버의 파일 내용을 워드프레스 코어 GitHub 저장소 또는 테마/플러그인 디렉터리의 해당 파일과 diff 검사해 보세요. SSH를 이용하는 방식과 IDE를 사용하는 방식 중 하나(또는 둘 다)를 활용할 수 있습니다.
- 멀웨어 스캔 실행: 이런 멀웨어 감염 상황에서 멀웨어 스캐너는 몇 시간씩 걸리는 수작업 탐지(그래도 성공을 보장하지는 않음)를 대신해 줍니다. 멀웨어 스캐너는 서버의 모든 파일을 검사할 뿐 아니라, 워드프레스 코어 파일의 모든 차이점까지 짚어 줍니다.
WP-VCD 멀웨어는 오래된 플러그인과 테마의 취약점을 이용해 사이트에 발판을 마련합니다. 대부분의 WP-VCD 사례에서는 웹사이트 운영자가 허가받지 않은 출처의 무료/널링 플러그인과 테마를 설치하면서 스스로 감염되며, 그 외에는 감염된 사이트로 인한 오염으로 발생합니다.
관련 가이드 – 워드프레스 종합 가이드
팁: 워드프레스 악성코드 검사하기
이런 해킹 사건에서 얻어야 할 가장 큰 교훈은 앞으로 웹사이트를 안전하게 유지하는 것입니다. 전 세계 수천 개 웹사이트의 보안을 책임지고 매일 수백만 건의 공격과 멀웨어를 차단하는 Astra Security Suite를 활용하면 이런 해킹 상황에 처하는 일을 충분히 예방할 수 있습니다!