HT1152 Shodan 自动化利用

本文共有2994个字,关键词:资产信息收集资产收集资产测绘

HT1001 系列是信安之路推出的黑客工具使用系列,结合使用场景来对安全工具进行测试总结,并通过实战的方式介绍各类开源工具的功能和价值,后续完整内容将发布在信安之路的知识星球和成长平台,部分内容会通过信安之路公众号分享。

Shodan 是出现最早的网络空间搜索引擎,也是国内外使用最为广泛的工具,GIthub 上开源的程序使用 Shodan 作为 OSINT 信息收集途径的工具非常多,今天就来看看如何自动化利用 Shodan 提供的 API 获取关键数据。

获取 Shodan API KEY

在使用 Shodan API 之前需要先注册一个账号,并获得一个可以使用 API 的 KEY,注册地址:

https://account.shodan.io/register

注册完成之后,在账号首页就能看到你自己的 API KEY:

1.png

免费账号使用 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 官方文档,地址:

https://developer.shodan.io/api/clients

我选择使用 Python 脚本来实现验证 API 有效性的语言,编写如下代码,需要用到库 shodan,将 API KEY 保存在一个文件,然后读取该文件,将 API KEY 做一一验证,首先安装库文件:

pip install shodan

2.png

源码所在地址:

https://github.com/achillean/shodan-python

库文件使用帮助文档:

https://shodan.readthedocs.io/en/latest/

编写如下代码获取 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,项目地址:

https://github.com/shodansploit/shodansploit

其中列举了很多 API,也算是个命令行版的 Shodan 了,安装很简单,源码下载回来直接执行就行,没有其他额外的依赖,首次运行需要输入 API KEY,后续使用将不再需要:

3.png

这个工具能很好的帮助我们学习如何使用 Shodan 的各个 API 的功能及其获取的数据内容,代码也比较简单易懂,是个不错的学习工具,有了这个基础,再去做一些自定义的操作就很简单了。

总结

本文主要给大家提供一个思路,如何不花钱获得付费 KEY 的方法,针对 API 如何使用,最好的办法就是查看参考文档自行编写脚本实现自定义需求,之前分享的一些工具中也用到了 shodan 查找一些信息,更多更有用的场景,我觉得应该是根据 0day 或者 Nday 来找产品特征,然后根据特征获取全量资产列表,然后验证这些资产是否存在相关漏洞,只有批量化收集和验证才能发挥其 API 的价值。

640

「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」

信安之路工具站

(๑>ڡ<)☆谢谢老板~

使用微信扫描二维码完成支付

版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。