워드프레스는 점유율이 높은 만큼 공격 대상도 많습니다. 해킹은 “사이트가 화면에서 사라지는” 모습으로만 나타나지 않습니다. 오히려 조용히 숨어 스팸을 보내거나, 방문자 일부만 다른 사이트로 보내는 경우가 더 흔합니다. 아래 징후 중 하나라도 해당되면 점검을 시작하세요.
해킹을 의심해야 하는 징후 8가지
- 모르는 관리자 계정이 생겼다. 가장 확실한 신호 중 하나입니다.
- 방문자 일부만 다른 사이트로 이동한다. 모바일이나 검색 유입 방문자에게만 나타나는 경우가 많아 운영자가 놓치기 쉽습니다.
- 검색 결과에 모르는 문구가 보인다. 사이트 제목 아래에 낯선 상품이나 외국어 키워드가 붙습니다.
- 서버 CPU·트래픽이 이유 없이 올랐다. 스팸 메일 발송이나 다른 서버 공격에 쓰이는 경우입니다.
- 구글이 “해킹당했을 수 있음” 경고를 띄운다. Search Console의 보안 문제 알림도 확인하세요.
- 업로드 폴더에 PHP 파일이 있다. 이미지만 있어야 할 곳의 실행 파일은 웹쉘일 가능성이 높습니다.
- 코어·플러그인 파일이 공식 원본과 다르다.
- 모르는 예약 작업(크론)이 있다. 지워도 다시 생기게 만드는 흔한 수법입니다.
서버에서 바로 확인하는 명령어
WP-CLI가 설치되어 있다는 가정입니다. 사이트 루트에서 실행하세요.
관리자 계정 확인
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
가입 시각이 최근이거나 이메일이 낯선 계정이 있으면 의심합니다. DB에서 직접 보려면 다음과 같이 합니다.
SELECT ID, user_login, user_email, user_registered
FROM wp_users ORDER BY user_registered DESC LIMIT 10;
코어·플러그인 파일 무결성
wp core verify-checksums
wp plugin verify-checksums --all
공식 배포본과 다른 파일, 원래 없던 파일이 목록으로 나옵니다. 직접 고친 파일이 있다면 그것도 표시되므로 내용을 구분해서 보세요.
업로드 폴더의 PHP 파일
find wp-content/uploads -type f \( -name "*.php" -o -name "*.phtml" -o -name "*.phar" \)
정상적인 워드프레스에서는 이 폴더에 PHP가 거의 없습니다. 결과가 나오면 우선 내용을 확인합니다.
최근에 바뀐 PHP 파일
find . -type f -name "*.php" -mtime -7 -printf '%TY-%Tm-%Td %TH:%TM %p\n' | sort -r | head -50
업데이트한 기억이 없는데 바뀐 파일이 있다면 살펴봅니다.
난독화된 코드 패턴
grep -rlE "eval\s*\(\s*(base64_decode|gzinflate|str_rot13)" wp-content wp-includes
일부 정상 플러그인도 비슷한 패턴을 쓰므로, 나온 파일을 열어 직접 판단해야 합니다.
예약 작업 확인
wp cron event list --fields=hook,next_run_relative
모르는 이름의 작업이 있는지 봅니다.
점검할 때 알아둘 점
- 점검 결과가 깨끗해도 안전하다고 단정할 수 없습니다. 정교한 웹쉘은 파일 패턴이 달라서 단순한 검색으로 잡히지 않습니다.
- 이미 침해된 서버에서 돌리는 명령어의 결과는 믿기 어렵습니다. 공격자가 명령어 자체를 바꿔 두었을 수 있기 때문입니다. 가능하면 파일 사본을 별도의 깨끗한 환경으로 옮겨서 점검하세요.
- 증거를 먼저 보존하세요. 지우기 전에 의심 파일과 로그를 따로 복사해 두면 침입 경로를 파악하는 데 도움이 됩니다.
다음 단계
징후가 확인되면 서버 침해 사고 대응 절차를 따라 격리와 증거 수집부터 진행하세요. 다만 직접 청소하는 것보다 깨끗한 새 서버로 옮기는 쪽이 확인할 범위가 작고 단순한 경우가 많습니다. 이유는 해킹당한 서버는 고치지 말고 옮겨야 하는 이유에서 설명합니다.
TCP-80.NET의 해킹 복구·이전 서비스는 소스와 DB 사본을 별도 환경에서 검사해 결과를 리포트로 드리고, 깨끗한 새 서버로 옮기는 과정을 도와드립니다. 텔레그램 @tcp80net으로 문의하세요.