跳到主要内容

2.3.4 资产测绘双引擎:基础爬虫与空间搜索引擎

在前续章节中,我们已经探讨了如何识别和确认目标的基本网络服务,例如开放的端口和运行的服务。然而,这些仅仅是目标暴露在外的“点”。要构建起完整的攻击面地图,我们必须从“点”扩展到“面”——既要深入探查单个Web资产的内部结构与潜在入口,也要横向发掘其在广阔互联网中的关联资产与部署指纹。

本节将聚焦于Yakit中实现这两个维度信息收集的核心功能:基础爬虫(Basic Crawler)空间搜索引擎(Space Engine)。我们将围绕“内部深度探索”与“外部广度关联”这两个核心命题展开,前者依赖基础爬虫对目标站点进行精细化的目录与链接遍历,后者则通过联动空间搜索引擎,从全球网络视角发现与目标相关的资产。通过学习本节内容,用户将掌握如何运用这两种工具,系统性地构建目标资产的全景视图,为后续的漏洞挖掘与安全评估奠定坚实的数据基础。

2.3.4.1 基础爬虫:深度挖掘 Web 应用的内部结构

基础爬虫是用于自动遍历 Web 应用,发现所有可访问页面、资源和链接的工具。它模拟浏览器行为,从一个或多个起始 URL 开始,递归地抓取链接指向的页面,直到达到设定的深度或范围。这对于识别 Web 应用的完整攻击面至关重要,包括未被用户注意到的管理后台、测试页面、或隐藏的 API 接口等。

基础爬虫的关键特性:

  • URL 提取与解析: 爬虫能够从 HTML、JavaScript 代码中提取 URL,包括标签中的 src 属性、href属性、JavaScript代码中的fetch()XMLHttpRequest.open()等。

  • 请求管理: 爬虫需要处理大量的 HTTP/HTTPS 请求,包括请求头、Cookie管理、重定向等。Yakit 的基础爬虫在此方面提供了精细的控制能力。

  • 去重与过滤: 为避免重复访问和陷入循环,爬虫会维护一个已访问 URL 列表,并根据用户定义的规则(如文件类型过滤、特定路径排除)来决定是否访问新发现的 URL。

  • 会话管理: 对于需要认证才能访问的 Web 应用,爬虫需要能够维护会话(例如通过 Cookie 或 Basic Auth),以确保能够访问受保护的区域。

在 Yakit 中使用基础爬虫

Yakit 的基础爬虫模块功能完善,且提供了灵活的配置选项,以适应不同场景的需求。

操作步骤:

  1. 启动基础爬虫模块: 打开 Yakit 客户端,在左侧导航栏中,点击 "安全工具" ,然后选择 "基础爬虫" 功能。

图:Yakit安全工具中基础爬虫功能入口

  1. 配置爬虫扫描目标: 在基础爬虫主界面,你将看到一个核心输入框。

    • 爬虫扫描目标:"爬虫扫描目标" 输入框中,输入你想要爬取的起始 URL。这通常是 Web 应用的根 URL 或某个特定入口页面。例如:www.baidu.com
  2. 配置额外参数(高级选项): 点击 "额外参数" 按钮,可以对爬虫的行为进行更精细的控制。

图:Yakit基础爬虫额外参数配置界面

  • 参数组: 速率与限制:

    • 最大深度 (Max Depth): 设定爬虫递归访问的层数。合理设置可防止无限爬取和资源耗尽。

    • 并发量 (Concurrency): 控制同时进行的 HTTP 请求数量。更高的并发量可以加快爬取速度,但可能增加目标服务器压力,并有被检测的风险。

    • 最大 URL 数 (Max URLs): 限制爬取到的唯一 URL 数量,防止爬取过多无关页面。

    • 最大请求数 (Max Requests): 限制爬虫发出的总请求数量。

  • 参数组: 网络参数:

    • 超时时间 (Timeout): 设置每个 HTTP 请求的等待时间。

    • 设置代理 (Set Proxy): 配置 HTTP/Socks 代理服务器,用于隐藏源 IP 或绕过 IP 限制。

  • 参数组: default (通用设置):

    • 重试次数 (Retry Count): 当请求失败时(如超时、连接错误),自动重试的次数。

    • 重定向次数 (Redirect Count): 允许爬虫跟随 HTTP 重定向的最大次数。

    • 用户代理 (User-Agent): 设置请求头中的 User-Agent 字符串,模拟不同浏览器,有助于绕过一些简单的访问控制。

    • 基础认证用户名/密码 (Basic Auth Username/Password): 如果目标 Web 应用使用了 HTTP Basic 认证,在此处填写凭据。

    • 基础认证开关 (Basic Auth Enable): 开启或关闭基础认证。

    • JS 解析开关 (JS Parse Enable): 决定是否解析页面中的 JavaScript 代码来发现动态生成的链接。开启此功能会增加爬取时间和资源消耗,但能发现更多隐藏路径。

    • debug: 开启调试模式,提供更详细的日志输出,便于排查问题。

  • 参数组: 登录:

    • 尝试登录名/密码 (Attempt Login Username/Password): 用于对需要登录才能访问的区域进行爬取。爬虫会尝试使用这些凭据进行登录。

    • 原始 Cookie (Original Cookie): 直接设置起始 Cookie,用于绕过登录或保持会话。

  1. 启动爬虫任务: 配置完成后,点击 "开始执行" 按钮。Yakit 爬虫将开始抓取目标 Web 应用。

  2. 查看爬取结果:在运行过程中可以实时查看爬取结果。爬取结果以网站树的形式呈现。

图:Yakit爬虫扫描结果以网站树形式展示

2.3.4.2 空间引擎:从海量数据中发现隐藏资产

空间引擎是利用公共网络搜索引擎 (如 ZoomEye, Fofa, Shodan, Hunter, Quake 等) 的海量数据进行资产发现的强大工具。它允许用户通过特定的查询语法,从这些“网络空间测绘”数据库中搜索全球范围内的设备、服务、组件和漏洞信息。这对于发现组织外部暴露的资产、识别供应链风险、或进行大规模漏洞普查具有不可替代的价值。

在Yakit中使用空间引擎

Yakit 将多个主流空间搜索引擎集成在一个模块中,提供了统一的接口和便利的操作体验。

操作步骤:

  1. 启动空间引擎模块: 打开 Yakit 客户端,在左侧导航栏中,点击 "安全工具" ,然后选择 "空间引擎" 功能。

图:Yakit安全工具栏空间引擎入口

  1. 选择搜索引擎与配置参数: 进入空间引擎界面后,你将看到配置区域。

    • 引擎选择 (Engine): 点击下拉菜单,选择你想要使用的空间搜索引擎。Yakit 集成了 ZoomEyeFofaHunterShodanQuake 等主流引擎。请注意,使用这些引擎通常需要提前在相应官网注册 API Key 并配置到 Yakit 中(通常在 Yakit 的全局设置或插件配置中)。

图:Yakit客户端添加第三方应用配置界面

  • 设置搜索条件 (Search Query): 在搜索框中输入符合所选搜索引擎语法的查询语句。这是空间引擎的核心,精准的查询条件能够大幅提高搜索效率和结果质量。

  • 最大页数 (Max Pages): 限制从搜索引擎获取结果的最大页数。

  • 最大记录数 (Max Records): 限制结果条目总数。

  • 扫描验证 (Scan Validation): 这是一个非常实用的功能。开启后,Yakit 会在从空间引擎获取到结果后,自动使用内置的端口扫描器对这些资产的开放端口进行验证。这有助于排除一些误报或过时的数据,确保结果的准确性。

  1. 启动执行: 配置完成后,点击 "开始执行" 按钮。Yakit 将通过配置的 API Key 向选择的空间搜索引擎发送查询请求,并获取结果。

  2. 查看与分析搜索结果: Yakit 会在结果区域以列表形式展示从空间引擎获取的资产信息。同时支持通过右侧导出全部按钮将查询结果导出为Excel。

图:Yakit空间引擎数据卡片与结果列表