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

.Bt WordPress 악성코드 완벽 가이드 – 방문자를 악성 제약 사이트로 리디렉션하는 해킹의 탐지와 제거 방법

전 세계적으로 가장 널리 사용되는 CMS인 WordPress는 그 인기만큼이나 인터넷상에서 수많은 악성 해킹 공격의 표적이 되고 있습니다. 이러한 공격은 해커의 목적이나 사용되는 난독화 기법에 따라 형태가 다양하지만, 모든 공격에 공통점이 하나 있습니다. 바로 해킹당한 WordPress 사이트가 각종 악의적인 활동의 매개체로 활용된다는 점입니다.

그중 하나가 바로 .Bt WordPress 해킹입니다. 이 이름은 감염 시 WordPress 사이트의 루트 디렉터리 또는 wp-admin, wp-admin/css 디렉터리 아래에 .bt 확장자를 가진 파일을 생성한다는 데서 유래했습니다.

이 글에서는 .Bt WordPress 해킹의 원인, 증상, 탐지 방법, 제거 방법까지 모두 다룹니다. 나아가 악성코드의 작동 원리를 단계별로 상세히 분석하여 이해를 돕겠습니다.

.Bt WordPress 해킹의 주요 원인

.Bt WordPress 해킹으로 이어지는 일반적인 원인은 다음과 같습니다.

  • 오래되었거나 신뢰할 수 없는 플러그인 사용
  • 버그가 있는 테마
  • 구버전 PHP 환경
  • 취약한 비밀번호
  • 서버 설정 오류(미스컨피규레이션)

.Bt WordPress 악성코드 분석

감염 여부를 확인하는 첫 번째 단서는 IP 주소 목록을 담고 있는 .bt 파일입니다. 이 파일을 삭제해도 악성코드 자체가 .bt 파일에 존재하는 것이 아니기 때문에 파일은 다시 생성됩니다. 실제 감염 코드는 일반적으로 다음과 같은 WordPress 핵심 파일에 숨어 있습니다.

  • wp-load.php
  • wp-settings.php
  • /wp-content/themes/<특정 테마>/functions.php
  • /wp-includes/functions.php

이 파일들에 삽입된 악성 코드는 난독화되어 있어 일반적으로 다음과 같은 형태를 띱니다.

코드를 살펴보면, 악성코드는 먼저 의심을 피하기 위해 모든 에러 메시지 출력을 비활성화합니다.

1단계: 악성코드 다운로드

.Bt WordPress 해킹에서 악성 페이로드(payload)는 서버에 저장되어 있지 않고 외부 소스에서 다운로드됩니다. 이를 위해 악성코드는 먼저 PHP의 allow_url_fopen 래퍼가 활성화되어 있는지 확인합니다. 사용할 수 없는 경우에는 PHP의 cURL 라이브러리를 이용해 get_data_ya()라는 함수로 악성 파일을 다운로드합니다. 당시 악성 파일이 다운로드된 URL은 hxxp://lmlink1[.]top/lnk/inj[.]php였습니다.

2단계: 악성코드 난독화

다운로드된 데이터는 간단한 XOR 암호화 방식으로 난독화됩니다. 이 작업은 악성코드의 wp_cd() 함수에서 수행되며, 이 함수는 데이터와 키를 입력값으로 받아 XOR로 암호화된 결과를 반환합니다.

3단계: 악성코드 기록(Write)

암호화된 페이로드가 준비되면 악성코드는 쓰기 가능한 하위 디렉터리를 탐색합니다. 적절한 디렉터리를 찾지 못하면 현재 디렉터리에 기록을 시도합니다.

다운로드된 악성 페이로드는 복호화하면 다음과 같은 형태입니다.

주목할 점은 페이로드에 PHP 시작·종료 태그가 포함되어 있지 않으며, 이 태그들은 하위 디렉터리에 기록되는 과정에서 추가된다는 것입니다.

4단계: 페이로드 실행

페이로드가 성공적으로 하위 디렉터리에 기록되면 PHP의 include() 구문을 통해 실행됩니다. 이 페이로드는 검색 엔진 봇의 IP 주소를 담은 .bt 파일을 생성하고, 아래 코드에서 볼 수 있듯이 제약 스팸(pharma spam) 페이지를 서빙하는 데도 사용됩니다.

.bt 파일은 검색 엔진 봇에게는 스팸을 노출하지 않음으로써 사이트가 블랙리스트에 등재되는 것을 피하기 위한 용도로 추정됩니다. 또한 페이로드는 외부에서 전달받은 악성 명령을 감염된 WordPress 사이트에서 실행하는 기능도 수행합니다.

5단계: 페이로드 삭제

마지막으로 악성 작업이 끝나면 악성코드는 PHP의 unlink() 함수를 사용해 관련 파일들을 삭제하여 흔적을 지웁니다. 이처럼 악성 페이로드를 서버에 보관하지 않고 필요할 때만 다운로드해 사용 후 삭제하기 때문에, 이 악성코드는 오랜 기간 탐지를 회피할 수 있습니다.

.Bt 악성코드 탐지 및 정리 방법

방법 1: .bt 또는 .r 확장자 파일 확인

휴리스틱 점검 방법으로, 서버에 .bt 또는 .r 확장자를 가진 파일이 있는지 확인할 수 있습니다. 파일 관리자의 검색 기능을 이용하세요.

또는 SSH로 서버에 로그인한 뒤 다음 명령어를 실행합니다.

find . -name '*.bt' -print

.Bt WordPress 해킹을 더 확실히 확인하려면 WordPress 파일 내부에서 악성 코드를 검색합니다. SSH 콘솔에서 다음 명령어를 실행하세요.

find . -name "*.php" -exec grep " $ea = '_shaesx_'; $ay = 'get_data_ya'; $ae = 'decode';"'{}'; -print &> list.txt

이 명령어는 결과를 list.txt 파일에 저장합니다. 해당 파일을 열어 악성코드가 발견된 파일을 찾아 악성 부분을 제거하세요. 어떤 부분이 악성 코드이고 어떤 부분이 원본 코드인지 판단하기 어렵다면, 악성 코드만 따로 정리해 둔 참고 자료를 확인한 후 해당 부분만 제거하면 됩니다. 그래도 확신이 서지 않는다면 의심 코드를 주석 처리한 뒤 전문가의 도움을 받는 것이 안전합니다.

방법 2: 핵심 파일 무결성 검사

두 번째 방법은 WordPress 핵심 파일의 무결성을 검사하는 것입니다. SSH로 웹 서버에 로그인한 뒤 아래 단계를 진행하세요.

1단계: 최신 버전의 WordPress를 내려받기 위한 새 디렉터리를 만들고 해당 디렉터리로 이동합니다.

$ mkdir WordPress

$ cd WordPress

2단계: 최신 버전의 WordPress를 다운로드하고 압축을 해제합니다.

$ wget https://github.com/WordPress/WordPress/archive/<latest version>.tar.gz

$ tar -zxvf <latest version>.tar.gz

여기서 <latest version>은 사용 가능한 최신 WordPress 버전으로 교체합니다. 예: https://github.com/WordPress/WordPress/archive/5.3.tar.gz

3단계: diff 명령어로 파일을 비교하여 의심스러운 코드를 찾아냅니다.

$ diff -r path/to/your/file/wp-load.php /Wordpress/wp-load.php

4단계: 악성 코드가 발견되면 직접 제거하거나 전문가의 도움을 받아 제거합니다.

Astra가 도와드립니다!

Astra Security는 저렴한 비용으로 강력한 웹사이트 보호 솔루션을 제공하며, .Bt WordPress 해킹을 탐지하고 차단할 수 있습니다.

궁금한 점이 있으신가요? 댓글창으로 질문을 남겨주시거나 보안 전문가와 채팅 상담을 받아보세요. 빠르게 답변해 드리겠습니다. :)