HT1001 系列是信安之路推出的黑客工具使用系列,结合使用场景来对安全工具进行测试总结,并通过实战的方式介绍各类开源工具的功能和价值,后续完整内容将发布在信安之路的知识星球和成长平台,部分内容会通过信安之路公众号分享。
Shodan 是出现最早的网络空间搜索引擎,也是国内外使用最为广泛的工具,GIthub 上开源的程序使用 Shodan 作为 OSINT 信息收集途径的工具非常多,今天就来看看如何自动化利用 Shodan 提供的 API 获取关键数据。
获取 Shodan API KEY
在使用 Shodan API 之前需要先注册一个账号,并获得一个可以使用 API 的 KEY,注册地址:
注册完成之后,在账号首页就能看到你自己的 API KEY:
免费账号使用 API 是有速度限制的,限速 1 秒可查询 1 次,所以查询速度不宜过高,有了这个 API KEY 就可以利用 API 自动获取相关数据。
如何查找 GitHub 泄漏的付费 API KEY
由于 Shodan 使用比较广泛,GitHub 有很多开源的工具均使用 Shodan 的 API,有些作者在测试时使用了自己的 API KEY,在上传到 GitHub 时未能及时替换,所以导致了个人 API KEY 的泄漏,我通过关键词 SHODAN_API_KEY
搜索到一些泄漏的 API KEY,如下:
1RLr3udL7cOjOjVkiMlTjZSkD1lTXVFZ
1V95wJZnxcdos0mxObLqEjuReAVw1Zh7
2Yz6rpFRqSRAieCld3iSxIN9FbE0b2Mz
2d6xiC0oN2V1NtjBWSdkJa3fPia4glx9
30H2ZRCWIvMzn7SDfY2yU9odqGtRjZ0C
3ebsORr9MVlM1QSAQb4Xs0L1mh82xCKw
z29mLrj0VSUAeezumCdcCqj8KksFRyUB
XJVYkVG85D1yzlcD3MBre7scENsg1rE3
3wcRxSjFlNR6JaJcfctB5vZp3w9ZbZSd
这些 API KEY 不一定都能使用,所以需要一个脚本来验证这些 API KEY 中哪些还有效,有了大量的 API KEY 就可以提升一下搜索的频率,随机使用或者顺序使用这些 API KEY 来获取关键数据,那么如何验证?
首先可以查看 Shodan 的 API 官方文档,地址:
我选择使用 Python 脚本来实现验证 API 有效性的语言,编写如下代码,需要用到库 shodan
,将 API KEY 保存在一个文件,然后读取该文件,将 API KEY 做一一验证,首先安装库文件:
pip install shodan
源码所在地址:
库文件使用帮助文档:
编写如下代码获取 API KEY 的基本信息:
import time
import shodan
for key in open("key.txt"):
api = shodan.Shodan(key.strip())
# Wrap the request in a try/ except block to catch errors
try:
# Search Shodan
results = api.info()
print key.strip() + ":" + str(results)
except shodan.APIError, e:
print 'Error: {}'.format(e)
time.sleep(1)
从结果中提取有效 KEY,也就是有返回数据的,而不是提示 Error: Invalid API key
,大家均可以使用这种方法去寻找可以使用的 API KEY,既然有付费的 API KEY,那么就不用受免费的 KEY 限制了,可以尽情的玩耍了。
Shodan API 使用参考
如果自身有编写脚本的能力,那么通过参考 Shodan 的开发文档就可以实现大部分的功能。本身 Shodan 就是一个巨大的数据库,对于我们而言,如何从数据库中根据我们自身的需求来获取想要的数据,开源的工具并不能满足我们所有场景,所以还是要自己学会编写脚本,通过 API 获取数据并将结果进行整理。
这里有一个不错的 API 学习参考程序 shodansploit,项目地址:
其中列举了很多 API,也算是个命令行版的 Shodan 了,安装很简单,源码下载回来直接执行就行,没有其他额外的依赖,首次运行需要输入 API KEY,后续使用将不再需要:
这个工具能很好的帮助我们学习如何使用 Shodan 的各个 API 的功能及其获取的数据内容,代码也比较简单易懂,是个不错的学习工具,有了这个基础,再去做一些自定义的操作就很简单了。
总结
本文主要给大家提供一个思路,如何不花钱获得付费 KEY 的方法,针对 API 如何使用,最好的办法就是查看参考文档自行编写脚本实现自定义需求,之前分享的一些工具中也用到了 shodan 查找一些信息,更多更有用的场景,我觉得应该是根据 0day 或者 Nday 来找产品特征,然后根据特征获取全量资产列表,然后验证这些资产是否存在相关漏洞,只有批量化收集和验证才能发挥其 API 的价值。
「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」
(๑>ڡ<)☆谢谢老板~
使用微信扫描二维码完成支付
