项目地址:https://github.com/lanmaster53/recon-ng
Recon-ng是一款由Python编写的全功能网络侦查框架,具备独立模块、数据库交互、内置便捷函数、交互式帮助以及命令自动完成等功能。在该框架的强大环境下,用户能够迅速且深入地开展开放源情报(OSINT)研究。
该工具具备自动化功能,有助于降低OSINT研究人员在日常工作中需执行的重复性任务。首先,需将Recon-ng安装至OSINT基础虚拟机中。在终端处输入以下指令。
└─$cd ~/Downloads/Programs
└─$proxychains4 git clone https://github.com/lanmaster53/recon-ng.git
└─$cd recon-ng
└─$python3 -m venv recon-ngEnvironment
└─$source recon-ngEnvironment/bin/activate
└─$sudo proxychains4 pip install -r REQUIREMENTS
└─$deactivate
这应该安装Recon-ng,并在该目录中键入└─$proxychains4 ./recon-ng来启动应用程序。该屏幕将显示当前版本,我基于版本5.1.1编写此文。您还可以在Dock中启动“Recon-NG”图标,这样每次想使用该应用程序时就不需要导航到-/Downloads/Programs/recon-ng。以下命令将用于更新Recon-ng的版本,该命令已经包含在先前提到的“updates.sh”脚本中。
└─$cd ~/Downloads/Programs/recon-ng
└─$proxychains4 git pull https://github.com/lanmaster53/recon-ng.git
Recon-ng的在线教程资源相对较少,我所找到的多数指南主要集中在命令索引,对于具体解释的内容则相对较少。在此,我并未计划对程序功能进行总结,而是更倾向于在实际操作过程中逐步为您讲解。我们从基础知识入手,并通过多次实际搜索来加深理解。为避免截图展示,我将以9号终端字体展示所有的文本输入与输出。
在开始执行Recon-ng之后,您可能会收到关于未安装模块的通知。这是正常现象,我们会在需要时逐一添加。在提示符处,我们首先从help命令开始。输入help后,以下命令及其解释将呈现在您眼前。
back |
Exits the current context(退出当前上下文环境) |
dashboard |
Displays a summary of activity(显示活动摘要) |
db |
Interfaces with the workspace's database(是与工作空间的数据库进行交互。这意味着 recon-ng 提供了一种机制,可以与数据库进行连接并执行各种数据库操作。) |
exit |
Exits the framework(退出Recon-ng框架) |
help |
Displays this menu(显示帮助菜单) |
index |
Creates a module index (dev only)-创建一个模块索引,通常仅用于开发目的。这是一个操作或功能,用于生成一个包含可用模块的索引或清单。在 recon-ng 中,模块是执行不同任务的插件或组件。这些模块可以提供各种功能,如目标侦察、漏洞扫描、信息收集等。模块索引是一种记录可用模块的列表或清单,包括模块的名称、描述、作者、版本等信息。 |
keys |
Manages third party resource credentials(管理第三方API) |
marketplace |
Interfaces with the module marketplace(与模块市场接口:这指的是 recon-ng 框架与模块市场进行交互的能力。模块市场提供了额外的模块和功能,可以扩展 recon-ng 的功能集。) |
modules |
Interfaces with installed modules(与已安装的模块进行交互:这意味着 recon-ng 框架可以与已安装的模块进行交互,执行它们提供的功能和任务。) |
options |
Manages the current context options(管理当前上下文选项:这表示 recon-ng 框架提供了一种管理当前上下文选项的功能。上下文选项是用于配置和调整当前任务或模块行为的设置。) |
pdb |
Starts a Python Debugger session (dev only)-(启动 Python 调试器会话(仅限开发者):这是一个功能,用于在开发过程中启动 Python 调试器会话,以帮助开发者调试和排查问题。) |
script |
Records and executes command scripts(记录并执行命令脚本:这指的是 recon-ng 框架可以记录和执行命令脚本。通过编写和执行脚本,可以自动化执行一系列的命令和操作。) |
shell |
Executes shell commands(执行 shell 命令:这表示 recon-ng 框架具有执行 shell 命令的功能。这使得用户可以在框架内部执行系统级别的命令。) |
show |
Shows various framework items(显示各种框架项目:这意味着 recon-ng 框架提供了一些功能,用于显示和展示不同的框架项目,如模块、任务、结果等。) |
snapshots |
Manages workspace snapshots(管理工作空间快照:这指的是 recon-ng 框架提供了一种管理工作空间快照的功能。工作空间快照是当前工作空间状态的快照,可以保存、加载和恢复。) |
spool |
Spools output to a file(将输出保存到文件:这表示 recon-ng 框架可以将输出结果保存到文件中,以便后续分析和使用。) |
workspaces |
Manages workspaces(管理工作空间:这意味着 recon-ng 框架提供了工作空间管理功能,允许用户创建、切换、删除和管理不同的工作空间。工作空间是存储和组织数据的环境。) |
键入marketplace search将显示当前可用的功能。将marketplace视为Recon-ng中的实用工具列表,每个选项都是一个“资源”。就像Bing是一个我们可以通过Web浏览器使用的网站资源一样,“bing__domain_web”是我们可以在Recon-ng中使用的特定资源。您可以随时在Recon-ng中键入marketplace info以获取有关特定项目的详细信息。例如,键入marketplace info virustotal将显示以下描述。
这提供了详细的描述,以及实用程序是否需要API密钥或其他依赖项。它还确认我们尚未安装该模块。我们将在本章稍后执行此选项。目前,我们必须设置我们的第一个调查。在我们可以在该程序中进行任何研究之前,我们必须创建一个工作区。工作区是一个容器,将您的工作与其他调查分开。将工作区视为案卷文件。您可能在桌子上有一堆案卷,每个案卷都有自己的文件夹。在与案卷相关联的文件夹中进行的所有工作都保留在其中。工作区类似。您应该为每个调查创建一个新的工作区。它们可以稍后删除或保留以进行额外的工作。您可以随时键入"workspaces list"来查看当前使用的工作区。目前,我们将通过执行"workspaces create OSINT"命令来创建一个名为"OSINT"的新工作区。
创建后,您将自动开始使用新的工作空间。如果您创建了多个工作空间,例如一个名为OSINT2的工作空间,您可以通过输入workspaces load OSINT2来切换到该工作空间。您可能为每个目标嫌疑人创建一个工作空间,或者为整个案件创建一个单一的工作空间。每种情况都是独特的。
现在,我们已经创建了一个空间,我们可以开始了。让我们从使用Profiler模块进行一个非常简单但强大的查询开始。首先,我们必须在Recon-ng中使用以下命令安装该模块。该模块在我测试的时候发现已经无法使用。
└─$marketplace install profiler
该模块现已安装,但尚未加载。以下是加载该模块的操作。
└─$modules load profiler
现在模块已加载,我们可以添加任何所需的输入。由于该模块查询用户名,因此我们将使用以下命令将目标“inteltechniques”添加进去。请注意,SOURCE是大写的,这是必需的。
└─$options set SOURCE inteltechniques
我们应该使用以下命令来测试我们的输入。
└─$input
现在应该给出以下回应。
最后,我们可以使用以下命令启动该模块。
└─$run
该脚本应该查询inteltechniques的用户名,并与众多在线服务进行比对。当完成时,它不会呈现任何结果,但却能够找到并存储有价值的数据。要查看结果,请输入以下内容。
└─$show profiles
结果看起来类似于以下内容。
仅仅几秒钟之内,我们查询了几十个在线服务,并立刻只收到了包含目标用户名存在的三个服务。这展示了使用Recon-ng可以节省大量时间的能力。如果你被要求找到十个嫌疑人的在线资料,这可以在几分钟内完成。让我们重复这个过程,但使用另一个用户名,使用以下命令。
└─$options set SOURCE humanhacker
└─$run
└─$show profiles
以下结果显示了在第二次查询期间收集到的额外在线资料。当您接收到目标数据时,Recon-ng将继续存储它。这是该应用程序的一个更强大的功能之一。
让我们在另一个模块中进行另一个例子。首先,我们必须通过输入“back”来离开当前模块,返回工作区。接下来,使用以下命令安装四个额外的模块。
└─$marketplace install bing_domain_web
└─$marketplace install google_site_web
└─$marketplace install brute_suffix
└─$marketplace install pgp_search
我们将按顺序使用这些,并针对网站cnn.com进行操作。首先,我们将使用命令“modules load bing_domain_web”加载bing_domain_web选项。接下来,我们将使用命令“options set SOURCE cnn.com”设置我们的源,并使用“run”命令执行脚本。该模块在我测试的时候发现针对“cnn.com”没有发现有价值的返回数据。
└─$modules load bing_domain_web
└─$options set SOURCE cnn.com
└─$run
此命令将查询Bing搜索引擎以获取与域名cnn.com相关联的主机。结果确定了超过70个独特的主机,包括以下内容。
[*] [host] internationaldesk.blogs.cnn.com ()
[*] [host] crossfire.blogs.cnn.com ()
[*] [host] reliablesources.blogs.cnn.com ()
[*] [host] lightyears.blogs.cnn.com ()
[*] [host] commercial.cnn.com ()
[*] [host] collection.cnn.com ()
我们可以在谷歌上复制这种类型的搜索,以确保我们没有错过任何有价值的主机,方法是先输入back,然后modules load google_site_web,然后options set SOURCE cnn.com,最后run。这通知我们发现了38个主机(其中15个是新的),这表明Bing发现了比谷歌更多的主机,而谷歌发现了15个主机,这些主机不在我们从Bing收集的主机列表中。
└─$back
└─$modules load google_site_web
└─$options set SOURCE cnn.com
└─$run
由于Recon-ng可以解析重复项,我们应该有一个由谷歌和Bing共同努力得出的唯一主机列表。输入show hosts将显示所有主机。以下是一个小部分。
└─$show hosts
接下来,让我们输入back命令离开当前模块,然后输入modules load brute_suffix命令加载我们的下一个演示模块。
└─$back
└─$modules load brute_suffix
由于我们没有为该模块设置源域名,我们将使用选项设置源域名为socialengineer.org。除了.com和.org之外,还有许多顶级域名(TLDs)。执行run命令将搜索各种TLD,如.net、.tv等。完成后,输入show domains命令将显示我们更新的目标地址集合,准备进行进一步搜索。在本例中,我被通知找到了其他域名,包括以下内容。
└─$options set SOURCE socialengineer.org
└─$run
└─$show domains
关于新线索的分析,我们将在稍后进行。现阶段,我们可以复用之前执行的bing_domain_web和google_site_web模块,以显著扩充我们的主机列表。此刻,适宜暂停并进行一番反思,审视已发生的情况。每当我们获取到数据,Recon-ng便会将其存储在专用的工作空间中。在进行新一轮搜索或重复旧有搜索时,所有新增数据都会被追加。因此,我们无需记录每一项发现,因为Recon-ng已为我们详细记录。这使得我们能够汇集一些先前无法手动管理的数据量。接下来,我们将继续探讨个人联系。
输入show contacts将显示当前工作空间中存储的任何联系人。您可能没有任何联系人,所以让我们添加一些。首先,输入back确保您已退出之前的模块。接下来,使用modules load pgp_search加载另一个模块。这将扫描我们已定位的所有存储域,并搜索这些域中与公共PGP密钥关联的任何电子邮件地址。我们尚未为此模块设置源,但您可能已经准备好了一些。在之前的示例中,您在其他顶级域中搜索了socialengineer.org,并获得了许多结果。如果在此模块中输入input,您应该看到列出的相同域。这是因为Recon-ng不断存储找到的数据,并使其可供将来使用。如果我们输入run,将搜索此列表,但不会找到结果。请注意,此列表不包含我们的目标域social-engineer.org,只包含以前找到的其他名称。因此,您可能希望删除这些源,然后使用以下命令添加一个新的新源。
└─$back
└─$modules load pgp_search
└─$options unset SOURCE
└─$options set SOURCE cnn.com
└─$run
键入“run”并按下回车键执行进程,然后提交“show contacts”以显示结果。以下是部分输出,其中标识出了新的电子邮件地址。这些地址现在都存储在您的工作空间中,准备进行下一轮的研究。
└─$show contacts
让我们思考一下这如何有利。假设你正在调查众多网站。Recon-ng提供了数十个实用程序,自动化查询并提供即时信息。将其扩大到数十个或数百个域、配置文件或其他目标数据,你就有了一个简单的方法来复制几个小时的工作。在另一种情况下,你正在调查与案件相关的潜在电子邮件地址列表。将它们输入Recon-ng中,可以在所有帐户中执行搜索。检查一个地址的工作量与检查数千个地址的工作量相同。这种令人印象深刻的能力只是这个应用程序可以完成的一小部分。现在似乎是退出,创建报告并开始新一组操作的好时机。以下命令将退出当前模块;安装报告功能;指示Recon-ng我们要使用报告工具;强制使用图形html(Web)模板;将“客户”设置为IntelTechniques;将“创建者”设置为M.Bazzell;并执行该过程。
└─$back
└─$marketplace install html
└─$modules load html
└─$options set CUSTOMER IntelTechniques
└─$options set CREATOR M.Bazzell
└─$run
请注意最后一条命令后的输出。它标识报告已完成,并提供了存储位置。由于我是从我的OSINT虚拟机上运行Recon-ng的,默认位置是~/.reconng/workspaces/OSINT/results.html。因此,我可以打开我的桌面上的主文件夹,双击“.recon-ng”文件夹,再双击“workspaces”文件夹,再双击“OSINT”文件夹,然后打开“results”文件。请注意,您必须在文件应用程序的首选项菜单中启用“显示隐藏文件”选项。请注意,域名、主机和联系人部分未展开,但包含大量信息。在文件底部,“Created by”、日期和时间清楚地标识了这些报告的详细信息。
希望这个演示解释了Recon-ng的用法。在窗口中执行“exit”会关闭所有内容,但不会删除任何内容。在我们的下一个示例之前,让我们删除之前的工作并重新开始。请注意,删除工作区会删除所有相关数据和报告。如果需要,请确保已导出您的证据。
首先,重新启动Recon-ng。以下命令显示当前的工作区;删除OSINT工作区;并创建一个名为“location”的新工作区。
└─$workspaces list
└─$workspaces remove OSINT
└─$workspaces create location
本章仅对Recon-ng的部分功能进行了简要阐述。建议您重新审视开篇所列的模块,并尝试执行各模块。总体来说,该应用程序较为稳定,即便出现错误,也多为无害性质。在请求API密钥方面,向相关服务提出申请即可获得最佳效果。Recon-ng各模块的“信息”屏幕上均显示了“所需密钥”字段中的相关要求。值得注意的是,许多API密钥均可免费获取,为探索更多可能性提供便利。总之,Recon-ng的应用范围广泛,足以撰写一本专著。本节旨在让您熟悉该程序,并领略自动查询功能的强大(后台回复[教程]获取高级情报工具详细使用教程文档)。
原文始发于微信公众号(OSINT情报分析师):高级开源情报搜集工具之Recon-ng
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论