최근 데이터베이스에서 이상한 점을 발견하셨나요? 출처를 알 수 없는 테이블이 생겼거나, options 테이블에 낯선 URL이 등장했다면 주의해야 합니다.
이것은 바로 데이터베이스 해킹의 전형적인 징후입니다.
워드프레스 데이터베이스는 웹사이트의 모든 정보를 저장하는 핵심 공간입니다. 데이터베이스가 해킹당하면 해커는 정보를 탈취하거나, 웹사이트를 다른 사이트로 강제 리디렉션하는 등 심각한 피해를 일으킬 수 있습니다.
하지만 너무 걱정하지 마세요. 데이터베이스 감염은 워드프레스 운영자들이 흔히 겪는 문제이며, 충분히 복구할 수 있습니다. 다만 즉시 검사와 청소 작업을 진행해야 합니다.
복구 방법은 두 가지입니다. 직접 수동으로 검사·제거하는 방법과 보안 플러그인을 활용하는 방법입니다.
수동으로 악성코드를 제거하려면 데이터베이스에 대한 전문 지식이 필요하고, 작업 시간도 오래 걸립니다. 따라서 수동 방식은 기술적 전문성을 갖춘 사용자에게 적합합니다.
반면 기술 지식이 없는 사용자라면 보안 플러그인 사용이 가장 좋은 선택입니다.
이 글에서는 플러그인으로 워드프레스 데이터베이스의 악성코드를 검사하는 단계별 방법을 소개하고, 수동으로 진행하고 싶은 분들을 위한 절차도 함께 안내합니다.
핵심 요약: 웹사이트를 정상화하려면 MalCare로 즉시 데이터베이스를 검사하세요. 몇 분 안에 악성코드를 찾아내고 데이터베이스를 청소할 수 있으며, 향후 해킹 시도로부터 사이트를 보호하는 예방 조치도 함께 제공됩니다.
워드프레스 데이터베이스란 무엇인가?
데이터베이스는 워드프레스 웹사이트의 데이터를 저장하는 디지털 창고입니다. 어떤 CMS로 만들어졌든 모든 웹사이트에는 데이터베이스가 존재합니다.
워드프레스는 웹사이트를 구축할 때 자동으로 데이터베이스를 생성하며, 이때 MySQL이라는 데이터베이스 관리 소프트웨어를 사용합니다.
MySQL 데이터베이스의 핵심 기능은 두 가지입니다. 바로 데이터 저장과 데이터 불러오기입니다.
예를 들어 글이나 페이지를 발행하면 해당 내용은 데이터베이스에 저장되고, 방문자가 그 글에 접속하면 워드프레스가 데이터베이스에서 내용을 가져와 화면에 표시합니다.
참고: 워드프레스 파일도 웹사이트 데이터를 저장한다는 것을 아시는 분들이 계실 겁니다. 맞는 말이지만, 워드프레스 파일과 데이터베이스는 서로 다른 종류의 데이터를 담습니다. 이 차이를 이해하려면 '워드프레스 웹사이트 구조 초보자 가이드'를 읽어보시길 권합니다.
워드프레스 데이터베이스는 호스팅 계정을 통해 접근할 수 있습니다. 원칙적으로 웹사이트 소유자만 접근 권한을 가지며, 호스팅 계정 정보를 다른 사람에게 공유하지 않는 한 외부인은 들어올 수 없습니다. 하지만 해커들은 웹사이트의 보안 취약점을 악용해 데이터베이스에 침입하는 우회 경로를 찾아냈습니다. 다음 섹션에서 데이터베이스가 해킹되는 과정을 살펴보겠습니다.
워드프레스 데이터베이스는 어떻게 해킹당할까?
해커가 워드프레스 데이터베이스에 접근하는 대표적인 방법은 두 가지입니다.
1. SQL 인젝션(SQL Injection) 공격
2. 무차별 대입(Brute Force) 공격
1. SQL 인젝션 공격
대부분의 워드프레스 사이트는 방문자가 댓글을 달거나 관리자에게 문의를 남길 수 있도록 되어 있습니다. 이처럼 사용자가 직접 텍스트를 입력하는 영역을 '입력 필드(input field)'라고 부릅니다.
입력 필드가 올바르게 설정되지 않으면 해커에게 악용될 소지가 있습니다. 해커는 댓글 대신 악성 코드를 삽입할 수 있습니다.
사이트에 제출된 댓글은 데이터베이스에 저장되기 때문에, 악성 코드도 함께 데이터베이스로 유입되어 해커에게 침입 통로를 열어주게 됩니다.
실제 사례로 Booking Calendar 워드프레스 플러그인의 SQL 코드 인젝션 취약점을 들 수 있습니다. 이 취약점을 통해 공격자는 잘못된 SQL 명령을 데이터베이스에 전달할 수 있었고, 그 결과 데이터베이스의 정보를 열람할 수 있었습니다.
2. 무차별 대입 공격
워드프레스 데이터베이스는 호스팅 계정에 로그인하면 접근할 수 있습니다.
해커는 무차별 대입 공격을 통해 계정의 사용자명과 비밀번호를 추측하려 시도합니다.
사용자명이 'admin', 비밀번호가 'password123'처럼 쉽게 유추 가능한 조합이라면 계정이 뚫릴 위험이 매우 높습니다. 호스팅 계정에 침입한 해커는 곧바로 데이터베이스를 악용하기 시작합니다.
데이터베이스 해킹이 의심된다면 즉시 웹사이트 보안 조치를 취해야 합니다. 여기에는 데이터베이스 검사와 청소가 포함되며, 다음 섹션에서 그 방법을 자세히 안내합니다.
워드프레스 데이터베이스 악성코드 검사 및 청소 방법
워드프레스 데이터베이스를 검사하고 청소하는 방법은 수동 방식과 플러그인 활용 방식 두 가지가 있습니다. 두 방법 모두 소개하겠습니다.
플러그인으로 데이터베이스 검사 및 청소하기
모든 보안 플러그인이 데이터베이스 속 악성코드를 찾아 제거할 수 있는 것은 아닙니다. 일반적인 보안 플러그인에는 다음과 같은 한계가 있습니다.
- 탐지 범위의 한계: 데이터베이스 속 악성코드는 어디에든 숨어 있을 수 있습니다. 대부분의 보안 플러그인은 악성코드가 주로 발견되는 위치만 확인하기 때문에, 그 외 곳에 숨은 악성코드는 놓치게 됩니다.
- 구식 탐지 방식: 많은 플러그인이 서명(signature) 또는 패턴 매칭 방식에 의존합니다. 이 방식으로는 이미 알려진 악성코드만 찾을 수 있으며, 새롭거나 복잡한 형태의 악성코드는 탐지하지 못합니다.
- 느린 처리 속도: 일부 보안 플러그인은 청소까지 몇 시간에서 며칠이 걸립니다. 해킹 당한 상황에서는 시간이 생명입니다. 청소가 지연되면 호스팅 업체가 사이트를 정지시키거나, 구글이 사이트를 블랙리스트에 올리는 등 상황이 눈덩이처럼 커질 수 있습니다.
이런 문제에서 자유로운 플러그인이 필요하며, MalCare가 대표적인 예입니다.
MalCare는 낡은 서명·패턴 매칭 방식 대신 코드의 패턴과 동작을 분석해 악성 여부를 판단합니다. 덕분에 신종 및 복잡한 악성코드도 찾아낼 수 있습니다.
또한 악성코드가 주로 숨는 위치에만 머물지 않고, 데이터베이스 구석구석을 샅샅이 조사하며 수상한 동작을 추적합니다. 웹사이트에 악성코드가 있다면 MalCare가 반드시 찾아냅니다.
MalCare 보안 플러그인으로 검사 및 청소하기
아래 단계별 가이드를 따라 워드프레스 사이트를 검사하고, 감염이 발견되면 청소하세요.
1단계: MalCare 보안 플러그인을 다운로드하여 설치합니다. MalCare 대시보드에 사이트를 추가하면 즉시 워드프레스 악성코드 검사가 시작됩니다.
2단계: 검사가 완료되면 MalCare가 데이터베이스에서 악성코드 발견 여부를 알려줍니다.
참고로 이 플러그인은 파일과 데이터베이스를 모두 검사하므로, 수상한 파일이 발견되면 그 사실도 함께 알려줍니다. 실제 검사한 사이트에서는 MalCare가 해킹된 파일 17개와 데이터베이스 속 악성 스크립트 1개를 발견했습니다.
3단계: 사이트에 악성코드가 있다면 최대한 빨리 제거해야 합니다. MalCare는 즉시 악성코드 제거 기능을 제공합니다. 대시보드에서 Auto-Clean(자동 청소) 버튼을 클릭하면 플러그인이 청소를 시작합니다.
데이터베이스 청소에는 몇 분 정도 소요되며, 완료되면 MalCare 대시보드에서 알림을 받을 수 있습니다.
수동으로 데이터베이스 검사 및 청소하기
수동 검사와 청소는 시간이 많이 걸리고, 숨어 있는 악성코드를 놓칠 가능성도 큽니다. 게다가 청소 중 실수로 잘못된 테이블을 삭제하거나, 악성이 아닌 코드를 제거하면 웹사이트 전체가 망가질 수 있습니다.
이런 이유로 플러그인을 활용한 검사·청소를 강력히 권장합니다. 그럼에도 수동 방식에 도전하고 싶다면, 반드시 먼저 워드프레스 사이트 전체 백업을 진행하세요. BlogVault 같은 백업 플러그인을 사용하면 됩니다. 문제가 생기더라도 백업본을 복원해 사이트를 빠르게 되살릴 수 있습니다.
데이터베이스에서 악성코드를 나타내는 대표적인 지표는 두 가지입니다. 악성 PHP 함수와 출처 불명의 링크 또는 iFrame입니다. 각각을 수동으로 확인하는 방법을 소개합니다.
- 악성 PHP 함수: base64_decode, gzinflate, error_reporting(0), shell_exec 같은 잠재적 위험 코드가 존재하는지 확인하는 것이 일반적인 감염 식별 방법입니다. 단, 이 방식에는 단점이 있습니다. 이런 코드가 반드시 악성인 것은 아니며, 때로는 개발자가 특정 기능을 실행하기 위해 정상적으로 사용하기도 합니다.
- 출처 불명의 링크 또는 iFrame: 해커는 사이트 소유자가 알아채지 못하도록 위장한 링크와 iFrame을 삽입합니다. 이를 찾으려면 웹사이트 코드를 직접 검토하는 것이 좋습니다. Online cURL 같은 도구를 사용해 사이트 코드를 출력하고, 원치 않는 코드나 의약품 이름처럼 수상한 텍스트가 없는지 꼼꼼히 살펴보세요.
데이터베이스에서 악성코드 흔적을 발견했다면 청소를 진행해야 합니다. 청소란 깨끗한 데이터베이스 사본으로 복원하는 것을 의미하며, 이는 평소 워드프레스 데이터베이스 백업을 해두었을 때만 가능합니다. 복원할 깨끗한 백업본이 없다면 백업 플러그인 사용을 권장합니다.
여기까지가 워드프레스 데이터베이스의 악성코드 검사 및 청소 과정입니다.
워드프레스 데이터베이스를 내보내야 한다면, '워드프레스 데이터베이스 내보내기 방법' 가이드를 참고하세요.
마무리
데이터베이스 해킹은 보안을 더욱 진지하게 생각해야 한다는 경고음일 수 있습니다. 지금은 위기에서 벗어났더라도, 다시 해킹당하지 않으리라는 보장은 없습니다. 유사한 공격의 재발을 막으려면 워드프레스 보안 조치를 마련하고, 보안 플러그인을 설치해 데이터베이스를 정기적으로 검사하는 것이 가장 좋습니다. 보안 플러그인은 악성코드 탐지와 청소는 물론, 미래의 해킹 시도로부터 웹사이트를 지키는 보호 장치까지 제공합니다.
지금 바로 MalCare 보안 플러그인을 사용해 보세요!