워드프레스는 점유율이 높은 만큼 공격 대상도 많습니다. 해킹은 “사이트가 화면에서 사라지는” 모습으로만 나타나지 않습니다. 오히려 조용히 숨어 스팸을 보내거나, 방문자 일부만 다른 사이트로 보내는 경우가 더 흔합니다. 아래 징후 중 하나라도 해당되면 점검을 시작하세요.


해킹을 의심해야 하는 징후 8가지

  1. 모르는 관리자 계정이 생겼다. 가장 확실한 신호 중 하나입니다.
  2. 방문자 일부만 다른 사이트로 이동한다. 모바일이나 검색 유입 방문자에게만 나타나는 경우가 많아 운영자가 놓치기 쉽습니다.
  3. 검색 결과에 모르는 문구가 보인다. 사이트 제목 아래에 낯선 상품이나 외국어 키워드가 붙습니다.
  4. 서버 CPU·트래픽이 이유 없이 올랐다. 스팸 메일 발송이나 다른 서버 공격에 쓰이는 경우입니다.
  5. 구글이 “해킹당했을 수 있음” 경고를 띄운다. Search Console의 보안 문제 알림도 확인하세요.
  6. 업로드 폴더에 PHP 파일이 있다. 이미지만 있어야 할 곳의 실행 파일은 웹쉘일 가능성이 높습니다.
  7. 코어·플러그인 파일이 공식 원본과 다르다.
  8. 모르는 예약 작업(크론)이 있다. 지워도 다시 생기게 만드는 흔한 수법입니다.

서버에서 바로 확인하는 명령어

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으로 문의하세요.