如何使用js-x-ray检测JavaScript和Node.js中的常见恶意行为

访客3年前黑客文章651

js-x-ray

js-x-ray是一款功能强大的开源SAST扫描工具,其本质上是一个静态分析工具,可以帮助广大研究人员检测JavaScript和Node.js中的常见恶意行为&模式。

该工具可以执行JavaScript AST分析,其目的是导出Node-Secure AST Analysis以实现更好的代码演化,并允许开发人员和研究人员更好地访问。该工具的主要目标是为了帮助开发人员和安全研究人员快速识别危险的代码和模式。不过,想要完全解析该工具的输出结果,还是要求我们具备一定的安全知识。

该项目的目标是成功检测所有可疑的JavaScript代码,即那些显然是出于恶意目的添加或注入的代码。大多数时候, *** 攻击者会尽量隐藏他们代码的行为,以避免触发检测引擎或增加分析人员的分析难度。而js-x-ray的任务就是理解和分析这些模式,以帮助我们检测到恶意代码。

功能介绍

  • 检索js所需的依赖项和文件;
  • 检测不安全的正则表达式;
  • 当AST分析出现问题或无法遵循语句时获取警告;
  • 突出显示常见的攻击模式和API调用;
  • 能够跟踪并分析危险的js全局使用;
  • 检测经过混淆处理的代码,并在可能的情况下检测已使用的工具;

工具安装

js-x-ray包可以直接从Node包代码库中直接获取,或者使用npm或yarn来进行在线安装:

$ npm i js-x-ray

# or

$ yarn add js-x-ray

工具使用

使用下列内容创建一个本地.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("https://www.freebuf.com/articles/web/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目录下还提供了很多可以分析的可疑代码示例,感兴趣的同学可以使用js-x-ray来对它们进行分析。

返回的警告

名称

描述

parsing-error

使用meriyah解析JavaScript代码时出错。这意味着从string到AST的转换失败了。

unsafe-import

无法跟踪导入 (require, require.resolve) statement/expr。

unsafe-regex

正则表达式已被检测为不安全,可能被用于ReDoS攻击。

unsafe-stmt

使用了危险的语句,例如?eval()或Function("")。

unsafe-assign

分配了一个受保护的全局进程。

encoded-literal

检测到已编码的文本(可以是六进制值、unicode序列、Base64字符串等)。

short-identifiers

这意味着所有标识符的平均长度都低于1.5。仅当文件包含5个以上标识符时才可能返回。

suspicious-literal

这意味着所有文字的可疑分数之和大于3。

obfuscated-code (experimental)

代码可能经过了混淆处理。

API

runASTAnalysis

interface RuntimeOptions {

module?: boolean;

isMinified?: boolean;

}

该 *** 接收的之一个参数就是我们需要分析的代码,它将返回一个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,并包含下列内容:

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

许可证协议

本项目的开发与发布遵循MIT开源许可证协议。

项目地址

js-x-ray:【GitHub传送门

相关文章

纯胡椒粉和白胡椒粉一样吗(白胡椒和胡椒粉的区别)

  我一直以为黑胡椒粉是黑胡椒粉生的,黑胡椒粉是黑胡椒粉生的。由于黑胡椒粉和黑胡椒粉在外型和味儿上面有非常大的不一样。   可是之后,我发现了对不起。黑胡椒粉和黑胡椒粉是同一个妈妈生的。无论黑胡椒粉還...

半是蜜糖半是伤追剧日历 半是蜜糖半是伤更新时间表

半是蜜糖半是伤追剧日历 半是蜜糖半是伤更新时间表

《半是蜜糖半是伤》刷剧日历给诸位送上,也有撒狗粮的关键连续剧标明,给你不能错过每一集超甜的一瞬间,9月27日播出,10月27日结局,坚信许多观众们都是会感觉不够,下边产生半是蜜糖半是伤刷剧日历和时刻表...

快乐大本营单身公主相亲记(快乐大本营exo)

2012年06月09日《快乐大本营》EXO-M2012年07月21日《快乐大本营》15周年庆EXO全体2013年07月06日《快乐大本营》EXO全体2014年07月05日《。 EXO一共上过四次快乐大...

如何冲茶(7个泡茶步骤)

如何冲茶(7个泡茶步骤)

如何冲茶(7个泡茶步骤)泡一杯茶,要从烧水开始,需要有等待的过程,还有洁具、醒茶等过程,如果了草,难以泡好。而如果你急着就想喝茶,是难等到一杯好茶,因为好茶需要更多的等待,比如,找机会找到好茶。...

黑客用什么来攻击(黑客攻击有哪些方式)

黑客用什么来攻击(黑客攻击有哪些方式)

本文目录一览: 1、黑客是如何攻击别人的电脑的? 2、黑客攻击种类 3、黑客有哪些攻击手段? 4、所谓的黑客攻防是通过什么实现的呢? 5、黑客攻击主要有哪些手段? 黑客是如何攻击别人...

2020冬季气候预测-2020冬季气温专家预测-2020冬季是寒冬吗

许多 盆友近期都是会跟我说2020年的冬季是否会很冷呢,实际上也是由于近期有传言说今年的冬季会很冷,那麼2020冬天平均气温预则是如何的,针对2020冬天气侯预测分析大家还了解些什么吗,也有很多人会问...