모든 게시물

해킹/악성코드 삽입/리디렉션: 격리 및 안전복구를 위한 체크리스트

webdesignSeptember 8, 2025·#Web Design

웹사이트 해킹/악성코드 삽입/리디렉션 시 대응 플레이북: 검역 - 정리 - SEO 복원부터 재감염 방지를 위한 보안 강화까지.

해킹/악성코드 삽입/리디렉션: 격리 및 안전복구를 위한 체크리스트

웹사이트가 해킹/악성코드 삽입/이상한 리디렉션을 당했을 때 1차 목표는 '즉각적으로 아름답게 만드는 것'이 아니라 격리 - 증거 수집 - 안전하게 복원한 다음 강화하여 재감염을 방지하는 것입니다. 다음은 P1 → P2 → P3 우선순위 순으로 즉시 적용할 수 있는 실제 전투 플레이북입니다.

명확한 책임자와 SLA P1 ≤ 2–4h 구조 프레임워크가 필요한 경우 호치민 웹사이트 유지관리 서비스(문제 해결, 복구 및 강화 플레이북)를 참조하세요. 호치민 웹사이트 유지관리 서비스.

1) 빠른 식별(5~10분)

공통 기호

  • 자동으로 익숙하지 않은 페이지로 리디렉션(특히 Google/di에서 액세스할 때) 동적).

  • 특이한 깨진 인터페이스, 이상한 팝업/iframe 삽입, 일본어/제약 링크 삽입.

  • 갑자기 서버 CPU/IO 증가, 이메일/호스팅에서 멀웨어를 보고합니다.

  • Google Search Console에서 보안을 보고합니다. 문제(멀웨어/사기성 콘텐츠), 세이프 브라우징은 '유해한 웹사이트'를 경고합니다.

  • 로그에 비정상적인 404/5xx가 많이 기록되고, 무차별로 로그인합니다.

범위 결정

  • 전체 사이트 또는 일부(블로그, /wp-content/uploads, 테마/플러그인)?

  • Google/모바일 클라이언트만 또는 모두?

  • 프로덕션 또는 스테이징의 영향을 받나요?

2) P1 – 증거 격리 및 보존(0–60 분)

목표: 확산 방지, 조사를 위한 현상 유지, 복구 phục lùu thông an toàn.

  1. Bật chế độ cách ly

  • Tạm 공개 비밀번호 trên 서버/ngăn truy cập IP(nếu có thể).

  • Hoặc trả 503 유지 관리 cho c đuan dẫn công cộng(đừng 302/301).

  • WordPress의 경우: 정적인 유지 관리 페이지를 설정합니다(동적 PHP를 실행하지 않음).

  1. 터치하기 전에 포렌식을 백업하세요

  • 스냅샷 전체 소스 코드 + DB + 로그 (웹, PHP-FPM, WAF/CDN) 나중에 확인을 제어합니다.

  • 사본을 오프사이트에 저장합니다(오프사이트).

  1. 키 변경 및 세션 무효화

  • 비밀번호 변경 (호스팅/SSH/DB/CMS/FTP), 2FA.

  • 취소 API 토큰(CDN, 결제, SMTP), 세션 무효화(모두 로그아웃).

  1. 이상한 항목 격리 process

  • 일시적으로 의심스러운 cron을 중지하고, 프로세스 PHP/이상한 명령을 종료하고, 쉽게 삽입된 디렉터리(예: /uploads)에 대한 쓰기를 일시적으로 잠급니다.

P1 단계의 목표는 출혈을 멈추는 것입니다. 조사에 사용할 사본이 없다면 서두르지 마세요.

3) P2 - 원인 조사 및 정리(2~6시간)

3.1 진입점 결정(공격 벡터)

  • 고유한 관리자 계정, 외국에서 로그인 시도 IP?

  • 플러그인/테마가 방금 업데이트되었나요?

  • PHP를 /uploads, /temp에 업로드하거나 .htaccess가 손상되었나요?

  • DB 삽입: 이상한 콘텐츠 wp_options, siteurl/home, 포스트 메타, 메뉴.

3.2 악성 코드 서명 확인(IOC – 침해 지표)

  • 일반적인 PHP 패턴: eval(base64_decode(...)), gzinflate, str_rot13, preg_replace('/e', ...), assert($_POST...).

  • 의심스러운 파일: /wp-includes/의 가짜 wp-*.php, 임의의 파일 이름 .ico/.jpg이지만 PHP, /wp-content/mu-plugins/의 cron/백도어 포함 또는 /wp-content/sessions/.

  • .htaccess user-agent/referrer에 따라 리디렉션 규칙을 추가합니다(Google/모바일에서 오는 경우에만 리디렉션).

3.3 안전한 순서로 정리

  1. 동결 쓰기 권한(기술자만 권한).

  2. 메인 소스에서

    코어(WP 코어, CMS 코어) 교체

  3. 제거 사용하지 않거나 의심스러운 플러그인/테마.

  4. 깨끗하게 설치 나머지 플러그인/테마(원본 버전 다운로드).

  5. 스캔 & 제거:

    • 파일 수준 검사: 악성 코드 샘플을 찾고 체크섬을 깨끗한 버전과 비교합니다.

    • DB 수준 검사: options/posts/meta/terms에서 이상한 스크립트를 찾습니다.

  6. 삭제 webshell/backdoor(숨겨진 PHP 파일, 이상한 파일 확장자).

  7. .htaccess/nginx conf 정리(이상한 리디렉션 규칙 제거, 기본 재작성 유지) 버전).

  8. 재생성 솔트, 키(WP AUTH_KEY, SECURE_AUTH_KEY…), 모든 비밀번호 변경.

3.4 '스마트' 리디렉션 확인

  • Google/mobile에서 액세스(다른 UA 사용) UA/리퍼러에 따라 규칙을 탐지합니다.

  • 정리 전과 후의 로그를 일치시키고 머니 페이지 URL에 대해 HTTP 200 표준을 보장합니다.

4) P3 – 서비스 복원 및 SEO 정리(1~3일)

4.1 개방형 제어 access

  • 유지 관리/503을 언로드하고 필요한 경우 사이트를 부분적으로 활성화합니다.

  • 처음 48~72시간 동안 WAF/CDN을 '엄격' 모드로 유지합니다(공격 패턴 차단).

4.2 SEO 복원 신호

  • Google Search Console에서 정리 후 보안 문제를 열고 검토 요청을 엽니다(간단한 설명: "악성 코드 제거, 코어/플러그인 교체, 키 변경, WAF 활성화").

  • 제거 정크 URL(해커가 스팸 페이지를 많이 생성하는 경우) 제거 도구 또는 합리적인 방법을 통해 410/301.

  • 사이트맵 정리를 다시 보냅니다. 적용 범위(404/Soft 404/대체 표준)를 확인하세요.

  • robots.txt를 다시 비교하세요(격리 후 실수로 차단하지 않도록 주의하세요).

4.3 7~14일을 면밀히 모니터링

  • 5xx/CPU/IO 차트, 로그인 번호 실패, 이상한 국가 트래픽.

  • 핵심 웹 바이탈(무거운 스크립트를 가져오는 악성 코드 방지), GSC의 CTR/노출

거래가 있는 사이트의 경우 결제 웹훅을 확인하고 결제 테스트(샌드박스/실질적으로 작음) 주문 주기가 변경되지 않도록 합니다.

5) 재감염 방지를 위한 강화(1주차)

인프라 계층

  • WAF/CDN(Cloudflare/…): Bot Fight 활성화, 공격 국가 차단, 속도 제한 /wp-login.php, /xmlrpc.php, 민감한 경로에 챌린지를 적용합니다.

  • TLS 1.2+, HSTS, HTTP/2/3를 활성화합니다.

애플리케이션 레이어

  • 프로세스 업데이트: 스테이징 → 테스트 → 프로덕션, 예 롤백.

  • 플러그인/테마 제거 nulled; 플러그인 수를 최소화합니다.

  • 대시보드에서

    파일 편집을 비활성화합니다(WP DISALLOW_FILE_EDIT).

  • FTP/DB/CMS에 대한 최소 권한을 분산화합니다. 별도의 CI/CD 계정.

  • XML-RPC 비활성화/제한, 관리자용 2FA 활성화, 로그인 URL 변경(해당되는 경우).

보안 구성 레이어

  • 콘텐츠 보안 정책 (CSP): 화이트리스트 도메인 스크립트/img/font.

  • X-Frame-Options / Permissions-Policy / Referrer-Policy.

    • (업데이트, 404/301 정리, 맬웨어 검사, CWV, 로그).

    • 콘텐츠 팀에게 피싱, 미디어/스크립트 업로드 규칙을 교육합니다.

    월별 유지 관리 로드맵(업데이트된 체크리스트, 반복되는 오류 정리, 빠른 감사/기술 SEO)이 필요한 경우 깨끗하고 & 안정적인 웹사이트, Tan Phat Digital 팀이 구축한 월간 웹사이트 유지 관리 프로세스: 웹 유지 관리 서비스를 참조하세요.

    6) 커뮤니케이션 및 법률(놓치지 마세요) 잊어버리세요)

    • 사용자에게 투명한 알림(수준은 영향을 받는 데이터에 따라 다름).

    • 위험에 처한 사용자 그룹에 대해 비밀번호 변경을 강제합니다. 이전 로그인 토큰을 무효화합니다.

    • 결제/PCI/PII, 법률 상담 및 규제 보고 준수와 관련된 경우.

    7) 자주 묻는 질문(FAQ)

    "일본/제약"에 의해 해킹되었으므로 파일 정리만으로 충분합니까?
    일반적으로 아닙니다. 이 양식은 주로 DB 삽입(메타, 옵션, 메뉴)입니다. 파일 + DB를 검색하고, .htaccess를 편집하고, 를 다시 생성한 다음 WAF를 켜야 합니다.

    백업을 복원하고 완료해야 합니까?
    복원은 깨끗한 시작점에 도움이 되지만, 공격 벡터가 다루어지지 않으면(결함 있는 플러그인, 유출된 키) 사이트는 재감염되기 쉽습니다. 복원 후 항상 강화합니다.

    Google에서 '유해한 웹사이트' 경고를 제거하는 데 얼마나 걸리나요?
    보통 검토 요청24~72시간이 걸리고 정말 깨끗합니다.

    Google/모바일에서 접속할 때만 리디렉션하고 직접 접속하지 않고 → 해킹하는 걸까요?
    가능성이 매우 높습니다. 공격자는 종종 UA/Referrer 조건을 사용하여 숨어 있습니다. .htaccess를 확인하고, 스크립트와 로그를 삽입하세요.

    8) 요약 체크리스트(인쇄하여 벽에 붙여넣기)

    P1 – 격리

    • 503/유지 관리, 일시적으로 공개 차단

    • 스냅샷 코드 + DB + 로그(오프사이트)

    • 공식

    • webshell/backdoor 검사 및 삭제, .htaccess/nginx

      정리
    • DB 검사(옵션/게시물/메타), siteurl/home 수정

    • 재생성 salts/keys, 모든 비밀번호 비밀번호 변경

    P3 – 복구 및 SEO

    • 사이트 열기, 엄격한 수준에서 WAF/CDN 활성화

    • 검토 요청 GSC에서 제출, 깨끗하게 제출 사이트맵

    • 제거/410 정크 URL, 로봇/범위 확인

    강화

    • CSP, HSTS, 보안 헤더, 2FA, 최소 권한

    • 스테이징으로 일정 업데이트, 백업 3–2–1, 복원

      테스트
    • 가동 시간 모니터링/5xx, 무결성 검사, 감사 로그

공유

댓글

0.0 / 5(0 개의 평가)

댓글을 남기려면 로그인하세요.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요.