前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[网络安全] 十一.Shodan搜索引擎详解及Python命令行调用

[网络安全] 十一.Shodan搜索引擎详解及Python命令行调用

作者头像
Eastmount
发布2021-12-02 19:46:37
2.9K0
发布2021-12-02 19:46:37
举报

文章目录:

  • 一.Shodan介绍
  • 二.Shodan信息收集
  • 三.Shodan命令行搜索
  • 四.深入Shodan命令行
  • 五.Python调用Shodan

一.Shodan介绍

1.信息收集

信息收集对于渗透测试可以说是重中之重,正所谓“知己知彼,百战不殆”。所以我们的信息收集也是一样,收集的信息越多越好。对于目标的信息收集,主要针对目标的服务器系统、数据库系统、中间件系统、应用程序系统、以及边界设备等信息。以及收集针对于系统管理员的信息收集。

对于信息收集方式,可以分为以下两类:

  • 主动信息收集: 直接与目标进行交互,通过对交互过程中的信息进行收集。例如:Nmap扫描、BurpSuite站点地图收集等。
  • 被动信息收集: 通过第三方引擎与目标交互,或不予目标交互查询具体数据库,获得目标的信息。例如:Google Hacking、Shodan查询等。

网络安全涉及的内容非常广,其主要的学习路线如下图所示。可以简单归纳为:

  • 基础知识: Web发展简史、计算机网络、域名系统、HTTP标准、代码审计、WAF
  • 信息收集: 域名信息、 站点信息、端口信息、其它
  • 内网渗透: Windows信息收集、持久化、Linux信息收集、痕迹清理、其他
  • 常见漏洞: SQL注入、XSS、CSRF、SSRF、命令注入、文件读取、文件上传、文件包含、XXE、模版注入、Xpath注入、 逻辑漏洞 、业务漏洞、配置安全、中间件、Web Cache欺骗攻击
  • 语言与框架: PHP、Python、Java、JavaScript、Ruby、C\C++、C#
  • 防御技术: 总体思路、 团队建设、威胁情报、风险控制、加固检查、蜜罐技术、入侵检测、应急响应、溯源分析
  • 工具与资源: 工具列表、推荐资源、爆破工具、下载工具、流量相关、嗅探工具、SQLMap使用
  • 其他: 认证方式、拒绝服务攻击、DNS劫持、Docker

2.Shodan搜索引擎介绍

虽然目前人们都认为Google是最强劲的搜索引擎,但Shodan才是互联网上最可怕的搜索引擎。与Google不同的是,Shodan不是在网上搜索网址,而是直接进入互联网的背后通道。Shodan可以说是一款“黑暗”Google,一刻不停的在寻找着所有和互联网关联的服务器、摄像头、打印机、路由器等。

Google不能搜索网上设备信息,而Shodan可以获取设备信息。而且很多时候服务器、摄像头、打印机、路由器等是需要管理员密码登录的。

Shodan是用来搜索网络空间中在线设备的,你可以通过Shodan搜索指定的设备,或者搜索特定类型的设备,其中Shodan上最受欢迎的搜索内容是:

  • webcam、linksys、cisco、netgear、SCADA
  • Shodan网址:https://www.shodan.io/

Shodan的工作原理是: 通过扫描全网设备并抓取解析各个设备返回的banner信息,通过了解这些信息Shodan就能得知网络中哪一种Web服务器是最受欢迎的,或是网络中到底存在多少可匿名登录的FTP服务器,或者哪个ip对应的主机是哪种设备。打开官网显示如下图所示:


3.Shodan注册与登录

Shodan使用之前需要注册与登录,注册网址为:

  • https://account.shodan.io/register

注册之后成果登录,如下图所示。

登录之后 Shodan API Key 是我们后面需要使用的。这里请大家记录下:

  • API Key:Qy8iiPBIxxxxxxUbdrW

假设我们搜索“SSH”关键词,则返回结果如下图所示:

上图的搜索结果包含两个部分,左侧是大量的汇总数据包括:

  • Results map – 搜索结果展示地图
  • Top services (Ports) – 使用最多的服务/端口
  • Top organizations (ISPs) – 使用最多的组织/ISP
  • Top operating systems – 使用最多的操作系统
  • Top products (Software name) – 使用最多的产品/软件名称

随后,在中间的主页面我们可以看到包含如下的搜索结果:

  • IP 地址
  • 主机名
  • ISP
  • 该条目的收录收录时间
  • 该主机位于的国家
  • Banner 信息

二.Shodan信息收集

该部分讲解Shodan搜索Webcam、指定IP地址、指定端口和具体城市。

1.webcam

在Explore搜索框中输入 webcam 进行搜索,此时会有一些不需要认证的摄像头,可以打开并查看;如果有认证,可以使用默认密码或弱口令尝试登陆,如果登陆成功可以进行查看。

  • webcam

点击打开其中一个链接,其具体信息如下图所示。

某些网站需要登录,可以尝试弱口令实现,所以网站的管理员一定要做好安全工作,密码复杂和验证、防火墙等都是必要的。


2.port

通过关键字port指定具体端口号。例如 port:22 指定搜索22号端口的主机信息,表明下面的主机开放了22号端口,对应SSH服务。

  • port:22

点击可以看到除了开放22号端口,还开放了其他端口,如53、80、143等。

部分网址甚至可以查看服务器存放的地理位置,如下图所示。


3.host

Shodan搜索指定Ip地址:通过关键词host指定具体IP地址,例如 host:61.xxx.xxx.121,指定探测IP地址主机信息。这里作者以自己阿里云搭建的网站为例,host:60.xxx.xxx.36。

  • host:61.xxx.xxx.121

点击Map可以定位具体位置。

注意,部分网站会报错“No results found”,应该是网站进行了一些防护,导致查询失败,所以安全防御是非常重要的。


4.city

Shodan搜索具体城市:利用 city:城市名 指定搜索具体城市的内容,例如:city:guiyang port:22,搜索该城市开放22号端口的信息。

  • city:城市名

点击某个链接进入如下图所示。

并且包含详细的服务器信息,如下图所示。


三.Shodan命令行搜索

1.Shodan安装命令行

Linux操作系统安装Shodan在Kali中安装演示:

  • easy_install shodan

Windows系统在Python安装目录安装shodan:

  • easy_install shodan
  • pip install shodan

2.Shodan初始化命令行

使用Shodan给的API Key进行初始化操作,登录Shodan,点击Show API Key能看到具体的值。

  • API Key:Qy8iiPxxxxxxxxxbdrW

初始化命令如下:

代码语言:javascript
复制
shodan init Qy8iiPBIvnWxxxxxxxxxxxxHJ6ZUbdrW

Linux环境下初始化:

Windows环境下Shodan初始化:


3.Shodan启动与查找服务数量

Shodan启动与查找具体服务数量,使用shodan count Apache查询Apache服务器具体的数量。

个人感觉Python命令行不太好看,而Linux系统下颜色分明,更好看点。


4.Shodan命令行搜索功能

Shodan一个强大的功能是——命令行搜索。利用 shodan search microsoft iis 6.0 搜索互联网上具体服务的信息,从shodan数据库中查询并返回搜索结果。

代码语言:javascript
复制
shodan search microsoft iis 6.0

search查找,直接将查询结果展示在命令行中,默认情况下只显示IP、端口号、主机名和HTTP数据

当然我们也可以通过使用 –fields 来自定义显示内容,例如,我们只显示IP、端口号、组织名称和主机名:

代码语言:javascript
复制
shodan search -- fields ip_str , port , org , hostnames microsoft iis 6.0

如果需要查询tomcat服务器信息,则使用命令:

  • shodan search tomcat

内容太多的情况下,输入Q表示退出。


四.深入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"

1.Shodan获取指定IP地址信息

命令如下:

代码语言:javascript
复制
shodan host ip地址

例如:shodan host 60.xxx.xxx.36,返回的信息包括所在国家、组织、最后更新信息时间、开放端口数、可能存在的漏洞CVE、端口运行的服务信息等。

Linux操作系统获取IP地址并查询主机信息如下图所示:

Windows环境下获取指定IP地址信息,这是非常重要的一个操作。


2.Shodan获取账号信息

通过shodan info查看自身账户的信息,包括认证的信息,因为我没有购买会员,所以都是0。

代码语言:javascript
复制
shodan info

3.Shodan获取自身外部IP地址

使用shodan myip获取自身外部可见的ip地址。

代码语言:javascript
复制
shodan myip

4.Shodan检测是否有蜜罐

利用shodan honeyscore查看是否有蜜罐保护。

代码语言:javascript
复制
shodan honeyscore

蜜罐 蜜罐技术本质上是一种对攻击方进行欺骗的技术,通过布置一些作为诱饵的主机、网络服务或者信息,诱使攻击方对它们实施攻击,从而可以对攻击行为进行捕获和分析,了解攻击方所使用的工具与方法,推测攻击意图和动机,能够让防御方清晰地了解他们所面对的安全威胁,并通过技术和管理手段来增强实际系统的安全防护能力。蜜罐好比是情报收集系统。蜜罐好像是故意让人攻击的目标,引诱黑客前来攻击。所以攻击者入侵后,你就可以知道他是如何得逞的,随时了解针对服务器发动的最新的攻击和漏洞。还可以通过窃听黑客之间的联系,收集黑客所用的种种工具,并且掌握他们的社交网络。


五.Python调用Shodan

其基本用法和上面的命令很类似,这里只通过编写Python代码实现相应的功能。

1.shodan初始化API Key

利用Python-shodan初始化API Key代码如下所示:

代码语言:javascript
复制
# -*- coding: utf-8 -*-
import shodan

#初始化
SHODAN_API_KEY = 'Qy8iiPBIvnWbixxxxxxxxxxx6ZUbdrW'

api = shodan.Shodan(SHODAN_API_KEY)

2.shodan search方法

利用Shodan API查询信息的Python代码如下:

代码语言:javascript
复制
# -*- coding: utf-8 -*-
import shodan

#初始化
SHODAN_API_KEY = 'Qy8iiPBIvnWbixxxxxxxxxxx6ZUbdrW'

api = shodan.Shodan(SHODAN_API_KEY)

#查询Apache主机数量
result = api.search('apache')
print(result['total'])

输出结果如下图所示:

在上述代码中有个 result['total'],如何知道“total”这个键值的呢?大家可以到官网查询。

  • 官方网站:https://developer.shodan.io/api

更多参数信息如下图所示:


3.Python-shodan IP查询

针对指定IP地址进行查询。

代码语言:javascript
复制
# -*- coding: utf-8 -*-
import shodan

#初始化
SHODAN_API_KEY = 'Qy8iiPBIvnWbixxxxxxxxxxx6ZUbdrW'

api = shodan.Shodan(SHODAN_API_KEY)

#查询Apache主机数量
result = api.search('apache')
print(result['total'])

#查询制定IP地址
ip_res = api.host('59.xxx.xxx.199')
print(ip_res['country_name'])

输出结果如下图所示:

更多参数建议查询官方网站,如下图所示。


4.Python-shodan查询

利用Python-shodan编写基础查询脚本文件,建议同学们可以尝试,但我个人不太喜欢运行中输入参数,所以没复现这部分代码。

这里我们可以看到详细的参数,这些参数都是可以用于查询,并满足上面代码的命令行要求。

更多信息希望读者结合官网API用法进行学习,作者后续也会深入实例进行学习。


六.总结

写到这里,一篇Shodan搜索引擎详解及Python命令行调用基本结束,希望这篇基础文章对您有所帮助!尤其是网络安全的初学者,文章比较基础,也希望大神们不喜勿喷。如果文章对您有帮助,将是我最大的鼓励,点赞、评论、阅读都行,与您同行,一起加油。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 娜璋AI安全之家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.Shodan介绍
    • 1.信息收集
      • 2.Shodan搜索引擎介绍
        • 3.Shodan注册与登录
        • 二.Shodan信息收集
          • 1.webcam
            • 2.port
              • 3.host
                • 4.city
                • 三.Shodan命令行搜索
                  • 1.Shodan安装命令行
                    • 2.Shodan初始化命令行
                      • 3.Shodan启动与查找服务数量
                        • 4.Shodan命令行搜索功能
                        • 四.深入Shodan命令行
                          • 1.Shodan获取指定IP地址信息
                            • 2.Shodan获取账号信息
                              • 3.Shodan获取自身外部IP地址
                                • 4.Shodan检测是否有蜜罐
                                • 五.Python调用Shodan
                                  • 1.shodan初始化API Key
                                    • 2.shodan search方法
                                      • 3.Python-shodan IP查询
                                        • 4.Python-shodan查询
                                        • 六.总结
                                        相关产品与服务
                                        消息队列 TDMQ
                                        消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
                                        领券
                                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档