이 가이드는 사이트에 키워드가 많은 난독화 페이지를 추가하는 유형의 해킹, 즉 은폐된 키워드 및 링크 해킹을 위해 특별히 작성되었습니다. 이 가이드는 주요 콘텐츠 관리 시스템 (CMS) 사용자를 위해 설계되었지만 CMS를 사용하지 않더라도 이 가이드를 참고하면 유용합니다.
이 가이드가 도움이 되기를 바랍니다. 의견을 남겨 개선에 참여해 주세요.
이 유형의 해킹 파악
클로킹된 키워드와 해킹된 링크로 인해 의미없는 텍스트, 링크, 이미지로 수많은 페이지가 자동으로 생성됩니다. 이와 같은 페이지는 원래 페이지의 기본 템플릿 요소를 포함할 때도 있어서, 언뜻 봐서 콘텐츠를 읽기 전까지는 사이트의 정상적인 페이지처럼 보일 수 있습니다.
해킹된 페이지는 Google의 순위 요소를 조작하기 위해 만들어집니다. 해커는 해킹된 페이지의 링크를 다른 서드 파티에 판매하여 이익을 창출하려고 시도하는 경우가 많습니다. 해킹된 페이지는 방문자를 해커가 수익을 창출할 수 있는 관련 없는 페이지로 리디렉션하는 경우도 많습니다.
먼저 Search Console의 보안 문제 도구를 확인하여 Google에서 사이트에서 해킹된 페이지를 발견했는지 확인합니다. Google 검색 창을 열고 사이트의 루트 수준 URL과 함께 site:_your site url_
를 입력하여 이와 같은 페이지를 찾을 수도 있습니다. 그러면 해킹된 페이지를 포함하여 Google에서 사이트에 색인을 생성한 페이지가 표시됩니다. 검색 결과 페이지를 몇 장 넘겨서 비정상적인 URL이 있는지 확인합니다. Google 검색에 해킹된 콘텐츠가 표시되지 않으면 다른 검색엔진에서 동일한 검색어를 사용합니다. 예를 들면 다음과 같습니다.
일반적으로 해킹된 페이지로 연결되는 링크를 클릭하면 다른 사이트로 리디렉션되거나 의미 없는 콘텐츠로 가득 찬 페이지가 표시됩니다. 하지만 페이지가 존재하지 않는다는 메시지 (예: 404 오류)가 표시될 수도 있습니다. 속지 마세요. 해커는 페이지가 여전히 해킹된 상태인데도 페이지가 사라졌거나 수정되었다고 생각하도록 유도하려고 시도합니다. 이를 위해 콘텐츠를 클로킹합니다. URL 검사 도구에 사이트의 URL을 입력하여 클로킹을 확인합니다. Fetch as Google 도구를 사용하면 기본적으로 숨겨진 콘텐츠를 볼 수 있습니다.
이러한 문제가 발생하면 사이트가 이러한 유형의 해킹의 영향을 받은 것일 수 있습니다.
해킹 수정
시작하기 전에 나중에 복원해야 할 경우를 대비하여 파일을 삭제하기 전에 오프라인 사본을 만듭니다. 더 좋은 방법은 정리 프로세스를 시작하기 전에 전체 사이트를 백업하는 것입니다. 서버에 있는 모든 파일을 서버 외부의 위치에 저장하거나 특정 콘텐츠 관리 시스템 (CMS)에 가장 적합한 백업 옵션을 검색하면 됩니다. CMS를 사용하는 경우 데이터베이스도 백업합니다.
.htaccess
파일 확인하기 (3단계)
클로킹된 키워드와 링크 해킹은 .htaccess
파일을 사용하여 사이트에 클로킹된 페이지를 자동으로 만듭니다. 공식 Apache 사이트에서 .htaccess
기본사항을 숙지하면 해킹이 사이트에 미치는 영향을 더 잘 이해하는 데 도움이 될 수 있지만 필수는 아닙니다.
1단계
사이트에서 .htaccess
파일을 찾습니다. .htaccess 파일의 위치를 잘 모르고 WordPress, Joomla, Drupal과 같은 CMS를 사용하는 경우 검색엔진에서 CMS 이름과 함께 '.htaccess 파일 위치'를 검색하세요.
사이트에 따라 .htaccess
파일이 여러 개 표시될 수 있습니다.
모든 .htaccess
파일 위치의 목록을 만듭니다.
2단계
.htaccess
파일을 열어 파일의 콘텐츠를 확인합니다. 다음과 같이 표시되는 코드 줄을 찾습니다.
RewriteRule (.*cj2fa.*|^tobeornottobe$) /injected_file.php?q=$1 [L]
이 줄의 변수는 변경될 수 있습니다. cj2fa
와 tobeornottobe
는 문자 또는 단어의 조합일 수 있습니다. 중요한 것은 이 줄에서 참조되는 .php
를 식별하는 것입니다.
.htaccess
파일에 언급된 .php
파일을 기록합니다. 이 예시에서 .php
파일의 이름은 injected_file.php
이지만 실제로는 파일 이름이 그렇게 명확하지 않습니다. 일반적으로 horsekeys.php
또는 potatolake.php
와 같은 무해한 단어의 무작위 집합입니다. 이는 나중에 추적하여 삭제해야 하는 악성 .php
파일일 가능성이 높습니다.
3단계
모든 .htaccess
파일을 클린 또는 기본 버전의 .htaccess
파일로 바꿉니다. 일반적으로 .htaccess
파일의 기본 버전은 '기본 .htaccess
파일'과 CMS 이름을 검색하여 찾을 수 있습니다. .htaccess
파일이 여러 개인 사이트의 경우 각 파일의 클린 버전을 찾아 교체합니다.
기본 .htaccess
가 없고 사이트에서 .htaccess
파일을 구성한 적이 없는 경우 사이트에서 발견된 .htaccess
파일은 악성일 가능성이 높습니다.
.htaccess
파일의 사본을 사이트에서 오프라인으로 저장해 둡니다.
기타 악성 파일 찾기 및 삭제하기 (5단계)
악성 파일을 식별하는 것은 쉽지 않고 시간이 많이 걸릴 수 있습니다. 파일을 확인할 때는 천천히 확인하세요. 아직 백업을 하지 않았다면 지금이 사이트의 파일을 백업하기에 좋은 시기입니다. '사이트 백업'과 CMS 이름을 Google 검색하여 사이트를 백업하는 방법에 관한 안내를 찾습니다.
1단계
CMS를 사용하는 경우 CMS의 기본 배포에 포함된 모든 핵심 (기본) 파일과 추가한 항목 (예: 테마, 모듈, 플러그인)을 모두 다시 설치합니다. 이렇게 하면 이러한 파일에서 해킹된 콘텐츠를 제거할 수 있습니다. '재설치'와 CMS 이름을 Google 검색하여 재설치 안내를 찾을 수 있습니다. 플러그인, 모듈, 확장 프로그램 또는 테마가 있는 경우에도 다시 설치해야 합니다.
2단계
먼저 이전에 .htaccess
파일에서 확인한 .php
파일을 찾습니다. 서버의 파일에 액세스하는 방법에 따라 어떤 유형의 검색 기능이 있는지 확인해야 합니다. 악성 파일 이름을 검색합니다. 문제가 되는 콘텐츠를 찾은 경우 먼저 복원해야 할 경우에 대비하여 백업 사본을 만들어 다른 위치에 저장한 다음 사이트에서 삭제합니다.
3단계
남아 있는 악성 파일 또는 손상된 파일을 찾습니다. 이전 두 단계에서 이미 모든 악성 파일을 삭제했을 수도 있지만 사이트에 손상된 파일이 더 있는 경우 다음 몇 단계를 완료하는 것이 가장 좋습니다.
모든 PHP 파일을 열어 살펴봐야 한다고 생각하여 압박감을 느끼지 마세요. 먼저 조사할 의심스러운 PHP 파일 목록을 만듭니다. 다음은 의심스러운 PHP 파일을 확인하는 몇 가지 방법입니다.
- CMS 파일을 이미 새로고침한 경우 기본 CMS 파일 또는 폴더에 속하지 않는 파일만 살펴보세요. 이렇게 하면 많은 PHP 파일이 제외되고 확인해야 할 파일이 몇 개 남게 됩니다.
- 파일이 최종 수정된 날짜를 기준으로 사이트의 파일을 정렬합니다. 사이트가 해킹되었다는 사실을 처음 발견한 시점으로부터 몇 개월 이내에 수정된 파일을 찾습니다.
- 크기를 기준으로 사이트의 파일을 정렬합니다. 비정상적으로 큰 파일을 찾으세요.
4단계
의심스러운 PHP 파일 목록을 확인한 후 악성인지 확인합니다. PHP에 익숙하지 않은 경우 이 프로세스에 더 많은 시간이 걸릴 수 있으므로 PHP 문서를 검토해 보세요. 코딩을 처음 접하는 경우 도움을 받으세요. 그동안 다음과 같은 기본 패턴을 찾아 악성 파일을 식별할 수 있습니다.
CMS를 사용하고 있지만 이러한 파일을 직접 수정하지 않는 경우 서버의 파일을 CMS 및 모든 플러그인 및 테마와 함께 패키징된 기본 파일 목록과 비교하세요. 해당하지 않는 파일과 기본 버전보다 큰 파일을 찾습니다.
먼저 이미 식별한 의심스러운 파일을 검사하여 혼란스러워 보이는 문자와 숫자가 조합된 대규모 텍스트 블록을 찾습니다. 대용량 텍스트 블록 앞에는 일반적으로 base64_decode
, rot13
, eval
, strrev
또는 gzinflate
와 같은 PHP 함수 조합이 표시됩니다.
다음은 이러한 코드 블록의 예입니다. 이 모든 코드가 하나의 긴 텍스트 줄에 채워져 실제로보다 작게 보일 때도 있습니다.
// Hackers try to confuse webmasters by encoding malicious code into
// blocks of text. Be wary of unfamiliar code blocks like this.
base64_decode(strrev("hMXZpRXaslmYhJXZuxWd2BSZ0l2cgknbhByZul2czVmckRWYgknYgM3ajFGd0FGIlJXd0Vn
ZgknbhBSbvJnZgUGdpNHIyV3b5BSZyV3YlNHIvRHI0V2Zy9mZgQ3Ju9GRg4SZ0l2cgIXdvlHI4lmZg4WYjBSdvlHIsU2c
hVmcnBydvJGblBiZvBCdpJGIhBCZuFGIl1Wa0BCa0l2dgQXdCBiLkJXYoBSZiBibhNGIlR2bjBycphGdgcmbpRXYjNXdmJ2b
lRGI5xWZ0Fmb1RncvZmbVBiLn5WauVGcwFGagM3J0FGa3BCZuFGdzJXZk5Wdg8GdgU3b5BicvZGI0xWdjlmZmlGZgQXagU2ah
1GIvRHIzlGa0BSZrlGbgUGZvNGIlRWaoByb0BSZrlGbgMnclt2YhhEIuUGZvNGIlxmYhRWYlJnb1BychByZulGZhJXZ1F3ch
1GIlR2bjBCZlRXYjNXdmJ2bgMXdvl2YpxWYtBiZvBSZjVWawBSYgMXagMXaoRFIskGS"));
코드가 뒤섞이지 않고 일반 스크립트처럼 보일 때도 있습니다. 코드가 잘못되었는지 확실하지 않다면 웹마스터 도움말 포럼을 방문하세요. 숙련된 웹마스터들이 파일을 검토해 드릴 수 있습니다.
5단계
이제 어떤 파일이 의심스러운지 알게 되었으므로 컴퓨터에 저장하여 백업 또는 로컬 사본을 만듭니다(파일이 악의적이지 않은 경우를 대비하기 위함). 그런 다음 사이트에서 의심스러운 파일을 삭제합니다.
사이트가 깨끗한지 확인
해킹된 파일을 삭제한 후에는 노력이 효과가 있었는지 확인합니다. 앞서 확인한 난해한 페이지가 기억나나요? Fetch as Google 도구를 다시 사용하여 페이지가 여전히 존재하는지 확인합니다. Fetch as Google에서 '찾을 수 없음'으로 응답하면 문제가 없는 것이므로 사이트의 취약점을 수정할 수 있습니다.
다시 해킹당하지 않으려면 어떻게 해야 하나요?
사이트의 취약점을 수정하는 것은 사이트를 수정하는 데 있어 필수적인 마지막 단계입니다. 최근 연구에 따르면 해킹된 사이트의 20% 가 하루 이내에 다시 해킹당하는 것으로 나타났습니다. 사이트가 해킹당한 방식을 정확히 알면 도움이 됩니다. 조사를 시작하려면 스팸 발송자가 웹사이트를 해킹하는 방법 가이드를 읽어보세요. 하지만 사이트가 해킹된 방식을 파악할 수 없는 경우 다음은 사이트의 취약성을 줄이기 위해 취할 수 있는 조치의 체크리스트입니다.
- 컴퓨터 정기 검사: 널리 사용되는 바이러스 검사기를 사용하여 바이러스나 취약점이 있는지 확인합니다.
- 비밀번호 정기 변경: 호스팅 업체, FTP, CMS와 같은 모든 웹사이트 계정의 비밀번호를 정기적으로 변경하면 사이트에 대한 무단 액세스를 방지할 수 있습니다. 계정마다 안전하고 고유한 비밀번호를 만드는 것이 중요합니다.
- 2단계 인증 (2FA) 사용: 로그인이 필요한 서비스에서 2FA를 사용 설정하는 것이 좋습니다. 2단계 인증을 사용하면 해커가 비밀번호를 도용하더라도 로그인하기 더 어려워집니다.
- CMS, 플러그인, 확장 프로그램, 모듈을 정기적으로 업데이트합니다. 이미 이 단계를 완료하셨기를 바랍니다. 오래된 소프트웨어를 사용하기 때문에 많은 사이트가 해킹됩니다. 일부 CMS는 자동 업데이트를 지원합니다.
- 사이트를 모니터링하기 위한 보안 서비스 구독 고려: 적은 비용으로 사이트를 모니터링하는 데 도움이 되는 훌륭한 서비스가 많이 있습니다. 사이트를 안전하게 유지하려면 이러한 서비스에 가입해 보세요.
추가 리소스
사이트를 수정하는 데 여전히 문제가 있다면 다음과 같은 몇 가지 리소스가 도움이 될 수 있습니다.
다음과 같은 도구를 사용하여 사이트를 검색하고 문제가 되는 콘텐츠를 찾을 수 있습니다. VirusTotal을 제외한 도구는 Google에서 실행하거나 지원하지 않습니다.
다음은 사이트에서 문제가 있는 콘텐츠를 검사할 수 있는 도구 중 일부입니다. 이러한 스캐너는 모든 유형의 문제가 있는 콘텐츠를 식별한다고 보장할 수 없습니다.
다음은 Google에서 제공하는 추가 리소스입니다.