掌握 Shodan:冷门搜索技巧让你脱颖而出

Shodan高级搜索之冷门技巧


声明

笔记内容参考了B站UP主 泷羽sec 的学习视频,如有侵权,将立即删除。
本笔记旨在促进网络安全学习,任何不当使用均与作者无关,请勿逾越法律红线,否则后果自负。
希望这些内容能对各位师傅有所帮助,欢迎您的点赞和评论!


导语

Shodan 是一个强大的搜索引擎,专注于互联网设备的搜索。与常规搜索引擎不同,Shodan 允许用户通过 IP 地址、端口、服务和其他多种参数搜索设备,帮助安全研究人员、网络管理员和技术爱好者发现和分析全球范围内的联网设备。

➤ 往期回顾

在前几期的文章中,我们详细介绍了 Shodan 的基本用法、命令和进阶技巧,包括如何批量查找并验证漏洞,以及如何发现并解锁隐藏的脆弱资产。这一期,我们将为您补充一些冷门的语法技巧,这些技巧将帮助您更深入地挖掘 Shodan 的潜力,提升搜索的精准度和效率,从而灵活进行设备搜索和信息收集。


冷门模块介绍

Shodan除了常用的搜索和过滤功能外,还提供了一些较为冷门但有时也很实用的模块,以下是几种冷门模块的简要介绍:

Scan 模块

在这里插入图片描述

scan 模块支持实时扫描指定的IP或网段,能够主动探测目标的开放端口、服务和其他特性。该模块尤其适用于对关键设备的实时监测,帮助安全团队在信息变更时第一时间掌握情况。下面命令可提交对特定IP地址的扫描请求:

shodan scan submit 123.456.78.90

在实际场景中,通过 scan 模块可以针对新上线的设备或敏感资产开展即时扫描,快速获取其安全状态。

Alert 模块

Shodan的alert功能允许用户设定监控条件,实时监控符合条件的设备和网络活动,并发送通知。由于此模块使用较少且命令较为复杂,以下将简要介绍其常用操作:

  1. 创建 Alert
    使用 shodan alert create 命令设定监控条件及通知邮箱。例如,监控所有运行SSH服务的设备并在发现时发送通知:
shodan alert create "service:ssh" your_email@example.com
  1. 查看 Alert 列表
    查看当前所有Alert,使用以下命令显示Alert的ID、搜索条件、创建时间和状态:
shodan alert list
  1. 删除 Alert
    如需删除某个Alert,使用 shodan alert delete 命令并指定Alert的ID。例如,删除ID为123456的Alert:
shodan alert delete 123456
  1. 接收 Alert 通知
    Shodan检测到符合Alert条件的设备或网络活动时,会通过邮件通知用户,邮件内容包括设备的IP地址、端口、操作系统和服务等信息。

  2. 使用过滤器创建更具体的 Alert
    Shodan支持多种过滤器,可用于设定更精准的监控条件。例如,监控特定IP地址范围内的设备:

shodan alert create "net:192.168.1.0/24" your_email@example.com

此命令将监控 192.168.1.0/24 网段内的设备,并发送通知。

Domain 模块

在这里插入图片描述

domain 用于查询域名信息,但因为Shodan本身的非实时性,这个参数用起来可能不是很舒服。

Stats 模块

Shodan的stats模块用于设备状态及版本信息的统计分析。通过--facets参数,可以指定想要统计的具体信息维度。例如,使用以下命令获取启用SSL/TLS的设备中,不同SSL/TLS协议版本的统计信息:

shodan stats --facets ssl.version has_ssl:true

参数解释

  • shodan stats:用于获取统计信息。
  • --facets:指定统计维度(facet),表示需要获取的特定信息。
  • ssl.version:统计SSL/TLS协议的版本信息。
  • has_ssl:true:过滤条件,仅统计启用SSL/TLS协议的设备。

SSL(安全套接层)和TLS(传输层安全协议)用于互联网通信加密保障,以上命令可帮助分析使用不同加密协议的设备数量。

HTTP 高级用法

使用 http.title 搜索网页标题

利用 http.title 关键字,您可以根据网页标题进行搜索,方便查找特定类型的网站。例如:

http.title:"admin panel"  # 查找标题中包含 "admin panel" 的网页
使用 http.html 搜索网页内容

通过 http.html 关键字,您可以查找包含特定内容的网页,从而快速定位相关网站。例如:

http.html:"login successful"  # 查找网页内容中包含 "login successful" 的网站
使用 http.favicon.hash 搜索网页图标

借助 http.favicon.hash,您可以根据网页的 favicon 哈希值进行搜索,找到使用相同 favicon 的不同网站。示例:

http.favicon.hash:1234567890  # 查找 favicon 哈希值为 1234567890 的网站
使用 http.waf 筛选特定 WAF

使用 http.waf 关键字,可以筛选使用特定 Web 应用防火墙 (WAF) 的网站。以下是一些示例:

http.waf:"Cloudflare"  # 查找使用 Cloudflare WAF 的网站
http.waf:"AWS WAF"     # 查找使用 AWS WAF 的网站
http.waf:"safedog"     # 查找使用 SafeDog WAF 的网站
使用 http.component 搜索运行特定组件的设备

您还可以使用 http.component 关键字结合端口号来搜索特定组件的设备。例如:

http.component:"nginx" port:80  # 查找运行 Nginx 的设备,并开放 80 端口

其他搜索技巧

使用 net 搜寻网段

通过 net 关键字,您可以精准锁定特定网段内的设备,尤其在教育机构、企业等网络区域明确的环境中更为有效。例如,在教育机构网络中,可以用 net 参数锁定校园网服务器和路由器,快速找到弱点设备。示例:

shodan search --limit 10 --fields ip_str,port net:208.88.84.0/24
使用 org 查找组织资产

org 关键字可用于按组织名称筛选相关 IP 地址,帮助用户聚焦于特定组织的设备。结合 orghas_vuln 等参数,可以快速识别目标组织中可能存在安全漏洞的设备,从而提升漏洞检测的精准度。

例如,以下命令用于搜索美国宇航局(NASA)公开的、具有已知漏洞的IP地址:

shodan search org:"NASA" has_vuln:true
利用 API 进行复杂搜索

如果您需要进行更复杂的搜索,Shodan 的 API 能为您提供更灵活的查询选项。以下是使用 Python 进行 Shodan 搜索的示例代码:

import shodan
import json
import time

# Shodan API 密钥
API_KEY = "YOUR_API_KEY"
api = shodan.Shodan(API_KEY)

# 搜索配置
query = 'org:"NASA" ssl:true http.component:"Apache"'
limit = 50  # 设置最大查询结果数
save_to_file = True  # 是否将结果保存为文件

# 执行查询并处理结果
try:
    print(f"开始执行搜索:{query}")
    results = api.search(query, limit=limit)
    
    print(f"共找到 {results['total']} 条匹配结果")
    devices = []

    # 解析结果并打印关键信息
    for result in results['matches']:
        device_info = {
            "IP": result['ip_str'],
            "Port": result['port'],
            "Organization": result.get('org', 'N/A'),
            "Location": {
                "City": result['location'].get('city', 'N/A'),
                "Country": result['location'].get('country_name', 'N/A')
            },
            "Hostnames": result.get('hostnames', []),
            "Vulnerabilities": result.get('vulns', []),
            "Web Components": result.get('http', {}).get('components', {})
        }
        
        devices.append(device_info)
        
        # 打印部分信息
        print(f"IP: {device_info['IP']}, Port: {device_info['Port']}, Org: {device_info['Organization']}")
        print(f"Location: {device_info['Location']['City']}, {device_info['Location']['Country']}")
        print(f"Vulnerabilities: {', '.join(device_info['Vulnerabilities']) if device_info['Vulnerabilities'] else 'None'}")
        print(f"Web Components: {device_info['Web Components']}\n")
        time.sleep(0.5)  # 控制请求频率,避免超出速率限制

    # 保存结果到JSON文件
    if save_to_file:
        filename = "shodan_results.json"
        with open(filename, 'w') as file:
            json.dump(devices, file, indent=4)
        print(f"查询结果已保存到文件:{filename}")

except shodan.APIError as e:
    print(f"Shodan API 出错:{e}")
except Exception as e:
    print(f"发生错误:{e}")

结语

感谢您阅读本篇文章!如果您对文中内容有任何疑问或建议,欢迎在评论区与我交流!您的点赞和分享将是我继续创作的动力。希望这些技巧能帮助您更有效地利用 Shodan,提升网络安全的研究和分析能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值