僅有22行的Java指令碼——讓38萬英國航空客戶成為了受害者
9月6日,英國航空公司(British Airways)宣佈,其客戶資料遭黑客入侵。在接受BBC採訪時,該公司指出,大約38萬名顧客可能受到了影響,被盜資訊包括個人資訊和支付資訊,但不包括護照資訊。
英國航空公司在其網站上釋出了一篇文章,解釋了事故的細節,儘可能多的回答了客戶的問題。雖然技術細節很少,但包括了以下資訊:
1、通過其主要網站進行的支付受到了影響
2、通過其移動應用程式進行的支付受到了影響
3、付款從2018年8月21日英國夏令時22:58開始,到2018年9月5日英國夏令時21:45結束
該報告還非常清楚的表明,資訊是從英國航空公司網站和移動應用程式中竊取的,但是伺服器或資料庫都沒有受到影響。由於這些報告只涉及直接從付款表中竊取的客戶資料,所以他們立即懷疑Magecart組織是罪魁禍首。
類似的攻擊最近也發生在英國Ticketmaster公司。他們報告了一個漏洞後,RiskIQ研究人員發現了整個事件的線索。由於我們在網際網路上搜索並獲取每個頁面的詳細資訊,我們的團隊能夠擴充套件時間軸,發現更多受影響的網站,而不僅僅是公開報道的網站。在這篇部落格中,我們將調查9月6日英國航空公司公佈的客戶資料被洩露期間發生了什麼。
Magecart:一個熟悉的對手
自2016年以來,RiskIQ報道了一個基於網路的刷卡器的使用方式,這種方式是由網路犯罪集團Magecart運營的。傳統上,犯罪分子使用被稱為“卡片撇取器”的裝置,這個裝置被藏在atm機、燃油泵和其他人們每天用信用卡支付的信用卡讀卡器中的裝置,它能夠竊取信用卡資料,然後提供給犯罪分子,或者自己使用,或者賣給其他人。Magecart使用這種裝置的數字模式。
Magecart注入了22 行的Java指令碼,當消費者在電子商務網站上直接或通過第三方供應商進入線上支付表單時,他們便能竊取消費者的敏感資料。最近,Magecart操作人員通過對第三方功能的漏洞,在Ticketmaster網站上放置了一個這樣的數字略讀器,導致Ticketmaster的客戶資料被高度洩露。基於最近的證據,Magecart現在將目光投向了英國最大的航空公司British Airways。
發現英國航空公司的違規行為
我們將Magecart與英國航空公司的攻擊聯絡起來的第一步就是通過我們的Magecart檢測命中。對於我們來說,看到Magecart的例項是很常見的,我們至少每小時都會收到關於網站被skimmeri -code攻擊的警告。但是我們的研究團隊手工搜尋這些工作區之外的例項,並將它們新增到我們的全球黑名單中。在英國航空公司的事件中,我們在黑名單事件或嫌疑犯中沒有受到攻擊,因為Magecart在這個案件中定製了他們的撇取器。
手動爬網資料探勘的一個挑戰是RiskIQ收集的資料規模。隨著時間的推移積累, 我們每天抓取超過20億頁的資料。另一個原因是現代網站傾向於使用JavaScript構建的許多功能。只需載入主要的英國航空公司網站即可執行大約20個不同的指令碼,並將預訂子頁面載入到30個。雖然30個指令碼可能聽起來不多,但其中許多是縮小的指令碼,跨越數千行指令碼。
在這項研究中,我們決定集中我們的努力,識別在英國航空公司網站單個指令碼,並檢查他們的表現隨著時間的推移有什麼變化。我們將驗證網站上的所有獨特指令碼,只有在抓取中它們的外觀發生變化時才會再次檢視它們。最後,我們記錄了其中一個指令碼的變化。開啟抓取的資料,我們看到這個指令碼是一個現代化的JavaScript庫,版本是2.62,並且被修改過了。該指令碼是從英國航空公司網站上的行李認領資訊頁中載入的:
圖1修改過的指令碼
我們所提到的變化位於指令碼的底部,這是我們經常看到的攻擊者修改JavaScript檔案以破壞功能的技術。底部的小指令碼標籤立即引起了我們的懷疑:
圖2 Magecart新增的可疑指令碼標籤
我們在英國航空公司伺服器傳送的伺服器標頭中發現了更多的證據。伺服器傳送了一個“Last-Modified”標頭,表示上次修改靜態內容的時間。Modernizr指令碼的潔淨版有一個2012年12月的時間戳:
圖3受損指令碼的潔淨版
我們可以看到,在經過修改的、惡意的Modernizr版本上,時間戳與英國航空公司所給出的時間戳的匹配程度非常接近,因為這意味著人們開始受到攻擊:
圖4撇取開始的時間戳
下面是經過清理的指令碼版本,只有22行JavaScript:
圖5僅22行指令碼就傷害了38萬人
從本質上講,這個指令碼非常簡單,非常有效。下面是它的分類:
一旦頁面上的每個元素完成載入,它將將mouseup和touchend事件繫結到名為submitButton的按鈕上,使用以下回調程式碼:
Serialize the data in a form with id paymentForm into a dictionary Serialize an item on the page with id personPaying into the same dictionary as the paymentForminformation Make a text-string out of this serialized data Send the data in the form of JSON to a server hosted on baways.com
在網站上,mouseup和touchend是指某人在點選按鈕後鬆開滑鼠,或者某人在觸屏(移動)裝置上按下按鈕後鬆開螢幕。這意味著,一旦使用者在英國航空公司(British Airways)網站上點選提交付款的按鈕,支付表單中的資訊就會連同姓名一起被提取出來,併發送到攻擊者的伺服器。
這與我們過去看到的Magecart skimmer不分青紅皁白的攫取形態相比,這次攻擊是一種簡單但目標明確的攻擊方式。這個特殊的撇取器非常符合英國航空公司支付頁面的設定,它告訴我們攻擊者仔細考慮瞭如何瞄準這個站點,而不是盲目的注入常規的Magecart撇取器。
在這次攻擊中使用的基礎設施僅僅是在考慮英國航空公司的情況下建立的,而且為了避免被發現,這還是專門針對那些與正常支付處理相融合的指令碼。我們在域名baways.com和drop伺服器路徑上看到了這方面的證明。該域名位於羅馬尼亞的89.47.162.248上,但實際上是位於立陶宛的一個名為Time4VPS的VPS提供商的一部分。參與者還用SSL證書載入伺服器。有趣的是,他們決定使用免費LetsEncrypt證書,而不是免費LetsEncrypt證書,因為這樣看起來更像合法的伺服器:
圖6攻擊者利用的證書
來源:https://community.riskiq.com/search/certificate/sha1/e1a181db8f8366660840e0b490ad2da43c78205a
Magecart使用的證書中值得注意的是,該證書是在8月15日釋出的,這表明他們可能在8月21日攻擊的報道開始日期之前就已經訪問了英國航空公司的網站。由於無法瞭解其面向網際網路的網路資產,英國航空公司未能及時發現這一問題。
移動瀏覽
在英國航空的安全諮詢中,該公司指出,網路應用程式和移動應用程式使用者都受到了影響。我們在英國航空公司的網頁上找到了撇取器,但這是如何轉換成行動電話的呢?為了弄清楚這一點,我們來看看英國航空公司的Android應用程式:
圖7英國航空公司的移動應用程式
通常,當開發人員構建一個移動應用程式時,他們會建立一個空殼並從其他地方載入內容。以英國航空公司為例,該應用程式的一部分是本地的,但其大部分功能是從英國航空公司官方網站的網頁載入的。
該移動應用程式使用一組不同的主機與英國航空公司的伺服器通訊:
www.britishairways.com(主要網站)
api4-prl.baplc.com(英國航空公司的API終端)
api4.baplc.com(英國航空公司的另一個API終端)
我們的想法是,為了在UI上快速更新資料,應用程式使用API端點,但是為了搜尋、預訂和管理航班,應用程式載入一個主網站的移動版本。這些路徑之一是:
www.britishairways.com/travel/ba_vsg17.jsp/seccharge/public/en_gb
當客戶請求不同國家和機場的收費資訊時,將載入此頁面。它看起來是這樣的:
圖8 Magecart受損的移動網頁
現在,如果我們看看這個網頁的原始碼,我們會發現一些有趣的東西。這個網頁是用與真實網站相同的CSS和JavaScript元件構建的,這意味著從設計和功能方面來說,它是完全匹配的。從上面我們檢查的內容來看,我們知道這意味著我們也會發現我們的違規指令碼,也就是從網路應用程式上竊取名字和支付資訊的指令碼:
圖9移動網頁的來源
我們的抓取工具捕獲了移動應用中使用的頁面載入的子資源; 它載入了與當時相同的受損Modernizr JavaScript庫!
有一點需要注意的是,magecart在撇取器中進行了觸控回撥,以使其適用於移動訪問者,這再次向我們展示了這種簡單但極其有效的高水平規劃和對細節的攻擊細節關注。
結論
正如我們在這次攻擊中看到的那樣,Magecart建立了定製的、有針對性的基礎工具,以專門融入英國航空公司的網站,並且儘可能拉長戰線,避免被發現。雖然我們永遠無法知道有多少襲擊者已經在英國航空公司的伺服器上,但有一個事實是:他們能夠修改網站,並且可以訪問的巨大的資源。事實上他們訪問之前的攻擊,可能只是提醒我們網站過於脆弱。
RiskIQ公司自2015年以來就一直在警告市場有關此類Magecart攻擊的訊息,並將繼續跟蹤並報告該集團的發展。雖然針對英國航空公司的Magecart攻擊不是針對Ticketmaster這樣的第三方供應商的漏洞,但它確實提出了支付形式安全性的問題。公司,尤其是那些收集敏感財務資料的公司,必須意識到他們應該考慮表單的安全性,同時還要考慮一旦客戶提交了付款資訊,會對其產生何種影響的控制。
我們建議英國航空公司的客戶從他們的銀行獲得一張新卡。一些銀行已經開始主動為客戶發行新卡,Monzo就是一個例子:
圖10一些銀行的反應
來源:https://twitter.com/monzo/status/1038042015286607872
Magecart是一個積極的威脅,其規模和廣度可以與家得寶(Home Depot)和塔吉特(Target)等零售巨頭最近達成的銷售點系統妥協相提並論,甚至可能超過後者。Magecart從2015年就開始活躍起來,並且從未從他們選擇的犯罪活動中撤退。相反,他們不斷改進他們的策略和目標,以最大限度的回報他們的努力。
隨著時間的推移,它們優化了自己的策略,最終成功的侵入了Inbenta等第三方供應商,導致Ticketmaster客戶資料被盜。我們現在看到他們瞄準特定的品牌,策劃他們的攻擊以匹配特定網站的功能,我們在英國航空公司(British Airways)被入侵時就看到了這一點。未來還會有更多的Magecart攻擊,而riskq將追蹤這些攻擊,並讓網路安全行業瞭解我們的研究。
如果你想深入瞭解Magecart,從它的創立到它對Ticketmaster的黑客攻擊,再到它對英國航空公司的最新黑客攻擊,一定要註冊RiskIQ首席研究員和報告作者Yonathan Klijnsma舉辦的網路研討會。