SuperAPI AI 工具集

shodan-reconnaissance

安全与审计

查看项目

更新于 10-15 15:45

技能介绍

用途

Shodan 侦察与渗透测试技能用于在渗透测试过程中,系统化地利用 Shodan 作为侦察工具。其主要目标是发现暴露的服务、存在漏洞的系统和 IoT 设备,覆盖 Shodan 网页界面、命令行界面(CLI)、REST API、搜索过滤器、按需扫描以及网络监控能力。

输入与前置条件

  • Shodan 账户:在 shodan.io 注册的免费或付费账户
  • API 密钥:从 Shodan 账户面板获取
  • 目标信息:需要调查的 IP 地址、域名或网络范围
  • Shodan CLI:已安装基于 Python 的命令行工具
  • 授权:对目标网络进行侦察的书面许可

输出与交付物

  • 资产清单:发现的主机、端口和服务列表
  • 漏洞报告:识别出的 CVE 和暴露的易受攻击服务
  • Banner 数据:揭示软件版本的服务横幅
  • 网络映射:资产的地理和组织分布
  • 截图库:对暴露界面的可视化侦察
  • 导出数据:用于进一步分析的 JSON/CSV 文件

主要能力与使用方式

安装与配置

使用 pip 安装:pip install shodan;或使用 easy_install:easy_install shodan;在 BlackArch/Arch Linux 上:sudo pacman -S python-shodan。

初始化 API 密钥:shodan init YOUR_API_KEY,随后用 shodan info 验证。

检查账户状态:shodan info(查看积分和计划信息)、shodan myip(查看外部 IP)、shodan version(查看 CLI 版本)。

基础主机侦察

查询单个主机:shodan host 1.1.1.1,可获取主机名、国家、组织、开放端口等信息。

蜜罐检测:shodan honeyscore 192.168.1.100,返回是否为蜜罐的概率分数。

搜索查询

基础搜索(免费,不消耗积分):shodan search apache;可指定输出字段:shodan search --fields ip_str,port,os smb。

过滤搜索(消耗 1 积分):如 shodan search product:mongodb 或组合过滤器 shodan search product:nginx country:US city:"New York"。

计数结果(不消耗积分):shodan count openssh。

下载结果:shodan download results.json.gz "apache country:US";可指定数量 --limit 5000 或全部 --limit -1。

解析下载数据:shodan parse --fields ip_str,port,hostnames results.json.gz;可按条件过滤、导出为 CSV。

搜索过滤器参考

  • 网络:ip、net(CIDR)、hostname、port、asn
  • 地理:country、city、state、postal、geo
  • 组织:org、isp
  • 服务/产品:product、version、os、http.title、http.html、http.status、ssl.cert.subject.cn、ssl
  • 漏洞:vuln:CVE-xxxx、has_vuln
  • 截图:has_screenshot、screenshot.label

按需扫描

提交扫描:shodan scan submit 192.168.1.100(每个 IP 消耗 1 扫描积分),可加 --verbose 或 --filename 保存结果。

监控扫描状态:shodan scan list、shodan scan status SCAN_ID,之后用 shodan download --limit -1 results.json.gz scan:SCAN_ID 下载结果。查看可用扫描协议:shodan scan protocols。

统计与分析

获取搜索统计:shodan stats nginx;自定义 facets:shodan stats --facets domain,port,asn --limit 5 nginx;保存为 CSV:shodan stats --facets country,org -O stats.csv apache。

网络监控

在 Web 界面设置警报:进入 Monitor Dashboard,添加 IP、范围或域名,配置通知服务(邮件、Slack、webhook),选择触发事件(新服务、漏洞等),在仪表板查看暴露的服务。

REST API 与 Python 库

直接 API 调用示例: curl -s "https://api.shodan.io/api-info?key=YOUR_KEY" | jq curl -s "https://api.shodan.io/shodan/host/1.1.1.1?key=YOUR_KEY" | jq curl -s "https://api.shodan.io/shodan/host/search?key=YOUR_KEY&query=apache" | jq

Python 库用法:初始化 shodan.Shodan('YOUR_API_KEY'),调用 api.search('apache') 获取结果,api.host('1.1.1.1') 获取主机详情。

常用查询与命令速查

  • 查找网络摄像头:webcam has_screenshot:true
  • MongoDB 数据库:product:mongodb
  • Redis 服务器:product:redis
  • Elasticsearch:product:elastic port:9200
  • 易受攻击的 RDP:port:3389 vuln:CVE-2019-0708
  • 工业系统:port:502 modbus
  • 暴露的 Docker API:port:2375 product:docker
  • SSL 证书搜索:ssl.cert.subject.cn:*.target.com
  • 组织侦察:org:"Company Name"

CLI 积分消耗:shodan init、shodan info、shodan myip、shodan host、shodan count、shodan honeyscore 消耗 0 积分;基础搜索(无过滤器)消耗 0,过滤搜索每查询消耗 1;下载每 100 条结果消耗 1 积分;shodan stats 消耗 1 积分;shodan scan submit 每个 IP 消耗 1 扫描积分。

适用场景

  • 组织资产侦察:使用 org 过滤器发现目标组织的主机并统计基础设施
  • 漏洞服务发现:通过 vuln 过滤器定位存在特定 CVE 的主机
  • IoT 设备发现:查找暴露的摄像头、工业控制系统、打印机、智能家居设备等
  • SSL/TLS 证书分析:查找特定证书、过期证书或自签名证书
  • 网络范围评估:对 CIDR 网段进行搜索、统计和导出
  • 通过 Python 脚本自动化侦察流程

限制与注意事项

  • 速率限制:每秒 1 个请求
  • 扫描结果为异步,不会立即返回
  • 非企业版 24 小时内不能重复扫描同一 IP
  • 免费账户积分有限,部分数据需要付费订阅
  • 数据新鲜度:Shodan 持续爬取,但数据可能已有数天或数周;按需扫描提供当前数据但消耗积分;历史数据需付费计划
  • 法律要求:仅对授权目标进行侦察;被动侦察通常合法但需确认司法管辖;主动扫描(scan submit)需要授权;记录所有侦察活动

故障排查

  • 未配置 API 密钥:运行 shodan init YOUR_API_KEY 并用 shodan info 验证
  • 查询积分耗尽:使用无过滤器查询、等待重置或升级账户
  • 主机最近已爬取:24 小时内不能重扫,可先用 shodan host IP 查看现有数据或等待
  • 速率超限:在 API 请求间添加 time.sleep(1)
  • 搜索结果为空:检查语法,短语使用引号如 org:"Company Name",并放宽条件
  • 下载文件无法解析:用 gunzip -t file.gz 验证,重新下载并指定 --limit