1.暗黑谷歌的由来
有这么一款搜索引擎,它一刻不停的在寻找着所有和互联网关联的PLC、摄像头、红绿灯、打印机、路由器、交换机、服务器、数据库等等各种软硬件服务设施。
它就是shodan,那么shodan到底是什么呢?怎么会有如此大的魔力?首先,Shodan 是一个搜索引擎,但它与 Google 这种搜索网址的搜索引擎不同,Shodan不是在网上搜索网址,而是直接进入互联网探索其背后的信息。
SRE实战互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
Shodan真正值得注意的能力就是能找到几乎所有和互联网相关联的东西。其中最受欢迎的搜索内容是:webcam,linksys,cisco,netgear,SCADA等等。
配合其组合参数,可以做到以下功能:
批量搜索现有漏洞主机
统计感染某木马的主机数量
批量扫描登录入口,并使用弱口令字典进行爆破
批量抓取shell
使用自己的0day打遍天下
写这篇文章是希望能够将这款工具的用途、使用方法、利用技巧进行实战应用。以便使用Shodan搜索引擎进行相关搜索,并利用Shodan的API编写Python脚本,进行批量扫描,将技术应用到渗透测试和安全攻防中,最大限度做好安全防御。
2.Shodan的工作原理
Shodan每隔一段时间就会对全球大约8亿主机进行扫描,通过对返回Banner信息的处理,识别特定主机,并进行分类储存。为了避免因政治、技术等原因导致的扫描信息误差(比如某墙或某些老美服务商对大陆羊毛党的屏蔽等),Shodan的扫描主机至少遍布在全球的8个国家和地区。
那Banner是什么呢?
在探测端口时数据包里存在Banner信息
这是一个普通的HTTP Banner,可以从上获知服务端使用的是1.16.0版本的nginx。
西门子S7-300工控协议的Banner:
其中能获取更多的信息。
Shodan的Banner处理机制比较复杂,我们这里只需要知道探测端口是来往的数据包中包含Banner,并包含了主机的部分信息即可。
3.Shodan的查询指南
基本查询
Shodan的参数有很多,这里只介绍简单几种。
关联查询
搜索上海开放8080端口的主机
搜索IP段为23.238.20.0/24的所有linux主机
更多信息使用时可以查看中文说明手册,可点击前往。
其他功能
Shodan 不仅可以查找网络设备,它还具有其他相当不错的功能。
Exploits:每次查询完后,点击页面上的 “Exploits” 按钮,Shodan 就会帮我们查找针对不同平台、不同类型可利用的 exploits。当然也可以通过直接访问网址来自行搜索:https://exploits.shodan.io/welcome;
地图:每次查询完后,点击页面上的 “Maps” 按钮,Shodan 会将查询结果可视化的展示在地图当中;
报表:每次查询完后,点击页面上的 “Create Report” 按钮,Shodan 就会帮我们生成一份精美的报表,这是天天要写文档兄弟的一大好帮手啊;
4.命令行下的Shodan
Shodan
是由官方提供的 Python 库的,项目位于:https://github.com/achillean/shodan-python
安装
本文以debian为例,安装完后我们先看下帮助信息:
常用示例
init
初始化命令行工具。
count
返回查询的结果数量。
download
将搜索结果下载到一个文件中,文件中的每一行都是 JSON 格式存储的目标 banner 信息。默认情况下,该命令只会下载10条结果,如果想下载更多结果需要增加 --limit
参数。
parse
我们可以使用 parse 来解析之前下载数据,它可以帮助我们过滤出自己感兴趣的内容,也可以用来将下载的数据格式从 JSON 转换成 CSV 等等其他格式,当然更可以用作传递给其他处理脚本的管道。例如,我们想将上面下载的数据以CSV格式输出IP地址、端口号和组织名称:
host
查看指定主机的相关信息,如地理位置信息,开放端口,甚至是否存在某些漏洞等信息。
search
直接将查询结果展示在命令行中,默认情况下只显示IP、端口号、主机名和HTTP数据。当然我们也可以通过使用 –fields 来自定义显示内容,例如,我们只显示IP、端口号、组织名称和主机名:
5.代码中使用 Shodan 库
上面介绍了 shodan
库的用法,这里描述下如何在python代码中使用 shodan
库,首先需要初始化连接 API,代码如下:
随后,我们就可以搜索数据了,示例代码片如下:
这里 Shodan.search() 会返回类似如下格式的 JSON 数据:
常用 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 Membership用户就可以好好的Happy了。与之相似的料理就是Tor浏览器,这是一个无痕浏览的神器。
Tor浏览器的工作原理就是将你的ip跳到一连串的的代理上,比如:把你的ip地址先从美国跳到加拿大再跳到荷兰、日本、德国、俄罗斯。。。。。下载链接:https://www.torproject.org/download/
其中所有的数据全部都是经过加密处理,目的就是为了掩藏真正访问者的ip,防止被访问者的追踪。有兴趣的可以自行研究下,这里不再过多描述,综上内容纯属攻防和白帽子技术爱好。知己知彼,方能百战不殆。加油吧,少年!未来的某一天,白帽子大牛中你可能也是其中之一。
评论区