해킹 된 WordPress 웹 사이트 또는 블로그를 청소하는 방법
게시 됨: 2021-02-16귀하의 WordPress 웹사이트가 해킹을 당했고 현재 피해를 통제하고 있는지 또는 최악의 상황에 대비하고 있는지 여부에 관계없이 이 기사는 해킹된 WordPress 웹사이트를 정리하는 과정을 안내합니다. 프로세스는 다음을 수행하는 데 도움이 되도록 따라하기 쉬운 단계별 형식으로 문서화되어 있습니다.
- WordPress 웹사이트를 다시 제어하세요
- 감염 가능성이 있는 원인 파악
- 감염 및 악성코드 찾기
- 맬웨어, 백도어 및 웹 셸 제거
- Google 세이프 브라우징 데이터베이스와 같은 맬웨어 목록에서 도메인을 제거합니다.
- 재발 방지
해킹된 WordPress 웹사이트가 정말 해킹당했습니까?
예를 들어 웹사이트가 손상된 경우와 같이 WordPress 사이트가 해킹된 경우가 분명합니다. 다른 경우에는 그렇게 명확하지 않을 수 있습니다. WordPress 정리 프로세스를 시작하기 전에 WordPress 웹 사이트가 실제로 해킹되었으며 관련 없는 기술 문제가 아닌지 확인하십시오. 내 WordPress가 해킹되었는지 확인하는 방법 기사를 읽고 웹사이트나 블로그가 해킹되었는지 확인하세요.
다시 제어
공격의 결과로 얼마나 많은 액세스 권한을 잃었는지에 따라 통제권을 되찾기 시작합니다. 예를 들어, 서버에 액세스할 때 공격자는 자격 증명을 교체하여 합법적인 사용자가 서버에 액세스하지 못하도록 잠그거나 WordPress 관리자 암호를 변경하여 WordPress 관리자가 로그인하지 못하도록 할 수 있습니다.
이는 설정에 따라 크게 달라지지만 호스팅 제공업체는 공유 호스팅 환경 또는 웹사이트를 실행하는 가상 사설 서버(VPS)에 대한 액세스를 복구하는 데 도움을 줄 수 있습니다. WordPress 관리자에 대한 액세스 권한을 상실한 경우 관리자 비밀번호 재설정에 대한 공식 WordPress 가이드를 따르십시오.
백업하기
WordPress 백업 솔루션이 있더라도 현재 WordPress 웹 사이트를 백업하십시오. 이 단계에서 WordPress 백업을 수행하는 것은 다음을 포함하여 여러 가지 이유로 매우 중요합니다.
- 백업을 통해 나중 단계에서 감염을 분석할 수 있으며,
- 일부 호스팅 제공업체는 맬웨어나 스팸 확산을 방지하기 위한 예방 조치로 해킹된 웹사이트 삭제에 의존할 수 있습니다. 호스팅 제공업체에 따라 경고 없이 발생할 수 있습니다.
- 현재 백업 전략이 없는 경우 상황이 더 나빠지기 전에 이 백업에서 웹사이트 콘텐츠 중 일부를 복구할 수 있습니다.
또한 VPS(가상 사설 서버)에서 WordPress를 실행하는 경우 가능하면 전체 가상 머신의 스냅샷을 만드는 것이 좋습니다(일반적으로 추가 비용이 발생한다는 점에 유의하십시오). 스냅샷을 찍을 때 외부 볼륨을 사용하여 WordPress 설치(예: 네트워크 연결 스토리지)를 호스팅하는 경우 기본 WordPress 설치, wp-content , MySQL 데이터베이스를 저장하는 모든 볼륨의 복사본도 가져와야 합니다. , 모든 웹 서버 액세스 및 오류 로그.
백업에서 복원
백업 전략이 있다면 지금 실행에 옮길 때입니다. 최근 백업에 액세스할 수 있다고 가정하면 복원이 온라인 상태로 돌아가는 가장 빠른 방법일 수 있습니다. 그러나 실수하지 마십시오. WordPress 사이트의 백업에서 복원하면 감염을 제거하고 다시 작동할 수 있지만 그렇지는 않습니다. 처음에 해킹당한 이유 를 해결하십시오.
워드프레스 웹사이트가 취약점이나 보안 결함을 악용하여 해킹을 당했다면, 무슨 일이 일어났는지 알아내기 위해 열심히 노력하는 것이 필수적인 다음 단계입니다(가능한 경우).
백업이 없거나 백업을 성공적으로 복원할 수 없으면 어떻게 합니까?
백업이 없으면 성공적으로 복원할 수 있습니다. 상황의 심각성에 따라 WordPress 웹사이트를 유지 관리 모드로 전환하여 방문자에게 나중에 다시 확인해야 함을 알리는 동시에 사이트 복원 작업을 수행할 수 있습니다. 그동안 이 가이드의 나머지 부분을 계속 따르십시오. wp_maintenance() 1 을 사용하여 웹사이트를 유지 관리 모드로 전환 기능을 사용하면 WordPress는 503 HTTP 상태 코드를 반환합니다. 503 상태는 Google 및 기타 크롤러에게 페이지에 문제가 있음을 나타내며 나중에 다시 확인해야 합니다.
503 HTTP 응답은 웹사이트가 일시적으로 다운되는 경우 검색 순위가 손상되는 것을 방지하므로 SEO에 중요합니다. 503 HTTP 상태 코드와 SEO에서의 중요성에 대한 자세한 내용은 해당 주제에 대한 Yoast의 기사를 확인하세요.
WordPress가 어떻게 해킹되었는지 확인
사이트가 백업되면 다음 의제는 무슨 일이 일어났는지, 즉 공격자가 WordPress 설치에 대한 액세스 권한을 얻기 위해 악용한 보안 취약점에 대해 최대한 많이 알아내는 것입니다.
활동 로그, 웹 서버 및 FTP 서버 로그 확인
WordPress 활동 로그를 보관하는 경우 여기에서 분석을 시작하는 것이 가장 좋습니다. 의심스러운 행동을 식별할 수 있는지 확인하십시오. 새로 생성된 사용자의 이벤트 또는 사용자 암호 변경을 찾습니다. 또한 WordPress, 플러그인 또는 테마 파일이 수정되었는지 확인하십시오.
또한 웹 서버, FTP 서버 및 운영 체제 로그 파일에서 비정상적이거나 의심스러운 동작을 확인해야 합니다. 이것은 다소 압도적인 프로세스일 수 있지만 단일 IP 주소에서 이상한 트래픽이 들어오는지 확인하는 것으로 시작하는 것이 좋습니다. 다양한 유틸리티 쉘 스크립트와 하나의 라이너를 사용하여 이 작업을 수행할 수 있습니다. 웹 서버 로그를 실시간으로 보려면 GoAccess가 유용할 수 있습니다.
사용되지 않고 오래된 WordPress 플러그인 및 테마
WordPress 대시보드와 디렉토리 /wp-content/plugins/ 모두에서 설치된 플러그인 목록을 확인하십시오. 모든 WordPress 플러그인이 사용되고 있습니까? 모두 최신 상태입니까? 테마 및 테마 디렉토리 /wp-content/themes/ 도 확인하십시오. 사용 중인 테마 하나만 설치해야 합니다. 하위 테마를 사용하는 경우 두 개의 디렉토리가 있습니다.
사용하지 않은 WordPress 코드 및 설치
남은 코드와 사용하지 않은 코드는 또 다른 일반적인 문제입니다. 때때로 개발자와 시스템 관리자는 서버에서 직접 파일을 업데이트하고 확장자가 .old , .orig 또는 .bak 인 원본 파일을 백업합니다. 공격자는 이러한 나쁜 습관을 자주 이용하며 이러한 백업 파일을 찾기 위한 도구는 광범위하고 쉽게 사용할 수 있습니다.
이것이 작동하는 방식은 공격자가 index.php.old 와 같은 파일에 액세스하려고 하는 것입니다. 일반적으로 .php 파일은 PHP 인터프리터에 의해 실행되도록 구성되지만 파일 끝에 .old (또는 기타) 확장자를 추가하면 웹 서버가 사용자에게 파일을 제공합니다. 단순히 백업 파일의 이름을 추측할 수 있음으로써 공격자는 민감한 정보를 포함할 수 있는 소스 코드를 다운로드하거나 공격자에게 공격 대상에 대한 힌트를 제공할 수 있습니다.
비슷한 문제는 WordPress의 이전 설치를 유지하는 것입니다. 시스템 관리자가 웹사이트를 재구축할 때 때때로 /old/ 하위 디렉토리에 이전 WordPress 설치 사본을 남깁니다. WordPress의 이러한 오래된 설치는 일반적으로 인터넷을 통해 계속 액세스할 수 있으므로 공격자가 플러그인과 함께 WordPress의 이전 버전에서 알려진 취약점을 악용할 수 있는 매력적인 대상입니다.
사용하지 않는 코드, WordPress 설치, WordPress 플러그인, WordPress 테마 및 기타 오래되거나 사용하지 않는 파일을 제거하는 것이 좋습니다(실수로 삭제한 항목을 복원해야 하는 경우 항상 백업으로 전환할 수 있음을 기억하십시오). 웹사이트에는 필요한 파일만 포함되어야 합니다. 추가되거나 사용되지 않는 다른 모든 것은 추가 공격 표면으로 처리되어야 합니다.
WordPress 사용자 및 역할
모든 WordPress 사용자가 사용되는지 확인합니다. 새롭게 의심되는 사항이 있습니까? 모든 역할이 손상되지 않았는지 확인합니다. WordPress 사용자 및 역할 지침을 따르는 경우 WordPress 관리자 역할을 가진 사용자는 한 명만 있어야 합니다.
공유 호스팅 제공업체
WordPress가 공유 호스팅 제공업체에서 실행 중인 경우 해킹의 소스는 우연히 귀하와 동일한 서버에서 실행 중인 다른 웹사이트일 수 있습니다. 이 경우 가장 가능성이 높은 시나리오는 공격자가 권한을 에스컬레이션하는 것입니다. 그런 다음 결과적으로 전체 서버에 액세스하고 WordPress 웹 사이트에 액세스할 수 있습니다. 이러한 공격이 발생했다고 의심되는 경우 가장 좋은 방법은 웹사이트를 백업한 후 즉시 호스팅 제공업체에 연락하는 것입니다.
.htaccess 파일
.htaccess 파일(디렉토리 수준 Apache HTTP Server 구성 파일)도 해커의 일반적인 대상입니다. 일반적으로 사용자를 다른 스팸, 피싱 또는 기타 악성 웹사이트로 리디렉션하는 데 사용됩니다. WordPress에서 사용하지 않는 파일을 포함하여 서버의 모든 .htaccess 파일을 확인하십시오. 일부 리디렉션은 식별하기 어려울 수 있습니다.
특정 사용자 에이전트 문자열을 기반으로 HTTP 요청을 리디렉션하는 구성에 특히 주의하십시오. 공격자는 특정 장치(예: 모바일 사용자)를 대상으로 하거나 웹 서버가 검색 엔진 크롤러에 다르게 응답하도록 구성하여 블랙햇 SEO에 참여할 수도 있습니다.
가능하면 Apache HTTP Server 내의 .htaccess 파일에 의존하는 대신 전역 구성을 채택하는 것을 고려하십시오. .htaccess 파일은 성능을 저하시킬 뿐만 아니라 공격자가 이러한 파일의 내용을 읽거나 쓸 수 있는 위치에 있는 경우 WordPress 웹 사이트를 다양한 보안 취약점에 노출시킵니다. Apache HTTP Server 문서 2 에 따라 , 기본 httpd.conf 파일에서 AllowOverride 지시문을 none으로 설정하여 .htaccess 파일 사용을 완전히 비활성화할 수 있습니다.
다른 진입점 확인
웹 서버에는 몇 가지 다른 항목 지점이 있습니다. FTP 서버, SSH, 웹 서버 등 모두 확인하십시오.
WordPress 감염 및 악성 코드 찾기
시작하기 전에 : WordPress 해킹에는 일반적으로 WordPress 테마, 플러그인 또는 코어 파일에 코드를 삽입하는 작업이 포함됩니다. 따라서 정리를 진행하려면 코드 수정에 익숙해져야 합니다. 그렇지 않은 경우 WordPress 보안 전문가를 고용하십시오.
해커의 진입 지점을 식별하면 일반적으로 감염을 찾기가 비교적 쉽습니다. 아직 감염을 발견하지 못한 경우를 대비하여 감염을 찾는 데 사용할 수 있는 몇 가지 방법이 있습니다. 여기에 몇 가지가 있습니다.
지난 며칠 동안 어떤 파일이 수정되었는지 확인
이상적으로는 WordPress 설치 전체에서 변경 사항에 대해 파일을 모니터링하고 즉시 경고하는 WordPress 파일 모니터 플러그인을 사용해야 합니다. 파일 무결성 모니터링(FIM) 플러그인이 없는 경우 파일 변경 사항을 수동으로 찾아야 합니다.
서버에 대한 SSH 액세스 권한이 있는 경우 WordPress 웹사이트에서 최근에 변경된 파일을 확인하십시오. 일반적으로 해킹이 발견된 지 5일 이내에 변경 사항을 찾기 시작하여 필요에 따라 검색 범위를 넓히는 것이 좋습니다. 이렇게 하려면 WordPress 웹 사이트가 있는 디렉토리로 이동하고 찾기 명령을 사용합니다.
find .mtime -5 –ls
위의 명령은 지난 5일(-5) 동안 수정된(.mtime) 모든 파일을 나열(-ls)합니다. 목록이 너무 길면 더 적은 호출기를 사용하여 더 쉽게 목록을 탐색하고 검색하십시오.
find .mtime -5 –ls | less
최근에 플러그인 또는 테마를 업데이트한 경우 관련 파일 변경 사항이 검색 결과에 표시됩니다. 로그, 디버그 파일도 자주 업데이트되므로 결과에도 표시됩니다. 결과적으로 관심 있는 파일 변경 사항을 찾기 위해 결과를 광범위하게 필터링해야 할 수 있습니다. WordPress용 WordPress 파일 변경 모니터 플러그인과 같은 특수 플러그인은 이러한 가양성을 자동으로 제거하도록 특별히 설계되었습니다. 플러그인은 의도적으로 WordPress용으로 제작되었으며 WordPress 코어, 플러그인 또는 테마 업데이트, 설치 또는 제거에서 파일 변경 사항을 식별할 수 있습니다.
모든 HTML 파일 확인
WordPress에는 HTML 파일이 거의 없으며 해커가 이를 이용하려고 합니다. 웹사이트에서 모든 HTML 파일을 검색하고 콘텐츠를 분석합니다. 웹사이트에 있는 모든 HTML 파일이 합법적인지 확인하고 파일의 용도를 알고 있어야 합니다.
WordPress 디렉토리(및 하위 디렉토리)에 있는 모든 HTML 파일을 나열하는 쉬운 방법은 다음 명령을 사용하는 것입니다.
find . -type f -name '*.html'
감염 텍스트 검색
웹사이트가 손상되었거나 감염의 결과로 웹사이트에 일부 텍스트가 표시되는 경우 grep 도구로 찾으십시오. 예를 들어 "hacked by"라는 텍스트를 본 경우 웹사이트의 루트 디렉터리로 이동하여 다음 명령을 실행합니다.
grep –Ril "hacked by"
위의 명령은 "hacked by" 콘텐츠가 포함된 파일 목록을 반환합니다. 감염된 파일 목록이 있으면 코드를 분석하고 감염을 제거할 수 있습니다.
grep 스위치는 무엇을 의미합니까?
- -R 은 재귀적으로 검색하도록 grep을 나타냅니다(모든 하위 디렉토리 및 기호 링크를 포함하여 전체 디렉토리 구조를 검색함).
- -i 는 검색이 대소문자를 구분하지 않아야 함을 grep에 표시합니다(즉, 검색 용어의 대문자 사용을 무시함). 이것은 Linux/Unix 환경에서 매우 중요합니다. Windows와 달리 Linux 파일 시스템은 대소문자를 구분하기 때문입니다.
- -l 은 파일 내용이 아닌 파일 이름을 반환해야 함을 grep에 나타냅니다. WordPress 사이트가 해킹당하면 찾을 수 있는 다른 악성 코드입니다.
명백한 "hacked by" 문자열 외에도, 아래는 해킹된 WordPress 웹사이트에서 일반적으로 사용되는 코드 및 텍스트 구문 목록입니다. grep 도구를 사용하여 다음을 찾을 수 있습니다.
- base64_decode
- is_admin
- 평가
- gzuncompress
- 경유
- 간부
- shell_exec
- 주장하다
- str_rot13
- 체계
- phpinfo
- chmod
- mkdir
- 포펜
- 닫기
- 읽기 파일
grep을 사용하여 이를 달성하는 빠른 방법은 다음 grep 명령을 통해 파일을 재귀적으로 찾고(기호 링크를 따라) 지정된 PCRE 정규식 3 과 일치하는 문자열을 검색하는 것입니다. , 텍스트 일치와 일치가 발생한 행 번호를 반환합니다.
grep -RPn "(base64_decode|is_admin|eval|gzuncompress|passthru|exec|shell_exec|assert|str_rot13|system|phpinfo|chmod|mkdir|fopen|fclose|readfile) *\("
참고 : 이 코드 중 일부는 합법적인 코드에서도 사용할 수 있으므로 감염 또는 해킹으로 플래그를 지정하기 전에 코드를 적절하게 분석하고 사용 방법을 이해하십시오.
원본 WordPress 설치와 파일 비교
이것은 구식 방법이며 다소 시간이 걸리더라도 놀라운 효과가 있습니다. 웹사이트의 파일을 변경되지 않은 웹사이트의 파일과 비교합니다. 따라서 웹 사이트의 백업 사본이 있는 경우 변조된 웹 사이트를 비교하십시오. 그렇지 않은 경우 WordPress의 새 복사본과 감염된 웹 사이트에 있는 플러그인을 다른 호스트에 설치하고 비교하십시오.
파일을 비교하는 데 사용할 수 있는 몇 가지 도구가 있습니다. 이 예에서는 Beyond Compare라는 상용 도구를 사용하지만 무료 대안이 몇 가지 있습니다. 아래는 샘플 비교의 일부 스크린샷입니다.
두 WordPress 웹 사이트의 루트 디렉토리를 비교할 때 도구는 index.php 파일의 내용, 새로운 .htaccess 및 wp-config.php 파일의 차이점, 그리고 하위 디렉토리의 차이점을 강조 표시합니다.
index.php 파일을 더블 클릭하면 차이점이 무엇인지 알 수 있습니다.
WordPress 파일 비교에서 무엇을 찾아야 합니까?
WordPress 코어의 일부가 아닌 파일을 찾습니다. 대부분의 감염은 WordPress 설치 루트 또는 wp-content 디렉토리에 파일을 추가합니다. 해킹이 취약한 플러그인의 결과라면 플러그인의 파일이 수정되었을 수 있습니다.
WordPress 해킹 정리
WordPress 해킹의 출처를 알고 감염을 발견하면 아래 절차에 따라 정리를 시작할 때입니다.
WordPress 서비스로 자동으로 감염 찾기
위의 내용이 처리하기에 너무 많은 것 같으면 절망하지 마십시오. 맬웨어 및 기타 감염에 대해 웹 사이트를 검사하는 데 사용할 수 있는 여러 WordPress 보안 서비스 및 플러그인이 있습니다. Malcare WordPress 보안 서비스를 권장합니다.
그러나 이러한 플러그인에는 찾는 맬웨어 서명 목록이 제한되어 있습니다. 따라서 WordPress 웹 사이트에 영향을 미친 공격이 일반적이지 않은 경우 이러한 플러그인이 감염을 식별하지 못할 수 있습니다. WordPress 웹 사이트가 WordPress 멀웨어 플러그인이 잘못된 것을 식별하지 못했다는 공격의 희생자가 된 WordPress 관리자로부터 피드백을 받는 것은 전례가 없습니다.
여기서 중요한 점은 효과적인 보안 제어에는 여러 계층의 방어 및 탐지가 포함된다는 것입니다. 수동 분석은 할 수 있을 때 거의 항상 최선의 방법입니다. 이 플러그인도 과소평가되어서는 안 됩니다. 여전히 사용할 수 있으며 언젠가는 유용할 것입니다.
백업에서 WordPress 복원
WordPress 웹 사이트 또는 블로그의 백업이 있으면 복원하십시오. 코드를 수동으로 정리하는 것보다 항상 훨씬 쉽습니다.
모든 비밀번호 변경, 사용하지 않는 사용자 삭제 및 WordPress 사용자 역할 확인
WordPress, CPanel, MySQL, FTP 및 개인용 컴퓨터를 포함한 모든 사용자 및 서비스의 모든 비밀번호를 변경하십시오. FTP, WordPress, MySQL 및 기타 서비스의 사용자 목록을 확인하여 모든 사용자가 합법적인지 확인하십시오. 더 이상 사용하지 않는 사용자가 있으면 삭제하십시오. 모든 WordPress 사용자에게 올바른 역할과 권한이 있는지 확인하십시오.
WordPress 코어, 플러그인, 테마 및 기타 소프트웨어 업그레이드
WordPress 웹 사이트를 실행하는 데 필요한 모든 소프트웨어의 최신 버전을 실행하고 있는지 확인하십시오. 이것은 WordPress 자체에 국한되지 않고 모든 플러그인, 테마, 운영 체제 패치, PHP, MySQL 및 웹 서버(예: Apache HTTP Server 또는 Nginx) 및 실행 중인 모든 FTP 서버로 확장됩니다.
WordPress 웹사이트 백업
이 단계에서 실제 감염된 코드를 제거하기 전에 WordPress 웹 사이트를 백업하십시오.
Google 세이프 브라우징 맬웨어 경고 제거
웹사이트가 Google 세이프 브라우징에 의해 거부된 경우 보안 검토를 신청하여 경고를 제거할 수 있습니다.
WordPress 해킹을 제거하면…
축하합니다. 해킹으로부터 WordPress 웹사이트를 복구했습니다. 이제 다시는 이런 일이 발생하지 않도록 해야 합니다. 다음은 수행해야 할 몇 가지 팁입니다.
- WordPress 활동 로그 플러그인을 설치하여 WordPress 웹사이트에서 일어나는 모든 일을 추적하세요.
- 백업 솔루션이 없다면 준비하십시오.
- 워드프레스 보안 스캐닝 서비스를 이용하세요.
- 데이터베이스 및 관리자 암호를 교체하고 강력한 WordPress 암호 보안을 적용합니다.
- WordPress, WordPress 플러그인, 테마 및 사용하는 기타 소프트웨어를 항상 최신 상태로 유지하십시오.
- 이전 WordPress 설치, 사용하지 않은 WordPress 플러그인 및 테마(사용하지 않은 기본 WordPress 테마 포함)와 같은 사용하지 않는 파일을 제거합니다. 사용하지 않는 구성 요소와 소프트웨어는 불필요한 공격 표면을 추가하므로 제거하는 것이 좋습니다.
- WordPress 보안 강화 가이드를 따라 웹사이트에서 발생할 수 있는 모든 보안 문제를 처리하세요.