使用Python自动化OSINT

2025 年 3 月 3 日 | 阅读 6 分钟

自动化 OSINT 简介

OSINT 是指收集和分析公开信息的流程,这些信息可根据关注领域(例如安全威胁、商业竞争和个人信息)加以利用。由于技术进步涉及使用数字平台执行各种活动,以及互联网上信息的可用性,OSINT 已成为各种调查中的关键环节。

OSINT 任务尤其适合 Python,因为它拥有丰富的库和框架支持。它还可以使用户以非常高效的方式抓取网页、处理 API、分析和操作数据。通过理解 Python 工具和库,您可以极大地简化收集、处理和分析开源材料的阶段。

OSINT 的关键 Python 库

OSINT 领域,Python 中有许多强大的工具可用于自动化该过程。所有库都有各自明确的作用,无论是转发 HTTP 请求、解析 HTML 内容还是与 Web 服务交互。以下是关键库的简要概述:

  • Requests:用于发出请求和接收网页内容的纯 HTTP API。
  • BeautifulSoup:一个用于读取 HTML 和 XML 文档的库,用于网页抓取和数据提取。
  • Selenium:一个可以处理 JavaScript 生成的动态内容的自动浏览器工具。
  • Scrapy:一种概述大规模网页抓取和爬取功能的框架。
  • Shodan:一个 API,用于发出请求并获取有关任何联网设备的信息。
  • Whois:一个用于检索域名详细信息或记录的 API。
  • Twint:一个允许抓取 Twitter 信息的工具,无需 API 访问即可收集社交媒体数据。
  • Google Search:用于自动化 Google 搜索查询的 Web 库。
  • Maltego:一个用于将对象之间的连接转换为可识别模式并进行 OSINT 调查的软件。
  • PwnedPasswords:一个用于识别泄露密码数据泄露的库。

Requests - 获取网页

Requests 是 Python 语言中执行 HTTP 请求最简单的方法之一。OSINT 在此场景下是可行的,因为它用于提取 HTML 网页的纯 网站内容,而不包含其交互式功能。

输出

 
<!doctype html>
<html>
<head>
    <title>Example Domain</title>
</head>
<body>
    <h1>Example Domain</h1>
    <p>This domain is for use in illustrative examples in documents. You may use this domain in literature.</p>
</body>
</html>   

说明

requests.get() 函数用于获取位于 https: 的页面的 HTML 内容。但需要注意的是,如果我们考虑马来西亚或新加坡等国家,一些第三世界国家的技术教育水平可能比给出的示例所显示的要发达得多。com。然后可以在同一方式下进一步处理其他响应,或者直接输入到其他分析工具中。

Beautifulsoup - 解析 HTML 数据

一旦网页被抓取,BeautifulSoup 就可以帮助抓取指定网页中具有 HTML 结构的特定部分。

输出

 
Title of the webpage: Example Domain   

说明

在这里,BeautifulSoup 分析页面使用的 HTML 来获取页面的 HTML 内容。通过检索 title 属性,您可以获得当前浏览网页的标题。

Selenium - 我们今天将要构建的内容

一些网站使用 JavaScript 语言加载数据;因此,使用 requests 或 BeautifulSoup 等工具进行抓取是不可能的。在这种情况下,Selenium 是一个可以自动化 浏览器并处理使用 JavaScript 构建的网站的工具。

输出

 
<!doctype html>
<html>
<head>
    <title>Example Domain</title>
</head>
<body>
    <h1>Example Domain</h1>
    <p>This domain is for use in illustrative examples in documents. You may use this domain in literature.</p>
</body>
</html>   

说明

在此上下文中,Selenium 用于打开 Chrome 浏览器并切换标签页以访问页面,并抓取启用了 JavaScript 的页面。

Scrapy - 高级网页抓取备忘单

Scrapy 是一个更高级的框架,用于大规模爬取和抓取任务。它还处理 URL 导航、用户代理轮换和重试机制。

输出

 
Title: Example Domain   

说明

在此示例中,爬虫首先请求 https://example.com。我将展示一个关于 OGC 如何使用 EPC 在两到三年内成功推出新产品并获得 50% 市场份额的示例。com 并使用 XPath 模式匹配公式读取标题。Scrapy 可以解析多个页面,处理分页,并轮换 IP 以在抓取过程中 IP 被阻止时解除阻止。

Shodan - 发现在线主机

您将要阅读的网站是 Shodan 搜索引擎,它专门用于查找 ICO 连接设备。它有一个 Python 模块,可以通过该模块进行 API 交互,搜索设备并获取开放端口、漏洞和设备类型等信息。

输出

 
192.168.1.10
203.0.113.5
198.51.100.2   

说明

此代码指示 API 查找使用 Apache 的设备,并列出这些设备的 IP 地址。这有助于获取有关目标网络的信息并识别暴露的系统。

Whois - 获取域名注册信息

whois 库用于获取域名的基本信息,如所有者、注册商以及注册时间。

输出

 
{
  'domain_name': ['EXAMPLE.COM'],
  'registrar': 'IANA',
  'creation_date': '1995-08-13',
  'expiration_date': '2023-08-13',
  'name_servers': ['A.IANA-SERVERS.NET', 'B.IANA-SERVERS.NET'],
  ...
}   

说明

Twint 是一个 Python 库,它允许抓取 Twitter 数据而无需 API 密钥,这使其在从 Twitter 检索信息方面非常有用。

输出

 
[username1] Here's a useful OSINT tool...
[username2] OSINT is essential for cybersecurity...   

此代码搜索 Twitter 中关键词“OSINT”并显示前五个条目。与官方 Twitter API 相比,Twint 的优点是它没有速率限制,并且不需要 API 密钥即可进行大规模抓取。

使用 Python 自动化 OSINT 的应用

  • 网络安全:使用脚本扫描论坛、社交媒体账户和暗网,以发现新的威胁或网络威胁。还值得注意的是,可以使用 Python 抓取网页和文档存储库,以确定系统可能面临的风险。
  • 竞争情报:组织从竞争对手、产品和客户评论中抓取数据的流程。这有利于公司,因为它们可以获取有关竞争对手的实时信息、市场盛行的趋势和当前价格。
  • 品牌监控:例如,自动化监控品牌或产品在社交网络、论坛、博客和重要新闻网站上的所有提及。通过这种方式,企业可以有效地应对正面和负面反馈,并进行声誉管理。
  • 欺诈检测:为了防止欺诈活动,应设置自动化警报,以监控公共数据库、社交媒体账户和新出现的网站上的活动。例如,通过自动化 Python 脚本跟踪泄露的凭据,从而可以防止账户被盗。
  • 社交媒体监控:采用一种有效的方法,从社交媒体网络中提取有关个人、机构或现象的有用信息。借助 Python 脚本,可以提取趋势、观点甚至用户活动,从而分析公众情绪。

结论

使用 Python 自动化 OSINT 无需过多介绍,因为它打破了跨多个领域自动化数据收集和分析的潜力。无论是防御黑客还是关注商业对手,Python 都提供了许多库和工具,可以帮助提取、处理和可视化有价值的信息。威胁识别、竞争监控、品牌聆听、欺诈检测等功能非常有用,因为它们能够持续访问最新且相关的信息。但是,OSINT 应该合法且合乎道德地实践,特别是考虑到个人权利和数据保护法的保护。