최근 패스트코멧(FastComet)에 호스팅되고 있는 워드프레스 사이트가 멀웨어에 감염되어 호스팅 업체로부터 사이트가 차단되어 악성코드를 제거하여 클라우드웨이즈(Cloudways)로 사이트를 이전하는 작업을 클라이언트께서 의뢰해왔습니다.
이번 작업은 단순히 멀웨어를 제거한 후에 워드프레스를 이전하는 작업을 생각했지만, 김수키가 만든 악성코드와 관련된 것으로 파악되어 여기에 공유해봅니다. 지루한 내용이더라도 양해 바랍니다😄
참고로 패스트코멧은 블루호스트와 비슷한 레벨의 가성비 좋은 해외호스팅입니다. 블루호스트는 미국 서버만 제공하기 때문에 우리나라에서 속도가 느려 사용자들의 불만이 많습니다. 패스트코멧은 도쿄 서버를 제공하므로 우리나라에서 속도가 어느 정도 괜찮은 편입니다. 패스트코멧과 비슷한 레벨의 케미클라우드(ChemiCloud)의 경우 서울 서버를 도입하여 우리나라에서 속도가 빠릅니다.
김수키(Kimsuky) 공격 그룹이 만든 악성코드
패스트코멧에서 멀웨어를 감지하며 해당 사이트에 대한 접근을 차단하게 됩니다. 라이브 채팅으로 연락하면 멀웨어를 제거할 수 있도록 사용자의 IP 주소로 사이트에 접근할 수 있도록 합니다.
일반 사용자들이 사이트에 접속을 시도하면 아래 그림과 같이 403 Forbidden 오류가 발생합니다.

cPanel 정보를 제공받아서 해당 서버에 접속해보니 워드프레스와는 상관이 없는 폴더들이 생성되어 있었습니다.

위의 그림에서 wp-로 시작하는 디렉터리 외에는 정상적인 디렉터리가 아닌 것으로 보입니다.
- attachfile
- mokozy
- ncorp
- public
- room
- totmem
상기 항목에서 특히 주의해서 볼 필요가 있는 폴더는 mokozy입니다. 이 폴더에는 다음과 같은 파일들이 들어 있었습니다.

파일들이 2023년 9월에 생성된 것으로 보아서 적어도 이 시기에 사이트가 악성코드에 감염된 것으로 보입니다.
처음에는 이 파일들이 필요한지 알지 못해서 백업을 하려고 다운로드를 시도해보았습니다. 그런데 안랩 바이러스 프로그램에서 악성코드로 인식하여 파일들을 차단했습니다.

나중에 안 사실이지만, 결론적으로 이 파일들은 악명 높은 북한의 김수키(Kimsuky) 공격 그룹이 만든 것으로 추정되는 악성코드였습니다.
이와 관련하여 안랩 분석팀이 코인 거래소 및 투자 관련 내용으로 위장한 악성코드를 발견하여 작동 방식을 자세히 설명한 기사를 올렸습니다. 요약하면 다음과 같습니다.
이 악성코드는 실행 파일과 Word 문서 형태로 퍼지며, 문서를 열면 악성 URL에서 스크립트를 실행하거나 VBA 매크로가 포함되어 사용자가 내용을 활성화하게 유도합니다. 이로 인해 악성코드가 다운로드되거나 데이터가 도난될 수 있습니다. 특히, 이 메일은 정품 문서처럼 보이는 자가 추출 아카이브 파일을 포함하고 있어 사용자가 속기 쉬운 방식으로 구성되어 있습니다. 이러한 유형의 악성코드는 특히 더 조심할 필요가 있습니다.
악성코드에 감염된 MS 워드 문서나 실행 파일을 실행하면 서버에 있는 mokozy 폴더 아래의 PHP 파일들을 호출하여 실행하게 됩니다.
패스트코멧은 자체 멀웨어 스캔 시스템을 갖추고 있어서 정기적으로 악성코드를 스캔하지만 1년 넘게 이 악성코드를 감지하지 못한 것 같습니다.
참고로 컴퓨터가 악성코드에 감염되어 멀웨어가 서버로 업로드될 수도 있습니다. 그래서 사이트그라운드에서는 사이트 사이트에 멀웨어가 발견될 경우 사이트를 차단하고, 사용자가 멀웨어를 제거하면 사용자의 컴퓨터에도 악성코드가 없다는 것을 증명해야 사이트 차단을 풀어줍니다.
멀웨어 제거 및 사이트 이전
멀웨어에 감염되어 사이트가 차단되면 호스팅 업체에 연락하여 내 IP 주소를 알려주시면 사이트에 접속할 수 있도록 해당 IP 주소의 차단을 해제해줄 것입니다. IP 주소는 네이버에서 "내 IP"를 검색하면 곧바로 확인이 가능합니다.

호스팅 업체에서 해당 IP 주소에 대하여 차단을 해제하면 워드프레스에 접속이 가능합니다. 하지만 플러그인을 설치하거나, 비활성화 또는 삭제하는 등의 작업은 권한 문제 때문에 허용이 되지 않습니다.

저는 FTP를 통해 접속하여 수상한 파일들을 스캔하여 삭제한 후에 다운로드하였습니다. 그리고 DB는 phpMyAdmin에 액세스하여 다운로드했습니다. 패스트코멧은 cPanel을 제공하므로 cPanel에 로그인하여 phpMyAdmin에 접근할 수 있습니다.

악성코드를 모두 제거한 후에 데이터와 DB를 가지고 새로운 호스팅으로 이전할 수 있습니다. 클라우드웨이즈의 경우 새 애플리케이션을 생성한 다음, 사이트를 복구하고 도메인을 연결할 수 있습니다.
가능하면 이전 전 서버의 PHP 버전과 이전 후 서버의 PHP 버전을 비슷하게 맞추어야 사이트 복원 후에 에러가 발생할 가능성이 줄어듭니다.
패스트코멧에서 PHP 버전 7.4가 적용되어 있었습니다.

클라우드웨이즈에 생성된 서버의 PHP 버전도 7.4였습니다.

패스트트코멧이나 클라우드웨이즈에서는 PHP 버전을 쉽게 변경할 수 있습니다. 변경 후 오류가 발생하면 다시 이전 PHP 버전으로 되돌릴 수 있습니다. 이에 반해 카페24에서는 PHP 버전을 7.4에서 PHP 8.2 버전으로 바꾸려면 서버가 변경되므로 백업 & 복원 과정이 필요하여 매우 번거롭습니다.
악성코드는 데이터와 DB 모두에서 체크하여 제거하고, 가능한 경우 사이트를 최신 버전으로 업데이트해야 재발할 가능성이 낮습니다.
사이트 이전 후 서버 다운
사이트를 이전하고 멀웨어를 체크하여 악성코드가 존재하지 않는 것을 확인했습니다. 그리고 클라우드웨이즈의 Malware Protection 페이지에서도 악성코드가 발견되었다는 경고가 표시되지 않았습니다.
며칠 동안 잘 작동했지만 갑자기 사이트가 다운되었고 서버 제공자가 이용약관에 위배되는 의심스러운 활동으로 서버를 일시적으로 차단하는 문제가 발생했습니다. 살펴보니 mokozy 폴더 아래의 특정 PHP 파일에 대한 과도한 접속이 발생했고 서버 제공업체에서 이를 의심스러운 활동으로 간주하여 서버를 정지시켰습니다.
mokozy 폴더를 비롯한 이상한 폴더들은 모두 삭제한 상태였습니다. 아마도 악성코드에 감염된 컴퓨터에서 mokozy 폴더 아래에 있는 파일들을 실행하려고 시도하면서 이를 서버 업체에서 수상한 활동으로 감지한 것 같습니다.
아래의 코드를 추가하여 mokozy 디렉터리로 시작하는 경로에 접속하지 못하게 했습니다.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^mokozy/ - [F,L]
</IfModule>
위의 코드를 추가하면 해당 디렉터리로 시작하는 URL에 접속하려고 시도하면 403 Forbidden 오류 페이지가 표시됩니다.
모든 의심스러운 파일들은 삭제되었고 DB에서도 악성 스크립트가 있는지 체크하여 제거했다는 회신을 하니 반나절 정도 후에 서버 차단이 해제되었습니다.
마치며
워드프레스는 보안에 강하지만 워드프레스, 테마, 플러그인의 업데이트를 소홀히 하거나 보안 관행을 무시하면 보안에 헛점이 생겨 사이트가 해킹되거나 멀웨어에 감염될 수 있습니다. PC도 바이러스 등 악성코드에 감염되지 않도록 조심해야 합니다. 이메일로 전송된 의심스러운 문서를 함부로 열면 컴퓨터가 악성코드에 감염되고, 이는 워드프레스 사이트 해킹이나 멀웨어 감염으로 이어질 수 있습니다.
악성코드를 비롯하여 워드프레스나 웹호스팅 문제로 어려움을 겪는 경우 여기에서 서비스(유료)를 의뢰하실 수 있습니다.
이 글을 읽으니 웹사이트 보안에 대해 다시 생각하게 되네요. 악성코드에 감염되면 정말 큰일이에요. 패스트코멧에서 문제가 발생했다니 놀랍습니다. 저도 사이트를 운영하고 있어서 이런 일은 피하고 싶어요. 클라우드웨이즈로의 이전이 잘 되길 바랍니다. 앞으로는 더 주의해야겠어요.
이 블로그를 통해 항상 백업을 강조하고 있습니다.
그리고 사이트를 최신 버전으로 유지하고, 보안 플러그인을 설치하면 안심할 수 있을 것입니다.