整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          惡意JavaScript注入活動感染了51000個網

          惡意JavaScript注入活動感染了51000個網站

          語:Unit 42的研究人員一直在跟蹤一起大范圍的惡意JavaScript(JS)注入活動,該活動將受害者重定向到廣告軟件和欺騙頁面等惡意內容。這一威脅在2022年全年都很活躍,并在2023年繼續感染眾多網站。

          Unit 42的研究人員一直在跟蹤一起大范圍的惡意JavaScript(JS)注入活動,該活動將受害者重定向到廣告軟件和欺騙頁面等惡意內容。這一威脅在2022年全年都很活躍,并在2023年繼續感染眾多網站。

          我們在51000多個網站上檢測到了注入的JS代碼,包括躋身Tranco前100萬個網站排行榜的數百個網站。受影響的網站出現在Tranco中表明,這起活動可能影響了大量的人。

          我們還發現,這起活動是多方面的,因為它在重定向到惡意網頁之前執行多步注入,并使用混淆和良性附加攻擊來繞過檢測機制。惡意軟件編寫者利用這些技術將惡意JS代碼樣本的多種變體注入到網站中。

          我們新穎的對抗性深度學習技術無罪推定(IUPG)檢測到了注入的JS代碼的多種變體。該模型是我們下一代防火墻產品的高級URL過濾(AUF)訂閱服務的一部分。它可以檢測惡意JS樣本,并可以對來自內聯保護和我們離線爬蟲的內容進行分類,內聯保護可對防火墻上的流量進行實時分析。

          具體活動和用戶影響

          我們已經檢測到攻擊者將惡意JS代碼注入到網站的活動的多種形式。這種注入的代碼將受害者重定向到各種惡意內容,比如廣告軟件和騙局。

          研究人員去年報道了一起類似的活動。我們在2020年觀察到了該活動的第一例。然而,我們將側重介紹在2022年1月至2023年期間跟蹤的這起活動的最新變體。

          自2022年初以來,我們在來自51000個主機名的大約170000個URL上檢測到了這起活動。如圖1所示,該活動在過去一年保持活躍狀態,并在2023年繼續影響網站。這起活動在2022年5月至8月期間達到了頂峰,當時我們看到平均每天有4000個URL中招。

          圖1. 該圖顯示了整個2022年和2023年初的活動,在2022年5月至8月之間達到頂峰

          我們懷疑這起活動影響了大量的人,因為在撰寫本文時,數百個受感染的網站躋身Tranco的前100萬網站排行榜。在2023年1月期間,我們在14773個設備上攔截了來自這些網站的約240000次會話。

          JS注入的例子

          這起惡意JS注入活動使用各種技術來繞過檢測機制,比如混淆、向大型良性文件附加代碼和多步注入。我們將介紹惡意JS代碼的幾個例子,活動背后的不法分子對這些代碼進行混淆處理,并隱藏在更龐大的JS文件中。我們還將介紹一個例子,其中惡意軟件在最終加載惡意載荷之前執行一系列的JS注入。

          混淆

          圖2a、b和c顯示了活動中經常檢測到的JS片段例子。在所有這些例子中,注入的JS代碼都經過混淆處理,以隱藏惡意載荷從而繞過檢測。具體來說,這種經過混淆處理的代碼隱藏了用于加載惡意JS的外部URL。代碼還包括向文檔對象模型(DOM)動態添加惡意JS的行為。

          比如說,下面的前兩個JS代碼片段(圖2a和圖b)使用String.fromCharCode隱藏了指向惡意JS的鏈接,這是一種常見的混淆技術。圖2c顯示了混淆的另一個例子。經過混淆處理的代碼顯示在左邊,經過去混淆處理的代碼顯示在右邊。通過使用variable _0xfcc4中的十六進制表示來混淆函數調用的名稱(比如fromCharCode)。

          圖2 a. 使用String.fromCharCode隱藏惡意JS鏈接的例子

          圖2 b. 使用String.fromCharCode隱藏惡意JS鏈接的例子

          圖2 c. 隱藏函數調用名稱的例子。圖像的左側顯示了如何使用variable _0xfcc4中的十六進制表示來混淆函數調用。圖像的右側顯示了去混淆后的函數調用fromCharCode

          將JS代碼附加到大文件中

          我們在一些網站上發現了這些經過混淆處理的JS片段被注入到常見實用程序JS文件(比如jQuery)中的例子。惡意軟件編寫者經常使用這一招將惡意代碼附加到大塊的良性代碼中,這又叫良性附加攻擊。這種技術可以幫助惡意軟件編寫者逃避安全爬蟲的檢測機制。

          多步JS注入

          在所有JS代碼片段中注入的JS代碼(如圖2a、b和c所示)通過操縱DOM附加外部惡意JS代碼。這使攻擊者能夠改變惡意載荷。

          這起活動最近的一種變體是將惡意JS代碼注入到網站。然后它執行一系列中間JS注入,之后加載將受害者重定向到惡意網頁的惡意載荷。

          在圖3顯示的例子中,每個注入的JS代碼在投放惡意載荷之前依次執行來自另一個網站的JS代碼。包含來自不同網站的JS注入的一個原因可能是,攻擊者想要不斷改變加載最終載荷的URL,以防加載JS的URL被安全爬蟲列入黑名單。

          圖3. 這個例子表明網站上的腳本注入在最終加載重定向到惡意網頁的惡意載荷之前執行一系列中間腳本注入

          重定向到惡意內容

          最終的惡意載荷將用戶重定向到不同的網站,然后登錄到最終的網頁,這通常是廣告軟件或欺騙頁面。比如說,訪客可能被重定向到一個虛假的通知欺騙頁面,如圖4a所示。在這個頁面上,人們會看到欺騙性內容,引誘他們允許由攻擊者控制的網站發送瀏覽器通知。

          圖4. 顯示虛假的驗證碼圖像,是為了引誘人們允許網站發送通知

          在另一個例子中,如圖4b所示,最終的惡意網頁顯示了來自知名視頻共享平臺的模仿頁面的虛假警告這種形式的欺騙性內容。這些欺騙性內容會誘使人們下載虛假瀏覽器。

          圖4 b. 顯示了知名視頻共享平臺的模仿頁面以及虛假警告,誘使人們下載虛假瀏覽器

          JS如何被注入到網站上?

          Unit 42的研究人員懷疑,由于一個或多個易受攻擊的內容管理系統(CMS)插件,大量網站可能會遭到攻擊。Sucuri公司的研究人員曾報告了一起類似的活動利用CMS插件(詳見https://blog.sucuri.net/2022/05/massive-wordpress-javascript-injection-campaign-redirects-to-ads.html)。我們還發現,檢測到的網站(共51000個)中估計四分之三使用流行的CMS。

          在一半以上被檢測到的網站的主頁上都包含注入的惡意JS代碼。活動攻擊者采用的一種常見策略是向經常使用的JS文件名(比如jQuery)注入惡意JS代碼,它們可能被包含在中招網站的主頁上。這可能幫助攻擊者鎖定網站的合法用戶,因為他們更有可能訪問網站的主頁。

          利用深度學習檢測惡意JS注入

          惡意軟件編寫者為這起活動設計了惡意JS代碼的不同變體,將其注入到網站中。眾所周知,深度學習技術在檢測同一攻擊的不同變體方面功能很強大。因此,深度學習技術可以提高惡意JS注入的檢出率。

          深度學習技術還可以抵抗來自惡意軟件的對抗性逃避活動。這些類型的對抗性逃避的一個具體例子是普遍存在的黑盒對抗性威脅,即良性附加攻擊。

          結論

          在2022年至2023年初期間,在51000多個網站上檢測到了一起廣泛的惡意JavaScript注入活動。我們發現惡意軟件編寫者對惡意JS進行混淆處理以繞過檢測機制,并在重定向到惡意網頁之前執行多步注入。

          注入的JS代碼可能影響了大量互聯網用戶,因為數百個受感染的網站躋身Tranco前100萬網站排行榜。我們建議網站所有者和客戶及時更新第三方插件和軟件,以保護他們的網站免受這類注入。

          這起活動中注入的惡意JS代碼是我們在外頭看到的附加攻擊的一個常見例子。正如我們在IEEE安全和隱私研討會(SPW)上發表的IUPG模型研究工作中所解釋的那樣,IUPG模型的訓練過程專門旨在識別和隔離良性內容背景中的惡意子模式。

          我們的深度學習模型無罪推定(IUPG)檢測到了注入惡意JS代碼的多種變體。該模型是高級URL過濾云提供的安全服務(可檢測惡意JS樣本)的檢測功能之一。它還可以對來自離線爬蟲以及防火墻上流量的內聯實時分析的內容進行分類。

          使用高級URL過濾和DNS安全訂閱的下一代防火墻讓客戶可以免受本文描述的惡意JS注入活動的已知URL和主機名。我們還提供了已知攻陷指鏈接(https://github.com/pan-unit42/iocs/blob/master/IOCs_MaliciousJS.txt),幫助對付本文中討論的威脅。


          翻譯自:https://unit42.paloaltonetworks.com/malicious-javascript-injection/

          from https://www.4hou.com/index.php/posts/GKy0

          景說明

          假設需要劫持http響應并在html頁面中注入一段js代碼后再傳回瀏覽器,實現在瀏覽器出現一個彈框消息提醒。

          由于原始html頁面編碼格式存在UTF-8、GBK等多種編碼格式,如果注入的js包含中文消息的話,那么在UTF-8或GBK編碼的頁面就會有一個出現亂碼。有沒有辦法做到不管是針對GBK、UTF-8編碼的頁面都能做到正常顯示而不會出現亂碼哪?

          產生亂碼的原因

          首先來分析一下產生亂碼的原因,我們在瀏覽器看到的信息都是通過圖形學手段在顯示器上呈現出來的,而實際保存在計算機硬件上的都是0和1(因為計算機實現是基于二進制),那么計算機要顯示、傳遞信息就需要依靠一套規則把一串串的0和1識別為正確的字符,這就是編碼。

          例如01000001在ASCII編碼規則下對應字母A。相同的0/1串,不同的編碼解析出的字符一般是不同的,因此如果html頁面按照UTF-8的編碼解析正常,那么按照GBK的編碼解析就會是亂碼了。根據上面的示意圖,假設注入的js代碼為utf-8編碼格式,而原始html編碼格式也為UTF-8編碼格式,那么最終注入這部分中的中文就能正常顯示,但是如果原始html為GBK編碼,那注入的這部分js代碼的中文就會顯示亂碼。

          解決辦法

          有一種unicode統一編碼字符集,目標是把所有文字、字符統一編碼,也就是一串0/1組合在unicode字符集下對應的字符是唯一的,不會存在歧義。而js是支持解析unicode字符的,那么就可以在注入js中把要顯示的消息統一轉換為unicode編碼,瀏覽器端去解析這個unicode編碼,這樣不管原始html是UTF-8還是GBK,都能正常顯示中文。

          原始注入js代碼關于中文字符的部分

          // utf-8編碼格式
          let message="中文";

          解決亂碼的注入js代碼關于中文字符的部分

          // utf-8編碼格式
          let message="\\u4e2d\\u6587";  // 這個編碼對應上面的message"中文"

          注意:

          1. 注入的js代碼仍然是utf-8編碼格式,只是消息內容轉換為unicode編碼的形式;
          2. unicode中0x4e2d表示的0/1串對應漢字"中",0x6587對應的0/1串對應漢字"文";
          3. message其實也不是真正的unicode編碼,它只是普通的字符串,只是使用了unicode對應的碼點(也就是二進制對應的數值),因為可以利用這個碼點在瀏覽器中恢復出正確的字符,事實上unicode字符集并沒有規定具體的編碼格式。

          • 最終產品代碼中對錯誤的處理方式要比“垃圾進,垃圾出”復雜的多。
          • 防御式編程技術可以讓錯誤更容易發現、更容易修改,并減少錯誤對產品代碼的破壞。
          • 斷言可以幫助人盡早發現錯誤,尤其是在大型系統和高可靠性的系統中,以及快速變化的代碼中。
          • 關于如何處理錯誤輸入的決策是一項關鍵的錯誤處理決策,也是一項關鍵的高層設計決策。
          • 異常提供了一種與代碼正常流程角度不同錯誤處理手段。如果留心使用異常,它可以稱為程序員們知識工具箱中的一項有益補充,同時也應該在異常和其他錯誤處理手段之間進行權衡比較。
          • 針對產品代碼的限制并不適用于開發中的軟件。你可以利用這一優勢在開發中添加有助于更快地排查錯誤的代碼。

          核對表 (防御式編程)

          一般事宜

          • 子程序是否保護自己免遭有害輸入數據的破壞?
          • 你用斷言來說明編程假定嗎?其中包括了前條件和后條件嗎?
          • 斷言是否只是用來說明從不應該發生的情況?
          • 你是否在架構或高層設計中規定了一組特定的錯誤處理技術?
          • 你是否在架構或高層設計中規定了是讓錯誤處理更傾向于健壯性還是正確性?
          • 你是否建立了隔欄來遏制錯誤可能造成的破壞?是否減少了其他需要關注錯誤處理的代碼的數量?
          • 代碼中用到的輔助調試的代碼了嗎?
          • 如果需要啟用或禁用添加的輔助助手的話,是否無須大動干戈
          • 在防御式編程時引入的代碼量是否適宜——既不過多,也不過少?
          • 你在開發階段是否采用了進攻式編程來使錯誤難以被忽視?

          異常

          • 你在項目中定義了一套標準化的異常處理方案嗎
          • 是否考慮過異常之外的其他替代方案?
          • 如果可能的話,是否在局部處理了錯誤而不是把它當成一個異常拋到外部?
          • 代碼中是否避免了在構造函數和析構函數中拋出異常?
          • 所有的異常是否都與拋出它們的子程序處于同一個抽象層次上?
          • 每個異常是否都包含了關于異常發生的所有背景信息?
          • 代碼中是否沒有使用空的catch語句?(或者如果使用空的catch語句確實很合適,那么明確說明了嗎?)

          安全事宜

          • 檢查有害輸入數據的代碼是否也檢查了故意的緩沖區溢出,SQL注入、HTML注入、整數溢出以及其他惡意輸入數據?
          • 是否檢查了所有的錯誤返回碼?
          • 是否捕獲了所有異常?
          • 出錯消息中是否避免出現有助于攻擊者攻入系統所需的信息

          安全、斷言、異常


          主站蜘蛛池模板: 东京热无码一区二区三区av| 2020天堂中文字幕一区在线观| 国产午夜精品片一区二区三区| 精品福利一区二区三| 丝袜人妻一区二区三区网站| 亚洲乱色熟女一区二区三区丝袜| av无码精品一区二区三区四区| 红杏亚洲影院一区二区三区 | 亚洲日韩国产一区二区三区在线| 一区二区三区日韩精品| 国产一区二区不卡老阿姨| 一区二区三区日本视频| 久久久精品人妻一区亚美研究所| 在线观看国产一区二三区| 高清一区高清二区视频| 国产a∨精品一区二区三区不卡 | 一区二区在线播放视频| 精品一区二区在线观看| 国模精品一区二区三区视频 | 亚洲不卡av不卡一区二区| 国产高清一区二区三区| 国产韩国精品一区二区三区| 日韩国产精品无码一区二区三区 | 国产成人一区二区三区精品久久| 日本韩国黄色一区二区三区 | 无码人妻一区二区三区一| 一区二区国产精品| 大香伊人久久精品一区二区| 日本夜爽爽一区二区三区| 国产精品分类视频分类一区| 一区二区三区久久精品| 一区二区三区在线观看| 综合人妻久久一区二区精品| 精品国产一区二区三区久久影院| 国产精品视频一区二区三区四| 国产一区二区精品久久岳√| 亚洲香蕉久久一区二区三区四区 | 成人在线观看一区| 人妻无码久久一区二区三区免费| chinese国产一区二区| 成人h动漫精品一区二区无码|