ODIN
观察、检测和调查网络
[
(.)] [
(.)]

当前版本:v2.0.0 "Huginn"
ODIN 是一个用于自动化情报收集、资产发现和报告的 Python 工具。请记住,如需前沿功能请查看 dev 分支,欢迎提供反馈!
更多详情及安装和设置说明,请参阅 GitHub Wiki。
ODIN 能做什么?
ODIN 旨在自动化红队用于发现和收集网络资产(包括域名、IP 地址和面向互联网的系统)的基本侦察任务。其核心特性在于数据管理和报告。数据被组织到数据库中,并且可以选择将数据库转换为 HTML 报告或用于可视化数据的 Neo4j 图数据库。
ODIN 通过多个阶段完成这些工作:
第一阶段 - 资产发现
- 从 Full Contact 营销数据库等来源收集基本组织信息。
- 检查 DNS Dumpster、Netcraft 和 TLS 证书以发现提供的域名的子域名。
- 通过套接字连接和 DNS 记录将域名和子域名解析为 IP 地址。
- 从 RDAP、whois 和其他数据源收集所有 IP 地址的信息,如所有权和组织数据。
- 在 Shodan 上查找域名并搜索 IP 地址,以收集其他数据,如操作系统、服务横幅和开放端口。
- 检查域名和子域名是否存在接管和域名前置的可能性。
第二阶段 - 员工发现
- 收集目标组织的电子邮件地址和员工姓名。
- 通过搜索引擎和 Twitter API 将员工与社交媒体资料关联起来。
- 使用 Troy Hunt 的 Have I Been Pwned 交叉检查发现的电子邮件地址。
第三阶段 - 云和 Web 服务
- 搜索目标域名下的 Office 文件和 PDF,下载并提取元数据。
- 使用与组织相关的关键词搜索 AWS S3 存储桶和 Digital Ocean Spaces。
- 对发现的 Web 服务进行截图,以便快速初步审查服务。
第四阶段 - 报告
- 将所有数据保存到 SQLite3 数据库中,以便轻松查询数据。
- 使用默认 SQL 查询生成 HTML 报告,从而在 Web 浏览器中轻松浏览数据。
- 创建一个 Neo4j 图数据库,将发现的所有实体(IP 地址、域名、子域名、端口和证书)通过关系(例如 RESOLVES_TO、HAS_PORT)连接起来。
在这所有步骤结束后,你将拥有多种方式来浏览和可视化数据。即使是像 MATCH (n) RETURN n(显示所有内容)这样简单的 Neo4j 查询也能创建出组织外部边界的迷人图谱,并使查看资产之间的关联变得简单。Neo4j wiki 页面 包含了更好的查询示例。