怎样使用js-x-ray检测JavaScript和node . js中的常见恶意行为

  介绍

本篇文章给大家分享的是有关怎样使用js-x-ray检测JavaScript和节点。js中的常见恶意行为,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

js-x-ray

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

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

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

功能介绍

<李>

检索js所需的依赖项和文件;

<李>

检测不安全的正则表达式;

<李>

当AST分析出现问题或无法遵循语句时获取警告;

<李>

突出显示常见的攻击模式和API调用;

<李>

能够跟踪并分析危险的js全局使用;

<李>

检测经过混淆处理的代码,并在可能的情况下检测已使用的工具;

工具安装

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

<>之前,美元npm 小姐:js-x-ray      #,或      美元,yarn  add  js-x-ray

工具使用

使用下列内容创建一个本地js文件:

 try , {
  ,,,需要(“http");
  }
  catch (错),{
  ,,,//do 没什么
  }
  const  lib =,“crypto";
  要求(自由);
  要求(“util");
  要求(Buffer.from (“6673”,,,“hex") .toString ()); 

接下来,使用“js-x-ray”命令来对目标JavaScript代码进行分析:

 const  {, runASTAnalysis },=,要求(“js-x-ray");
  {const  readFileSync },=,要求(“fs");
  const  str =, readFileSync (“。/file.js",,“utf-8");
  const {,警告,dependencies },=, runASTAnalysis (str);
  const  dependenciesName =,[…]依赖关系);
  const  inTryDeps =, […] dependencies.getDependenciesInTryStatement ());
  console.log (dependenciesName);
  console.log (inTryDeps);
  console.log(警告);

分析将返回http、加密、实效和fs。

在该项目的情况下目录下还提供了很多可以分析的可疑代码示例,感兴趣的同学可以使用js-x-ray来对它们进行分析。

返回的警告

<强> <强>名称

<强> <强>描述

解析错误

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

unsafe-import

无法跟踪导入(需要require.resolve)语句/expr。

unsafe-regex

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

unsafe-stmt

使用了危险的语句,例如,eval()或函数(“”)。

unsafe-assign

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

encoded-literal

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

short-identifiers

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

suspicious-literal

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

混淆代码(<强> <强>实验 )

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

API runASTAnalysis

 interface  RuntimeOptions  {
  
  ,,,模块:,布尔;
  
  ,,,isMinified吗?,布尔;
  
  }

该方法接收的第一个参数就是我们需要分析的代码,它将返回一个报告对象:

 interface  Report  {
  
  ,,,的依赖关系:,ASTDeps;
  
  ,,,的警告:,Warning [];
  
  ,,,idsLengthAvg:,数量;
  
  ,,,stringScore:,数量;
  
  ,,,isOneLineRequire:,布尔;
  
  }

generateWarning

 interface  WarningOptions  {
  
  ,,,地点:,位置;
  
  ,,,文件?:,字符串;
  
  ,,,的价值?:,字符串;
  
  }

怎样使用js-x-ray检测JavaScript和node . js中的常见恶意行为