실제로 백도어(backdoor)는 개발자가 웹사이트에 접근하기 위한 합법적인 수단으로 사용되기도 합니다. 하지만 백도어를 만드는 사람이 개발자든 해커든, 웹사이트 보안에는 언제나 잠재적인 위협이 될 수 있습니다.
웹사이트 백도어 탐지 방법
일반적으로 웹사이트 백도어를 탐지하는 것은 결코 쉬운 일이 아닙니다. 백도어는 정상적인 파일과 데이터베이스 사이에 매우 교묘하게 숨겨져 있기 때문입니다. 대부분의 백도어는 정상 코드로 오인되기 쉬워 탐지가 까다로우며, 바로 이 점을 역이용해 관리자의 주의를 피합니다.
웹사이트 백도어 검사 도구를 먼저 활용해 보는 것도 좋은 방법입니다.
조금 더 깊이 들어가, 실제로 어떤 종류의 백도어들이 존재하는지 살펴보겠습니다. 백도어는 크게 다음과 같은 유형으로 분류할 수 있습니다.
복잡한 다중 라인 백도어
여러 줄의 코드로 구성된 웹사이트 백도어는 규모가 크고 복잡한 코드에 해당합니다. 대표적인 예시는 다음 코드 스니펫과 같습니다.
때로는 해커가 탐지를 더욱 어렵게 만들기 위해 코드를 의도적으로 난독화(obfuscation)하기도 합니다. 그 사례는 아래와 같습니다.
간단한 한 줄짜리 백도어
기본 명령어만을 사용하는 한 줄짜리 코드는 단순 백도어라고 부릅니다. 아래 코드는 해커가 웹사이트 서버에서 명령을 실행할 때 활용하는 전형적인 예입니다.
CMS 특화 백도어
최근 사례에서 확인할 수 있듯이, PHP 기반 CMS는 사이버 공격과 백도어 삽입의 주요 표적이 되고 있습니다. 예를 들어 다음 코드는 해커가 텍스트 파일의 내용을 다운로드한 뒤 WordPress의 /wp-includes/class.wp.php 경로에 업로드하는 대표적인 공격手法입니다.
웹사이트에서 백도어 제거하는 방법
웹사이트에서 멀웨어를 제거하고 해킹 이후 필요한 조치를 마쳤다면, 가장 많이 놓치기 쉬운 단계가 바로 백도어를 찾아 제거하는 일입니다. 멀웨어 감염은 재감염되는 경향이 있기 때문에 멀웨어만 제거해서는 충분하지 않습니다. 백도어 제거는 멀웨어 제거만큼 중요하며, 이를 통해 공격자가 활용할 수 있는 모든 잠재적 진입 경로를 차단할 수 있습니다.
관련 글: WordPress 백도어 해킹, PHP/ApiWord 백도어
다음 기법들은 웹사이트에서 백도어를 제거하는 데 매우 유용합니다.
1. 화이트리스팅: 정상 파일과 비교 검증
모든 파일(코어, 플러그인, 테마 파일 포함)을 백업 저장소의 정상 파일과 비교하는 것이 효과적입니다. 정상 파일은 체크섬(checksum)이라 불리는 고유한 숫자형 시그니처를 가지고 있으며, 파일의 체크섬을 확인하면 현재 파일에 멀웨어가 없는지 여부를 판별할 수 있습니다.
또한 WordPress, Drupal, Magento, OpenCart 등 모든 CMS는 고유한 코어 파일 세트를 가지고 있습니다. 현재 운영 중인 파일을 이와 비교하면 코어 파일에 허가되지 않은 수정이나 낯선 코드가 추가되었는지 확인할 수 있습니다.
2. 블랙리스팅: 알려진 악성 코드 차단
다행히 이미 수백 가지의 일반적인 웹사이트 백도어가 식별되어 있기 때문에 백도어를 찾는 작업 자체는 크게 어렵지 않습니다. 이들을 사전에 블랙리스트에 등록해 두면 문제의 절반은 해결됩니다. 이를 통해 웹사이트에 백도어를 삽입하려는 악의적인 시도를 선제적으로 차단할 수 있으며, 해당 백도어 목록은 온라인에서 쉽게 확인할 수 있습니다.
3. 미확인 파일 스캔: 낯선 파일 직접 점검
위 두 가지 방법으로 코드 스니펫이나 파일을 분류하기 어렵다면, 해당 파일 안의 함수와 명령어를 하나씩 직접 확인해야 합니다. 정상적인 코드라면 승인하고, 원본과 비교했을 때 낯선 코드라면 과감히 제거하는 것이 안전합니다.
백도어 재발을 방지하는 방법
성공적으로 웹사이트에서 백도어를 제거했다면, 이번에는 재발 방지가 관건입니다. 재감염으로부터 사이트를 보호하는 데 큰 도움이 되는 핵심 팁을 정리했습니다.
- 해킹 제거 후에는 플러그인, 테마, 확장 프로그램을 반드시 최신 버전으로 업데이트하세요.
- 모든 비밀번호를 재설정하고, 강력한 비밀번호만 사용하세요.
- 웹 방화벽(WAF)을 도입해 웹사이트에 추가 보호 계층을 구축하세요.
- 멀웨어 스캐너를 활용해 사이트의 이상 징후를 정기적으로 점검하세요.
- 서버 및 CMS 소프트웨어를 항상 최신 상태로 유지하세요.
결론
백도어는 웹사이트에 더 큰 문제가 도사리고 있다는 신호일 수 있습니다. 여러 스팸 페이지로 리디렉션하는 해킹일 수도 있고, 웹사이트가 광범위한 공격의 거점으로 악용되어 공격자가 접근 권한을 유지하려는 경우일 수도 있습니다. 다소 두렵게 느껴질 수 있지만 분명한 해결책이 존재합니다. 소중한 웹사이트에 대한 공격 여부를 직접 점검하거나, 전문가의 도움을 받아 정확히 진단하는 것이 좋습니다.
이제 백도어의 개념과 탐지·제거 방법, 재발 방지 전략까지 모두 파악했습니다. 그럼에도 불구하고 웹사이트가 사이버 공격의 연결고리로 악용되지 않도록 지속적으로 모니터링하는 습관이 무엇보다 중요합니다.