워드프레스 해킹 당했을 때: 증상, 원인, 해결 방법 총정리 (실전 명령어 + 실제 사례 포함) – 보강예정

1. 들어가며

최근 운영 중이던 워드프레스 사이트에서 이상 징후가 발생했습니다.
처음엔 500번 에러가 뜨더니, 해결을 해도 사이트가 잘 뜨지 않거나 관리자 페이지가 이상하게 뜬는 현상이 있었습니다.
조사 결과, 단순 오류가 아니라 웹쉘(Web Shell)이 삽입된 해킹 사고였습니다.

이 글에서는 단순 이론이 아니라
👉 실제 공격 코드 분석 + 리눅스 명령어 기반 탐지 방법 + 복구 방법까지 정리합니다.

2. 워드프레스 해킹의 주요 증상

  • 알 수 없는 관리자 계정 생성
  • 이상한 PHP 파일 생성
  • 리다이렉트 발생
  • 서버 부하 증가

특히 제가 겪은 증상은


1. 먼저 앞서 얘기한대로 500번 Internal Server Error 가 떠서 로그를 확인했더니 include되어야 할 php 파일을 못찾는다는 메시지였습니다.
프로그램 버전 업하면서 파일이 누락됐나 싶어, 없다는 파일을 복사해 넣거나, 프로그램 재설치를 해보았지만, 화면이 이상하게 뜨거나 느려지는 현상은 계속 발생했습니다.

2. 서버에 접속해서 파일을 보다보니, 디렉토리마다 .trash로 시작하는 폴더가 생성되어있으며, index.php, admin.php, .htaccess 파일들이 생성되어있었습니다.
처음에는 .trash가 웹호스팅 서비스에서 새로생긴 기능인가 싶어서 그냥 대수롭지 않게 생각했습니다.

아래는 의심되는, 새롭게 생겨난 파일입니다. (생성날짜가 대부분 12/4 입니다. 이날 해킹이 이루어진것 같습니다.)

파일목록 캡쳐2
파일목록 캡쳐

3. 해킹 방식 (현실적인 패턴)

대부분 다음 조합입니다:

  • 취약한 플러그인 → 파일 업로드 취약점
  • 또는 FTP 계정 탈취 → 직접 웹쉘 업로드

그리고 거의 공통적으로 등장하는 것이 바로:

👉 웹쉘 + 백도어 + 난독화 코드

4. 실제 감염 사례 분석 (중요)

제가 발견한 index.php, admin.php 파일을 챗GPT에게 분석해달라고 했습니다. 그 결과를 정리해서 올려봅니다.

당신이 제공한 index.php 파일은 매우 전형적인 공격 구조를 가지고 있습니다.

🔥 핵심 특징

1) 난독화된 코드

$O00OO_0_O_=urldecode("%6E1%7A%62%2F...");
  • 문자열을 URL 인코딩 + 인덱싱으로 분해
  • 함수 이름을 숨김

👉 탐지 회피 목적

2) 외부 서버 통신

https://51la.____.xyz/a2.txt
  • 공격자가 운영하는 서버에서 추가 코드 다운로드 (URL의 일부 문자열을 지웠습니다. 혹시나 다운받아 피해받는 사례가 발생할까봐.)

👉 2차 감염 (Trojan Dropper)

3) 웹쉘 생성

admin.php 생성

👉 공격자는 파일 관리자 기능을 가진 웹쉘을 서버에 설치

4) 완전한 웹쉘 UI 포함

$shellName = 'Negat1ve Shell';

이 웹쉘은 다음 기능 포함:

  • 파일 업로드 / 삭제 / 수정
  • 서버 명령 실행 (exec, system)
  • 권한 확인
  • 데이터 유출

👉 즉, 서버 완전 장악 상태

5. 악성 파일 찾는 방법 (실전 명령어 포함)

감염된 특정 파일을 찾기 위하며 몇가지 명령어를 사용했습니다.

🧪 1) 의심 함수 탐지 (가장 중요)

grep -RniE "eval|base64_decode|gzinflate|shell_exec|exec|system|passthru" /var/www

✔ 설명:

  • -R : 재귀 검색
  • -n : 라인 번호 출력
  • -i : 대소문자 무시
  • -E : 정규식 사용

이방식으로 찾다보니, 오래된 테마파일에도 의심되는 난독화 된 파일이 있네요. 가차없이 삭제 했습니다.
난독화 된 파일 일부를 보여드립니다.

난독화 되어있는 파일 화면

디렉토리를 나눠서 검색하기 위하여, 일부 디렉토리는 제외하는 옵션도 물어봤습니다.

🎯 2) 특정 디렉토리 제외

grep -RniE "eval|base64_decode|gzinflate" /var/www \
--exclude-dir=cache \
--exclude-dir=uploads \
--exclude=*.log

특정날짜(2025-12-04)에 생성된 파일이 대량 있어서, 특정날짜 또는 특정 일수 안에 생성된 파일을 찾습니다.

📂 3) 최근 수정 파일 찾기

find /var/www -type f -mtime -7

👉 최근 7일

📅 4) 특정 날짜 파일 찾기 (예: 12월 4일)

find /var/www -type f -newermt "2024-12-04" ! -newermt "2024-12-05"

⏳ 5) 오래된 백도어 탐지 (96~99일 전)

find /var/www -type f -mtime +96 -mtime -99

🚨 6) uploads 폴더 내 PHP 파일 탐지 (매우 중요)

find /var/www/wp-content/uploads -type f -name "*.php"

👉 정상적인 워드프레스에서는 거의 없음 → 있으면 90% 악성


🕵️ 7) 난독화 패턴 탐지

grep -RniE "base64_decode\(|gzinflate\(|str_rot13\(" /var/www

💀 8) 초강력 통합 탐지 명령어

find /var/www -type f \( -name "*.php" -o -name "*.phtml" \) \
-exec grep -HniE "eval|base64_decode|gzinflate|shell_exec|assert|preg_replace.*\/e|urldecode" {} \;

6. 악성코드 제거 방법

🧹 1) 파일 제거

  • 알 수 없는 PHP 파일 삭제
  • 특히 /uploads, /tmp, /wp-includes 주의

🔐 2) 웹쉘 제거 후 재설치

  • 워드프레스 코어 전체 교체
  • 플러그인/테마 재설치

🧨 3) 백도어 제거 (핵심)

웹쉘보다 더 위험한 것이 백도어입니다.

특히 확인:

  • index.php
  • wp-config.php
  • .htaccess

7. 복구 및 검증

ps aux | grep php

👉 이상 프로세스 확인

netstat -antp

👉 외부 연결 확인


8. 재발 방지

🔒 필수

  • 관리자 2FA 적용
  • FTP 대신 SFTP 사용
  • 파일 권한 최소화

🛡️ 추천

  • Wordfence / Sucuri
  • WAF 적용
  • 로그인 제한

9. 핵심 교훈

이번 사례에서 가장 중요한 점:

👉 웹쉘은 시작일 뿐이다

진짜 위험은:

  • 백도어
  • 외부 통신
  • 자동 재감염

10. 마무리

워드프레스 해킹은 흔하지만, 대응 방법은 명확합니다.

✔ 빠른 탐지
✔ 정확한 제거
✔ 철저한 보안

이 세 가지만 지키면 충분히 막을 수 있습니다.


일단 급하게 작성해놓고, 시간 있을때 좀 더 다듬도록 하겠습니다.

Loading