社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

网络安全自学篇(二十五)| Shodan搜索引擎详解及Python命令行调用

渗透云笔记 • 5 年前 • 597 次点击  



免责声明:本公众号发布的文章均转载自互联网或经作者投稿授权的原创,文末已注明出处,其内容和图片版权归原网站或作者本人所有,并不代表安全+的观点,若有无意侵权或转载不当之处请联系我们处理,谢谢合作! 

欢迎各位添加微信号:qinchang_198231  

 加入安全+ 交流群 和大佬们一起交流安全技术





作者介绍:杨秀璋


自幼受贵州大山的熏陶,养成了诚实质朴的性格。经过寒窗苦读,考入BIT,为完成自己的教师梦,放弃IT、航天等工作,成为贵财一名大学教师,并想把自己所学所感真心传授给自己的学生,帮助更多陌生人。


一.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:Qy8iiPBIvnWxxxxxxxxxxxxHJ6ZUbdrW

假设我们搜索“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 进行搜索,此时会有一些不需要认证的摄像头,可以打开并查看;如果有认证,可以使用默认密码或弱口令尝试登陆,如果登陆成功可以进行查看。

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

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

2.port

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

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

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

3.host

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

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

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

4.city

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

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

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


三.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:Qy8iiPBIvnWxxxxxxxxxxxxHJ6ZUbdrW

初始化命令如下:

Linux环境下初始化:

Windows环境下Shodan初始化:

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

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

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

4.Shodan命令行搜索功能

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

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

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

如果需要查询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地址信息


命令如下:

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

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

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

2.Shodan获取账号信息

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

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

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

4.Shodan检测是否有蜜罐

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


五.Python调用Shodan


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

1.Python-shodan初始化API Key

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

2.Python-shodan search方法

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

输出结果如下图所示:

在上述代码中有个 result[‘total’],如何知道“total”这个键值的呢?大家可以到官网查询。
官方网站:https://developer.shodan.io/api

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

3.Python-shodan IP查询

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

输出结果如下图所示:

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

4.Python-shodan查询

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

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

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


六.总结


写到这里,一篇Shodan搜索引擎详解及Python命令行调用基本结束,希望这篇基础文章对您有所帮助!尤其是网络安全的初学者,文章比较基础,也希望大神们不喜勿喷

。如果文章对您有帮助,将是我最大的鼓励,点赞、评论、阅读都行,与您同行,一起加油。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/62246