在进行网络渗透测试或开源情报(OSINT)收集时,你是否遇到过这样一个瓶颈:面对一个庞大的目标网络,手动收集信息不仅枯燥乏味,而且效率极低?尤其是在我们需要从海量的数据中筛选出特定的“高价值”情报,而不是泛泛的“详细简历”时,手工操作几乎是不可能完成的任务。
假设我们的目标拥有成百上千个子域名,手动去点击每一个链接、复制每一个 URL 显然是不现实的。我们需要一个能够承担这一“重任”的自动化工具,代替我们进行繁琐的筛选工作,从而精准地提取出有价值的信息。在本文中,我们将深入探讨 Photon 这款强大的 OSINT 扫描器,看看它是如何帮助我们高效地进行网络侦察的。我们将从核心特性、环境配置讲到实战应用场景,确保你能掌握这款利器。
为什么选择 Photon?核心特性解析
Photon 不仅仅是一个简单的爬虫,它是一个智能的 OSINT 侦察工具。与传统的爬虫相比,它专门为安全研究人员和渗透测试工程师设计,能够智能地提取关键数据。让我们来看看它有哪些令人兴奋的特性。
#### 1) 多维度的数据提取能力
当 Photon 开始爬取目标网站时,它并不是简单地存储 HTML,而是像一位经验丰富的侦探一样,从页面中提取出以下关键信息:
- 完整的 URL 库: 它会分别存储“范围内”和“范围外”的 URL,这对于我们后续测试边界或寻找供应链漏洞非常有帮助。
- 带参数的动态 URL: 例如
example.com/gallery.php?id=3。这对于寻找 SQL 注入或参数污染漏洞至关重要,因为漏洞往往隐藏在这些参数之中。 - 高价值情报: 自动识别并提取电子邮件地址、社交媒体账号(如 Facebook、Twitter 链接)、API 密钥、Acme.php 等敏感文件。
- 文件与密钥: 它会专门筛选出图片、PDF 等文件,并尝试在代码中寻找 API 密钥和哈希值。
- DNS 与子域名: 在爬取过程中,它还会结合 DNS 记录来发现相关的子域名。
> 实战提示: 提取的所有信息都会以井然有条的方式保存在以目标域名命名的文件夹中。默认情况下,数据会导出为 JSON 格式,这意味着你可以轻松地用脚本对其进行分析,或者直接导入到其他工具中进行二次处理。
#### 2) 极致的灵活性控制
在 Web 抓取中,“速度”与“隐蔽性”往往是一对矛盾体。Photon 让我们可以完全掌控这一点。我们可以通过命令行参数精确控制超时时间、请求延迟、并发线程数等。
例如,如果你不想触发目标网站的 WAF(Web 应用防火墙),你可以设置较高的延迟;如果你处于内网环境且追求速度,则可以调大线程数。这种灵活性让我们完全按照自己的意愿去“爬取”网络,使其成为一款适应性极强的工具。此外,它还支持排除匹配特定正则表达式的 URL(比如排除登出页面或下载页面),防止爬虫陷入死循环。
#### 3) 强大的插件支持
Photon 的核心功能之外,还支持通过插件扩展能力,主要包括:
- Wayback Machine: 这个插件能让我们查询目标网站的历史快照,甚至能找到一些已经被删除但仍在互联网档案馆中留有痕迹的敏感页面。
- DNSDumpster: 这是一个经典的 DNS 查询服务,插件集成后可以帮助我们快速发现目标的 DNS 记录。
- Exporter: 用于将数据导出为不同的格式,方便生成报告。
—
环境准备:工欲善其事,必先利其器
在开始实战之前,我们需要确保我们的系统环境已经准备就绪。Photon 是基于 Python 开发的,因此 Python 环境是必须的。
#### 检查 Python 环境
首先,打开我们的终端窗口,输入以下命令来检查系统是否已经安装了 Python 3:
python3 --version
如果终端输出了版本号(例如 Python 3.8+),那很棒,我们可以继续下一步。如果没有,或者系统提示找不到命令,对于基于 Debian/Ubuntu 的系统,我们可以使用 apt 包管理器来安装它:
sudo apt update
sudo apt install python3
安装完成后,我们还需要处理 Python 的依赖问题。Photon 的运行依赖于几个关键库,我们可以使用 pip(Python 的包管理工具)来一键安装。
—
安装与配置实战
#### 步骤 1:安装依赖库
在克隆项目之前,为了确保 Photon 运行顺畅,我们建议先安装其核心依赖:INLINECODE55574057(用于提取顶级域名)和 INLINECODE163df132(用于发送 HTTP 请求)。请在终端中执行以下命令:
# 安装 requests 库,用于处理网络请求
pip install requests
# 安装 tld 库,用于准确提取域名根
pip install tld
注意:在某些环境下,你可能需要使用 INLINECODEf32ad300 代替 INLINECODEbb6991fb,以确保安装在 Python 3 环境中。
#### 步骤 2:克隆 Photon 项目
接下来,我们将 Photon 的源代码从 GitHub 仓库克隆到本地。请依次输入以下命令:
# 克隆 Photon 仓库到本地
git clone https://github.com/s0md3v/Photon
# 进入项目目录
cd Photon
此时,你的当前工作目录应该已经切换到了 Photon 文件夹中。
#### 步骤 3:验证安装与查看帮助
为了确保一切正常,也为了了解 Photon 提供了哪些命令行参数,我们可以运行一下帮助命令:
python3 photon.py -h
运行上述命令后,终端会列出一系列的可选参数。花点时间阅读这些选项是非常值得的,因为掌握这些参数意味着你掌握了工具的灵魂。你可以看到诸如 INLINECODE00508490 (URL), INLINECODE1409ddf8 (Level), -t (Threads) 等关键标志。
—
实战演练:从基础扫描到高级应用
现在,让我们进入最激动人心的环节——实际操作。我们将通过几个具体的案例,逐步深入地演示如何使用 Photon。
#### 基础扫描:最简单的用法
对于初学者来说,最直接的用法就是指定一个目标 URL。让我们从一个最基本的扫描开始,这将帮助我们理解 Photon 的默认行为。
假设我们要扫描 example.com,只需在终端输入:
# -u 参数指定目标 URL
python3 photon.py -u http://example.com
代码解读:
这个命令告诉 Photon 从 INLINECODEa2eb4001 开始,使用默认的线程数和爬取深度进行抓取。它会在当前目录下创建一个名为 INLINECODEf6e0a581 的文件夹,里面包含了 INLINECODE7154a2b9(所有 URL)、INLINECODE809f1f21(提取的邮箱)、files.txt(文件)等结果。
#### 进阶实战:生成 DNS 映射图
Photon 最有趣的功能之一是它能够生成目标的 DNS 映射图。这对于了解目标的网络基础设施非常有用。
假设我们要为目标网站生成映射图,我们将运行以下命令:
# --dns 标志启用 DNS 映射功能
python3 photon.py -u https://www.example.com/ --dns
结果分析:
在扫描过程中,终端会实时显示扫描速度(每秒请求数 RPS)和已发现的 URL 数量。
- 效率: 在上面的示例中,我们可以看到总耗时可能仅为 1 秒左右。如果是一个复杂的目标,时间会相应增加。
- 映射图输出: 扫描结束后,在生成的文件夹中会有一张
dns_map.png图片。这张图直观地展示了目标域名的 DNS 结构,包括其子域名和 DNS 记录类型。
解读 MX 记录:
让我们放大查看生成的映射图或分析器。如果我们看到 MX 记录(邮件交换器),比如显示有 mx76.m2bp.com,这告诉我们目标使用了第三方邮件服务。对于攻击者来说,这可能是一个潜在的入口点,因为邮件服务器(如端口 25, 587)有时配置不当,可能导致邮件伪造或信息泄露。
#### 深度挖掘:提取敏感数据(密钥与凭证)
在红队行动中,寻找暴露的 API 密钥或硬编码的凭证是至关重要的。让我们尝试从一个更复杂的网站(例如 example.org)中抓取电子邮件地址和密钥。
为了提高效率,我们需要调整扫描的“深度”和“广度”。我们将使用以下命令:
# -u: 目标 URL
# --keys: 仅智能提取密钥和敏感文件
# -t 10: 使用 10 个并发线程(加快速度)
# -l 3: 爬取深度为 3 层
python3 photon.py -u https://www.example.org/ --keys -t 10 -l 3
命令详解与最佳实践:
-
--keys参数: 这是一个过滤器,告诉 Photon 我们只关心“关键数据”。这可以减少无关数据的噪音,专注于寻找潜在的 API Token、AWS 密钥等。 -
-t 10(Threads): 我们将并发线程数设置为 10。这意味着 Photon 会同时开启 10 个连接去抓取页面。这比单线程快得多,但请注意,设置过高的线程(如 100)可能会导致目标服务器拒绝服务或触发 WAF 封禁。 - INLINECODE0aad9191 (Level): 这是爬取深度。INLINECODE34792fee 表示只抓取首页的链接,INLINECODEde004562 表示抓取首页链接指向的页面,以此类推。设置为 INLINECODE872409bf 意味着我们会进行一次中等深度的爬取。通常,对于大部分目标,2 到 3 层是性价比最高的选择,既能覆盖大部分页面,又不会陷入无限循环。
处理结果:
在 INLINECODEb81d6134 的输出文件夹中,检查 INLINECODE4f321233 或 INLINECODE235bed8a。你可能会发现类似 INLINECODE2b5ccff7 的邮箱。如果在此次搜索中发现了许多无关的电子邮件,请不要惊讶,这通常是因为爬虫在 3 层深度中访问了包含通用链接(如页脚链接)的页面。
#### 常见问题与解决方案
在使用 Photon 的过程中,你可能会遇到一些常见问题,这里有几个实用的解决方案:
- 问题:爬虫速度过快被 WAF 拦截。
* 解决: 使用 INLINECODE60275909 参数在请求之间添加延迟。例如,INLINECODE2d89e47b 会在每个请求之间等待 2 秒,模拟人类行为。
- 问题:只想爬取特定目录,不想跑偏。
* 解决: 结合 INLINECODEf1168807 参数。例如,INLINECODE22adaeec 可以排除所有包含 "logout" 的 URL。
总结与建议
通过本文的探索,我们已经掌握了 Photon 这款工具的核心用法。它不仅仅是一个爬虫,更是一个智能的 OSINT 收集器。它能够帮助我们在渗透测试的初始阶段,以极低的成本获取目标的资产列表、敏感信息和网络结构。
你的下一步行动:
- 尝试在自己的测试环境中使用
--clone参数,它可以克隆整个目标网站到本地,方便离线分析。 - 将 Photon 的输出与其他工具(如 Nmap 或 Nikto)结合使用,先通过 Photon 发现存活子域名和 URL,再针对这些目标进行漏洞扫描。
- 定期查看 Photon 的 GitHub 更新,因为 Web 爬虫技术随着前端框架的发展也在不断进化。
希望这篇指南能帮助你更高效地进行信息收集!在技术的道路上,保持好奇心,不断尝试新的工具和参数,你会发现网络世界的更多奥秘。