Arachni/arachni
GitHub: Arachni/arachni
Arachni 是一款模块化、高性能的 Ruby Web 应用安全扫描框架,能够自动检测 Web 应用中的各类安全漏洞并支持现代 Web 技术栈。
Stars: 4010 | Forks: 786
# 注意事项
Arachni 已过时,请尝试其下一代继任者
[Ecsypno](https://www.ecsypno.com/) [代号 SCNR](https://ecsypno.com/pages/codename-scnr)!
# Arachni - Web 应用程序安全扫描框架

## 概要
Arachni 是一个功能丰富、模块化、高性能的 Ruby 框架,旨在
帮助渗透测试人员和管理员评估 Web 应用程序的安全性。
它非常智能,通过在扫描过程中监控和学习 Web 应用程序的
行为来进行自我训练,并能够利用多种因素进行元分析,
从而正确评估结果的可信度并智能地识别(或避免)误报。
与其他扫描器不同,它考虑了 Web 应用程序的动态特性,
可以检测在遍历 Web 应用程序圈复杂度路径时引起的变化,
并能够相应地进行自我调整。这样,那些非人类难以检测的
攻击/输入向量就可以被无缝处理。
此外,由于其集成的浏览器环境,它还可以审计和检查
客户端代码,并支持大量使用 JavaScript、HTML5、DOM 操作和 AJAX 等
技术的复杂 Web 应用程序。
最后,它的多功能性足以覆盖大量用例,从
简单的命令行扫描工具,到全球高性能扫描器网格,
再到允许脚本化审计的 Ruby 库,以及多用户多扫描 Web 协作平台。
**注意**:尽管 Arachni 主要针对 Web 应用程序安全,
但通过添加自定义组件,它可以轻松用于通用抓取、数据挖掘等任务。
### Arachni 提供:
#### 稳定、高效、高性能的框架
`检查`、`报告`和`插件`开发者可以轻松快速地创建和
部署他们的组件,且受到最少的限制,
同时获得必要的基础设施支持以实现其目标。
此外,鼓励他们在一个统一的框架下充分利用 Ruby 语言,
这将提高他们的生产力,而不会限制他们
或使他们的任务复杂化。
而且,该框架可以作为任何其他 Ruby 库使用,从而
开发全新的扫描器,或帮助您创建高度定制的
扫描/审计场景和/或脚本化扫描。
#### 简单性
尽管框架的某些部分相当复杂,但您永远不必直接处理它们。
从用户或组件开发者的角度来看,一切都很简单
且直观,同时提供强大的功能、性能和灵活性。
从简单的命令行扫描工具到直观且用户友好的
Web 界面和协作平台,Arachni 遵循最小惊讶原则,
为您提供大量的反馈和指导。
#### 简而言之
Arachni 旨在自动检测 Web 应用程序中的安全问题。
它只需要目标网站的 URL,过一会儿就会
向您展示其发现。
## 功能特性
### 通用特性
- Cookie-jar/cookie-string 支持。
- 自定义 Header 支持。
- 具有细粒度选项的 SSL 支持。
- 用户代理伪装。
- 支持 SOCKS4、SOCKS4A、SOCKS5、HTTP/1.1 和 HTTP/1.0 的代理。
- 代理认证。
- 站点认证(基于 SSL、基于表单、Cookie-Jar、Basic-Digest、NTLMv1、Kerberos 等)。
- 自动登出检测和扫描期间的重新登录(当初始
登录是通过 `autologin`、`login_script` 或 `proxy` 插件执行时)。
- 自定义 404 页面检测。
- UI 抽象:
- [命令行界面](https://github.com/Arachni/arachni/wiki/Executables)。
- [Web 用户界面](https://github.com/Arachni/arachni-ui-web)。
- 暂停/恢复功能。
- 休眠支持 -- 挂起到磁盘并从磁盘恢复。
- 高性能异步 HTTP 请求。
- 具有可调整的并发性。
- 具有自动检测服务器健康状况并自动调整其并发性的能力。
- 支持自定义默认输入值,使用成对的模式(用于匹配输入名称)和用于填充匹配输入的值。
### 集成浏览器环境
Arachni 包含一个集成的真实浏览器环境,以便为
使用 HTML5、JavaScript、DOM 操作、AJAX 等
技术的现代 Web 应用程序提供足够的覆盖范围。
除了监控普通的 DOM 和 JavaScript 环境外,
Arachni 的浏览器还挂钩到流行的框架中,使记录的数据
更易于理解:
- [JQuery](http://jquery.com/)
- [AngularJS](https://angularjs.org/)
- 更多即将推出...
本质上,这将 Arachni 变成了一个 DOM 和 JavaScript 调试器,使其能够
监控 DOM 事件和 JavaScript 数据及执行流。因此,系统
不仅可以触发和识别基于 DOM 的问题,而且还会附带
大量关于当时页面状态的信息。
相关信息包括:
- 页面 DOM,作为 HTML 代码。
- 包含将页面状态恢复到记录时状态所需的 DOM 转换列表。
- 原始 DOM(即在导致页面被记录的操作之前),
作为 HTML 代码。
- 包含 DOM 转换列表。
- 数据流接收点 -- 每个接收点是一个接收了受污染参数的 JS 方法。
- 方法的父对象(例如:`DOMWindow`)。
- 方法签名(例如:`decodeURIComponent()`)。
- 参数列表。
- 包含在所包含对象中递归定位的已识别污点。
- 方法源代码。
- JS 堆栈跟踪。
- 执行流接收点 -- 每个接收点是一个成功执行的 JS 负载,
由安全检查注入。
- 包含 JS 堆栈跟踪。
- JavaScript 堆栈跟踪包括:
- 方法名称。
- 方法位置。
- 方法源代码。
- 参数列表。
本质上,您可以访问与您喜欢的调试器(例如 FireBug)提供的
大致相同的信息,就像您设置了断点
在正确的时间进行以识别问题一样。
#### 浏览器集群
浏览器集群协调资源的浏览器分析,并
允许系统以高性能方式执行通常相当耗时的操作。
配置选项包括:
- 可调整的池大小,即要利用的浏览器工作者数量。
- 每个作业的超时时间。
- 以作业数计算的工作者 TTL -- 超过 TTL 的工作者将使其浏览器
进程重新启动。
- 禁用加载图像的能力。
- 可调整的屏幕宽度和高度。
- 可用于分析响应式和移动应用程序。
- 等待特定元素在页面中出现的能力。
- 可配置的本地存储数据。
### 覆盖范围
由于其集成的浏览器环境,该系统可以为现代 Web 应用程序提供
极大的覆盖范围。这使其能够像人类一样与
大量使用客户端代码(如 JavaScript)的复杂应用程序进行交互。
此外,它还知道应用程序被编程为处理哪些浏览器状态更改,
并能够以编程方式触发它们,
以便为所有可能的场景提供覆盖。
通过检查所有可能的页面及其状态(在使用客户端代码时),
Arachni 能够提取和审计以下元素及其输入:
- 表单
- 包括那些由于 DOM 事件而需要通过真实浏览器交互的表单。
- 用户界面表单
- 不属于 HTML `
| 版本 | 1.6.1.3 |
|---|---|
| 主页 | http://arachni-scanner.com |
| 博客 | http://arachni-scanner.com/blog |
| Github | http://github.com/Arachni/arachni |
| 文档 | https://github.com/Arachni/arachni/wiki |
| 代码文档 | http://rubydoc.info/github/Arachni/arachni |
| 支持 | http://support.arachni-scanner.com |
| 作者 | Tasos Laskos (@Zap0tek) |
| @ArachniScanner | |
| 版权 | 2010-2022 Ecsypno |
| 许可证 | Arachni 公共源代码许可证 v1.0 - (参见 LICENSE 文件) |
标签:Arachni, CISA项目, DOE合作, Prisma Cloud, Ruby, Web安全, 加密, 反取证, 安全评估, 对称加密, 开源安全工具, 数据可视化, 模块化设计, 漏洞扫描器, 知识库, 网络安全, 自动化修复, 自动化审计, 蓝队分析, 调试插件, 逆向工程平台, 隐私保护, 黑盒测试