Magento·OpenCart 신용카드 하이재킹이란?
신용카드 맬웨어(Credit Card Malware), 일명 '신용카드 하이재킹'은 Magento나 OpenCart 기반 쇼핑몰에 악성 PHP/JavaScript 코드가 삽입되어 해커가 결제 과정에서 고객의 신용카드 정보를 몰래 가로채는 공격입니다. 이러한 새로운 결제 사기 수법은 무려 6개월 동안도 탐지되지 않은 채 운영될 만큼 은밀하며, 실제로 Magento 결제 보안을 노린 해킹 사례가 다수 보고되고 있습니다.
신용카드 맬웨어 하이재킹의 주요 증상
Magento, OpenCart 같은 이커머스 플랫폼이 널리 사용되면서 맬웨어 감염 사고 역시 꾸준히 늘고 있습니다. 해커와 사이버 범죄자들은 이들 CMS의 코어 파일을 변조해 쇼핑몰 고객들의 신용카드 정보를 탈취합니다. 이런 해킹의 대표적인 증상은 다음과 같습니다.
- 고객의 신용카드로 부정 거래(허위 결제)가 발생함
- 스토어에서 상품 구매 시도 시 오류 발생
- 결제(checkout) 과정이 느려지거나 중간에 멈춤
- 웹사이트에서 출처를 알 수 없는 팝업과 메시지 표시
- 관리자 페이지 로그인이 평소보다 오래 걸림
아래는 해커가 삽입한 악성 코드의 스크린샷입니다.
고객이 결제 페이지에 접속하면 이 악성 코드는 입력된 모든 데이터를 인코딩한 뒤 해커의 서버로 전송합니다. 아래는 인코딩된 신용카드 맬웨어 코드의 스크린샷입니다.
결제 게이트웨이 해킹으로 인한 피해
이 공격은 매우 표적화된 성격을 지니며, 주로 Magento와 OpenCart로 운영되는 이커머스 스토어에 영향을 미칩니다. 맬웨어는 다음과 같은 민감한 정보를 수집해 해커가 관리하는 서버로 전송합니다.
- 신용카드(CC) 정보
- 신용카드 번호
- 신용카드 보안 코드(CVV)
- 유효기간
- Magento 관리자의 로그인 활동 내역이 해커에게 전달됨
- 사용자의 개인 식별 정보
- 계정 비밀번호
- 고객 IP 주소
- 결제자 성명(청구서 이름)
- 이메일
- 주소
- 전화번호
- 생년월일
- Magento/OpenCart 스토어의 서버 정보
웹 애플리케이션 방화벽(WAF)은 이커머스 스토어에 반드시 필요한 보안 장치입니다. 웹사이트로 유입되는 모든 트래픽을 감시하고 정상적인 요청만 웹 서버로 통과시킵니다. 지금 Astra로 이커머스 웹사이트를 안전하게 보호하세요.
Magento/OpenCart 스토어의 신용카드 맬웨어 해킹 제거 방법
대부분의 맬웨어 스캐너가 이런 유형의 맬웨어를 놓치기 때문에 작업이 다소 까다로울 수 있습니다. 이러한 공격은 매우 표적화되어 있고 스토어마다 형태가 달라지기 때문입니다.
신용카드 하이재킹 1단계: 변조되었을 가능성이 있는 코어 시스템 파일 확인
악성 코드가 실제로 발견된 파일 목록을 정리했습니다. 서버에 로그인하여 아래 파일들이 최근에 수정되었는지 확인하세요.
Magento 1.9.X
- app/code/core/Mage/XmlConnect/Block/Checkout/Payment/Method/Ccsave.php
- app/code/core/Mage/Customer/controllers/AccountController.php
- app/code/core/Mage/Payment/Model/Method/Cc.php
- app/code/core/Mage/Checkout/Model/Type/Onepage.php
OpenCart 1.5 / 2.0
- catalog/controller/extension/payment/pp_payflow.php
- catalog/controller/extension/payment/pp_pro.php
- catalog/controller/extension/payment/authorizenet_aim.php
- catalog/controller/extension/payment/sagepay_us.php
- catalog/controller/extension/credit_card/sagepay_direct.php
아래는 PHP의 cURL을 이용해 민감한 고객 정보를 외부로 전송하는 악성 코드 조각입니다.
신용카드 하이재킹 2단계: 최근 수정된 파일 점검
SSH로 웹 서버에 접속한 후 아래 명령어를 실행해 가장 최근에 수정된 파일을 찾습니다.
find /path-of-www -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r
이 명령은 최근 수정된 파일의 경로를 반환합니다. 해당 파일들을 텍스트 편집기로 열어 수상한 코드가 있는지 확인하세요. 때때로 해커는 코어 파일에 JavaScript 코드를 삽입하기도 하는데, https://smartnetworkclick.com/js/analytics.min.js 처럼 외부에 호스팅된 스크립트가 그 예입니다.
Astra 고객이라면 악성 파일 변경 사항을 알려주는 이메일 알림을 받게 되므로 빠른 대응이 가능합니다.
신용카드 하이재킹 3단계: 서버에서 웹셸·백도어 파일 검색
해커는 서버에 대한 접근 권한을 유지하기 위해 웹셸(web-shell)이나 백도어를 업로드해 두었다가, 나중에 새로운 악성 파일을 추가로 올릴 수 있습니다. 앞선 단계와 마찬가지로 SSH로 서버에 로그인한 뒤 아래 명령어를 실행하세요.
find /var/www -name "*.php" -exec grep -l "$_FILES\[" {} \;
검색 결과로 나온 각 파일을 열어 아래 이미지와 같은 형태의 코드가 숨어 있는지 확인합니다.
신용카드 하이재킹 예방 및 해킹 원인 진단 방법
- OpenCart/WordPress 웹사이트를 최신 버전으로 업데이트: CMS 코어의 알려진 보안 취약점을 수정합니다.
- 파일 업로드 시 맬웨어 검사: 악성 셸 파일이 서버에 업로드되지 않도록 합니다. (Astra 대시보드에서 해당 모듈을 활성화할 수 있습니다.)
- 관리자 계정의 아이디와 비밀번호 변경: 맬웨어 제거 후에도 해커가 웹사이트에 계속 접근하지 못하도록 합니다.
- 데이터베이스 비밀번호 변경: 해커가 데이터베이스에 직접 연결하지 못하도록 차단합니다.
- 서버 로그 검사(접속·오류 로그): 로그에서 낯설거나 의미를 알 수 없는 오류가 발견되면 해킹의 경로와 시점을 추적하는 단서가 될 수 있습니다.
- 웹사이트 방화벽으로 향후 공격 차단: Magento 맬웨어 감염을 예방하는 또 다른 방법은 Astra 같은 웹사이트 방화벽을 사용하는 것입니다. 저희 보안 솔루션은 사이트를 자동으로 보호하고, 악성 요청이 웹사이트에 도달하기 전에 차단하는 가상 패칭(virtual patching) 기능을 제공합니다.