워드프레스 악성코드 검사, 체크섬 검증과 스캐너 활용
- wp core verify-checksums는 코어 파일을 WordPress.org 체크섬과 비교해 변조된 파일을 찾아줍니다.
- wp plugin verify-checksums --all은 WordPress.org에 등록된 플러그인 파일을 같은 방식으로 비교합니다.
- 체크섬 검증은 테마, 업로드 폴더, 데이터베이스 속 악성 코드를 잡지 못하므로 스캐너와 수동 점검을 함께 씁니다.
워드프레스 악성코드 검사는 크게 세 가지 방법이 있습니다. 파일을 원본과 비교하는 체크섬 검증, 보안 플러그인의 스캐너, 사람이 직접 보는 수동 점검입니다. 각각 찾을 수 있는 범위가 달라서 한 가지만으로는 충분하지 않습니다.
체크섬(checksum)은 파일 내용에서 계산한 고유한 값입니다. 파일이 한 글자라도 바뀌면 값이 달라지므로, 공개된 원본 값과 비교하면 변조 여부를 알 수 있습니다.
WP-CLI로 코어 파일 검증
WP-CLI는 서버에서 워드프레스를 명령어로 다루는 도구입니다. SSH로 접속할 수 있고 WP-CLI가 설치되어 있다면 워드프레스 폴더에서 다음을 실행합니다.
wp core verify-checksums
WP-CLI 문서(2026년 10월 확인 기준)에 따르면 이 명령은 워드프레스 파일을 WordPress.org의 체크섬과 비교하며, 보안을 위해 워드프레스를 로드하지 않은 상태에서 실행됩니다. 주요 옵션은 아래와 같습니다.
| 옵션 | 설명 |
|---|---|
| —include-root | 루트 폴더의 모든 파일을 확인하고 워드프레스 것이 아닌 항목에 경고 |
| —version=<버전> | 특정 버전 기준으로 검증 |
| —locale=<언어> | 특정 언어 기준으로 검증 |
| —exclude=<파일> | 쉼표로 구분한 파일 제외 |
| —insecure | TLS 오류 시 인증서 검증 없이 재시도(중간자 공격에 노출될 수 있어 권장하지 않음) |
루트 폴더에 낯선 파일이 있는지 보려면 —include-root를 붙여 실행해 볼 수 있습니다. 검증이 실패하면 —locale과 —version이 대시보드 업데이트 화면의 값과 일치하는지부터 확인하세요.
플러그인 파일 검증
플러그인도 비슷하게 검증할 수 있습니다.
wp plugin verify-checksums --all
문서에 따르면 WordPress.org의 체크섬과 비교하므로 WordPress.org에 등록된 플러그인이 대상입니다. 외부에서 따로 받은 유료 플러그인은 비교할 원본이 없을 수 있습니다. readme.txt 같은 가벼운 변경까지 오류로 처리하려면 —strict 옵션을 씁니다. 테마에 대한 같은 명령은 이번에 확인하지 못했으므로 이 글에서는 다루지 않습니다.
내 사이트의 HTTPS·인증서·보안 헤더를 바로 확인할 수 있습니다.
무료 보안 검사 시작보안 플러그인 스캐너의 역할
보안 플러그인의 스캐너는 서버 안에서 파일을 읽어 이미 알려진 악성 패턴이나 원본과의 차이를 찾습니다. 예를 들어 Wordfence 플러그인 페이지는 코어, 테마, 플러그인을 WordPress.org 버전과 비교하고 백도어와 SEO 스팸, 악성 리디렉션 등을 검사한다고 설명합니다. 같은 페이지에는 무료판은 방화벽 규칙과 악성코드 서명이 30일 늦게 갱신된다는 설명도 있습니다. 플러그인별 기능 차이는 워드프레스 보안 플러그인 비교 글에서 정리합니다.
스캐너는 편리하지만 만능은 아닙니다. 서버 자원을 쓰기 때문에 트래픽이 몰리는 시간대를 피해 실행하는 것이 좋고, 공유 호스팅에서는 검사 중 속도가 느려질 수 있습니다. 새로 나온 변종은 탐지하지 못할 수 있고, 반대로 정상 파일을 의심 파일로 표시하는 경우도 있습니다.
수동 점검과 그 한계
스캐너와 체크섬이 놓치는 부분을 사람이 보완합니다.
- 업로드 폴더 안의 PHP 파일 확인
- .htaccess와 wp-config.php의 낯선 코드 확인
- 테마 폴더의 최근 수정 파일 확인
- 관리자 계정 목록 확인
find wp-content/uploads -type f -name "*.php"
find . -type f -name "*.php" -mtime -7
두 번째 명령은 최근 7일 안에 바뀐 PHP 파일을 보여줍니다. 업데이트나 플러그인 설치 때문에 정상 파일도 나오므로, 내가 한 작업 기록과 대조해야 합니다. 의심 파일 패턴은 PHP 웹쉘 탐지 방법 글에서 더 다룹니다.
권장 검사 순서
처음 검사한다면 다음 순서가 무난합니다. 먼저 현재 상태를 백업합니다. 다음으로 코어와 플러그인 체크섬을 확인해 원본과 다른 파일을 목록으로 만듭니다. 그다음 스캐너를 한 번 실행해 결과를 비교하고, 마지막으로 업로드 폴더와 설정 파일을 직접 열어 봅니다. 각 단계에서 나온 파일 이름과 시각을 기록해 두면 복구 단계에서 어디를 교체할지 정하기 쉽습니다.
검사 결과를 해석할 때 주의할 점
외부에서 주소만 입력해 보는 원격 검사는 방문자에게 보이는 응답만 확인하므로, 서버 안의 감염을 확정할 수 없습니다. 반대로 서버 안 검사는 서버 접근 권한이 필요합니다. 결과가 깨끗해도 오래된 플러그인의 취약점은 남아 있을 수 있으니 업데이트 상태도 같이 보세요. 검사 도중 파일을 바로 삭제하지 말고, 먼저 목록과 백업을 남긴 뒤 하나씩 판단하세요. 정상 파일을 지우면 사이트가 멈출 수 있습니다. 의심 증상이 확인되었다면 워드프레스 해킹 확인 체크리스트와 함께 진행하는 것이 좋습니다.
웹사이트 기본 보안 검사HTTPS·리디렉션·인증서·보안 헤더·서버 정보 노출 10개 항목을 무료로 확인할 수 있습니다.
무료 보안 검사 시작자주 묻는 질문
체크섬 검증에서 오류가 없으면 안전한가요?
코어 파일이 원본과 같다는 뜻일 뿐입니다. 테마, 외부 플러그인, 업로드 폴더, 데이터베이스에 숨은 악성 코드는 이 검사로 확인되지 않습니다.
체크섬 검증이 실패하는데 해킹이 맞나요?
항상 그렇지는 않습니다. WP-CLI 문서는 검증이 실패하면 --locale과 --version 값이 대시보드 업데이트 화면의 값과 맞는지 확인하라고 안내합니다. 언어 설정이 다르면 파일마다 경고가 나올 수 있습니다.
스캐너 플러그인을 두 개 이상 설치해도 되나요?
기능이 겹치면 서버 부하가 늘거나 충돌할 수 있습니다. 한 번에 하나씩 검사를 실행해 비교하는 방식이 무난하며, 각 플러그인 문서의 안내를 확인하세요.
확인한 자료
- WP-CLI - wp core verify-checksums
- WP-CLI - wp plugin verify-checksums
- WordPress.org - FAQ My site was hacked
- Wordfence Security - WordPress.org 플러그인 페이지
기술 정보는 2026-10-24에 위 자료로 확인했습니다. 소프트웨어 버전·기본값·서비스 정책은 바뀔 수 있으므로 적용 전 각 문서의 최신 내용을 확인하세요. 이 글은 일반 정보이며 특정 서비스 가입을 권하지 않습니다.