합법적인 플러그인처럼 보이는 악성코드, 워드프레스 사용자 경고

최근 Wordfence 보안팀은 정상적인 워드프레스 플러그인으로 위장한 새로운 유형의 악성코드를 발견하여 자세한 내용을 워드펜스 블로그에 공개했습니다. 이 악성 플러그인은 관리자 대시보드에 표시되지 않도록 설계되어 있으며, 비밀번호 추출, 원격 코드 실행, 지속 감염 유지 기능을 포함한다고 합니다. 사이트에 이상한 증상이 있는 경우 서버에 합법적인 플러그인 이름으로 위장한 악성 플러그인이 숨겨져 있지 않은지 체크해보시기 바랍니다.

합법적인 플러그인처럼 보이는 악성코드, 워드프레스 사용자 경고

합법적인 플러그인처럼 보이는 악성코드, 워드프레스 사용자 경고

워드프레스는 보안에 강하지만 워드프레스 코어, 테마, 플러그인의 업데이트를 소홀히 하거나, 보안 취약점이 있는 테마나 플러그인을 사용하거나, 오랫동안 업데이트가 안 되고 방치되고 있는 테마 또는 플러그인을 사용하거나, 혹은 쉬운 비밀번호를 사용하거나 admin 또는 사이트 도메인 이름을 관리자 아이디로 설정하는 등 보안 관행을 무시하는 경우 멀웨어에 감염되거나 사이트가 해킹을 당할 위험성이 있습니다.

워드프레스 보안 전문업체인 Wordfence는 6월 2일 "Malware Masquerades as Legitimate, Hidden WordPress Plugin with Remote Code Execution Capabilities"라는 블로그 글을 통해 원격 코드 실행 기능을 가진 코드로 정상적인 숨겨진 플러그인으로 위장한 멀웨어에 대하여 자세히 다루었습니다.

이 악성 플러그인은 /wp-contents/plugins/ 경로에 저장되며, WooCommerce Product Add-ons와 같은 이름으로 위장해 사용자에게 신뢰감을 줍니다. 내부적으로는 워드프레스의 핵심 함수가 없을 경우 필요한 파일을 강제로 포함하고, all_plugins 훅을 이용하여 플러그인 리스트에서 자신을 숨깁니다. 이러한 방법은 매우 나쁜 관행으로 여겨지며 악성코드에 흔히 사용된다고 합니다.

add_filter('all_plugins', function($plugins) {
	$plugin_file = plugin_basename(__FILE__);
	if (isset($plugins[$plugin_file])) {
		unset($plugins[$plugin_file]);
	}
	return $plugins;
});

이용하고 있는 워드프레스 플러그인의 파일에 위와 같은 코드가 삽입되어 있다면 멀웨어로 의심해야 할 것 같습니다. 위의 코드에 대하여 챗GPT에게 어떤 기능을 하는지 물어보니 다음과 같이 알려주네요.

이 코드는 워드프레스의 all_plugins 필터에 훅을 추가하여 현재 플러그인 파일(FILE)에 해당하는 항목을 플러그인 목록 배열 $plugins에서 제거합니다. 즉, 워드프레스 관리자 화면의 '플러그인 목록' 페이지에서 이 플러그인이 표시되지 않도록 숨기는 기능을 합니다.

해당 플러그인은 공격자가 제어 서버 URL을 설정할 수 있는 기능도 제공합니다. 설정된 주소는 워드프레스 데이터베이스에 저장되며, 이후 로그인 정보, 쿠키, IP 주소 등이 공격자 서버로 주기적으로 전송됩니다. 특히 custom_reporter_timer 쿠키를 활용해 6시간마다 정보를 수집해 전송함으로써 서버 부담을 줄이고 탐지를 피한다고 합니다.

악성코드에 감염되면 사이트에 과도한 트래픽이 발생하거나 사이트가 매우 느려지는 것이 흔한 현상입니다. 이 멀웨어는 사이트 운영자가 악성코드에 감염되었는지 눈치채지 못하도록 교묘한 이러한 교묘한 방법을 이용하는 것 같습니다.

관리자 로그인 시도 시 수집되는 정보에는 사용자명, 이메일, IP, 브라우저 정보, 쿠키가 포함되며, 이 정보는 Base64 인코딩 후 공격자 서버로 전송됩니다. 전송되는 정보에 패스워드는 포함되지 않지만, 쿠키 정보로 세션 탈취가 가능해 관리자 권한 탈취가 우려됩니다. 해당 악성 플러그인은 authenticate 훅을 이용해 로그인 성공 여부를 감지한 후 추가 정보를 탈취합니다.

이 악성 플러그인은 인증되지 않은 사용자도 이용 가능한 AJAX 훅을 통해 원격 코드 실행이 가능하도록 설계되어 있다고 합니다. PHP의 ReflectionFunction과 system() 호출을 조합한 은닉 기법은 백도어 기능을 감추는 데 효과적입니다. 이 기능은 단순한 코드 실행을 넘어 서버 제어 권한까지 공격자에게 제공할 수 있습니다.

악성 플러그인의 침입 경로는 주로 관리자 계정 탈취로 추정되는데, 워드프레스의 후크 시스템을 활용하기 위해서는 플러그인이 활성화되어야 하기 때문입니다. 악성 플러그인은 다양한 파일명으로 위장하여 배포되며, 예로는 woocommerce-product-addons.php, yoast-seo-pro.php 등 사용자들이 의심하지 않도록 그럴 듯한 정상적인 플러그인의 이름으로 되어 있습니다.

감염 여부를 확인하려면, 플러그인 디렉토리에 단일 파일만 포함된 폴더가 존재하는지, API_SN_CLOUDSERVER 항목이 wp_options 테이블에 존재하는지, custom_reporter_timer 쿠키가 브라우저에 있는지 등을 점검해야 합니다.

이 악성 플러그인은 평범한 플러그인처럼 보이지만, 로그인 정보 탈취, 세션 하이재킹, 원격 코드 실행 등 다양한 악의적 기능을 숨기고 있어 주의가 필요합니다.

마치며

항상 강조하지만 워드프레스 코어, 테마, 플러그인을 가급적 최신 버전으로 업데이트하고 정기적으로 백업하여 PC나 클라우드 저장소 등에 보관하고, Wordfence 등과 같은 보안 플러그인을 설치하여 보안을 강화할 수 있습니다. (클라우드웨이즈를 이용하는 경우 서버 레벨에서 강력한 방화벽이 제공되므로 보안 플러그인을 설치할 필요가 없지만, 보안을 더욱 강화하고 싶은 경우 워드펜스와 같은 플러그인을 설치할 수 있습니다.)

수시로 서버에 접속하여 이상한 이름의 파일이 있는지, 그리고 플러그인 폴더에 설치한 적이 없는 플러그인이 있는지를 체크해 보면 좋을 듯 합니다.

드물지만 외부 작업자(특히 해외 개발자)에게 작업을 맡기는 경우에 악성코드가 주입되기도 합니다.

👉 악성코드 감염을 포함하여 워드프레스 또는 웹호스팅 관련 문제로 해결에 어려움을 겪는 경우 여기에서 서비스(유료)를 의뢰하실 수 있습니다.

참고

댓글 남기기

댓글 남기기