解锁 Shodan 搜索:基础语法与高效过滤技巧

在网络信息收集中,Shodan 作为一款强大的搜索引擎,为用户提供了探索全球联网设备的途径。想要充分发挥它的价值,深入理解其搜索查询语法至关重要。

Shodan 搜索围绕着 “banner” 展开。在互联网的生态里,各种设备运行着不同的服务,Shodan 的工作原理便是与这些服务进行交互,进而收集相关信息。这些信息被整合存储在一个个名为 “banner” 的数据对象中,它是 Shodan 数据收集的基本单元,也是用户搜索的主要目标。

以一个简化的 Moxa 设备 “banner” 为例:

1
2
3
4
5
6
7
8
9
10
11
12
{
"data": "Moxa Nport Device
Status: Authentication disabled
Name: NP5232I_4728
MAC: 00:90:e8:47:10:2d",
"ip_str": "46.252.132.235",
"port": 4800,
"org": "SingTel Mobile",
"location": {
"country_code": "SG"
}
}

这个 “banner” 包含了多个属性,每个属性都包含特定的信息。“data” 属性记录着服务自身的主要响应内容,从中可以了解设备的基本特征,比如设备类型、运行状态等;“ip_str” 明确了设备的 IP 地址,这个属性被用于在网络中定位设备的关键标识;“port” 指出了服务所使用的端口号;“org” 显示了拥有该 IP的组织或机构;“location.country_code” 则表明了设备所在的国家。然而,实际的 “banner” 远比这个示例复杂,包含更多详细的服务信息。

不同类型的服务,其 “banner” 的内容和格式差异巨大。就拿常见的 HTTP 服务来说,其 “banner” 可能是这样:

HTTP/1.1 200 OK

Server: nginx/1.1.19

Date: Sat, 03 Oct 2015 06:09:24 GMT

Content-Type: text/html; charset=utf-8

Content-Length: 6466

Connection: keep-alive

从这里我们可以清晰地知道设备正在运行 nginx 1.1.19 版本的 Web 服务器软件。

再看西门子 S7 工业控制系统协议的 “banner”,它主要围绕着固件、序列号以及大量描述设备的详细数据,与 HTTP 服务的 “banner” 截然不同。所以,在使用 Shodan时,明确服务类型是首要步骤。

Copyright: Original Siemens

Equipment PLC name: S7_Turbine

Module type: CPU 313C

Unknown (129): Boot Loader

A Module: 6ES7 313-5BG04-0AB0 v.0.3

Basic Firmware: v.3.3.8

Module name: CPU 313C

Serial number of module: S Q-D9U083642013

Plant identification: Basic Hardware: 6ES7 313-5BG04-0AB0 v.0.3

Shodan 的搜索语法分为简单搜索和使用过滤器的精准搜索。简单搜索适用于只对 “data” 属性中的特定内容进行查找的场景。例如,想要寻找更多 Moxa Nport 设备,只需在搜索框中输入 “Moxa Nport” 即可。但当搜索目标涉及 “banner” 的其他属性时,简单搜索就无法满足需求了。假设要查找 SingTel Mobile 网络中的设备,直接搜索 “SingTel Mobile” 并不能得到期望的结果,因为 Shodan 默认仅搜索 “data” 属性。

这时,就要靠搜索过滤器了。搜索过滤器是 Shodan 提供的特殊关键词,用于指定搜索特定的属性,其格式为 “filtername:value”,名称和值之间没有空格。若要查找位于新加坡的设备,可以使用 “country” 搜索过滤器,并传入新加坡的两位国家代码 “SG”,即 “country:SG”。当搜索的值包含空格时,需要用引号将其括起来,比如搜索 SingTel Mobile 网络内的设备,搜索语句为 “org:”SingTel Mobile”” 。另外,多个过滤器可以组合使用,进一步缩小搜索范围。例如,“org:”SingTel Mobile” city:Singapore” 这个搜索查询,能精准定位到位于新加坡市且属于 SingTel Mobile的设备。

Shodan 设计这种需要使用过滤器的搜索界面,有效避免了搜索结果中出现误报和误导性信息。以搜索 “Apache” 为例,通过正确使用过滤器,用户得到的结果只会是与 Apache Web 服务器软件相关的设备信息,而不会出现美国 Apache Junction 市的无关内容。