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

访客4年前黑客文章694

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传送门

相关文章

找黑客找号被判多少钱-中原黑客同盟官网网站(龙图黑客同盟官网)

找黑客盗号软件判刑要多少钱有关难题 怎么加入中华网络黑客联盟有关难题 赛博侦探网络黑客的影像如何 天主之眼监管真的吗的(天主之眼通讯卫星舆地) 电子邮箱怎么会被网络黑客窃取...

黑客网QQ登录(黑客登陆)

黑客网QQ登录(黑客登陆)

黑客是怎么盗别人qq的 1、QQ号被盗主要有2个原因:登陆的电脑或者手机中存在QQ盗号木马,一旦我们在有病毒的电脑中登陆QQ,我们的QQ账号和密码就会被盗号者知道。2、常见的获取QQ密码的方法 通过木...

佩姐老火锅品牌值得加盟吗?抓住商机让你轻松致富

佩姐老火锅品牌值得加盟吗?抓住商机让你轻松致富

人是铁饭是钢,一顿不吃饿得慌,所以说美食对于人们是非常重要的,而具有特色的美食诱惑是大家都不能阻挡的。现在餐饮市场中的品牌能力都是参差不急的,所以想要创业的朋友们就不知道如何选择了。佩姐老火锅加盟做为...

怎么查询老公微信聊天的记录

现如今,有关于要不要教孩子方言的争议在网上讨论起来,不少的妈妈们担心教孩子方言会影响孩子的语言发育,对于应该教孩子说普通话还是方言,其实还是有很多方面要注意的,接下来友谊长存小编就来和大家说说教孩子学...

快递怎么寄(一分钟带你了解快递寄件流程)

快递怎么寄(一分钟带你了解快递寄件流程)

为了更好地相互配合各个当地政府搞好疫情防控工作中,全力保障邮政快递安全保障和领域稳定运作,1月28日,内蒙古自治区邮管局对我区邮政快递顾客作出以下提醒: 1.肺炎疫情不断期内,请顾客依据当地...

鹤留山中式快餐加盟条件?门槛低期待大家加盟

鹤留山中式快餐加盟条件?门槛低期待大家加盟

随着日益增长的物质文化的增长。经济水平的提高,越来越多的餐饮加盟店犹如雨后春笋般出现在我们面前,但是出现这么多品牌是真实的繁荣还是表明现象呢?加盟品牌不断追求创新发展以便于满足消费者的需要,让消费者拥...