무니르 하하드(Mounir Hahad) 주니퍼네트웍스 위협 부문 책임연구원

▲ 무니르 하하드(Mounir Hahad) 주니퍼네트웍스 위협 부문 책임연구원

[아이티데일리] 지난해 12월 말에 지인 중 한 사람이 신용카드 회사로부터 거액의 구매 결제가 보류 중이라는 연락을 받았다. 해당 거래는 본인도 잘 모르는 내용이었기 때문에 그는 즉시 신용카드 회사에 연락해 결제 중단을 요청했다. 몇 분 후, 카드가 차단됐고 새 카드가 집 주소로 배송되었다.

신용카드 관련 사고와 사고 대응에 대한 일반적인 과정이다. 하지만 사이버 보안 업계에 종사하고 있는 나는 더 자세한 얘기가 궁금했다. 신용카드 데이터는 언제, 어디서 도난당한 것일까? 이 같은 일은 몇 달 전 결제한 온라인 쇼핑몰이나, 신용카드 발급 은행으로부터 발생된 것일까?

나는 피해자들의 최근 온라인 쇼핑 기록부터 추적해 보기로 했다. 대부분 평범했지만 유독 한 곳이 눈에 띄었다. 피해자 모두가 최근에 한 번씩 그 쇼핑몰에서 구매한 이력이 있었기 때문이다. 포커스카메라닷컴이 바로 그 곳이다. 이 사이트 운영업체는 오프라인에서 오랫동안 정상적으로 영업해왔으며 보안 사고로 뉴스에 오르내린 기록도 없었다.

사이트가 해킹됐는지 여부를 조사하기 위해서는 먼저 결제 페이지를 확인해야만 한다. 전자상거래 공격을 전문으로 하는 해킹 집단인 메이지카트(Magecart, 온라인 쇼핑 장바구니 시스템인 마젠토(Magento) 시스템을 해킹해 고객의 결제 카드 정보를 탈취하는 악성 해커 집단)의 수법이 바로 자바스크립트 악성 코드를 주입해 사용자가 결제 시 입력하는 신용카드 정보를 자체 C&C(Command and Control) 서버로 빼돌리는 방식이기 때문이다.

나는 조사를 위해 장바구니에 상품 하나를 넣고 결제를 진행했다. 이 단계에서 크롬(Chrome) 개발자 툴과 와이어샤크(Wireshark) 캡처를 사용해 문제가 되는 비정상적인 연결을 식별할 수 있다.

▲ <그림 1> 포커스카메라닷컴의 체크아웃 페이지


C&C 사이트로 전송되는 신용카드 정보

네트워크 연결을 면밀히 살펴보니 <그림 2>의 스크린샷과 같이 신용카드 데이터가 두 개의 다른 사이트로 넘어가고 있음을 알 수 있었다. 첫 번째는 정상적인 포커스카메라닷컴 카드 결제 사이트다.

▲ <그림 2> 포커스카메라닷컴으로 전송되는 신용카드 정보

두 번째 포스트 리퀘스트는 악성 코드에 의한 것으로 ‘zdsassets.com’이라는 도메인으로 전송된다. 얼핏 보면 ‘zdassets.com’이라는 정상적인 젠데스크(클라우드 기반의 글로벌 고객관계관리 서비스) 도메인과 비슷해 보이지만 완전히 다른 사이트다(d와 a 사이에 s 부재).

▲ <그림 3> 신용카드 정보가 Exfiltration Domain으로 유출되고 있음

도메인툴스닷컴 등록 데이터에 따르면 ‘zdsassets.com’ 도메인은 2019년 11월 11일에 등록됐다. 이 글을 작성하고 있는 현재까지 이 도메인과 연결된 스키밍 작업이 두 달 남짓 이어졌음을 알 수 있다. 해당 도메인은 네덜란드 호스팅 업체인 ‘Hosting Concepts B.V. d/b/a Openprovider’를 통해 등록돼 있다. 이 사이트는 뉴저지에 위치한 'Vultr Holdings' 전용 서버에서 호스팅되며 IP 주소 149.28.237.85는 'AS-Choopa (ASN AS20473)'에서 제공된다.

▲ <그림 4> Exfiltration Domain 등록 정보


피해자

확인 가능한 일부 DNS 텔레메트리에 따르면 이 C&C 도메인은 만들어진 이후 905번 리졸브(Resolve)됐는데, 이것이 이 카드 스키밍(Card Skimming) 공격의 피해자 수를 나타낼 수 있다. 동일한 C&C 도메인을 사용해 여러 쇼핑 사이트와 캠페인을 해킹하고 있을 가능성이 있다. 하지만 현재로서는 텔레메트리를 통해 이를 입증할 방법이 없다.

▲ <그림 5> DNS 분석 캐시에서 유출된 도메인이 누락됨


사이트 해킹

공격자는 웹사이트의 소스 코드에 접근해 자바스크립트 파일을 수정하고, 악성 페이로드를 주입한 것으로 보인다. 메인 체크아웃 스크립트는 아래와 같이 자바스크립트 파일을 로드한다.

▲ <그림 6> 체크아웃 페이지의 원본 스크립트 콜(Script Call)

이 스크립트가 공격자에 의해 수정돼 <그림 7>과 같이 난독화된 base64 인코딩 자바스크립트 루틴을 추가한다.

▲ <그림 7> 기존 스크립트에 추가된 Base64-encoded 스키밍 코드

base64가 디코딩되면 이 스크립트가 악성 활동을 수행한다.

▲ <그림8> 디코딩된 신용카드 스키밍 스크립트

위의 프로세스는 비회원으로 체크아웃한 고객의 경우다. 기존에 회원으로 등록한 사용자의 신용카드 유출 여부를 알아보는 체크아웃 프로세스는 테스트하지 않았다.

이 공격은 클라이언트 사이드 스키밍으로 결제 카드 데이터를 빼내는 전형적인 메이지카드(Magecart) 공격 수법으로 이루어졌다. 이것은 특정 해커 그룹이라기 보다는 공급망 공격(Supply Chain Attack)으로 써드파티 라이브러리를 변조하거나, 타겟 웹사이트를 해킹해 악성코드를 삽입하는 식의 유사한 방법을 사용하는 공격자 컨소시엄이라고 할 수 있다. 잘 알려진 피해 기업으로 영국항공(British Airways), 티켓마스터(TicketMaster), 뉴에그(NewEgg) 등이 있다.


사실 공개

주니퍼 위협 연구소(Juniper Threat Labs)는 포커스카메라닷컴 해킹 사실을 확인한 즉시 온라인 문의 양식과 음성 메시지를 통해 사이트 소유자에게 연락을 취했다. 안타깝게도 주말과 시간대 차이로 인해 응답이 며칠 지연됐으나 마침내 도메인 관리자와 직접 대화를 나눌 수 있었다. 주니퍼 위협 연구소는 그 때까지 보유한 모든 정보를 공유하고, 해당 사이트에 대한 분석을 기반으로 추가로 알아낸 사실을 공유하기 위한 후속 통화를 진행했다. 그리고 해가 질 무렵, 악성 코드가 사이트에서 제거됐다.


결론

메이지카트(MageCart)는 계속해서 온라인 쇼핑을 위협하고 있으며, 2020년 가장 심각한 사이버 보안 문제 중 하나가 될 것으로 예상된다. 이 공격을 막기 위해서는 사이트 소스 코드의 무결성을 보장해야 한다. 공격자가 악성 스키머 자바스크립트를 삽입하기 위해서는 서버 취약점을 익스플로잇하거나, 써드파티 라이브러리를 변조해 사이트의 소스 코드를 변경해야 하기 때문이다. 포커스카메라닷컴의 경우에는 일부 자바스크립트 파일이 변조돼 ‘평가 구문 (Statement)’이 추가로 삽입된 것이 분명하다. 간단한 파일 해시 모니터링을 통해 경보가 발생될 수 있도록 해야 한다.

저작권자 © 아이티데일리 무단전재 및 재배포 금지