InfoHound 是一款 OSINT 工具,用于根据 Web 域名提取大量数据。
在侦查阶段,攻击者会搜索有关其目标的任何信息,以建立一个档案,这有助于之后识别进入一个组织的可能途径。InfoHound 使用 OSINT 执行被动分析技术(不直接与目标交互),给定一个网站域名,提取大量数据。该工具将检索电子邮件、人员、文件、子域名、用户名和 URL,这些数据随后会被分析以提取更有价值的信息。
此外,InfoHound 利用了一个 Ollama 实例,使其能够利用 LLM(大型语言模型)的能力。默认情况下,InfoHound 使用预训练的 LLM 模型 llama2 来生成组织内个人角色的简要描述。此功能提供了对组织结构的宝贵洞察,并有助于识别关键人员。此外,正在进行的开发工作旨在增加新功能和增强功能,以在未来进一步提升该工具的能力。
注意: InfoHound 不需要任何特殊硬件即可运行。然而,在使用利用大型语言模型(LLM)的任务时,需考虑硬件要求。有关您打算使用的LLM模型的具体要求的详细信息,请参阅官方 Ollama 文档。

git clone https://github.com/Fundacio-i2CAT/InfoHound.git
cd InfoHound/infohound
mv infohound_config.sample.py infohound_config.py
cd ..
docker-compose up -d
现在您可以通过浏览器访问 infohound,地址为:
http://localhost:8000/
注意: 你需要在 infohound_config.py 文件中添加 API 密钥
InfoHound 有两种不同类型的模块:检索数据的模块和分析数据以提取更多相关信息的模块。
InfoHound 允许您创建自定义模块,您只需将脚本添加到 infohoudn/tool/custom_modules 目录中。已经添加了一个自定义模块作为示例,它使用 Holehe 工具来检查之前的电子邮件是否关联到 Twitter、Instagram、Imgur 等超过 120 个其他网站上的账户。
# Import the packages you need
import trio
import httpx
import requests
from holehe import core
# Import the Django models you will work with
from infohound.models import Emails
MODULE_ID = "findRegisteredSitesHoleheCustomTask" # Set a module ID
MODULE_NAME = "Find sites with Holehe" # Set a module name
MODULE_DESCRIPTION = "Using Holehe tool, this task will find where an email has been used to create an account. Holehe checks more than 120 sites." # Set a description
MODULE_TYPE = "Analysis" # Set the type: Analysis or Retrieve
# This function is the only function it will be called by InfoHound
# Change its content and create other the functions if needed
def custom_task(domain_id):
trio.run(findRegisteredSitesHolehe, domain_id)
async def findRegisteredSitesHolehe(domain_id):
queryset = Emails.objects.filter(domain_id=domain_id)
for entry in queryset.iterator():
out = []
email = entry.email
modules = core.import_submodules("holehe.modules")
websites = core.get_functions(modules)
client = httpx.AsyncClient()
for website in websites:
await core.launch_module(website, email, client, out)
print(out)
await client.aclose()
services = []
for item in out:
if item["exists"]:
services.append(item["name"])
entry.registered_services = services
entry.save()

想要创建一个发现结果的可视化图吗?您可以将整个域名分析导出为 GraphML 文件,并用 yED、Gephi 或您选择的任何工具打开。目前它导出文件、人员、电子邮件、社交档案、注册站点和用户名。由于结果数量众多,不包括 URL 和子域名。

想要使用类似 Maltego 的工具进行扩展调查吗?您可以将整个域名分析(包括文件、个人、电子邮件、社交档案、注册站点和用户名)导出为 Maltego 兼容文件(CSV)并在其中打开。您可以在项目根目录中找到 Maltego 列映射配置文件 (maltego_mapping.mtz)。了解有关导入 Maltego 的更多信息
本代码由 Fundació Privada Internet i Innovació Digital a Catalunya (i2CAT) 开发。
i2CAT 是一个非营利研究与创新中心,致力于推动以使命为导向的知识来解决业务挑战,共同创造具有变革影响的解决方案,通过开放和参与式、具有地域渗透性的数字社会创新赋能公民,并促进开创性和战略性的举措。
i2CAT 旨在将研究项目成果转移给私营公司,通过知识产权的对外许可和创建衍生公司来创造社会和经济影响。
有关 i2CAT 项目和知识产权的更多信息,请访问 https://i2cat.net/tech-transfer/
本代码根据 AGPLv3 条款许可。有关许可证的信息,请点击 链接。
如果您发现此许可证不适合您在使用、分发或再分发我们的代码用于特定工作时的要求,请随时通过以下地址联系 i2CAT 的知识产权管理人员:[email protected]
| 名称 | 描述 |
|---|
| 获取 Whois 信息 | 从 Whois 注册信息中获取相关信息。 |
| 获取 DNS 记录 | 此任务查询 DNS。 |
| 获取子域名 | 此任务使用 Alienvault OTX API、CRT.sh 和 HackerTarget 作为数据源,发现缓存的子域名。 |
| 从 URL 获取子域名 | 一旦执行了一些任务,URL 表将有很多条目。此任务将检查所有 URL 以发现新的子域名。 |
| 获取 URL | 它搜索 Wayback Machine 缓存的所有 URL 并将其保存到数据库中。这有助于之后发现其他数据实体,如文件或子域名。 |
| 从 URL 获取文件 | 它遍历 URL 数据库表以查找文件,并将其存储在文件数据库表中供后续分析。将检索的文件类型有:doc, docx, ppt, pptx, pps, ppsx, xls, xlsx, odt, ods, odg, odp, sxw, sxc, sxi, pdf, wpd, svg, indd, rdp, ica, zip, rar |
| 查找电子邮件 | 它使用查询 Google、Bing 和泄露数据库的方式查找电子邮件。 |
| 从电子邮件查找人员 | 一旦找到一些电子邮件,就可以发现它们背后的人员。此外,它还从这些人员中查找用户名。 |
| 从 URL 查找电子邮件 | 有时,发现的 URL 可能包含敏感信息。此任务从 URL 路径中检索所有电子邮件。 |
| 执行 Dorks | 它将执行 dorks 文件夹中定义的 dorks。记得按类别(文件名)对 dorks 进行分组以理解其目标。 |
| 从 Dorks 查找电子邮件 | 默认情况下,InfoHound 定义了一些用于发现电子邮件的 dorks。此任务将从 dork 执行结果中查找它们。 |
| 从 Google 查找人员 | 使用 Google JSON API 查找与域名关联的公司中工作的人员。 |
| 名称 | 描述 |
|---|
| 检查子域名接管 | 它执行一些检查以确定子域名是否可被接管。 |
| 检查域名是否可被欺骗 | 它检查 InfoHound 发现的电子邮件中的域名是否可被欺骗。攻击者可能利用此功能冒充某人并以他/她的名义发送电子邮件。 |
| 从用户名获取档案 | 此任务使用已发现的每个人的用户名来查找该用户名存在的服务或社交网络档案。这是使用 Maigret 工具完成的。值得注意的是,虽然找到了同用户名的档案,但并不一定意味着它属于正在分析的人员。 |
| 下载所有文件 | 一旦文件存储在文件数据库表中,此任务将把它们下载到 'download_files' 文件夹。 |
| 获取元数据 | 使用 exiftool,此任务将从已下载的文件中提取所有元数据并保存到数据库中。 |
| 从元数据获取电子邮件 | 由于某些元数据可能包含电子邮件,此任务将检索所有电子邮件并保存到数据库。 |
| 从文件内容获取电子邮件 | 通常,电子邮件可能包含在公司文件中,因此此任务将从已下载的文件内容中检索所有电子邮件。 |
| 使用电子邮件查找注册的服务 | 可以找到使用电子邮件创建账户的服务或社交网络。此任务将检查 InfoHound 发现的电子邮件是否在 Twitter、Adobe、Facebook、Imgur、Mewe、Parler、Rumble、Snapchat、Wordpress 和/或 Duolingo 上有账户。 |
| 检查泄露 | 此任务检查 Firefox Monitor 服务,查看电子邮件是否出现在数据泄露中。虽然是免费服务,但每天限制 10 次查询。如果设置了 Leak-Lookup API 密钥,也会检查它。 |
| AI 驱动的人员档案分析 | 您可以使用人员档案分析任务,该任务采用 AI 驱动的工具来检查元数据并为您生成描述。 |
| 获取泄露的密码 | 使用 Proxy Nova 的免费服务,InfoHound 可以检测并显示过去已泄露的用户名对应的密码。 |