漏洞赏金入门:十大侦察工具详解

本文深入解析漏洞赏金项目中常用的十大侦察工具,涵盖被动和主动侦察技术,详细介绍Netlas.io、Waybackurls、Nmap等工具的功能特点、安装方法和实战应用场景,帮助安全研究人员建立系统化的目标侦察工作流。

Bug Bounty 101:十大侦察工具

之前我们探讨了漏洞赏金项目和入门课程。现在,让我们看看一些能让你的漏洞赏金之旅更加专注且更易管理的工具。本文将回顾漏洞赏金中最常用的一些工具。

漏洞赏金工具介绍

一旦开始漏洞赏金,你会很快意识到仅靠方法、知识和理论理解是不够的。你还需要一些工具来开始工作或更清晰地了解目标。就像做饭一样——你知道食谱,但实际烹饪时,你需要刀具、铲子、搅拌机和平底锅等工具。

同样,漏洞赏金工具将帮助你收集信息、检查错误配置甚至发现漏洞。现有众多工具,每种都有独特用途,例如静默提取信息或通过与目标交互来获取信息。

工具在漏洞狩猎中的重要性

工具是漏洞赏金的重要组成部分,因为它们帮助你将知识和方法转化为行动,有效展示测试结果。它们在你从信息收集、利用到报告的每个阶段都提供支持。

每种工具都有其独特之处,关键在于你能否在合适的时间选择正确的工具。这些工具的主要目的是帮助你执行任务并自动化那些原本需要手动花费数小时完成的工作。使用这些自动化工具,你可以扫描大型域、枚举子域并同时从不同来源收集信息。

最重要的是,工具提高了速度和准确性。在漏洞赏金中,速度就是一切。迟到一步,你的漏洞可能被标记为重复。保持领先的唯一方法就是拥有强大的工具包。

工具在工作流中的位置

我们观察到漏洞赏金活动遵循从收集信息到报告漏洞的工作流程,每个阶段涉及各种工具。有些工具帮助发现子域,其他工具扫描暴露的端口或目录,还有一些工具验证漏洞。在合适的时间使用正确的工具可确保你的工作流程高效且不易遗漏关键信息,使你在其他漏洞猎人面前占据优势。

侦察 — 第一步

侦察(Reconnaissance,简称recon)是在开始搜索漏洞之前收集目标信息的过程。这是漏洞赏金流程的第一步,看起来像是在绘制目标的数字足迹。

在此过程中,你将识别域、子域、技术、端口、目录、API等等。这些信息至关重要,因为它将指导你在狩猎过程中在哪里寻找漏洞。

你对目标的侦察越强,找到漏洞的机会就越高。初学者常常忽视侦察。刚入门的人通常尝试通过观看视频或阅读博客来学习基本攻击技术,然后直接跳转到目标,寻找他们刚学到的漏洞,甚至没有进行适当的侦察过程,这在安全行业中被认为是非常糟糕的做法。有时,你可能很幸运,在侦察期间发现值得赏金的漏洞。如果你匆忙或跳过此步骤,可能会错过别人会发现的机会。

这一切都是为了让你做好准备,在目标上找到实际的漏洞。侦察通过绘制攻击面来帮助你。当你开始侦察过程时,你会看到目标的各个部分如何连接——比如哪个域链接到哪些服务、使用的技术以及潜在的弱点。绘制攻击面后,你会知道该将漏洞狩猎的重点放在哪里,而不是随机测试。范围广泛的目标需要彻底的侦察,这可以发现被遗忘的子域、过时的技术栈甚至未公开链接的隐藏目录。

侦察可分为两类:被动和主动。

什么是被动侦察

被动侦察涉及在不直接交互的情况下收集目标信息。简单来说,你不需要向目标的服务器发送任何输入或数据包来收集数据。相反,你可以使用第三方数据库或现有记录等公开可用的来源。这种技术允许你找到使用的技术、暴露的文件甚至SSL证书等细节。

执行被动侦察的主要目标是保持隐蔽并安静地收集对目标的一般理解,因为它更安全且不易被检测到。

主动侦察的不同之处

如果被动侦察全是关于保持隐蔽和安静收集信息,那么主动侦察则完全相反。主动侦察是通过与目标交互来提取详细信息的过程。在漏洞赏金项目中,主动侦察涉及扫描端口、探测服务和爬取网站。与被动侦察不同,这种方法不会保持你的身份匿名。你会暴露并留下数字足迹。

你应该在彻底完成被动侦察后才开始主动侦察。虽然主动和被动侦察可以区分,但它们不能互相替代。一旦你从公共来源收集了足够的信息,就可以进行主动侦察。你可以通过主动扫描来验证被动发现,例如检查端口是否开放。

前5大被动侦察工具

以下是我推荐你开始使用的前5大被动侦察工具列表。

1. Netlas.io

Netlas.io是那种一旦尝试,你就会发现自己依赖它进行被动侦察的工具。它非常类似于搜索引擎,但用于映射互联网基础设施。Netlas.io在一个地方为你提供被动侦察所需的一切,使整个过程更轻松、更快速。使用Netlas,你可以发现几乎所有内容:域和子域、IP范围、开放端口和服务、WHOIS和DNS记录等。

Netlas集成

Netlas与各种工具配合以适应你的工作流程。使用Maltego模块进行数据可视化,使用Chrome/Firefox扩展进行快速检查,或与Subfinder、theHarvester、TLDFinder等工具集成。你还可以通过API、CLI或SDK访问Netlas以进行自定义自动化。

设置Netlas.io

设置Netlas并不复杂;过程简单直接。注册后,你可以访问Netlas网络应用程序运行搜索并探索IP、DNS记录、子域等。

如果你真的热衷于自动化,那么我建议你从个人资料页面获取API密钥,并将其集成到脚本或其他工具中,这将帮助你节省手动搜索的时间。Netlas限制你每天50次搜索和每月2500个搜索结果,API请求限制为每分钟60次请求。对于大多数初学者来说,这些限制足够了,但如果你在处理更大的侦察项目,可以升级。

2. Waybackurls

Waybackurls是一个强大的工具,帮助你提取域在Wayback Machine(archive.org)中记录的所有URL。简单来说,它允许你 uncover 网站的历史,包括可能仍在线的旧页面、登录面板或API。你可能遇到的一些发现包括:

  • /old-login.php
  • /beta/api/v1/
  • /test/admin/

使用Waybackurls,你可以找到端点、令牌和秘密,以及隐藏目录。你始终可以将waybackurls的发现与许多其他工具(如Nmap、Gobuster、Sublist3r等)集成,以制定有效的侦察策略。

专业提示

你可以将此工具与Katana或HTTPx结合使用,以爬取目标并检查活动主机。但请记住,将这些工具与waybackurls一起使用将与目标交互,这种转变使其成为主动侦察。

设置Waybackurls

由于Waybackurls是基于Go语言的工具,你首先需要在机器上安装Go。

安装Go:

1
sudo apt install golang

安装Waybackurls:

1
go install github.com/tomnomnom/waybackurls@latest

运行Waybackurls:

1
echo "target.com" | waybackurls

3. Censys

Censys是另一个用于被动侦察的工具,也是一个流行的攻击面管理(ASM)解决方案。它执行许多典型的被动侦察工具任务,例如查找IP、检测开放端口、获取横幅信息以及收集DNS和WHOIS信息。Censys的一个独特功能是能够生成证书详细信息并从证书跳转以发现相关连接。

Censys没有太多缺点,但初学者可能会因其独特的搜索语言或语法而觉得使用起来有挑战性。与Google不同,在Google中你可以简单地输入查询并获得结果,Censys需要特定的搜索命令。例如,要查找美国的HTTP服务器,你需要输入类似以下内容:

1
services.service_name:"HTTP" AND location.country:"United States"

你可能会觉得只是为了运行搜索而学习一门新语言,但一旦习惯了,它并不那么困难。你还可以将他们的API集成到你的脚本中,以更快地自动化任务。

设置Censys

只需在Censys Search网站上注册即可开始。登录后访问仪表板运行查询。免费社区计划允许你每月进行250次搜索查询并在界面中查看结果。API访问现在需要付费订阅。

4. crt.sh

crt.sh是专门专注于证书的服务。与Censys不同,它不允许你搜索开放端口、横幅信息或WHOIS记录。相反,你可以输入域名,crt.sh将显示为该域颁发的所有SSL/TLS证书的列表。

通过对目标域运行简单查询,你可以发现许多其他地方未列出的子域。例如,想象一个初创公司仅在内部测试目的设置了一个新的HR门户hr.example.com。由于门户正在开发中且未公开链接,搜索引擎不会找到它。然而,一旦为hr.example.com生成了SSL证书,crt.sh就会公开记录它。这种可见性允许黑客在子域正式启动之前发现并可能利用它们。

设置crt.sh

这个工具最好的部分是没有任何设置。它完全免费,无需担心速率限制。我强烈建议将crt.sh添加到你的侦察工具包中。

5. Hunter.io

Hunter.io是一个设计用于发现与目标域关联的电子邮件地址的工具。其电子邮件查找器功能允许你查找公司内特定人员的电子邮件地址。Hunter.io还可以协助进行钓鱼面映射;通过识别公开暴露的电子邮件地址,你可以确定潜在的钓鱼目标。这个过程完全是被动的,因为该工具从公共来源收集信息。此外,Hunter.io提供电子邮件验证功能,以检查地址是否有效和活跃。还提供Chrome扩展,使你在浏览目标站点时能够查找电子邮件地址。然而,你可能不总是找到确切的人或获得足够数量的电子邮件地址。

尽管hunter.io通常不被视为核心漏洞赏金工具,但它可以通过各种方式提供帮助,例如 uncover 谁操作某些服务并提供社会工程机会。它揭示的电子邮件地址也可能帮助你推断内部用户名。

设置Hunter.io

正如我们所看到的,大多数被动侦察工具都很容易设置。要开始使用Hunter.io,请在其官方网站上注册一个免费账户。免费计划允许你每月执行25次搜索和50次电子邮件验证,这对初学者来说是理想的。我不建议升级到付费版本,因为Hunter.io通常只是大多数用户的补充工具。

前5大主动侦察工具

1. Nmap

从主动侦察开始,Nmap始终位居榜首,也是我的最爱之一。

当我接近任何目标时,我的第一次扫描总是Nmap。Nmap帮助你发现目标上的开放端口。它还可以指纹识别操作系统、检测运行的服务,并通过NSE运行自定义脚本以识别特定端口是否易受攻击。

你可以在专门的文章中找到关于安装Nmap、什么是NSE以及如何使用Nmap检测漏洞的详细信息。

2. Masscan

Masscan是一个高性能端口扫描器。它以其速度和效率而闻名,能够在几分钟内扫描整个IPv4互联网,但前提是你的互联网带宽支持。这不是另一个传统的服务检测或横幅抓取工具;它远不止于此。

当你在处理巨大的IP范围并希望发现所有开放端口时,Masscan真的很有帮助;在Nmap上执行相同的任务可能很耗时,并且会给你的系统带来很大负载。当然,一旦你将Masscan结果传递给Nmap进行更深入的分析,Nmap会很有帮助。

设置Masscan

安装Masscan:

1
sudo apt install masscan

运行简单扫描:

1
sudo masscan -p 80,443 192.168.1.0/24 --rate=1000

我们知道端口80、443代表HTTP和HTTPs。此命令让你以每秒1000个数据包的速率检查本地子网上的这些开放端口。

想要扫描单个主机上的所有端口?

1
sudo masscan 192.168.1.10 -p1-65535 --rate=10000

此命令快速扫描主机192.168.1.10上存在的每个端口。

警告:Masscan是一个非常密集的扫描器!

与Nmap不同,Masscan非常积极地发送数据包。我建议你在执行此类扫描时要格外小心,因为它可能导致你被防火墙阻止。还要确保仅对授权系统使用它。

3. Sublist3r

Sublist3r是一个设计用于查找目标子域的工具。我们在上面的部分中看到,被动工具(如Netlas和Censys)也提供此功能,但此工具将帮助你使用多个公共来源查找子域。它通过抓取搜索引擎和公共API工作,还使用证书数据收集子域。一旦你收集了这些子域,你可以在这些子域上运行Nmap以检查开放端口和其他工具。你还可以根据状态代码测试子域接管。

设置Sublist3r

安装先决条件:

1
2
sudo apt install python3 python3-pip
pip3 install requests argparse

你需要Python3以及requests和argparse库来运行此工具。

克隆Sublist3r:

1
2
git clone https://github.com/aboul3la/Sublist3r.git
cd Sublist3r

运行扫描:

1
python3 sublist3r.py -d target.com

此命令将枚举跨多个源可用的目标的所有子域。

专业提示

你可以将Sublist3r与另一个称为HTTPx的工具集成以获得更好的结果。一旦你有了域列表,你可以运行HTTPx检查哪些实际上是活动的并正在响应。基本上,它帮助你验证活动主机并报告子域的状态代码。

示例:cat subdomains.txt | httpx -silent -status-code -title -v

4. Gobuster

Gobuster再次是我最喜欢的工具之一;此工具设计用于发现目标上的目录和文件。与被动侦察工具不同,此工具将通过发送HTTP请求与你的目标主动交互。Gobuster用于使用单词列表暴力破解URL,这将帮助你找到隐藏的管理面板、隐藏目录和端点。

将此工具与Sublist3r结合是使用此工具的最佳方式,因为它确保你不会错过目标Web结构中的任何内容。此工具不仅会帮助你找到隐藏的漏洞,有时你发现的数据可以直接导致发现漏洞。

设置Gobuster

安装Gobuster

1
sudo apt install gobuster

基本用法

1
gobuster dir -u https://target.com -w /usr/share/wordlists/dirb/common.txt

此命令使用名为common.txt的单词列表对目标网站执行目录暴力破解。这里,-u指定目标,-w指向单词列表。

1
gobuster dns -d target.com -w /usr/share/wordlists/subdomains.txt

此命令与上面的命令非常相似,但-w指定使用的单词列表包含子域,它扫描子域而不是目录。

你可以从这里安装一些流行的单词列表:SecLists、Rockyou.txt、FuzzDB。你还可以在继续进行进一步测试之前,将Gobuster结果与HTTPx结合以检查哪些端点实际上是活动的。

5. Nikto

Nikto是一个经典的主动侦察工具,用于识别目标服务器上的错误配置、过时软件和已知漏洞。此命令行工具具有一个大型内置服务器检查数据库,列出了数千个服务器版本和常见漏洞。因此,你可以快速运行扫描并接收关于任何过时软件的即时反馈。

漏洞赏金猎人经常使用Nikto,因为它是免费的、易于使用且能有效找到易利用的漏洞。其最佳功能之一是对多种输出格式的支持,包括纯文本、XML、HTML、NBE和CSV。

设置Nikto

安装Nikto

1
sudo apt install nikto

扫描目标

1
nikto -h https://target.com

在自定义端口上扫描

1
nikto -h https://target.com:8080

将结果输出到文件:

1
nikto -h https://target.com -o results.txt

Nikto实际上可以与Gobuster结合以扫描和发现易受攻击的端点。Nikto通常进行侵略性扫描,因此多次使用它可能会生成大量请求,并可能触发目标服务器中的警报。

规划你的侦察

既然我们已经回顾了用于侦察的大多数重要工具,我们理解我们实际上无法区分或用主动替换被动,反之亦然,因为它们有不同的目的。

在这一点上,规划你的侦察工作流程变得简单明了。猎人通常从被动工具开始,然后过渡到主动工具以验证、探测和映射目标。这种方法可以节省时间并增加找到漏洞的机会。

让我们回顾一些最佳实践,以帮助你执行有效的侦察并识别潜在的漏洞。

从被动开始,然后进行主动

无论你对发现事物多么兴奋;永远不要跳过被动侦察,因为它会破坏你的工作流程和方法。一旦你跳过它并开始狩猎,你会发现很难回头并从头开始收集信息。

组织你的发现

将你的被动发现与主动发现分开将帮助你保持简单,并通过避免混淆节省大量时间。当你在利用过程中寻找发现时,它使工作流程更容易。

使用多种工具

永远不要坚持使用单一工具。正如每个工具中所建议的,你始终可以将一个工具与另一个工具结合以生成有效的搜索结果。你还可以在目标上使用两个功能相似的工具;以防一个工具中缺少某些内容,你可以在另一个工具中找到它。

更新你的单词列表

单词列表经常过时,你的暴力破解可能导致零输出。使用crunch或cupp更新你的单词列表或创建你自己的自定义单词列表可能真的很有帮助。

记录一切

初学者经常忘记记录每一个发现;这只会导致混淆。我个人经历过这种情况,忘记记录你的发现只会浪费你的时间。记下日期、工具、命令、结果以及你遇到的任何内容。

案例研究:映射保时捷

让我们通过一个简短的示例来了解漏洞赏金猎人如何使用我们涵盖的工具。为了演示,我们将使用来自HackerOne的公开列出的目标。

步骤0:理解项目范围

在接触任何工具之前,漏洞赏金的第一步是理解项目指南并分析目标的范围。对于我们的示例,我们使用保时捷HackerOne项目。

花时间仔细阅读项目可以帮助你防止潜在的违规行为,并通过避免搜索未列出的范围来节省你的时间。它还帮助你有效地规划侦察,仅关注允许的内容。

步骤1:在保时捷上使用Netlas.io

发现域和子域:

在Netlas.io的搜索栏中搜索“porsche.com”将为你提供域的完整概述,包括WHOIS信息、邮件记录以及一组相关的保时捷子域。

单击保时捷的IP地址会为你提供有关其网络范围、地理位置和连接域的详细信息。这将显示IP属于哪个子网,帮助你发现同一范围内的其他潜在域。

接下来,使用Netlas的高级搜索查询功能,你可以枚举Porsche.com下的所有子域。

1
domain:(domain:*porsche.com AND NOT domain:porsche.com)

这枚举了一千多个单独的子域,每个子域都有自己的详细信息和IP地址。

步骤2:在保时捷上使用Censys

在Censys的Hosts部分搜索“porsche.com”,给出子域、服务器详细信息和证书名称。

接下来,单击左侧面板上的证书:

每个条目显示域、颁发者、有效期和所有关联的子域,这是一种 uncover 隐藏资产的有用方式。你可以单击诸如trusted、untrusted、expired之类的标签来查看具有特定标签的所有相关证书。

要查看特定国家(例如德国)的主机,你可以运行此搜索查询:

1
dns.names:"porsche.com" AND autonomous_system.country_code:"DE"

这将过滤位于德国的保时捷主机。有助于查看保时捷本国的资产。

你还可以使用此查询查看运行SSH(可能的管理入口点)的主机:

1
host.dns.names:"porsche.com" and host.services.protocol:"SSH"

显示暴露SSH的Porsche.com下的服务器。这些通常是内部/管理服务,但有时发现暴露。

让我们深入了解保时捷的历史,看看我们是否可以使用Waybackurls找到一些东西。

步骤3:在保时捷上使用Waybackurls

使用Waybackurls挖掘历史URL

收集域的存档URL

1
echo "porsche.com" | waybackurls > urls.txt

这将转储保时捷在Wayback Machine中存档的每个URL。这通常需要时间执行,但你可以获得数千个端点。

将Waybackurls与HTTPx集成

1
cat urls.txt | httpx-toolkit -silent -status-code -title

此命令将过滤掉死链接,并仅输出活动的链接及其HTTPS状态码。

主动侦察从此步骤开始!

此步骤使其成为主动侦察,因为你正在与目标交互。

步骤4:搜索开放端口和目录

现在让我们使用Sublist3r搜索与保时捷链接的子域,并使用Nmap搜索开放端口。

使用Sublist3r枚举子域

1
sublist3r -d porsche.com -o subdomains.txt

此命令将查询多个源以查找子域,主动与保时捷交互以获取子域。

使用Nmap扫描端口

让我们使用刚刚使用Sublist3r创建的subdomains.txt文件,使用Nmap搜索开放端口:

使用命令扫描子域:

1
nmap -iL subdomains.txt -T4 -oN nmap_scan.txt

-iL代表输入列表,-T4积极地扫描目标。

使用以下命令查看扫描结果:

1
cat nmap_scan.txt

你可以看到链接到Porsche.com的每个子域上的所有开放端口。

编写你的工作流程脚本

我们已经回顾了一些最常见的工具,你可能觉得你几乎为每项任务都有一个工具,并且你可以自动化整个侦察过程。但这不是真的。有时现有工具不够用,或者它们不支持你的工作流程。这就是编写你自己的工具将帮助你填补那个空白的地方。

编写你自己的工具将帮助你自动化重复任务、收集和过滤数据、链接多个工具等等。你可以使用Python、Bash、Go等语言开始编写脚本。编写你自己的工具并不意味着你需要发明像Nmap或Gobuster这样的东西。像Sublist3r、Waybackurls、Nmap或Gobuster这样的工具已经经过良好测试并由大型社区不断更新。当你卡在工作流程中时,自定义工具效果最佳。

总结一切

侦察只是漏洞赏金的第一步。能够找到子域、端点、开放端口或隐藏目录很酷,但如果你不利用它,那就没有区别。利用是侦察后的下一步;你从目标收集的每一个细节都可以用于利用目标。

示例:通过Waybackurls找到的旧登录页面(如/old-login.php)可能让你测试弱身份验证,或者你使用Sublist3r和HTTPx找到的状态码为404的子域可能导致子域接管。

侦察仅帮助你映射目标;始终验证你的发现以确定是否可以将其转化为真正的安全问题。

擅长漏洞赏金不仅仅是关于狩猎漏洞;它关乎真正理解你的工具、你的目标和工作流程。掌握侦察、使用正确的工具并保持一切更新实际上可以增加你找到漏洞的机会。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计