隱身的藝術(shù):濫用404頁面的新型Magecart活動
近日,Akamai安全情報小組的研究人員發(fā)現(xiàn),一種復(fù)雜且隱蔽的Magecart web skimming活動已經(jīng)瞄準(zhǔn)Magento和WooCommerce網(wǎng)站。此外,一些食品和零售行業(yè)的大型組織也都受到了影響。
調(diào)查顯示,這場活動已經(jīng)持續(xù)了數(shù)周甚至更長時間。更糟糕的的是,這次活動使用了前所未見的高級隱藏技術(shù),令人吃驚之余又不免擔(dān)憂。
一、新型Magecart攻擊活動
Magecart攻擊通常從利用目標(biāo)網(wǎng)站中的漏洞或感染這些網(wǎng)站正在使用的第三方服務(wù)開始。而在此次活動中,研究人員檢測到的所有受害網(wǎng)站都被直接利用,因?yàn)閻阂獯a片段被注入了他們的第一方資源中。在某些情況下,惡意代碼被插入到HTML頁面中;在其他情況下,它被隱藏在作為網(wǎng)站一部分加載的某個第一方腳本中。
與許多其他Magecart攻擊活動一樣,此攻擊活動的攻擊基礎(chǔ)結(jié)構(gòu)由三個主要部分組成:加載程序、惡意攻擊代碼和數(shù)據(jù)滲漏(見圖1)。
- 加載程序——簡短、晦澀的JavaScript代碼片段,負(fù)責(zé)加載攻擊的完整惡意代碼;
- 惡意攻擊代碼——執(zhí)行攻擊的主要JavaScript代碼,負(fù)責(zé)檢測敏感輸入、讀取數(shù)據(jù)、中斷簽出過程并注入假表單;
- 數(shù)據(jù)滲漏——用于將竊取的數(shù)據(jù)傳輸?shù)焦粽呖刂频腃2服務(wù)器。
【圖1:Magecart攻擊基礎(chǔ)設(shè)施】
研究人員解釋稱,將攻擊分為三個部分的目的是隱藏攻擊,使其更難以被發(fā)現(xiàn)。這允許在特定目標(biāo)頁面上激活完整的攻擊流程;也就是說,由于攻擊者使用的混淆措施,整個攻擊流的激活只能發(fā)生在攻擊者想要執(zhí)行的地方。這使得攻擊更加隱蔽,更難以被安全服務(wù)和外部掃描工具檢測到。
盡管大多數(shù)Magecart活動在流程和階段上都存在相似之處,但將一個活動與另一個活動區(qū)分開來的是攻擊者使用的各種隱藏技術(shù)。這些技術(shù)被用來掩蓋攻擊的基礎(chǔ)設(shè)施、行動痕跡、復(fù)雜化檢測與逆向工程,并最終延長攻擊時間。
二、活動的三種變體
研究人員發(fā)現(xiàn),該攻擊活動存在三種不同的變體,展示了攻擊的演變以及攻擊者隨著時間的推移所做的改進(jìn),目的是逃避針對該攻擊活動的檢測和緩解。以下為三個變體的概述:
- 前兩個變體非常相似,只有加載程序部分的細(xì)微差異。
- 第三個版本是獨(dú)特的,因?yàn)楣粽呤褂镁W(wǎng)站默認(rèn)的404錯誤頁面來隱藏他們的惡意代碼;這是一種前所未見的創(chuàng)造性隱藏技術(shù)。
接下來,研究人員詳細(xì)分析了三個變體的技術(shù)細(xì)節(jié)。
三、變體1
研究人員最初在一家大型企業(yè)的網(wǎng)站上發(fā)現(xiàn)了一些可疑代碼片段,在對其進(jìn)行分析后,研究人員發(fā)現(xiàn)它們是惡意編碼的JavaScript加載程序,這些加載程序仍然存在并在網(wǎng)站上活躍。這一發(fā)現(xiàn)促使他們進(jìn)一步調(diào)查,并揭示了整個活動及其對眾多網(wǎng)站的影響。
1.變體1加載程序
該skimmer成功地將帶有onerror屬性的錯誤格式HTML圖像標(biāo)簽注入被利用的網(wǎng)站(見圖2)。該屬性包含混淆的base64編碼惡意加載程序代碼片段。圖像標(biāo)簽的src屬性故意為空,目的是防止網(wǎng)絡(luò)請求,并觸發(fā)包含混淆的惡意JavaScript代碼片段的內(nèi)聯(lián)onerror回調(diào)的執(zhí)行。
為了執(zhí)行JavaScript代碼而使用圖像標(biāo)記是一種不太常見但更復(fù)雜的技術(shù)。它可以幫助skimmer繞過安全措施,例如通常分析網(wǎng)絡(luò)流量的外部掃描儀,這些措施在此特定情況下不會觸發(fā)?;煜蟮拇a將在頁面的上下文中執(zhí)行,并像由頁面本身發(fā)起的本地第一方腳本一樣運(yùn)行。
【圖2:變體1加載器-帶有onerror屬性的格式錯誤HTML圖像標(biāo)簽,其中包含惡意加載器代碼】
2.解碼加載程序代碼—運(yùn)行時
一旦混淆的base64編碼代碼在運(yùn)行時執(zhí)行,它就會轉(zhuǎn)換為純JavaScript,并負(fù)責(zé)啟動WebSocket通道(見圖3)。該通道充當(dāng)瀏覽器和攻擊者的C2服務(wù)器之間的雙向通信鏈接。
事實(shí)上,這并非是第一次在Magecart攻擊中檢測到WebSockets。WebSocket被認(rèn)為是一種更隱匿、更靈活的通信方法,允許攻擊者利用單個網(wǎng)絡(luò)通道實(shí)現(xiàn)各種目的。這包括將攻擊的不同部分從C2服務(wù)器發(fā)送到瀏覽器(反之亦然),以及在某些場景中促進(jìn)數(shù)據(jù)滲漏活動。
代碼的另一個值得注意的方面是機(jī)器人(bot)檢測,它檢查用戶代理是否處于自動化控制之下。如果是這種情況,代碼將終止其執(zhí)行。這是一種智能的反機(jī)器人技術(shù),旨在避開可能檢測到攻擊的外部安全掃描儀和沙箱。
【圖3:解碼的變種1加載程序JavaScript代碼】
3.Websocket通信流程
一旦建立了WebSocket通道,第一個消息就從攻擊者的C2服務(wù)器發(fā)送到瀏覽器。該消息作為base64編碼的字符串傳輸,其中包含一行JavaScript命令,指示瀏覽器發(fā)送回頁面的當(dāng)前URL。
此步驟的目的是使C2服務(wù)器能夠確定當(dāng)前頁面是結(jié)賬(敏感)頁面(checkout page)還是任何其他非結(jié)賬頁面。這樣,攻擊者就可以相應(yīng)地調(diào)整接下來的步驟。
這種簡單的服務(wù)器端驗(yàn)證使攻擊者能夠僅在相關(guān)的目標(biāo)頁面上激活攻擊,從而避免在非敏感頁面上暴露。這一案例突出了skimmer為逃避安全服務(wù)和外部掃描儀的檢測所做的努力。
當(dāng)C2服務(wù)器識別出結(jié)帳頁面URL時,流程將進(jìn)入下一個階段。在此步驟中,將向?yàn)g覽器發(fā)送另一條消息。它是一個長base64編碼的字符串,包含了整個攻擊代碼。解碼后,顯示了冗長且混淆的JavaScript代碼(見圖4)。
該代碼負(fù)責(zé)在目標(biāo)敏感頁面上執(zhí)行各種惡意活動,其目標(biāo)是讀取用戶的敏感個人和信用卡數(shù)據(jù),并將其傳輸回skimmer的C2服務(wù)器。
隨后,包含敏感被盜數(shù)據(jù)的混淆數(shù)據(jù)滲漏消息就會從瀏覽器發(fā)送到C2服務(wù)器。如前所述,與XHR、fetch或HTML資源請求等更傳統(tǒng)的通信方法相比,使用相同的WebSocket通道來加載完整的惡意代碼和滲漏被盜的數(shù)據(jù)可以使該過程更隱匿,并且涉及更少的網(wǎng)絡(luò)請求。
【圖4:結(jié)帳頁面上的WebSocket流程】
四、變體2
1.變體2加載程序
變體1和變體2的主要區(qū)別就在加載程序部分。在變體2中,skimmer插入了一個內(nèi)聯(lián)腳本,其中的代碼片段與Meta Pixel(一個著名的Facebook訪問者活動跟蹤服務(wù))代碼片段非常相似,并在其中添加了幾行代碼(見圖5)。
這些添加的行是實(shí)際的加載程序部分,而周圍的Meta Pixel代碼是一個誤導(dǎo)性的掩護(hù),使它看起來像是一個合法且不可疑的代碼片段。
這種隱藏技術(shù)使惡意代碼片段看起來像是谷歌標(biāo)簽管理器或Facebook等知名服務(wù),因而在最近的Magecart活動中越來越受歡迎。它允許skimmer逃避外部掃描儀和研究人員的靜態(tài)分析。
【圖5:變體2加載程序—內(nèi)聯(lián)腳本偽裝成Meta PIxel代碼片段,內(nèi)部帶有惡意加載程序】
2.請求圖像
當(dāng)研究人員仔細(xì)檢查虛假M(fèi)eta Pixel代碼片段中的可疑行時,發(fā)現(xiàn)它似乎是從網(wǎng)站自己的目錄中獲取PNG圖像。該網(wǎng)絡(luò)請求似乎是對網(wǎng)站上托管的無害圖像的典型請求。然而,當(dāng)進(jìn)一步檢查該圖像的實(shí)際內(nèi)容時,研究人員發(fā)現(xiàn)它并不像看起來那般無害(見圖6)。
【圖6:網(wǎng)絡(luò)圖像請求已被攻擊者篡改并包含惡意代碼的圖像】
3.圖像二進(jìn)制數(shù)據(jù)內(nèi)的惡意JavaScript代碼片段
PNG圖像的二進(jìn)制數(shù)據(jù)包含一個附加在圖像二進(jìn)制文件末尾的base64編碼字符串(見圖7)。這個字符串隨后被加載程序代碼片段提取、解碼并執(zhí)行(見圖8)。解碼后的字符串展示了一個JavaScript代碼片段,該代碼片段與在變體1加載程序的onerror屬性中找到的代碼片段相同。
后續(xù)步驟基本與變體1保持不變。該代碼片段在運(yùn)行時轉(zhuǎn)換為純JavaScript代碼,并負(fù)責(zé)啟動連通攻擊者C2服務(wù)器的WebSocket通道,隨后的步驟如前所述。
【圖7:包含隱藏惡意代碼的圖像二進(jìn)制數(shù)據(jù)】
【圖8:惡意代碼最初以Base64編碼并隱藏在圖像中,解碼后顯現(xiàn)】
五、變體3
現(xiàn)在,到了最精彩的部分。雖然此前發(fā)生過類似的攻擊,但這次絕對是獨(dú)一無二的,其復(fù)雜和創(chuàng)新程度讓研究人員大吃一驚。
1.變化3加載程序:相同,但又完全不同
乍一看,這個加載程序與變體2中的加載程序類似,但仔細(xì)研究會發(fā)現(xiàn)這是一個完全不同的場景。在某些情況下,這個加載程序偽裝成Meta Pixel代碼片段,如變體2所示(見圖9)。但在其他情況下,它會被注入到頁面上的隨機(jī)內(nèi)聯(lián)腳本中(見圖10)。
該加載程序第一個值得注意的方面是對一個名為“icons”的相對路徑的獲取請求。
【圖9:變體3加載程序—偽裝成Meta Pixel代碼片段的惡意代碼片段】
【圖10:變體3加載程序—隱藏在任意內(nèi)聯(lián)腳本中的惡意代碼片段】
2.404錯誤?真的嗎?
加載程序執(zhí)行后,攻擊者會向/icons發(fā)送一個獲取請求,這是一個實(shí)際不存在的相對路徑。此請求會導(dǎo)致“404 Not Found”錯誤(見圖11)。在分析響應(yīng)中返回的HTML后,它看起來像是網(wǎng)站的默認(rèn)404頁面(見圖12)。這讓研究人員懷疑自己發(fā)現(xiàn)的受害網(wǎng)站上的skimmer是否不再活躍。
【圖11:加載程序向不存在的路徑發(fā)起請求,返回404錯誤】
【圖12:默認(rèn)錯誤頁面HTML】
3.永遠(yuǎn)不要低估加載程序
為此,研究人員后退一步,重新分析了加載程序,找到了缺失的那塊拼圖。研究人員發(fā)現(xiàn),該加載程序包含字符串“COOKIE_ANNOT”的正則表達(dá)式匹配,這應(yīng)該在作為圖標(biāo)請求的一部分返回的404錯誤頁面上執(zhí)行。
因此,研究人員開始在返回的404 HTML中搜索這個字符串,結(jié)果發(fā)現(xiàn)隱藏在頁面末尾的注釋包含“COOKIE_ANNOT”字符串(見圖14)。在這個字符串的旁邊,連接了一個長base64編碼的字符串。這個編碼的字符串顯示了整個混淆的JavaScript攻擊代碼。加載程序從評論中提取該字符串,對其進(jìn)行解碼,然后執(zhí)行攻擊,其目的是竊取用戶輸入的個人信息。
研究人員還模擬了對不存在的路徑的其他請求,它們都返回相同的404錯誤頁面,其中包含帶有編碼惡意代碼的評論。這些檢查確認(rèn)攻擊者成功更改了整個網(wǎng)站的默認(rèn)錯誤頁面,并在其中隱藏了惡意代碼!
【圖13:加載程序變體3—字符串“COOKIE_ANNOT”的regex匹配。】
【圖14:隱藏在錯誤頁面HTML中的惡意編碼注釋】
六、數(shù)據(jù)滲漏
1.虛假表單
與變體1和變體2相反,攻擊者在變體3中使用了一種不同的常見數(shù)據(jù)滲漏技術(shù)——注入假表單(見圖15)。這種技術(shù)通常在skimmer無法訪問敏感輸入時使用。
當(dāng)網(wǎng)站使用第三方支付服務(wù),在第三方iframe或外部頁面中實(shí)現(xiàn)支付表單時,就會發(fā)生這種情況。為了繞過這些場景,攻擊者創(chuàng)建了一個與原始支付表單非常相似的假表單,并將其覆蓋——這種技術(shù)正日益流行。這就是變種3中竊取數(shù)據(jù)的方式。
【圖15:惡意代碼注入的假表單】
當(dāng)用戶向攻擊者的假表單提交數(shù)據(jù)時,將顯示錯誤,隱藏假表單,顯示原始付款表單,并提示用戶重新輸入付款詳細(xì)信息(見圖16)。
【圖16:假表單被隱藏并提示用戶重新輸入信息】
2.帶有被盜數(shù)據(jù)的圖像請求
提交假表單會向攻擊者的C2服務(wù)器發(fā)起一個圖像網(wǎng)絡(luò)請求,在查詢參數(shù)中以base64編碼的字符串的形式攜帶所有被盜的個人和信用卡信息(見圖17)。解碼后,該字符串揭示了請求的真實(shí)意圖,整個攻擊流程也變得清晰起來。
【圖17:圖像請求以base64編碼的字符串查詢參數(shù)形式呈現(xiàn)】
七、從變體3中吸取的教訓(xùn):404案例
這種隱藏技術(shù)是非常新穎的,且在之前的Magecart活動中從未出現(xiàn)過。操縱目標(biāo)網(wǎng)站的默認(rèn)404錯誤頁面的想法可以為Magecart威脅行為者提供各種創(chuàng)造性的選擇,以改進(jìn)隱藏和逃避技術(shù)。
在撰寫本文時,惡意加載程序已經(jīng)從受影響網(wǎng)站的頁面上刪除。然而,默認(rèn)404頁面中的惡意評論仍然存在,這可能使skimmer很容易重新激活攻擊。這突出了檢測的復(fù)雜性以及緩解這種方法的重要性和迫切性。
對指向404頁面的第一方路徑的請求是另一種逃避技術(shù),它可以繞過內(nèi)容安全策略標(biāo)頭和其他可能正在積極分析頁面上的網(wǎng)絡(luò)請求的安全措施。這無疑是最近出現(xiàn)的最復(fù)雜的Magecart策略之一。
八、結(jié)語
這一活動強(qiáng)調(diào)了一個事實(shí),即web skimming正在不斷發(fā)展。它們變得越來越復(fù)雜,這使得通過靜態(tài)分析和外部掃描進(jìn)行檢測和緩解變得越來越具有挑戰(zhàn)性。這個領(lǐng)域的威脅行為者總是能找到更好的方法,來隱藏他們在受害者網(wǎng)站中的攻擊行為,并逃避各種可能暴露他們的安全措施。
這項(xiàng)研究強(qiáng)調(diào)的復(fù)雜性應(yīng)該提醒組織保持警惕,關(guān)注web skimming攻擊向量,并積極尋求新的和先進(jìn)的方法來處理這些類型的攻擊。
原文鏈接:https://www.akamai.com/blog/security-research/magecart-new-technique-404-pages-skimmer