Skip to content

winezer0/DynaScan

Repository files navigation

DynaScan (戴拿)

dynamic Weak File Scanner 动态敏感文件扫描器  By NOVASEC && WINEZER0

本工具整体架构已迭代完毕,如果您有自己的字典文件,那现在就开始使用吧!!!

0、前提摘要

0.1、严正声明:

本工具仅用于合法范围内进行企业防御测试,请勿用于违法活动, 否则所有产生后果由使用者自身负责!!!

本团队任何技术及文件仅用于学习研究,请勿用于任何违法活动,感谢大家的支持!!!

0.2、技术支持

欢迎大家提交扩展需求、Issue、命中记录文件、技术支持、使用反馈

紧急消息请在[NOVASEC]公众号后台联系。

0.3、更新记录

更新记录参考 历史更新记录.md

0.4、TODO

必选:
    新建springboot扫描字典
其他:
    新建其他敏感文件扫描字典
    优化备份文件扫描字典 

1、程序说明

1.1、程序开发目的

1. 基于网站路径【动态检测】指定目录【根目录和当前目录】下的敏感文件,并支持自动过滤大部分不存在的路径。

2. 开发前主要关注于目录下的备份文件扫描,目前结构已支持结合dirsearch等工具的扫描结果进行敏感文件扫描。

3. 支持自动分割目录为多个基本URL进行扫描,但不支持自动递归扫描,可以联合dirsearch等工具的扫描结果进行深度使用。

1.2、功能描述:

1.根据规则生成动态字典文件,实现动态替换(日期、域名、路径等)属性

2.根据实时响应情况,自动筛选不存在的文件、重复的文件。(响应码、标题、命中文件CRC32值)

3.支持对中文和特殊字符的路径进行URL编码。(默认仅对中文进行编码)

4.添加字典频率筛选功能,仅加载频率在某一个阈值范围的字典.(默认加载频率10)

5.支持简单分析命中结果,便于实现字典的不断优化。

1.3、相关文件位置

1.runtime 日志文件
runtime/runtime_info.log  正常信息 
runtime/runtime_debug.log 调试信息 
runtime/runtime_error.log 错误信息

2.result 结果文件
result/{主机名}_result.csv 命中结果(需要关注)
result/{主机名}_ignore.csv 静态及动态特征过滤

3.dict_hit 命中记录
存放命中的扫描结果,便于实现字典的不断优化。

2、工具特点

2.1、扫描字典突出优势

1、支持多种动态规则来动态生成扫描路径

(通过基本变量替换+因变量替换+解析正则规则+解析自定义规则实现)。
(因变量支持域名、路径和自定义,基本变量支持从文件中读取替换。)
(由于规则解析的格式需要,因此对字典内容存在格式要求,具体规则编写办法参考下文)

2.2、HTTP请求配置

   1、对输入的目标URL自动进行格式分析、自动访问检测和协议头自动判断功能。
      简单输入——URL或URL文件,支持检测目标是否可以访问
      扩展输入——自动分析处理HOST格式[IP:PORT,Domain],自动检测分析请求协议

   2、默认启用中文路径或特殊字符会添加分别以【utf-8】作为基础编码进行URL编码。

   3、请求时大量的参数配置在setting_xxx.py中有描述和支持,用户可自定义大部分的参数配置。

   4、对已经访问过的URL可以进行过滤,不进行多次扫描。

   5、对输出的多级URL可选拆分为多个目标URL。
        情景1:直接获取用户输入的URL作为目标,拼接URL+字典路径进行扫描。 
        情景2:分别获取http://HOST:PORT、http://HOST:PORT/XXX/、http://HOST:PORT/XXX/YYY/等多个层级作为目标,然后拼接目标进行扫描。

   6、支持自动进行Refer头更新、HOST头更新,及配置Cookie等请求参数

2.3、HTTP响应配置

1、有效响应结果筛选可以选择多种筛选方案:

1、基本判断规则:
1.  响应状态码丢弃列表,判断响应状态码是否在丢弃列表内。
2、动态判断基准:
1.  响应内容前10字节,判断是否与随机测试路径响应内容的前十字节是否相同。
2.  响应内容Hash,判断是否与随机测试路径的响应全文Hash相同。
3.  响应内容实际返回大小,判断是否与随机测试路径的响应内容的实际返回大小相同。
4.  响应内容Content-Length,判断是否与随机测试路径的响应的Content-Length相同。
5.  响应内容Title,判断是否与随机测试路径的响应的标题字段相同。

更多使用配置参数详情参照 [setting.py]

3、字典目录结构

1. 字典文件的后缀默认设置为【.lst】,默认只读取目录下该后缀的字典文件。(该参数在setting_***.py中可以自定义)

2、每一行字典支持追加 【<-->XXX】 字段用于表明字典频率,用于阈值筛选来决定是否加载该路径。

3.1、dict_base目录

dict_base 存放基本变量字典,每个文件名或目录名都是一个基本变量,其内容是文件|目录所包好的文件的内容。

注意事项: 基础变量字典内,每一行规则仅且支持一条[{xxx:xx=xxxx}$]格式的动态替换规则,不支持基础变量。

基础变量名称由文件名自动提取,简述如下:
字典文件名 file_name.lst 
==> 删除后缀 
== > file_name 
== > %file_name%
==> 保存(基本替换规则)字典的键 

简单示例: 
1、dict_base目录下的字典文件【BACKUP_EXT.lst】会从文件名会提取出【%BACKUP_EXT%】作为替换关键字。
2、字典文件内容会在读取后转变为一个后缀列表 ['rar','zip',...]
3、字典文件名与内容会转变为一个替换字典 {"%BACKUP_EXT%": ['rar','zip',...],...}
4、然后会对后置列表内的每个元素的【{xxx=xx:xxxx}$】规则进行渲染。
5、然后在其他类型中进行直接替换,如【/admin.%BACKUP_EXT%】会变为【/admin.rar、/admin.zip、...】

3.2、dict_rule目录

dict_rule 存放扫描规则字典, 扫描字典添加支持两方案,不同的需求可以添加到不同的字典目录中。
1、base_root文件夹 添加直接拼接到URL根目录后的字典 
2、base_path文件夹 添加直接拼接到当前URL目录后的字典

dict_rule 目录下的文件名无特殊的命名要求,会读取目录下所有符合定义的自定后缀的文件内容。

dict_rule 目录存放的字典的规则内容会被【规则解析+基本变量替换+因变量替换】,然后根据所在目录类型,添加到URL当前目录或根目录之后。

4、字典文件内容编写规则

参考 动态规则编写.md

也可直接使用常规的目录字典进行爆破

NEED STAR And ISSUE

1、右上角点击Star支持更新.
2、ISSUE或NOVASEC提更新需求

NOVASEC

About

实现动态字典渲染、动态结果判断、自动命中记录、的敏感文件扫描器

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages