用程序行為提取和惡意行為檢測(cè)過(guò)程的示 意圖;
[0022] 圖3為根據(jù)本發(fā)明實(shí)施例的通過(guò)Web應(yīng)用程序行為進(jìn)行惡意行為檢測(cè)方法的流程 圖。
【具體實(shí)施方式】
[0023] 下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終 相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過(guò)參考附 圖描述的實(shí)施例是示例性的,旨在用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制。
[0024] 下面結(jié)合附圖描述本發(fā)明實(shí)施例的Web應(yīng)用程序行為提取方法和通過(guò)Web應(yīng)用程 序行為進(jìn)行惡意行為檢測(cè)方法。
[0025] 圖1為根據(jù)本發(fā)明一個(gè)實(shí)施例的Web應(yīng)用程序行為提取方法的流程圖。
[0026] 如圖1所示,本發(fā)明實(shí)施例的Web應(yīng)用程序行為提取方法,包括W下步驟:
[0027] S101,Web應(yīng)用程序行為記錄模塊攔截化vaScript函數(shù),并提取待測(cè)Web應(yīng)用程序 的行為記錄,其中,行為記錄包括待測(cè)Web應(yīng)用程序調(diào)用的化vaScript函數(shù)的名稱、接收參 數(shù)和函數(shù)調(diào)用找信息。
[0028] 在本發(fā)明的實(shí)施例中,運(yùn)行待測(cè)Web應(yīng)用程序的Web瀏覽器可安裝有Web應(yīng)用程序 行為記錄瀏覽器擴(kuò)展插件。
[0029] 在本發(fā)明的實(shí)施例中,可通過(guò)Web應(yīng)用程序行為記錄瀏覽器擴(kuò)展插件攔截 JavaScript函數(shù),并提取待測(cè)Web應(yīng)用程序的行為記錄,具體可包括:將待攔截的 化vaScript函數(shù)重命名;定義新函數(shù),新函數(shù)與重命名前的化vaScript函數(shù)同名;在新函數(shù) 中加入代碼W獲取化vaScript函數(shù)的名稱和函數(shù)的接收參數(shù);利用化vaScript函數(shù)的錯(cuò)誤 處理機(jī)制獲取函數(shù)調(diào)用找信息。其中JavaScript函數(shù)位于Web瀏覽器中。
[0030] 具體地,在化vaScript函數(shù)代碼中,將待攔截的化vaScript函數(shù)重命名,然后定義 與待攔截的化vaScript函數(shù)同名的函數(shù),從而當(dāng)Web應(yīng)用程序根據(jù)化vaScript函數(shù)的函數(shù) 名調(diào)用JavaScript函數(shù)時(shí),可令Web應(yīng)用程序調(diào)用新函數(shù),同時(shí),在新函數(shù)中根據(jù) 化vaScript函數(shù)的函數(shù)名調(diào)用化vaScript函數(shù),從而可避免影響函數(shù)的正常功能。實(shí)現(xiàn)上 述步驟的代碼如下:
[0031]
[0032] 在本發(fā)明的實(shí)施例中,上述步驟可不指定新函數(shù)的接收參數(shù),從而使新函數(shù)能夠 接收任意數(shù)量的參數(shù)。新函數(shù)所接收的參數(shù)可通過(guò)apply(this,a巧umentsΓ的方式傳遞 給原JavaScript函數(shù),并令該新函數(shù)返回原JavaScript函數(shù)的返回值,從而保證原 化vaScript函數(shù)的功能不受到影響。
[0033] 上述代碼所實(shí)現(xiàn)的步驟僅適用于化vaScript的全局系統(tǒng)函數(shù),而對(duì)于HTML元素的 成員函數(shù),則需要逐個(gè)獲取運(yùn)些HTML元素并對(duì)其成員函數(shù)逐個(gè)進(jìn)行修改,運(yùn)些HTML元素包 括已有的HTML元素和之后新創(chuàng)建的HTML元素,其示例代碼如下:
[0034]
[0036]在上述新函數(shù)中加入代碼,即可獲取化vaScript函數(shù)的名稱和函數(shù)的接收參數(shù)。 對(duì)參數(shù)的記錄可W通過(guò)讀取"arguments (-種自變量Γ運(yùn)一變量來(lái)實(shí)現(xiàn),具體地,可先將 "a巧uments"變量轉(zhuǎn)為數(shù)組,使得數(shù)組的每個(gè)元素都存放一個(gè)傳入?yún)?shù)的值,之后再將運(yùn)些 值轉(zhuǎn)換為字符串并連接起來(lái),組成一個(gè)完整的字符串,w便于記錄。其示例代碼如下:
[0037]
[0038] 其中,妒可對(duì)各個(gè)參數(shù)進(jìn)行分隔。
[0039] 化vaScript函數(shù)的名稱和接收參數(shù)僅表示了單次調(diào)用函數(shù)的調(diào)用信息,在本發(fā)明 的實(shí)施例中,可通過(guò)函數(shù)調(diào)用找信息來(lái)表示多次調(diào)用的函數(shù)之間的關(guān)系。利用化vaScript 函數(shù)的錯(cuò)誤處理機(jī)制獲取函數(shù)調(diào)用找信息具體包括:首先定義一個(gè)t巧塊(一種監(jiān)視所有可 能發(fā)生異常的代碼),在其中故意觸發(fā)一個(gè)錯(cuò)誤,如訪問(wèn)沒(méi)有事先定義的變量,然后在對(duì)應(yīng) 的catch塊(一種處理異常的代碼)中讀取該錯(cuò)誤所提供的當(dāng)前函數(shù)調(diào)用找信息,最后將函 數(shù)調(diào)用找信息轉(zhuǎn)為字符串并寫入行為記錄。其示例代碼如下:
[0040]
[0041 ]由此,通過(guò)上述方法提取出了待測(cè)Web應(yīng)用程序調(diào)用的化vaScript函數(shù)的名稱、函 數(shù)的接收參數(shù)、W及函數(shù)調(diào)用找信息。
[0042] S102,將待測(cè)Web應(yīng)用程序的行為記錄發(fā)送到惡意行為檢測(cè)模塊,并將待測(cè)Web應(yīng) 用程序的行為記錄寫入行為日志文件。
[0043] 在本發(fā)明的實(shí)施例中,參照?qǐng)D2,惡意行為檢測(cè)模塊與提取待測(cè)Web應(yīng)用程序的行 為記錄的行為提取模塊可同處于content_script.js腳本中,因此,惡意行為檢測(cè)模塊可從 content_sc;ript. js腳本中實(shí)時(shí)讀取待測(cè)Web應(yīng)用程序的行為記錄,從而進(jìn)行實(shí)時(shí)惡意行為 檢測(cè)。
[0044] 在步驟S101中,所提取的待測(cè)Web應(yīng)用程序行為記錄可被寫入Web瀏覽器的控制 臺(tái),因此,可將控制臺(tái)中的待測(cè)Web應(yīng)用程序的行為記錄寫入行為日志文件。在本發(fā)明的實(shí) 施例中,W化rome瀏覽器為例,在運(yùn)行化rome瀏覽器時(shí)加上一enable-logging參數(shù),可令 Chrome瀏覽器將控制臺(tái)中的內(nèi)容寫入Chrome瀏覽器用戶數(shù)據(jù)目錄下的ch;rome_debug. log 文件中。
[0045] 根據(jù)本發(fā)明實(shí)施例的Web應(yīng)用程序行為提取方法,通過(guò)獲取待測(cè)Web應(yīng)用程序調(diào)用 的化vaScript函數(shù)的名稱、接收參數(shù)W及函數(shù)調(diào)用找信息等行為記錄,并將上述行為記錄 發(fā)送到惡意行為檢測(cè)模塊,同時(shí)將上述行為記錄寫入行為日志文件,由此,可避免對(duì)Web瀏 覽器源代碼的修改,實(shí)現(xiàn)簡(jiǎn)單且適用性較好,同時(shí)通過(guò)提取函數(shù)調(diào)用找信息,能夠獲取多個(gè) 被調(diào)用的函數(shù)之間的關(guān)系,從而實(shí)現(xiàn)了對(duì)Web應(yīng)用程序行為的全面監(jiān)控,有助于實(shí)現(xiàn)后續(xù)對(duì) 惡意行為的檢測(cè)。
[0046] 對(duì)于Web瀏覽器用戶來(lái)說(shuō),Web應(yīng)用程序的行為往往是隱藏在后臺(tái)的,運(yùn)不利于Web 瀏覽器用戶了解Web應(yīng)用程序并發(fā)現(xiàn)其中隱含的惡意行為。鑒于此,本發(fā)明實(shí)施例的Web應(yīng) 用程序行為提取方法,還包括了將待測(cè)Web應(yīng)用程序的行為記錄顯示出來(lái)的步驟。具體地, 圖2中的行為繪制模塊可根據(jù)待測(cè)Web應(yīng)用程序的行為記錄統(tǒng)計(jì)函數(shù)的調(diào)用次數(shù)和HTML元 素訪問(wèn)次數(shù),并根據(jù)函數(shù)的調(diào)用次數(shù)和HTML元素訪問(wèn)次數(shù)繪制待測(cè)Web應(yīng)用程序?qū)崟r(shí)行為 圖表,W實(shí)時(shí)顯示待測(cè)Web應(yīng)用程序的行為記錄。
[0047] 在本發(fā)明的實(shí)施例中,為了避免遮擋Web應(yīng)用程序本身,可在Web瀏覽器的popup頁(yè) 面中繪制待測(cè)Web應(yīng)用程序?qū)崟r(shí)行為圖表。因此,可將產(chǎn)生于Web應(yīng)用程序內(nèi)部的函數(shù)的調(diào) 用次數(shù)和HTML元素訪問(wèn)次數(shù)數(shù)據(jù)傳遞到Web瀏覽器擴(kuò)展的popup, js腳本中。在本發(fā)明的實(shí) 施例中,可將Web瀏覽器擴(kuò)展的content_sc;ript. js腳本作為中間橋梁,將數(shù)據(jù)從Web應(yīng)用程 序內(nèi)部傳遞到瀏覽器擴(kuò)展的popup, js腳本。因此具體傳遞過(guò)程可如下述步驟a和b。
[004引曰、從Web應(yīng)用程序內(nèi)部傳遞到瀏覽器擴(kuò)展的content_sc;ript. js腳本。
[0049] 具體地,對(duì)于函數(shù)的調(diào)用次數(shù)數(shù)據(jù),可為每個(gè)化vaScript函數(shù)創(chuàng)建一個(gè)計(jì)數(shù)HTML 元素(若該化vaScript系統(tǒng)函數(shù)為HTML元素的成員函數(shù),則全部HTML元素共享同一個(gè)計(jì)數(shù) HTML元素),用該計(jì)數(shù)HTML元素的屬性值來(lái)記錄所對(duì)應(yīng)的化vaScript函數(shù)的名稱和該函數(shù) 的調(diào)用次數(shù)。函數(shù)調(diào)用次數(shù)的統(tǒng)計(jì)過(guò)程示例代碼如下:
[(K)加 ]
[0051 ] 對(duì)于HTML元素訪問(wèn)次數(shù)數(shù)據(jù),可為每個(gè)HTML元素創(chuàng)建