WordPress의 SEO 스팸에 감염된 경우 수행할 작업

게시 됨: 2021-05-17

Jetpack에서는 다양한 유형의 웹 위협 및 공격을 처리하는 것이 일상의 일부입니다. 대부분의 경우 악성 파일을 수집하고 공격 경로를 찾는 것부터 최신 백업에서 웹 사이트를 복원하는 데 도움을 제공하는 것까지 다양합니다. 그러나 때때로 우리는 정말 창의적인 공격의 다른 차원, 설명할 수 없는 재감염의 차원에 들어갑니다. 우리는 ... 황혼의 영역에 들어갑니다.

좋아, 내가 너무 극적일 수도 있지만 이 미스터리 이야기의 장면을 설정하는 동안 나를 참아주세요. 준비가 된? 유령, 스팸 및 검색 엔진의 영역으로의 이번 여행에 함께 해주세요.

악의적인 행동

매우 흥미로운 공격을 받고 있는 웹사이트를 찾았습니다. 처음에는 Google Search Console에서 보낸 이메일로 나타났습니다. 흔하지 않은 URL(그리고 내부에 클릭 가능한 URL이 있는 매우 의심스러워 보이는 URL)이 상위 성장 페이지로 나열되었습니다.

URL에 삽입된 스팸을 보여주는 이미지
Google 검색 엔진 도구의 상위 성장 페이지

이러한 행동은 종종 감염의 결과이기 때문에 웹사이트 소유자는 약간 화가 났지만 Jetpack은 아무 것도 감지하거나 경고하지 않았습니다. 게다가 이 페이지들은 웹사이트에서 확인할 때 존재하지도 않았지만 어쨌든 Google에서 색인을 생성하고 있었습니다. 트와일라잇 존 이 강화 됩니다.

Jetpack Scan이 놓쳤을 수 있는 의심스러운 파일이 있는지 확인하면서(위협을 100% 탐지하는 보안 도구는 없음) 상황이 더욱 이상해졌습니다. WordPress Core 및 플러그인은 손상되지 않았습니다. 데이터베이스에 삽입된 파일이나 스크립트가 없습니다. 몇 가지 오래된 플러그인에는 보안 수정 사항이 없었고 WordPress는 한 버전(5.6) 뒤쳐져 있었고 최신 업데이트에는 큰 보안 수정 사항이 나열되지 않았습니다. 의심스러운 것은 전혀 없었다. 일반적인 용의자도 없고 공격의 증거도 없습니다. 아직, 어쨌든.

다음 논리적 단계는 액세스 로그를 확인하는 것입니다. 아마도 이 미스터리를 밝힐 수 있을 것입니다. 우리가 제로 데이 공격에 직면해 있다는 사실을 알게 될까요, 아니면 마침내 다중우주 이론에 대한 증거를 찾았고 이 웹사이트가 우주 #1337에만 감염되었다는 사실을 알게 될까요? 로그까지!

스팸 요청 코드
이 이상한 스팸에 대한 요청
또 다른 이상한 스팸 요청. 빙이 좋아하는 이유는?
빙도 좋아하는 것 같은데... 근데 왜?

예상대로: 스크린샷에서 볼 수 있듯이 스팸 페이지에 대한 요청이 많은 것 외에는 이상할 것이 없습니다. 그리고 그들은 모두 '200 OK'를 반환했습니다. 그래서, 그 페이지는 시간과 공간 연속체 어딘가에 존재했습니까, 아니면 ... 잠시만요 ... 지금 보이나요?

해당 페이지는 모두 `/?s=` 같은 위치를 가리키고 있었습니다. 즉, 검색 엔진(Google에서 문제를 감지했지만 Bing에서 요청이 옴)이 검색 결과 페이지를 인덱싱하고 있었습니다. 왜 그런데? 크롤러는 우리가 아는 한 페이지에서 검색을 수행하지 않습니다. 그렇죠?

인덱싱의 역설

웹 사이트 비즈니스에 종사하는 경우 검색 엔진이 작동하는 방식에 대한 기본 사항은 매우 간단합니다. 웹 페이지를 크롤링하고, 콘텐츠를 인덱싱하고, 마법을 수행하고, 쿼리 가능한 리소스를 클라우드 어딘가에 저장하는 로봇(또는 자동화된 스크립트)이 있습니다.

이를 염두에 두고 우리는 이러한 요청에 리퍼러와 같은 다른 단서가 있지만 운이 전혀 없는지 확인하기 위해 로그를 조금 더 팠습니다. 기록된 모든 요청은 검색 엔진에서 발생했습니다. 운 좋게도 Google Search Console의 로그 중 하나에 참조 페이지 중 하나가 있었습니다.

페이지의 Google Search Console 검토
Google의 Search Console 도구는 몇 가지 힌트를 제공했습니다.

이제 Twilight Zone 모자를 CSI 모자로 바꾸고 현미경 아래에 넣을 웹사이트 뼈대를 파낼 때라고 생각합니다.

훈련된 눈은 참조 페이지 URL이 손상된 웹사이트에 속해 있음을 쉽게 알 수 있습니다. 운 좋게도 우리는 잘 훈련된 눈을 가지고 있습니다! `index.php` 디렉토리는 의미가 없으며 아마도 웹사이트 소유자를 혼란스럽게 하기 위해 추가되었을 것입니다. 다음으로, 또 다른 임의의 디렉토리와 임의의 이름을 가진 PHP 파일이 뒤따릅니다. 아마도 최종 페이로드를 받는 로더일 것입니다. `cargese4/cca442201.htm`도 무작위입니다. 이 모든 것이 링크 팜 맬웨어 감염의 특징입니다.

참조 사이트에 대해 인덱싱된 항목을 확인하기 위해 Google에서 빠르게 검색한 결과 실제로 감염된 것으로 확인되었으며 한동안 SEO 스팸을 제공했습니다. 이 사이트는 인도의 식품 회사를 위한 것이지만 일본에서는 SUV에 대한 거래를 제공합니다. 예, 스팸입니다.

스팸 공격에 대한 일본어 검색 결과
인도 사이트에서 일본어로 스팸을 가져오는 검색어.

그러나 결과가 친구의 웹사이트에 연결되지 않았기 때문에 다른 사이트도 이와 동일한 이상한 동작의 영향을 받는지 알아보기로 했습니다.

이 스팸 공격의 더 많은 피해자를 찾기 위해 교육 목적으로만 Google-fu 지식을 사용하여 URL에 `/?s=`가 포함된 .edu로 끝나는 사이트를 반환하는 검색어를 만들었습니다. 그리고 제목에 "구매"라는 단어가 있습니다. 그리고 우리는 22개의 결과를 얻었습니다. 우리 사냥에 충분합니다.

스팸 알약에 대한 검색 결과
.edu 및 .gov 사이트를 사용하여 스팸 감염을 확인하면 링크 파밍용으로만 생성된 도메인(예: .com)을 필터링할 수 있습니다.

이것은 보고된 사이트가 영향을 받은 유일한 사이트가 아니라는 증거입니다. 더 널리 퍼진 문제인 것 같습니다. Google이 해당 페이지의 색인을 생성할 수 있었던 이유에 대해 생각해 보았습니다. Googlebot은 어떻게 그들에게 도달했습니까? 다음 단계: 백링크 검사기.

백링크 확인 결과
백링크 확인 결과

웹사이트에 대한 백링크에 대한 보고서를 제공하는 여러 온라인 도구가 있습니다. 이 연구에서 사용한 도구는 Ahrefs이지만 다른 도구도 동일한 결과에 도달할 수 있습니다. 일부 악성 검색 페이지가 결과에 나열되어 우리가 올바른 길을 가고 있음을 확인시켜줍니다.

무슨 일이 일어나고 있는지 확인하기 위해 해당 웹사이트 중 하나를 선택했을 때 다음 스크린샷에서 볼 수 있듯이 거의 5,000개의 스팸 댓글을 보았습니다(Jetpack Anti-spam을 확인해야 함). 모든 댓글은 검색어에 스팸이 포함된 웹사이트 검색 페이지로 연결되었습니다.

스팸 결과로 연결되는 댓글 섹션
스팸으로 연결되는 댓글

흰토끼 잡기

앞서 언급했듯이 검색 엔진 로봇은 웹사이트 페이지에서 쿼리를 수행하지 않습니다. 단, 링크를 찾으면 따라갑니다. 그리고 페이지가 특정 페이지를 인덱싱할 수 없다고 자동화된 스크립트에 알려주지 않으면 추가합니다.

주입된 스팸의 예
옛날 주입된 스팸

이것은 검색 엔진 결과에 스팸을 보내고 적은 노력으로 링크 파밍을 통해 사이트 페이지 순위를 높이기 위해 웹 사이트에 스팸을 "주입"하는 영리한 방법입니다.

이제 문제를 이해했으므로 검색 엔진 봇에게 검색 페이지에 대한 링크를 따라가지 않도록(또는 색인 생성을 거부하도록) 어떻게 지시합니까? 가장 좋은 방법은 전체 커뮤니티를 보호하는 데 도움이 되는 WordPress Core를 변경하는 것입니다(버그를 보고하거나 코드에 기여하고 싶다면 저희와 함께하세요).

불필요한 재작업을 피하기 위해 WordPress Core 트랙을 확인하고 버전 5.7에서 해결된 이 문제를 찾았지만 불행히도 보안 문제로 변경 로그에 기록되지 않았습니다.

내가 할 수 있는 것보다 문제를 더 잘 설명한 저자의 말을 인용하겠습니다(보고서에 대한 abagtcs에게 감사드립니다).

웹 스패머는 스패머 사이트의 검색 순위를 높이기 위해 스팸 용어와 호스트 이름을 전달하여 해당 사이트의 검색 기능을 남용하기 시작했습니다.

스패머는 이러한 링크를 개방형 위키, 블로그 댓글, 포럼 및 기타 링크 팜에 배치하고 검색 엔진이 링크를 크롤링한 다음 스팸 콘텐츠가 포함된 검색 결과 페이지를 방문하고 색인을 생성합니다.

이 공격은 놀랍게도 매우 광범위하여 전 세계의 많은 웹사이트에 영향을 미칩니다. 사용자 정의 작성 코드로 구동되는 일부 CMS 및 사이트가 이 기술에 취약할 수 있지만 예비 조사에 따르면 최소한 .edu 공간에서 가장 표적이 되는 웹 플랫폼은 WordPress입니다.”

웹에서 가장 큰 사이트의 41% 이상이 WordPress 사이트라는 사실은 놀라운 일이 아닙니다.

사건 종결

이 사건에서 배울 수 있는 몇 가지 좋은 교훈이 있습니다.

  1. Top Growing Pages에 표시된 URL은 잘 정리되지 않았기 때문에 이모티콘으로 구분된 스팸 URL은 실제로 직접 클릭할 수 있습니다(Google 친구 여러분, 그건 여러분 책임입니다). 모르는 사용자가 클릭하여 원치 않는 콘텐츠에 액세스할 수 있습니다.
  2. 분명히 스팸성 페이지의 색인을 생성하지 않으려면 Google에서 약간의 조정이 필요합니다. 도구 보고서에 따르면 스팸이 추가되는 동안 일부 명확한 페이지가 크롤링되고 색인이 생성되지 않았습니다.
  3. 공격자는 시스템의 가장 작은 구멍이라도 활용하므로 우리는 항상 경계해야 합니다.
  4. 항상 사람들의 말을 경청하고 그들의 문제를 이해하십시오. 자체 도구의 로그만 확인했다면 이 문제를 인식하지 못하거나 사이트를 수정하는 데 도움을 줄 수 없었을 것입니다.
  5. 소프트웨어를 최신 상태로 유지하십시오. 언제나.

Jetpack에서는 이러한 유형의 취약점으로부터 웹사이트를 보호하기 위해 열심히 노력하고 있습니다. 새로운 위협에 한 발 앞서 나가려면 보안 검색 및 자동화된 맬웨어 제거가 포함된 Jetpack Scan을 확인하십시오.

그리고 이 문제를 강조하고 조사에 도움을 준 Erin Casali 에게 감사의 말을 전합니다.