워드프레스(WordPress) 사이트가 구글 검색 결과에 스팸 페이지를 노출시키고 있나요? 그렇다면 SEO 스팸 멀웨어에 감염되었을 가능성이 높습니다. 이 악성코드는 사이트 내부에 무의미한 쓰레기 페이지를 생성하고, 해당 페이지를 통해 방문자를 외부의 악성 웹페이지로 리디렉션합니다. 문제는 대부분의 사이트 운영자가 이러한 감염 사실을 인지하지 못한다는 점입니다. 가장 흔한 변종은 한국 SEO 스팸(Korean SEO Spam)과 스팸 링크 삽입(Spam Link Injection)입니다. 지금부터 감염 여부를 진단하고 해결하는 방법까지 자세히 살펴보겠습니다.
2021년 기준 인터넷 전체 사이트의 41.7%가 워드프레스로 운영되고 있으며, 중소기업을 중심으로 워드프레스 도입은 계속 확대되고 있습니다. 그러나 이러한 성장세는 동시에 해커들의 주요 공격 표적이 되고 있습니다. 워드프레스 SEO 스팸도 그중 하나로, 해커들은 주로 트래픽이 많고 검색 순위가 좋은 검증된 워드프레스 사이트를 노립니다. 그리고 이렇게 장악한 사이트를 자신들의 불법 제품·서비스가 검색 상위에 노출되도록 활용합니다.
이러한 공격은 워드프레스 파마 해크(Pharma Hack)와 유사한 방식으로, 평판이 좋은 사이트를 빌려 방문자를 해커가 관리하는 도메인으로 유도합니다. 블랙햇 SEO 스팸 제거 사례는 흔하지만, 실제로 처리하는 과정은 결코 간단하지 않습니다.
이 가이드에서는 워드프레스 SEO 스팸 해킹을 예방하고, 발견하고, 복구하는 방법을 단계별로 다룹니다. 그럼 시작하겠습니다.
워드프레스 SEO 스팸 감염 확인 방법
사이트가 SEO 스팸에 감염되었는지 확인하려면 아래 증상들을 하나씩 점검해 보세요.
1. site:[사이트 URL] 검색 시 스팸 결과가 노출됩니다
가장 손쉬운 진단 방법은 구글 검색입니다. 검색창에 site: 뒤에 자신의 도메인을 입력하고 결과를 살펴보세요. 도메인 뒤에 무의미한 단어 조합이 덧붙여진 페이지들이 보인다면 의심해야 합니다. 이 악성코드는 구글 검색 트래픽을 정상적인 사이트가 아닌 악성 사이트로 돌리도록 설계되어 있습니다.
예를 들어 위 이미지처럼 결과가 나타난다면 사이트가 감염되었을 가능성이 큽니다. 이 스크린샷은 악명 높은 일본 SEO 스팸(Japanese SEO Spam)에 감염된 사이트의 예시입니다.
2. 사이트 곳곳에 새로운 파일이 생성됩니다
SEO 스팸에 감염된 사이트들의 공통점은 수상한 신규 파일의 존재입니다. 공격자는 보통 wp-content/plugins/api-key 디렉터리를 만들고 아래와 같은 파일들을 배치합니다.
- apikey.php
- header.php
- login.php
- newsleter.php
- wp-layouts.php
- wp-nav-menus.php
이 파일들에는 대개 핵심 악성 코드가 담겨 있습니다. 그 밖에 워드프레스 루트 디렉터리에 생성되는 대표적인 악성 파일은 다음과 같습니다.
- wp-domain.php
- wp-main.php
- wp-uti.php
- wp.php
또한 /wp-admin 디렉터리에 ms-menu.php라는 파일이 생성되는 경우도 있습니다.
3. 기존 악성코드까지 스스로 식별하고 삭제합니다
워드프레스 SEO 스팸 멀웨어는 호스트 사이트에 거의 완전히 의존하여 작동합니다. 페이지가 로드되거나 새로고침될 때마다 실행되며, 워드프레스 코어 기능이 항상 정상 작동하도록 유지합니다. 만약 워드프레스 사이트가 오작동하거나 충돌하면 악성 코드 역시 실행되지 않습니다. 또한 공격자가 원격으로 사이트를 갱신·수정할 수 있는 기능과, 업데이트 실패에 대비한 백업 파일 생성 기능도 갖추고 있습니다.
특히 주목할 특징은, 사이트 관리자의 의심을 피하기 위해 호스트 워드프레스 사이트에 존재하는 다른 경쟁 악성코드를 식별하고 제거하는 기능입니다. 아래는 경쟁 멀웨어를 제거하는 코드 예시입니다.
if (is_file("$level" . "index.php")) {
$ind = file_get_contents("$level" . "index.php");
if (filesoze("$level" . "$index.pho"). 'hacked')
OR stripos(file_get_contents("$level" . "index.php"). 'hacked')
OR stripos($ind, 'WARNING: This file is protected by copyright law. To reverse engineer or decode this file is strictly prohibited')
OR stripos($ind, 'form action="" method="post"></form')
OR stripos($ind, 'eval(gzuncompress(')
OR stripos($ind, 'WARN1NG_RC')) {
chmod("$level" . "index.php", 0777);
unlink("$level" . "index.php");
}
}
4. 구글 애즈(Google Ads) 계정이 정지됩니다
요즘 온라인 광고가 널리 사용되면서, 해커들은 사용자를 감염된 사이트나 악성 사이트로 유도하는 통로로 광고를 활용합니다. 이에 따라 구글 애즈 같은 광고 네트워크는 해킹된 사이트를 통한 멀웨어 확산을 막기 위해 정책을 강화했습니다. 구글은 정기적으로 사이트를 스캔하여 해킹된 콘텐츠를 탐지하고, 해당 사이트의 광고 게재를 중단시킵니다.
광고 정지 알림이 표시된다면 감염을 의심해 볼 수 있습니다. 대표적인 안내 메시지는 다음과 같습니다.
- 악성 또는 원치 않는 소프트웨어(Malicious or unwanted software) 감지
- “당사 시스템은 주기적으로 웹사이트를 스캔하여 구글 정책 준수 여부를 확인합니다. 최근 스캔 결과 이 광고주의 기본 랜딩 페이지가 안전하지 않은 도메인 [domain.com]의 영향을 받는 것으로 확인되었습니다.”
정지된 구글 애즈 계정의 원인 분석과 해제 방법이 궁금하다면, 별도의 상세 가이드 글을 참고하세요.
스팸 링크를 완전히 제거하려면 파일과 데이터베이스를 철저히 분석해야 합니다. 그 방법은 다음과 같습니다.
5. 파일에서 스팸 링크를 검색합니다
테마의 헤더(header), 푸터(footer), 테마 함수(functions) 파일에서 스팸 링크를 검색하세요. 대부분의 링크는 하이퍼링크 형태로 쉽게 눈에 띕니다. 드물지만 난독화(obfuscation)되어 숨겨져 있는 경우도 있으니, 출처를 알 수 없는 악성 링크를 찾아내야 합니다.
예를 들어, 악성 링크는 다음과 같은 형태로 삽입됩니다.
<?phpNorebroLayout::get_footer_buffer_content( true );echo "<a href=\"https://www.authenticjetshockeyshop.com/mark-scheifele-jersey_c-422.html\"> </a> "; wp_footer();?>
스팸 링크가 삽입되었는지 육안으로 판단하기 어려울 때도 있습니다. 이럴 때는 SEO Spam Scanner 같은 전문 스캐너로 사이트를 점검하는 것이 좋습니다.
6. 데이터베이스를 점검합니다
스팸 링크의 또 다른 주요 침투 지점은 데이터베이스입니다. 스팸 링크는 종종 페이지와 글 본문 안에 삽입되는데, 모든 페이지를 일일이 검토하기는 비현실적입니다. 다음 절차를 활용해 보세요.
- PHPMyAdmin으로 데이터베이스에 접속합니다. PHPMyAdmin을 이용하면 여러 페이지를 한 번에 검토할 수 있습니다.
- 페이지와 글(post) 내용을 점검합니다.
- 악성 링크를 발견하면 해당 페이지/글을 로컬로 내려받아 정리합니다.
- SQL 관리 도구를 사용해 수정된 내용을 다시 업로드합니다. 이 과정에는 기본적인 SQL 지식이 필요할 수 있습니다.
워드프레스 SEO 스팸 제거 방법
아래 단계를 따르면 호스트 사이트에서 SEO 스팸 멀웨어를 제거할 수 있습니다.
- 위에서 언급한 악성 신규 파일들을 모두 삭제합니다.
- 구글 서치 콘솔(Search Console) 계정에서 이상 징후를 확인하고, 상세 가이드에 따라 문제를 해결합니다.
- 사이트 전체를 스캔하여 멀웨어 및 기타 감염 여부를 점검합니다.
- 구글 서치 콘솔 패널에서 내 사이트로 연결되는 외부 링크(백링크)를 확인합니다.
SEO 스팸이 사이트 트래픽과 SEO에 미치는 영향
해킹은 사이트를 초토화시킵니다. 설령 해킹을 완벽히 제거하더라도 눈에 보이지 않는 후유증은 오랫동안 지속됩니다. 대표적인 피해로는 트래픽 감소, 구글 검색 순위 하락, 브랜드 이미지 실추, 신규 고객 유입 저하 등이 있으며, 이를 회복하려면 상당한 노력이 필요합니다.
이러한 해킹이 실제로 사이트에 얼마나 큰 타격을 주는지 측정하기 위해, 우리는 감염된 한 사이트를 정화한 뒤 며칠간 성과를 추적하는 조사를 진행했습니다.
조사 결과는 다음과 같습니다. 아래 애널리틱스는 1년간의 사이트 트래픽 데이터입니다. 이후 몇 달 동안 트래픽이 급감한 것을 확인할 수 있습니다.
다음은 해킹되기 전 8월의 데이터입니다. 총 클릭 수 20.3k, 노출 수 254k, 평균 CTR 8%, 평균 게재순위 15였습니다.
이를 해킹당한 달의 데이터와 비교해 보면 그림과 같이 급락한 모습을 볼 수 있습니다. 총 클릭 수는 11.8k로 감소했고, 노출 수는 207k로 줄었으며, 평균 CTR은 5.7%로 떨어졌고 게재순위도 16.6으로 하락했습니다.
해킹 기간으로 좁혀서 보면 더욱 극명합니다. 며칠 만에 평균 CTR이 기존 8%에서 4.4%로 반토막이 났고, 다른 지표들 역시 고르게 하락했습니다.
SEO 스팸의 파급력이 얼마나 큰지 분명하게 드러납니다. 특히 트래픽과 SEO에 미치는 타격이 심각하며, 피해를 회복하려면 오랜 기간 지속적인 관리와 노력이 필요합니다.
누구도 이런 상황을 겪고 싶지 않을 것입니다. 다행히 조금만 경각심을 가지면 이런 무서운 결과는 충분히 예방할 수 있습니다. 다음 섹션에서 그 방법을 알아보겠습니다.
워드프레스 SEO 스팸 예방 방법
감염된 사이트를 정화했다고 해서 재감염이 막히는 것은 아닙니다. 따라서 사전 예방 조치를 마련해 두는 것이 항상 현명합니다.
워드프레스 SEO 스팸으로부터 사이트를 보호하기 위해 적용할 수 있는 대표적인 예방 조치는 다음과 같습니다.
1. 웹 방화벽(Web Firewall)을 설치합니다
워드프레스 SEO 스팸 감염을 막는 가장 편리한 방법은 Astra 같은 웹 방화벽을 사용하는 것입니다. 웹 방화벽은 유입 트래픽을 실시간으로 모니터링하고, 위협 요소와 악성 개체를 자동으로 차단합니다.
Astra 웹 보호는 악성 요청이 사이트에 도달하기 전에 차단함으로써 사이트를 자동으로 보호하고, 소프트웨어에 가상 패치(virtual patching)를 적용해 줍니다.
2. 워드프레스 로그인 페이지 보안을 강화합니다
로그인 페이지 보안을 강화하면 SEO 스팸은 물론 워드프레스 관리자 대시보드 해킹까지 예방할 수 있습니다.
구체적인 방법은 다음과 같습니다.
- WP-Hardening 같은 워드프레스 로그인 보안 플러그인을 설치합니다.
- 워드프레스 관리자 페이지의 기본 URL을 변경합니다.
- 고유하고 강력한 아이디와 비밀번호를 사용합니다.
- 연속 로그인 시도 횟수를 제한합니다.
- 사이트의 로그인 활동을 지속적으로 모니터링합니다.
Astra 방화벽을 이용하면 워드프레스에 로그인 보호(Login Protection)를 적용하고, 사이트에 로그인을 시도한 사용자/봇의 정보를 타임스탬프 등 세부 정보와 함께 확인할 수 있습니다.
3. 올바른 파일·폴더 권한을 설정합니다
파일과 폴더에 적절한 접근 권한을 설정하면 워드프레스 실행 오류를 방지할 수 있을 뿐 아니라, SEO 스팸 멀웨어 감염 같은 보안 위험도 크게 줄일 수 있습니다.
권장되는 권한 설정 값은 다음과 같습니다.
- wp-config.php = 400/440
- 모든 .php 파일 = 644
- index.php = 644/444
- wp-content 폴더 = 755
- wp-includes 폴더 = 755
- wp-content/uploads 폴더 = 755
- 일반 파일 = 644
- 일반 폴더 = 755
파일·폴더 권한 설정에 대해 더 자세히 알고 싶다면 “워드프레스 파일·폴더 권한 오류 수정 방법 – 단계별 절차” 가이드를 참고하세요.