Kali中的很多同一个工具其实都有多种接口模式,比如 Web接口,GUI接口,命令行接口,还有一种介于命令行与GUI中的一种模式。比如 Nmap就有命令行和GUI两种模式。对于shodan来说,Web接口模式是它获取信息最简单的方式了。
关于搜索查询字符串的处理
一般情况下我们会输入我们想要查询的信息,比如输入 Google
得到的的服务器地址段,很多都是用了Google的云服务或者框架,而不是真正的谷歌的网站的地址段,为什么这些也能被搜索出来呢?如何才能只搜索谷歌的服务器IP地址呢?
原因是这样的,我们直接搜索字符串后,Shodan 会在所有存储的设备的Banner信息中进行比对,如果含有google的话就提取显示出来
注意:此时并不会去匹配设备的metadata信息,也就是说上一篇文章介绍的关于设备的一些元信息,比如:经纬度,所属位置,所属组织,主机名,操作系统类型等
在我们进行多重信息搜索的时候,Shodan会进行全文匹配,举例来说吧
我们搜索: apache 2.4 就等价于apache 2.4 这两种表达方法是一样的结果
apache-2.4 并不表示apache非2.4版本哦。因为在字符串中 – 在Banner中使用的很普遍,最基本的就是在URL中就可能存在
下面这种使用方法官方文档也没有介绍,是我自己发现的,如果我们想要从一个结果中剔除一部分,那我们可以在减号和搜索字符串之间加上一个空格
比如 我们搜索 在Centos上使用apache的服务器,那我们应该搜索
apache Centos
可以看到搜索到的都是Banner信息中有 Apache和Centos的
那么如果我们搜索 使用了Apache而非Centos的设备呢??
apache -Centos
可以看到结果中设备的banner信息都是包含Apache而不包含Centos的了,下面我们尝试一下 剔除2.4版本的
apache -2.4
结果很是打脸呀,结果第一个中就包含这个2.4版本,
开始我真的认为Shodan做的就是有问题,经过测试了很多遍哈,我发现想要剔除这种版本具体的信息,需要把版本的信息输入完整了,?
我们再来一遍
apache -2.4.7
可能有的小伙伴会说可能就是巧合没有这个版本在第一页,可以看到第一页都两个 2.2.15版本,那我们就剔除它好了
apache -2.2.15
所以现在来说只要Banner信息中有的我们都可以进行筛选了,肯定很多人对这句话一闪而过,我这里强调一下比较好,只要我们得到了工业设备的Banner样本,我们就可以直接在这里进行搜索了,这样说是不是就好一些了
我现在不想看中国的Apache设备
apache –China
结果很是扎心,并没有剔除掉,其实这个并不是我们语法的错误,是因为China信息并没有在服务器Banner中,而是设备的metadata信息中,想要对于Metadata进行筛选,那就要用到过滤器了!
Filters
过滤器
过滤器顾名思义就是用来缩小我们结果范围的一个语法格式,过滤器只支持对于metadata进行筛选,格式为:
filtername:value
注意 : 和值之间没有空格
如果值中含有空格,比如地点的名称,此时需要放在双引号中
city:"San Diego"
如果过滤器中的值不值一个,比如我们想要搜索开放了22或者 3389 端口的主机
port:22,3389
支持逗号分隔的过滤器有 port、net、hostname
以上我们介绍的都是一些正选,那么过滤器是否也支持反选呢?
答案是肯定的,与之前在Banner信息筛选时候是一样的,就是在筛选器前面加上减号
比如我们不想看上海的设备
-city:shanghai
先看一下正选的吧!
之后我们再来反选
之前我也说过一个过滤器怎么能满足我们呢?
下面我们就看一下组合过滤器的使用吧!
port:8080 –hash:0
-hash:0 是将Banner信息未空的去除掉来显示
在Shodan中每一个Banner信息都有一个数字Hash属性,如果空的Banner信息,那Hash属性的值就是0。
不过Shodan并没有介绍到底使用了那种hash计算,我们现在来模糊测试一波,可以去https://1024tools.com/hash这个网站进行hash计算,之后挨个尝试,我使用下面这段Banner进行的计算
不过尝试了 md4,md5,sha-1,sha-256,sha-512这几种方案都不行,所以也没有Fuzzing出到底Shodan内部是如何进行Hash计算的,或者加密算法不对,或者选取的样本不对
所以上面就是说开放8080端口并且存在Banner信息的
Shodan 有大量的过滤器,常用的就是以下这些
Category 类别
City
Country
Net
Org
这个category 之前的资料中提到的很少,我们就用它来搜索一下恶意软件的C&C服务器吧!
Category: malware
从第二个图中可以看到 Gh0st这个RAT的一个服务器,可能是因为之前报道过相关文章,所以大量的CC服务器都对Shodan做了隐藏
我们还可以看到现在著名RAT木马的排行
几个鼎鼎大名的木马都榜上有名哈!
过滤器其实也是一个比较重要的东西,所以我把所有的过滤器都列出来
一般的过滤器
HTTP过滤器
NTP 过滤器
SSL 过滤器
Telnet过滤器
Shodan web接口使用
默认shodan会从数据库中搜索最近30天得到的结果。
之前shodan的官网是shodanhq.com,当时的实现是这样的,从数据库中搜索全部记录,之后返回给用户。
如今我们这种方式获取的都是最新的数据,不过这样是不是一定都是好的呢?我觉得其实不见得在全部方面都是好的,说不定能在历史信息中找到采用了cdn的网站的真实IP呢!
下载数据
之前我们也介绍过了,可以有三种格式 JSON、CSV、XML
JSON格式生成一个文件,其中每一行都包含完整的Banner以及Shodan收集的所有附带的元数据。这是保存所有可用信息的首选格式。该格式与Shodan命令行客户端兼容,这意味着您可以从Shodan网站下载数据,然后使用终端进一步处理,大量的安全工具对JSON的支持几乎是最好的
CSV格式返回一个包含IP、端口、Banner、组织和Banner的主机名的文件。由于CSV文件格式的限制,它不包含Shodan收集的所有信息。如果您只关心结果的基本信息,并希望快速地将其加载到Excel等外部工具中,可以使用此方法。
XML 不推荐
这里需要注意一件事:
下载数据是花费 exportcredits 的,只有Shodan会员才有export credits,而且数量是一定的,用一次就减少一个,不是每个月都会重新计数的。
生成报告
Shodan可以根据我们查询的结果生成带有图表的一个报告,提供的报告还是蛮漂亮的,这个功能是免费的,不过并不是立刻生成,大概需要几个小时会发到你的邮箱里。我亲自尝试了一把,挺给力的!
Shodan生成的报告都是一时的,之前我们也说过,资料是实时更新的,所以我们可以每隔一段时间生成一份报告,之后进行相关信息的分析,shodan提供了这个功能,点击直方图的图标就可以使用。
共享搜索查询
找到特定的设备需要了解他们所运行的软件,以及他们如何响应网络上的Banner。幸运的是,可以利用Shodan上的搜索目录来利用社区的共享知识。人们能够很容易地描述、标记和分享他们的搜索查询供他人使用。如果你有兴趣从Shodan开始,共享搜索应该是你的第一站。
之前我们也是这样做的,先看看别人是怎么进行查询的,之后我们先尝试模仿一下。
Shodan提示我们敏感的搜索语句谨慎共享,遗憾的是我并没有找到究竟哪里有这个选项设置是否共享搜索查询,这个问题我会以Email的方式向Shodan提问的,如果有结果了也会在微信公众号告知大家
下面我把Shodan的手册上的例子给大家介绍一下
搜索在非22端口上使用openssh的服务器
product:openssh -port:22
这个搜索不是空穴来风,我之所以没有用自己准备的例子就是因为很多智障厂商经常会认为把服务开在非默认端口上就会很安全,这想法太蠢了!
数量还真是不少呀!
其实我们此时也可以进行分析一下这些数据,比如可以看到最多的是开在2222端口,这是为什么?
我们可以进一步点开几个主机看一看,抓一抓共同的指纹信息片段
06:31:90:5c:a4:e7:d8:17:f8:79:31:c6:7f:7c:1b:08
98:66:dd:03:6d:3f:23:5f:e5:40:25:8e:a6:e0:73:0e
3f:2e:b3:af:7a:e5:8f:55:bb:aa:f3:59:21:85:c2:2c
bb:80:a3:67:49:65:3b:0d:6d:e9:cd:9b:ea:e0:5e:a0
ff:2f:4f:0f:f3:f9:23:48:27:2d:2c:4f:f4:ff:f2:40
d0:2f:2f:63:92:9d:56:0a:36:dc:96:9c:1d:b6:50:56
3f:eb:a7:5d:14:9b:b9:48:c3:01:f6:70:ae:5b:9c:a2
这是我抓的2222端口使用openssh的几个指纹信息,发现并没有什么关系,难道真的是这帮人随便想的吗??
那我还是拿官方的例子吧:
手册中用的是5000端口,这个是排在第二位的,我们看一下到底是不是有什么联系吧
可以看到大概有16000多台,我们就随便选择几个吧
好像都是澳大利亚的??而且从刚才的截图可以看出都有相同的指纹信息
Fingerprint:5b:a2:5a:9a:91:28:60:9c:92:2b:9e:bb:7f:7c:2e:06
这就是一个可以进行探究的问题了,原因是澳大利亚的运营商的问题,在机器上安装了旧版本的Openssh,安装端口就是5000
Shodan Maps
Shodan地图功能之前用清华大学作为例子,大家已经看到了到底可以清晰到什么程度。
当然ShodanMaps的作用不是让我们去地图上查找哪个地方,Shodan主打的是目标定位,也就是说在Shodan 搜索引擎中使用的过滤器在这里也能使用
比如我们搜索我们伟大的中国
country:cn
可以看到搜索出了中国的设备,红点代表大概分布权重,当然这个并不是全部的中国的设备,因为我们还有宝岛台湾,我们再来搜索一下台湾的设备
对于其他争议岛屿应该在这里很难搜索到,所以就不一一列举了
左边还有对于一些服务的分类以及排名,组织的排名等
Shodan Maps 有很多的主题,我们可以一一查看一些
点击图中的齿轮,就可以查看Shodan给我们提供的各种主题了
默认的是Satellite主题
下面我们就分别尝试一下每一个主题吧!
Street View(Light)
Street View(Dark)
Street View(Red)
Street View(Green)
Pirate(海盗)
这个好像蛮有意境的
Satellite(Simple)
刚才搜索的是国家的设备,下面我们来搜索一下工控设备,由于刚才没有放大效果并不是很明显
Satellite
没什么区别是吧,一会儿区别就来了
Street View(Light)
Street View(Dark)
Street View(Red)
Street View(Green)
Pirate
Satellite(Simple)
用最后一张图正好来说一下,上面的每一个红点都是可以点击的,点击可以查看具体的一些信息,如上图所示
Shodan Exploits
Shodan 主要从CVE,Exploit-DB,还有Metasploit出收集漏洞和Exploits,之后通过Web接口形式呈现给大家。我在文章中还没有讲到SearchSploit这个工具,功能和这个类似,大家可以自行学习一下
Shodan Exploits与Shodan搜索引擎使用的过滤器语法不一样
注意:默认情况下,Exploits搜索时候使用的是全部信息,也就是说Banner和Metadata全都会进行搜索,不像Shodan搜索引擎不适用过滤器时默认只搜索Banner。
Exploit的过滤器
author 搜索漏洞或Exp的作者
description 描述
platform 目标平台(eg:php、windows、linux)
type Exp的类型(eg:remote,dos)
左边还是有统计信息
从统计信息里面看还有一个Source选项,感觉也是过滤器,我们可以点击一下
可以看到多了一个过滤器,在官方文档中并没有介绍这个,我们就把它记下来吧
source 漏洞来源
不知道大家有没有注意,刚才那张图中来源处并没有看到CVE,CVE中不可能没有windows的漏洞,我们尝试一下platform:windows source:"CVE"
很吃鲸!
难道Shodan已经不从CVE获取数据了吗??
吓得我赶紧查询了一下 source:"CVE"
由此推测大概是Shodan在这方面没有做好统计和归类,如果想搜索在CVE存在的Windows漏洞呢?
这样就好了嘛,不过前提是漏洞描述里得写Windows字样呀,CVE这种权威机构应该都会把漏洞描述清楚的,大家放心,不过我还是会发Email建议shodan这点的。
Shodan Image
https://image.shodan.io/
Shodan Image 能够快速查看Shodan搜集的各种设备的快照信息(截图),主要就是一些图形化远程服务,比如windows的3389端口的远程服务,即使我们账号密码都不知道,我们还是可以通过客户端进行连接,并且获取一个下面这样的画面,从而得到一些信息
注意:Shodan Image 需要是会员才可以使用,所以我特地从团队中的大佬那里借来了会员账号来给大家演示!图形搜索不会花费credits。
Shodan Image与Shodan搜索引擎使用的语法是一样的
这些图片信息的来源:
1. VNC
2. RemoteDesktop(RDP)
3. RTSP
4. Webcams
5. XWindows
上面这些每一个都来自不同的端口和服务,
想看来自网络摄像头的画面,那么我们就直接搜索http就好了
想看来自VNC的图像,我们就搜索RFB
想看来自RTSP的图像,我们就搜索 RTSP
我们搜索一下http吧
嘿嘿,挑一个看看吧!
不知道是谁家哈!
是面包店,我饿了!
可以看到是交通录像!
这个好像是一个类似卫星设备,剩下的我就不去看了,看到什么不该看的不好!
其实有些图片似乎在之前Shodan搜索引擎中见到过,不知道大家看没看那个过滤器的表单,其中有一项 has_screenshot,只要我们搜索has_screenshot:true就可以过滤出所有含有图像的信息了,我们尝试一把
其实下面还有好多,只不过被这一个图占满了
这样搜索是免费的哦!
这篇文章跨年写了好几天了,喜欢的记得转发哦!