概要
Arachni 是一个功能齐全、模块化、高性能的 Ruby 框架,旨在 帮助渗透测试人员和管理员评估 Web 应用程序的安全性。
它很聪明,它通过监控和学习 Web 应用程序来训练自己 扫描过程中的行为,并且能够使用许多 因素,以便正确评估结果的可信度并智能地 识别(或避免)误报。
与其他扫描仪不同,它考虑了 Web 应用程序的动态特性, 可以检测在 Web 应用程序的路径中移动时引起的更改 圈复杂度,并能够相应地进行自我调整。这样,攻击/输入 非人类无法检测到的载体可以无缝处理。
此外,由于其集成的浏览器环境,它还可以进行审计和检查 客户端代码,以及支持高度复杂的 Web 应用程序,这些应用程序使 大量使用 JavaScript、HTML5、DOM 操作和 AJAX 等技术。
最后,它的用途广泛,足以涵盖大量用例,包括 一个简单的命令行扫描程序实用程序,到全球高性能网格 扫描器,到允许脚本化审计的 Ruby 库,到多用户 多扫描 Web 协作平台。
注意:尽管 Arachni 主要针对 Web 应用程序 安全性,它可以很容易地用于通用抓取、数据挖掘等。 添加自定义组件。
Arachni提供:
稳定、高效、高性能的框架
Check
,开发人员可以轻松快速地创建和 以最少的限制部署其组件, 同时提供必要的基础设施来实现他们的目标。report
plugin
此外,我们鼓励他们充分利用 Ruby 语言 一个统一的框架,可以在不扼杀他们的情况下提高他们的生产力 或使他们的任务复杂化。
此外,该框架可以用作任何其他 Ruby 库和铅 开发全新的扫描仪或帮助您创建高度定制的扫描仪 扫描/审核方案和/或脚本化扫描。
单纯
尽管框架的某些部分相当复杂,但您永远不必直接处理它们。 从用户或组件开发人员的角度来看,一切似乎都很简单 直截了当,同时提供动力、性能和灵活性。
从简单的命令行实用程序扫描程序到直观且用户友好的扫描程序 Web界面和协作平台,Arachni遵循最少的原则 惊喜,并为您提供大量反馈和指导。
简单来说
Arachni 旨在自动检测 Web 应用程序中的安全问题。 它所期望的只是目标网站的 URL,一段时间后它就会出现 你和它的发现。
特征
常规
- Cookie-jar/cookie-string 支持。
- 自定义标头支持。
- 具有细粒度选项的 SSL 支持。
- 用户代理欺骗。
- 对 SOCKS4、SOCKS4A、SOCKS5、HTTP/1.1 和 HTTP/1.0 的代理支持。
- 代理身份验证。
- 站点身份验证(基于 SSL、基于表单、Cookie-Jar、Basic-Digest、NTLMv1、Kerberos 等)。
- 扫描期间自动注销检测并重新登录(当初始 登录是通过 或插件执行的。
autologin
login_script
proxy
- 自定义 404 页面检测。
- UI抽象
- 命令行界面。
- Web 用户界面。
- 暂停/恢复功能。
- 休眠支持 — 挂起到磁盘并从磁盘还原。
- 高性能异步 HTTP 请求。
- 具有可调节的并发性。
- 能够自动检测服务器运行状况并调整其并发性 自然而然。
- 支持自定义默认输入值,使用成对的模式(待匹配 对输入名称)和用于填充匹配输入的值。
集成浏览器环境
Arachni 包括一个集成的、真实的浏览器环境,以便提供 足以覆盖使用技术的现代 Web 应用程序 如HTML5、JavaScript、DOM操作、AJAX等。
除了对原版DOM和JavaScript环境的监控外, Arachni的浏览器还挂接到流行的框架中,以生成记录的数据 更容易消化:
- JQuery
- AngularJS的
- 更多内容即将推出…
从本质上讲,这将 Arachni 变成了一个 DOM 和 JavaScript 调试器,允许它 监视 DOM 事件以及 JavaScript 数据和执行流。结果,不仅 系统可以触发和识别基于 DOM 的问题,但它会伴随它们 包含有关当时页面状态的大量信息。
相关信息包括:
- Page DOM,作为 HTML 代码。
- 带有恢复状态所需的 DOM 转换列表 页面添加到记录时的页面。
- 原始 DOM(即在导致页面被记录的操作之前), 作为 HTML 代码。
- 带有 DOM 转换列表。
- 数据流接收器 — 每个接收器都是一个接收受污染参数的 JS 方法。
- 方法的父对象(例如:)。
DOMWindow
- 方法签名(例如:)。
decodeURIComponent()
- 参数列表。
- 将识别的污点递归地定位在包含的对象中。
- 方法源代码。
- JS 堆栈跟踪。
- 方法的父对象(例如:)。
- 执行流接收器 — 每个接收器都是一个成功执行的 JS 有效负载, 由安全检查注入。
- 包括 JS 堆栈跟踪。
- JavaScript 堆栈跟踪包括:
- 方法名称。
- 方法位置。
- 方法源代码。
- 参数列表。
从本质上讲,您可以访问与您最喜欢的信息大致相同的信息 调试器(例如,FireBug)将提供,就好像您已将断点 设置为 在正确的时间进行识别问题。
浏览器集群
浏览器集群是协调浏览器对资源和 允许系统执行通常相当耗时的操作 以高性能的方式消费。
配置选项包括:
- 可调整的池大小,即要使用的浏览器工作线程的数量。
- 每个作业的超时。
- 工作线程 TTL 计入作业 — 超过 TTL 的工作线程具有其浏览器 进程重生。
- 能够禁用加载图像。
- 可调节屏幕宽度和高度。
- 可用于分析响应式应用程序和移动应用程序。
- 能够等到某些元素出现在页面中。
- 可配置的本地存储数据。
覆盖
该系统可以为现代 Web 应用程序提供很大的覆盖范围,因为它 集成的浏览器环境。这允许它与复杂的应用程序进行交互 像人类一样大量使用客户端代码(如 JavaScript)。
除此之外,它还知道哪个浏览器状态会更改应用程序 已被编程为处理并能够以编程方式触发它们 以便为一整套可能的情况提供覆盖。
通过检查所有可能的页面及其状态(使用客户端代码时) Arachni 能够提取和审核以下元素及其输入:
- 形式
- 以及由于 DOM 事件而需要通过真实浏览器进行交互的那些。
- 用户界面表单
- 不属于 HTML 元素但 而是通过 JS 代码关联。
<form>
- 不属于 HTML 元素但 而是通过 JS 代码关联。
- 用户界面输入
- 具有关联 DOM 事件的孤立元素。
<input>
- 具有关联 DOM 事件的孤立元素。
- 链接
- 以及在其片段中具有客户端参数的那些,即:
http://example.com/#/?param=val¶m2=val2
- 支持重写规则。
- 以及在其片段中具有客户端参数的那些,即:
- LinkTemplates — 允许从泛型路径中提取任意输入, 基于用户提供的模板 — 在重写规则不可用时很有用。
- 以及在其 URL 片段中具有客户端参数的那些,即:
http://example.com/#/param/val/param2/val2
- 以及在其 URL 片段中具有客户端参数的那些,即:
- 饼干
- 还支持嵌套 Cookie,在单个 Cookie 中包含键值对。
- 头
- 具有关联 DOM 事件的通用客户端元素。
- AJAX 请求参数。
- JSON 请求数据。
- XML 请求数据。
开放式分布式架构
Arachni 旨在适应您的工作流程,并轻松与您的 现有基础设施。
根据您需要对流程的控制级别,您可以 选择 REST 服务或自定义 RPC 协议。
这两种方法都允许您:
- 远程监控和管理扫描。
- 同时执行多个扫描 — 每个扫描都划分为 它自己的操作系统进程可以利用:
- 多核/SMP 架构。
- 操作系统级别的调度/限制。
- 沙盒故障传播。
- 通过安全通道进行通信。
REST 接口
- 非常简单明了的 API。
- 与非 Ruby 系统轻松互操作。
- 通过 HTTP 操作。
- 使用 JSON 设置消息格式。
- 有状态扫描监视。
- 唯一会话仅在轮询进度时自动接收更新, 而不是完整的数据。
RPC 接口
- 高性能/低带宽通信协议。
MessagePack
序列化以提高性能、效率和易用性 与第三方系统集成。
- 网 格:
- 自我修复。
- 通过热插拔/热拔出节点进行纵向扩展/缩减。
- 可以通过添加节点来无限扩展,以增加扫描容量。
- (始终在线)负载均衡 — 自动提供所有实例 由负担最轻的网格成员提供。
- 具有可选的每次扫描选择退出/覆盖。
- (可选)高性能模式 — 结合 多个节点来执行多实例扫描。
- 在每次扫描的基础上启用。
作用域配置
- 基于常规的冗余页面(如画廊、目录等)的过滤器 表达式和计数器。
- 可以选择自动检测和忽略冗余页面。
- 使用正则表达式的 URL 排除过滤器。
- 使用正则表达式根据内容进行页面排除筛选。
- 使用正则表达式的 URL 包含过滤器。
- 可以强制只遵循 HTTPS 路径,而不降级到 HTTP。
- 可以选择关注子域。
- 可调整页数限制。
- 可调整重定向限制。
- 可调整目录深度限制。
- 可调节的 DOM 深度限制。
- 使用 URL 重写规则进行调整。
- 可以从多个用户提供的文件中读取路径(以限制和扩展 范围)。
审计
- 可以审核:
- 形式
- 可以自动刷新随机数令牌。
- 可以通过集成的浏览器环境提交它们。
- 用户界面表单
- 不属于 HTML 元素的输入和按钮组 而是通过 JS 代码关联。
<form>
- 不属于 HTML 元素的输入和按钮组 而是通过 JS 代码关联。
- 用户界面输入
- 具有关联 DOM 事件的孤立元素。
<input>
- 具有关联 DOM 事件的孤立元素。
- 链接
- 可以通过集成的浏览器环境加载它们。
- 链接模板
- 可以通过集成的浏览器环境加载它们。
- 饼干
- 可以通过集成的浏览器环境加载它们。
- 头
- 通用客户端 DOM 元素。
- JSON 请求数据。
- XML 请求数据。
- 形式
- 可以忽略二进制/非文本页面。
- 可以使用 HTTP 方法和 HTTP 方法审核元素。
GET
POST
- 可以注入原始负载和 HTTP 编码的有效负载。
- 可以提交页面的所有链接和表格以及 cookie 排列以提供广泛的 cookie 审计覆盖范围。
- 可以按名称排除特定的输入向量。
- 可以按名称包含特定的输入向量。
组件
Arachni 是一个高度模块化的系统,采用不同的几个组件 类型来履行其职责。
除了启用或禁用捆绑组件外,还可以调整 系统的行为和功能 根据需要,可以通过 添加用户创建的组件,以满足几乎所有需求。
平台指纹打印机
为了有效利用可用带宽,Arachni 执行 基本的平台指纹识别,并针对服务器端定制审计流程 仅使用适用的有效负载来部署技术。
目前,可以识别以下平台:
操作系统:
- BSD
- Linux
- Unix
- Windows
- Solaris
Web 服务器:
- Apache
- IIS
- Nginx
- Tomcat
- Jetty
- Gunicorn
编程语言:
- PHP
- ASP
- ASPX
- Java
- Python
- Ruby
框架:
- Rack
- CakePHP
- Rails
- Django
- ASP.NET MVC
- JSF
- CherryPy
- Nette
- Symfony
用户还可以选择指定额外的平台(如数据库服务器) 以帮助系统尽可能高效。或者,指纹识别 可以完全禁用。
最后,Arachni 将始终谨慎行事,并发送所有可用的 有效载荷,当它无法识别特定平台时。
检查
检查是执行安全检查和记录问题的系统组件。
积极
主动检查通过其输入与 Web 应用程序互动。
SQL 注入 () — 基于错误的检测。sql_injection
- Oracle
- InterBase
- PostgreSQL
- MySQL
- MSSQL
- EMC
- SQLite
- DB2
- Informix
- Firebird
- SaP Max DB
- Sybase
- Frontbase
- Ingres
- HSQLDB
- MS Access
- 使用差分分析()的盲SQL注入。
sql_injection_differential
- 使用定时攻击 () 的盲 SQL 注入。
sql_injection_timing
- MySQL
- PostgreSQL
- MSSQL
- NoSQL 注入 () — 基于错误的漏洞检测。
no_sql_injection
- MongoDB的
- 使用差分分析的盲 NoSQL 注入 ()。
no_sql_injection_differential
- CSRF 检测 ()。
csrf
- 代码注入 ()。
code_injection
- PHP
- Ruby
- Python
- Java
- ASP
- 使用定时攻击的盲代码注入 ()。
code_injection_timing
- PHP
- Ruby
- Python
- Java
- ASP
- LDAP 注入 ()。
ldap_injection
- 路径遍历 ()。
path_traversal
- *nix
- Windows
- Java
- 文件包含 ()。
file_inclusion
- *nix
- Windows
- Java
- PHP
- Perl
- 响应拆分 ()。
response_splitting
- 操作系统命令注入 ()。
os_cmd_injection
- *nix
- *BSD
- IBM AIX
- Windows
使用定时攻击 () 的盲操作系统命令注入。os_cmd_injection_timing
- Linux
- *BSD
- Solaris
- Windows
- 远程文件包含 ()。
rfi
- 未经验证的重定向 ()。
unvalidated_redirect
- 未经验证的 DOM 重定向 ()。
unvalidated_redirect_dom
- XPath 注入 ()。
xpath_injection
- Generic
- PHP
- Java
- dotNET
- libXML2
- XSS ()。
xss
- 路径 XSS ()。
xss_path
- HTML 元素 () 的事件属性中的 XSS。
xss_event
- HTML 标记中的 XSS ()。
xss_tag
- 脚本上下文 () 中的 XSS。
xss_script_context
- DOM XSS ().
xss_dom
- DOM XSS 脚本上下文 ()。
xss_dom_script_context
- 源代码泄露 (
source_code_disclosure
) - XML 外部实体 ()。
xxe
- Linux
- *BSD
- Solaris
- Windows
被动
被动检查查找文件、文件夹和签名是否存在。
- 允许的 HTTP 方法 ()。
allowed_methods
- 备份文件 ()。
backup_files
- 备份目录 (
backup_directories
) - 常用管理界面 ()。
common_admin_interfaces
- 公共目录 ()。
common_directories
- 常用文件 ()。
common_files
- HTTP PUT () 中。
http_put
- 密码表单的传输层保护不足 ()。
unencrypted_password_form
- WebDAV 检测 ()。
webdav
- HTTP TRACE 检测 ()。
xst
- 信用卡号码披露 ()。
credit_card
- CVS/SVN 用户披露 ()。
cvs_svn_users
- 私有 IP 地址泄露 ()。
private_ip
- 常见后门 ()。
backdoors
- .htaccess LIMIT 配置错误 ()。
htaccess_limit
- 有趣的回应()。
interesting_responses
- HTML 对象 grepper ()。
html_objects
- 电子邮件地址泄露 ()。
emails
- 美国社会安全号码披露 ()。
ssn
- 强制目录列表 ()。
directory_listing
- 混合资源/脚本 ()。
mixed_resource
- 不安全的 Cookie ()。
insecure_cookies
- HttpOnly Cookie ()。
http_only_cookies
- 自动完成密码表单字段 ()。
password_autocomplete
- 源欺骗访问限制绕过 (
origin_spoof_access_restriction_bypass
) - 基于表单的上传 (
form_upload
) - localstart.asp (
localstart_asp
) - 为父域设置的 Cookie (
cookie_set_for_parent_domain
) - 缺少 HTTPS 站点的标头 ()。
Strict-Transport-Security
hsts
- 缺少标头 ()。
X-Frame-Options
x_frame_options
- 不安全的 CORS 策略 ()。
insecure_cors_policy
- 不安全的跨域策略 (allow-access-from) (
insecure_cross_domain_policy_access
) - 不安全的跨域策略 (allow-http-request-headers-from) (
insecure_cross_domain_policy_headers
) - 不安全的客户端访问策略 (
insecure_client_access_policy
)
记住输出文件格式如下:
- Standard output
- HTML (zip) ().
html
- XML ().
xml
- Text ().
text
- JSON (
json
) - Marshal (
marshal
) - YAML (
yaml
) - AFR (
afr
)
- 默认的 Arachni 框架报告格式。
插件
插件以模块化方式为系统添加额外的功能,这样 核心保持精简,使任何人都可以轻松添加任意功能。
- 被动代理 () — 分析 Web 应用和 协助 AJAX 审计、登录和/或限制审计范围的浏览器。
proxy
- 基于表单的登录 ()。
autologin
- 基于脚本的登录 ()。
login_script
- HTTP 身份验证 () 的字典攻击者。
http_dicattack
- 基于表单的身份验证的字典攻击者 ()。
form_dicattack
- Cookie collector () — 在建立更改时间线的同时跟踪 Cookie。
cookie_collector
- WAF(Web 应用程序防火墙)检测器 () — 建立 正常行为,并使用 rDiff 分析来确定恶意输入是否会导致任何行为更改。
waf_detector
- BeepNotify () — 扫描完成时发出哔哔声。
beep_notify
- EmailNotify () — 通过 SMTP 发送通知(以及可选的报告),地址为 扫描结束。
email_notify
- VectorFeed () — 读取矢量数据,从中创建要 审计。可用于在每个向量/元素的基础上执行极其专业/狭窄的审核。 对于单元测试或无数其他事情很有用。
vector_feed
- Script () — 在插件范围内加载并运行外部 Ruby 脚本, 用于调试和一般黑客攻击。
script
- Uncommon headers () — 记录不常见的标头。
uncommon_headers
- Content-types () — 记录服务器响应的内容类型,有助于 识别有趣的(可能泄露的)文件。
content_types
- Vector collector () — 收集有关所有可见的输入向量的信息 在扫描范围内。
vector_collector
- Headers collector () — 根据指定的条件收集响应标头。
headers_collector
- Exec () — 在不同的扫描阶段调用外部可执行文件。
exec
- 指标 () — 捕获有关扫描和 Web 应用程序的多个方面的指标。
metrics
- 限制为 DOM 状态 () — 将审计限制为单个页面的 DOM 状态,基于 URL 片段。
restrict_to_dom_state
- Webhook notify () — 在扫描结束时通过 HTTP 发送 webhook 有效负载。
webhook_notify
- 速率限制器 () — 对 HTTP 请求进行速率限制。
rate_limiter
- Page dump () — 将页面数据作为 YAML 转储到磁盘。
page_dump
违约
默认插件将在每次扫描时运行,并放置在 下。/plugins/defaults/
- AutoThrottle () — 在扫描期间动态调整 HTTP 吞吐量 最大带宽利用率。
autothrottle
- Healthmap () — 生成站点地图,显示每个已抓取/审核的 URL 的运行状况
healthmap
元
下面的插件对扫描结果进行分析 以确定可信度或仅添加上下文信息或一般见解。/plugins/defaults/meta/
- TimingAttacks () — 为定时攻击发现的问题提供通知 当受影响的审核页面返回异常高的响应时间时。 它还指出了针对执行繁重处理的页面的 DoS 攻击的危险。
timing_attacks
- 发现 () — 对发现记录的问题执行异常检测 检查并警告误报的可能性(如果适用)。
discovery
- 均匀性 () — 报告在数字中均匀易受攻击的输入 的页面暗示缺乏输入清理的中心点。
uniformity
培训器子系统
训练器使 Arachni 能够从它执行的扫描中学习,并且 在审计期间即时整合这些知识。
检查能够单独强制框架从 它们将诱导的 HTTP 响应。
但是,这通常不是必需的,因为 Arachni 知道哪些请求 更有可能发现新的元素或攻击媒介,并会自我适应 因此。
尽管如此,这仍然是模糊检查的宝贵资产。
安装
用法
运行规范
您可以运行以运行所有规范,也可以使用以下命令有选择地运行它们:rake spec
rake spec:core # for the core libraries
rake spec:checks # for the checks
rake spec:plugins # for the plugins
rake spec:reports # for the reports
rake spec:path_extractors # for the path extractors
请注意,由于 需要测试系统的网格/多实例功能。
注意:由于时序攻击测试,检查规格将需要数小时才能完成。
原文链接:https://duduziy.com/437.html,转载请注明出处。 郑重声明: 本站所有内容仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。 如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。 如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!
评论0