// 安全研究 · 2024-10-25

Shodan 使用秘籍:揭秘全球设备搜索,轻松挖掘网络安全情报!

@[TOC](内容预览 ≧∀≦ゞ)

Shodan 使用指南


声明

本笔记内容参考了B站UP主 泷羽sec 的学习视频,若涉及侵权将立即删除。本笔记旨在方便网络安全学习,任何不当使用均与作者无关,请勿逾越法律红线,后果自负。


什么是Shodan

Shodan(Shodan.io)被称为“物联网的搜索引擎”,它扫描并索引互联网公开的设备和服务。Shodan的数据库中包含丰富的设备信息,包括开放端口、Banner信息、协议、服务版本、SSL证书等。在红队场景中,这些数据可以为我们提供关于目标网络基础设施的初步信息,帮助发现潜在的攻击面。

工作原理

Shodan 通过全网扫描,解析设备返回的“Banner 信息”来识别设备。Banner 信息是服务器发送给客户端的描述性元数据,通常包含软件名称、版本、安装日期等。基于这些数据,Shodan 可以深入了解网络设备的运行情况。

优缺点分析

  1. 优点
  • 广泛覆盖:Shodan 可扫描服务器、路由器、智能设备等多种设备,帮助快速发现安全风险。
  • 详细信息:提供操作系统、开放端口和软件版本等详细信息,有助于漏洞分析和安全评估。
  • 高效搜索:灵活的搜索语法支持条件筛选,用户可按需快速找到目标设备。
  • 集成能力:提供 API 接口,方便与其他安全工具整合,支持自动化数据分析。
  1. 缺点
  • 数据滞后:网络环境动态变化,Shodan 的数据可能不够实时,有滞后性。
  • 信息不全:部分设备使用防火墙或伪装标识,Shodan 可能无法获取完整信息。
  • 搜索限制:未登录用户结果受限,特定内容可能被屏蔽,影响搜索全面性。

Shodan 网页版

Shodan 的网页版界面简洁直观,提供多种筛选条件,帮助用户高效地获取特定设备或服务的信息。 Shodan Web Interface Overview

使用技巧

  1. 筛选与分析:在搜索结果页面的侧边栏,Shodan 支持基于服务类型、组织、端口、地理位置等条件的多维筛选。利用这些筛选条件,可以更快地定位与目标相关的设备,筛选出符合特定需求的资产数据。

  2. 设备详情:点击任何设备条目,即可查看该设备的详细信息,包括其 IP 地址、开放端口、操作系统、位置信息等。这些信息非常适合用于网络风险评估和安全分析,帮助识别潜在的攻击向量。

  3. 图表与报告生成:Shodan 提供生成数据图表、导出分析报告的功能,特别适合高级账户用户。这些功能允许用户可视化分析数据,甚至生成实时监控和警报。

Facet Analysis 功能

在 Shodan 搜索中,Facet Analysis 功能(点击这里查看)是一个非常有用的分析工具。通过此功能,用户可以进一步细分搜索结果,例如统计 http.title 出现的次数,从而帮助我们快速分析和筛选出感兴趣的设备。例如,在搜索 ssl.cert.subject.cn:*.huawei.com 时,可以通过筛选 http.title 来查看每个标题的出现次数,结果如下所示:

Shodan Facet Analysis

在这个案例中,我们可以根据 http.title 字段出现的次数从高到低进行排序,找到出现频次较高的标题,聚焦在与特定标题相关的资产上,从而更有针对性地分析设备群体。


Shodan 命令行

安装与配置

在使用 Shodan 命令行工具之前,请确保系统已安装 Python 和 pip。Shodan CLI 的安装步骤简单明了,运行以下命令即可完成安装(kali系统中已经自带shodan命令):

pip install shodan

安装完成后,需要添加 Shodan API 密钥以便在命令行中使用 Shodan。配置密钥命令如下:

shodan init <Your_API_Key>

获取 API Key 可访问以下链接:https://account.shodan.io 如何获取API

配置完成后,即可在命令行中使用 Shodan 的各种命令进行查询、下载、解析等操作。Shodan CLI 的功能与网页版类似,并且更适合批量处理和自动化脚本开发。


基础操作

0. 帮助文档

要查看 Shodan CLI 的帮助文档及其所有参数,可以使用以下命令:

shodan -h

1. 搜索设备信息

使用 shodan search <query> 可以搜索设备信息。例如,搜索所有使用 Apache HTTPD 1.6.2 版本的设备:

shodan search "Apache httpd 1.6.2"

常用搜索参数:

  • --limit <number>:限制返回的搜索结果数量
  • --fields <field_names>:选择要返回的字段(例如 ip_str, port, org)
  • has_vuln:true:过滤出存在漏洞的设备

2. 返回查询结果数量

使用 shodan count <query> 可返回符合查询条件的设备数量:

shodan count "Apache httpd 1.6.2"

3. 下载查询结果

使用 shodan download <filename> <query> 下载搜索结果至指定文件,文件后缀为.json.gz,例如,下载所有使用 Microsoft IIS 6.0 的设备信息:

shodan download iis6_data "Microsoft IIS 6.0"

4. 解析下载的数据

下载的数据为 JSON 格式,可通过 shodan parse 命令解析。以下命令从文件中解析出 IP、端口和组织字段,以逗号分隔:

shodan parse --fields ip_str,port,org --separator , iis6_data.json.gz

5. 查看主机详细信息

使用 shodan host <ip_address> 可查看指定 IP 的详细设备信息,例如查看 IP 为 192.168.1.1 的设备信息:

shodan host 192.168.1.1

shodan host --history 是一个实用的参数,可以查看目标IP地址的历史数据。此信息非常有价值,尤其是在目标系统近期进行了安全改进后,通过历史数据可以判断哪些端口和服务曾暴露过,帮助识别新的薄弱点。

6. 管理网络警报

列出所有网络警报,便于管理和监控特定 IP 范围的设备:

shodan alert list

7. 实时数据流

通过 shodan stream 获取实时 Shodan 数据流,便于实时监控设备变化:

shodan stream

8. 检查 IP 是否为蜜罐

使用 shodan honeyscore 检测 IP 是否为蜜罐,分值越高表明蜜罐的可能性越大:

shodan honeyscore <ip_address>

9. 显示账户信息

查看当前 Shodan 账户的详细信息:

shodan info

10. 显示外部 IP 地址

快速获取当前外部 IP 地址:

shodan myip

搜索过滤器 (Search Filters)

Shodan 的 search 功能支持多种过滤器,便于精准定位特定设备和服务信息。以下是一些常用的过滤器及其示例:

  • city:“[city name]”
    示例:city:"New York"
    用于搜索位于纽约市的设备。

  • country:“[country code]”
    示例:country:"US"
    用于搜索位于美国的设备。

  • geo:“[latitude],[longitude]”
    示例:geo:"37.7749,-122.4194"
    用于搜索位于指定地理坐标(如旧金山)的设备。

  • hostname:“[hostname]”
    示例:hostname:"example.com"
    用于查找主机名包含“example.com”的设备。

  • net:“[IP range]”
    示例:net:"192.168.1.0/24"
    用于搜索位于特定 IP 段(如 192.168.1.0/24)的设备。

  • os:“[operating system]”
    示例:os:"Windows 10"
    查找运行 Windows 10 操作系统的设备。

  • port:“[port number]”
    示例:port:"80"
    用于查找开放 HTTP 端口 80 的设备。

  • org:“[organization name]”
    示例:org:"Google"
    用于查找与 Google 相关的设备。

  • isp:“[internet service provider]”
    示例:isp:"Comcast"
    用于查找使用 Comcast 提供的互联网服务的设备。

  • product:“[product name]”
    示例:product:"Apache HTTPD"
    查找使用 Apache HTTPD 服务器的设备。

  • version:“[version number]”
    示例:version:"2.4.46"
    定位运行 Apache 2.4.46 版本的服务器。

  • has_screenshot:“true”
    示例:has_screenshot:"true"
    查找具有可用截图的设备,适用于需要进一步查看设备界面的场景。

  • ssl.cert.subject.cn:“[common name]”
    示例:ssl.cert.subject.cn:"example.com"
    用于搜索 SSL 证书中通用名为“example.com”的设备。

  • http.title:“[title text]”
    示例:http.title:"Welcome to nginx!"
    查找网页标题为“Welcome to nginx!”的设备。

  • http.html:“[html content]”
    示例:http.html:"Sign In"
    用于搜索包含特定 HTML 内容(如登录页面)的网页。

  • http.status_code:[code]
    示例:http.status_code:200
    查找返回 200 状态码的设备。

  • ssl:“[SSL keyword]”
    示例:ssl:"TLSv1.2"
    搜索启用 TLS 1.2 加密的设备。

  • before:“[date]” / after:“[date]”
    示例:before:"2023-01-01"
    用于查找在 2023 年 1 月 1 日之前上线的设备。

通过合理组合多个过滤器,Shodan 可以高效筛选出特定需求的设备和服务信息。


总结

Shodan为安全测试人员提供了强大且便捷的功能,使其能够高效获取和筛选互联网设备信息。通过Shodan命令行工具,红队可以利用丰富的命令进行多层次的信息收集。希望本指南能帮助您快速上手Shodan,并在合法合规的前提下进行有效的安全测试。

原文 https://blog.csdn.net/2301_79518550/article/details/143245630