Shodan - gadsec/GADLEARNS-WIKI- GitHub Wiki

概述:Shodan

Shodan是一款物联网搜索引擎。

  • 能力:
    • 根据关键词、域名、IP地址(固定)扫描(公网上的)对象端口和漏洞数。
  • 调用方式:
    • 1、网页端
      www.shodan.io
    • 2、CLI
      安装Python并将PIP更新后
      使用命令
      pip install shodan
      即可

Shodan CLI命令用法

e.g. shodan host 0.0.0.0

  • init
    初始化命令行工具。
    shodan init [API_Key]

  • count
    返回查询的结果数量。 shodan count [What_You_Search_For]

  • download 将搜索结果下载到一个文件中,文件中的每一行都是 JSON 格式存储的目标 banner 信息。默认情况下,该命令只会下载1000条结果,如果想下载更多结果需要增加--limit 参数。 shodan download [what_you_searched]

  • parse 我们可以使用 parse 来解析之前下载数据,它可以帮助我们过滤出自己感兴趣的内容,也可以用来将下载的数据格式从 JSON 转换成 CSV 等等其他格式,当然更可以用作传递给其他处理脚本的管道.
    shodan parse --fields [ip_str/port/org] --separator , [Data_e.g.:*.json.gz]

  • host
    查看指定主机的相关信息,如地理位置信息,开放端口,甚至是否存在某些漏洞等信息。
    shodan host [IP/Domain]

  • search
    直接将查询结果展示在命令行中,默认情况下只显示IP、端口号、主机名和HTTP数据。当然我们也可以通过使用 –fields 来自定义显示内容
    shodan search --fields [ip_str/port/org/hostnames] [What_You_Want]

  • 常用 Shodan 库函数

    • shodan.Shodan(key) :初始化连接API
    • Shodan.count(query, facets=None):返回查询结果数量
    • Shodan.host(ip, history=False):返回一个IP的详细信息
    • Shodan.ports():返回Shodan可查询的端口号
    • Shodan.protocols():返回Shodan可查询的协议
    • Shodan.services():返回Shodan可查询的服务
    • Shodan.queries(page=1, sort='timestamp', order='desc'):查询其他用户分享的查询规则
    • Shodan.scan(ips, force=False):使用Shodan进行扫描,ips可以为字符或字典类型
    • Shodan.search(query, page=1, limit=None, offset=None, facets=None, minify=True):查询Shodan数据

Shodan网页搜索引擎用法

  • 使用搜索过滤
    如果像前面单纯只使用关键字直接进行搜索,搜索结果可能不尽人意,那么此时我们就需要使用一些特定的命令对搜索结果进行过滤,常见用的过滤命令如下所示:
    • hostname:搜索指定的主机或域名,例如 hostname:"google"
    • port:搜索指定的端口或服务,例如 port:"21"
    • country:搜索指定的国家,例如 country:"CN"
    • city:搜索指定的城市,例如 city:"Hefei"
    • org:搜索指定的组织或公司,例如 org:"google"
    • isp:搜索指定的ISP供应商,例如 isp:"China Telecom"
    • product:搜索指定的操作系统/软件/平台,例如 product:"Apache httpd"
    • version:搜索指定的软件版本,例如 version:"1.6.2"
    • geo:搜索指定的地理位置,参数为经纬度,例如 geo:"31.8639, 117.2808"
    • before/after:搜索指定收录时间前后的数据,格式为dd-mm-yy,例如 before:"11-11-15"
    • net:搜索指定的IP地址或子网,例如 net:"210.45.240.0/24"
  • 搜索实例
    • 查找位于合肥的 Apache 服务器:
      apache city:"Hefei"
    • 查找位于国内的 Nginx 服务器:
      nginx country:"CN"
    • 查找 GWS(Google Web Server) 服务器:
      "Server: gws" hostname:"google"
    • 查找指定网段的华为设备:
      huawei net:"61.191.146.0/24"
  • 有趣的功能
    如上通过在基本关键字后增加指定的过滤关键字,能快速的帮助发现我们感兴趣的内容。当然,还有更快速更有意思的方法,那就是点击 Shodan 搜索栏右侧的 “Explore” 按钮,就会得到很多别人分享的搜索语法。
  • 其他用法
    • Exploits:
      每次查询完后,点击页面上的 “Exploits” 按钮,Shodan 就会帮我们查找针对不同平台、不同类型可利用的 exploits。当然也可以通过直接访问网址来自行搜索:https://exploits.shodan.io/welcome;
    • 地图:
      每次查询完后,点击页面上的 “Maps” 按钮,Shodan 会将查询结果可视化的展示在地图当中;
    • 报表:
      每次查询完后,点击页面上的 “Create Report” 按钮,Shodan 就会帮我们生成一份精美的报表

About

究极安装大法

由于某些平台如Termux、LFW等等无法按照正常方法安装,故出此下策:

  • Linux的场合
    apt install python #安装最新版的python
    git clone https://github.com/achillean/shodan-python.git && cd shodan-python #获取Git库
    python setup.py install #安装。如果显示错误请参照Termux的场合,第四行开始的代码。
  • Termux的场合
    pkg install git #安装GIT PS:Linux一般内置了Git,而Termux没有,所以多了这一步
    pkg install python #安装最新版的python
    git clone https://github.com/achillean/shodan-python.git && cd shodan-python #获取Git库
    cd #为了防止上一步‘&&’后面的命令因不可抗力失效,重新执行这一步。但是又为了防止执行完成之后无法继续执行,所以先回到最开始的位置
    cd shodan-python #接下来重复这一动作
    python setup.py install #进行安装