溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎樣使用js-x-ray檢測JavaScript和Node.js中的常見惡意行為

發(fā)布時間:2021-09-30 10:26:35 來源:億速云 閱讀:124 作者:柒染 欄目:網(wǎng)絡(luò)管理

本篇文章給大家分享的是有關(guān)怎樣使用js-x-ray檢測JavaScript和Node.js中的常見惡意行為,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

js-x-ray

js-x-ray是一款功能強大的開源SAST掃描工具,其本質(zhì)上是一個靜態(tài)分析工具,可以幫助廣大研究人員檢測JavaScript和Node.js中的常見惡意行為&模式。

該工具可以執(zhí)行JavaScript AST分析,其目的是導(dǎo)出Node-Secure AST Analysis以實現(xiàn)更好的代碼演化,并允許開發(fā)人員和研究人員更好地訪問。該工具的主要目標是為了幫助開發(fā)人員和安全研究人員快速識別危險的代碼和模式。不過,想要完全解析該工具的輸出結(jié)果,還是要求我們具備一定的安全知識。

該項目的目標是成功檢測所有可疑的JavaScript代碼,即那些顯然是出于惡意目的添加或注入的代碼。大多數(shù)時候,網(wǎng)絡(luò)攻擊者會盡量隱藏他們代碼的行為,以避免觸發(fā)檢測引擎或增加分析人員的分析難度。而js-x-ray的任務(wù)就是理解和分析這些模式,以幫助我們檢測到惡意代碼。

功能介紹

  • 檢索js所需的依賴項和文件;

  • 檢測不安全的正則表達式;

  • 當(dāng)AST分析出現(xiàn)問題或無法遵循語句時獲取警告;

  • 突出顯示常見的攻擊模式和API調(diào)用;

  • 能夠跟蹤并分析危險的js全局使用;

  • 檢測經(jīng)過混淆處理的代碼,并在可能的情況下檢測已使用的工具;

工具安裝

js-x-ray包可以直接從Node包代碼庫中直接獲取,或者使用npm或yarn來進行在線安裝:

$ npm i js-x-ray

# or

$ yarn add js-x-ray

工具使用

使用下列內(nèi)容創(chuàng)建一個本地.js文件:

try  {
    require("http");
}
catch (err) {
    // do nothing
}
const lib = "crypto";
require(lib);
require("util");
require(Buffer.from("6673", "hex").toString());

接下來,使用“js-x-ray”命令來對目標JavaScript代碼進行分析:

const { runASTAnalysis } = require("js-x-ray");
const { readFileSync } = require("fs");
const str = readFileSync("./file.js", "utf-8");
const { warnings, dependencies } = runASTAnalysis(str);
const dependenciesName = [...dependencies];
const inTryDeps = [...dependencies.getDependenciesInTryStatement()];
console.log(dependenciesName);
console.log(inTryDeps);
console.log(warnings);

分析將返回http、crypto、util和fs。

在該項目的cases目錄下還提供了很多可以分析的可疑代碼示例,感興趣的同學(xué)可以使用js-x-ray來對它們進行分析。

返回的警告

名稱

描述

parsing-error

使用meriyah解析JavaScript代碼時出錯。這意味著從string到AST的轉(zhuǎn)換失敗了。

unsafe-import

無法跟蹤導(dǎo)入 (require, require.resolve) statement/expr。

unsafe-regex

正則表達式已被檢測為不安全,可能被用于ReDoS攻擊。

unsafe-stmt

使用了危險的語句,例如 eval()或Function("")。

unsafe-assign

分配了一個受保護的全局進程。

encoded-literal

檢測到已編碼的文本(可以是六進制值、unicode序列、Base64字符串等)。

short-identifiers

這意味著所有標識符的平均長度都低于1.5。僅當(dāng)文件包含5個以上標識符時才可能返回。

suspicious-literal

這意味著所有文字的可疑分數(shù)之和大于3。

obfuscated-code (experimental)

代碼可能經(jīng)過了混淆處理。

API

runASTAnalysis

interface RuntimeOptions {

    module?: boolean;

    isMinified?: boolean;

}

該方法接收的第一個參數(shù)就是我們需要分析的代碼,它將返回一個Report對象:

interface Report {

    dependencies: ASTDeps;

    warnings: Warning<BaseWarning>[];

    idsLengthAvg: number;

    stringScore: number;

    isOneLineRequire: boolean;

}

generateWarning

interface WarningOptions {

    location: Location;

    file?: string;

    value?: string;

}

rootLocation()

返回一個默認的SourceLocation,并包含下列內(nèi)容:

{ start: { line: 0, column: 0 }, end: { line: 0, column: 0 } }

許可證協(xié)議

本項目的開發(fā)與發(fā)布遵循MIT開源許可證協(xié)議。

以上就是怎樣使用js-x-ray檢測JavaScript和Node.js中的常見惡意行為,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI