Chrome Dev Summit 2018 is happening now and streaming live on YouTube. Watch now.

멀웨어로 해킹됨

멀웨어를 배포하도록 해킹되어 주로 검색결과에 '이 사이트는 컴퓨터에 문제를 야기할 수 있습니다'라는 경고가 함께 표시되는 사이트와 관련된 단계로서, 복구 절차 중 가장 긴 단계 중 하나입니다. 이 단계에서는 사이트에서 피해를 입은 파일 목록을 컴파일하고, 이후 단계인 사이트 정리 및 유지관리에서 이 목록을 사용합니다.

사이트가 멀웨어가 아닌 스팸이 원인이 되어 검색결과에 '해킹당한 사이트일 수 있습니다'라는 경고가 표시되는 경우 스팸 피해 평가(스팸으로 해킹됨) 페이지를 참조하세요.

필요 사항:

  • 사이트의 서버(웹, 데이터베이스, 파일)에 대한 셸/터미널 관리자 액세스 권한
  • 셸/터미널 명령에 대한 지식
  • 데이터베이스에서 SQL 검색 실행 가능

수행할 작업:

이 단계는 다음 세 개의 섹션으로 구성됩니다.

준비

  1. 브라우저를 사용하여 사이트의 페이지를 보면 안 됩니다. 멀웨어는 주로 브라우저 취약성을 이용하여 전파되므로 감염된 멀웨어 페이지를 브라우저에서 열면 컴퓨터에 피해를 줄 수 있습니다.
  2. 이 단계에서부터 문서를 만들어 발견한 사항을 기록합니다. 문서는 최소한 피해를 입은 각 파일의 이름/위치 및 감염된 방법에 대한 메모를 포함하며 추후 사이트 정리와 유지관리의 근거가 됩니다.
  3. 필요한 경우 추가 리소스를 확인합니다.
    • 위의 동영상을 통해 멀웨어가 작동하는 방법 및 멀웨어 조사를 수행하는 동안 안전한 상태를 유지하는 방법을 알아봅니다.
    • Google 세이프 브라우징 진단 페이지를 살펴보고 사이트가 사용자에게 해로울 수 있는지에 대해 공개된 정보를 확인합니다. 다음과 비슷한 URL에서 사이트의 목록 상태를 알아볼 수 있습니다.
      http://www.google.com/safebrowsing/diagnostic?site=<your-site>
      예: http://www.google.com/safebrowsing/diagnostic?site=webmastercentralblog.blogspot.com
  4. cURL 또는 Wget을 사용하여 페이지 가져오기와 같은 HTTP 요청을 수행합니다.

    이렇게 무료로 사용할 수 있는 도구로 리디렉션을 진단하고 리퍼러 또는 사용자 에이전트 정보를 유연하게 포함할 수 있습니다. 해커는 더 많은 '실제 사용자'를 타겟팅하기 위해 특정 사용자 에이전트 또는 리퍼러에만 악성 콘텐츠를 게재하고 사이트 소유자 및 멀웨어 스캐너를 피할 수 있으므로 특정 리퍼러 또는 사용자 에이전트를 포함하면 해커를 모방하는 데 유용합니다.

    $curl -v --referer "http://www.google.com" <your-url>

사이트의 특정 멀웨어 감염 유형 조사

  1. Search Console의 확인된 사이트를 선택한 다음 보안 문제를 클릭합니다.
  2. 사이트의 보안 문제에 표시된 모든 멀웨어 카테고리(예: 서버 설정, SQL 삽입)를 조사합니다. 카테고리에서 감염된 URL의 추가 정보는 '세부정보 표시'를 클릭하여 찾을 수 있습니다. 세부정보에는 해커에 의해 삽입된 샘플 코드 스니펫이 포함될 수 있습니다. 각 카테고리에서 다음 항목을 조사 문서에 복사합니다.
    • 보안 문제의 멀웨어 카테고리에 표시된 모든 감염된 예제 URL
    • 조사하는 동안 알아낸 피해를 입은 추가 페이지
    • 피해 원인의 유형 등 감염된 URL과 관련해 알아낸 세부정보
  3. 각 멀웨어 유형에 대한 조사를 도와주는 정보는 다음과 같습니다.

파일 시스템 피해 평가

다음 단계에서는 보다 자세한 조사를 위해 사이트의 파일 시스템에 로그인해야 합니다. 무엇보다도 해커가 기존 페이지 또는 데이터베이스 레코드를 수정했거나 완전히 새로운 스팸성 페이지를 만들었거나 안전한 페이지에 스팸을 표시하기 위한 함수를 작성했을 수 있으며, 해커가 사이트로 다시 들어오도록 허용하거나 삭제하지 않으면 해로운 작업을 계속 수행할 '백도어'를 남겼을 수 있으므로 주의해야 합니다.

사이트가 온라인 상태인 경우 이 단계에서 다시 오프라인으로 전환할 수 있습니다.

  1. 사이트에 대한 안전한 백업이 있다면 백업한 이후 만들어졌거나 수정된 파일을 확인합니다. 나중에 추가 조사를 할 수 있으므로 목록에 이 파일을 추가합니다. Unix 기반 시스템의 경우 다음과 같은 명령을 사용할 수 있습니다.
    $ diff -qr <current-directory> <backup-directory>
    예:
    $ diff -qr www/ backups/full-backup-20120124/
    또한
    $ md5sum <current-page> <backup-page>
    예:
    $ md5sum www/page.html backups/full-backup-20120124/page.html
  2. 로그인 시도 실패, 명령어 이력(특히 루트), 알 수 없는 사용자 계정 생성 등 의심스러운 활동 관련 서버, 액세스 및 오류 로그를 확인합니다. 해커가 자신의 목적을 위해 이러한 로그를 변경했을 수 있습니다 (도움이 되는 경우 취약성 확인의 동영상에 표시된 일부 예제 참조).
  3. 리디렉션을 위한 .htaccess 및 httpd.conf 등의 설정 파일을 확인합니다. 해커는 주로 사용자 에이전트, 시간 또는 리퍼러를 기준으로 조건부 리디렉션을 만듭니다.
  4. 폴더 및 파일 권한이 지나치게 관대하게 설정되어 있지 않은지 확인합니다. 해커는 사이트 소유자에게 관대한 권한을 들키지 않은 상태에서 사이트로 다시 들어오기 위한 방편으로 사용하려고 권한을 조작합니다. 권한이 644(rw-r--r--)보다 큰 파일 및 755(rwxr-xr-x)보다 큰 폴더는 보안 문제의 원인이 될 수 있습니다. 더 느슨한 권한이 실제로 필요한지 확인합니다. Unix 기반 시스템의 경우 다음 명령을 실행합니다.
    $ find <your-dir> -type d -not -perm 755 -exec ls -ld {} \;
    $ find <your-dir> -type f -not -perm 644 -exec ls -la {} \;
  5. 데이터베이스가 있다면 phpMyAdmin 등의 도구를 사용하여 레코드별로 조사합니다.

다음 단계

다음 단계는 취약성 확인입니다.