什么是Shodan?

Shodan是互联网上最可怕的搜索引擎。

Shodan不是在网上搜索网址,而是直接进入互联网的背后通道。Shodan可以说是一款“黑暗”谷歌,一刻不停的在寻找着所有和互联网关联的服务器、摄像头、打印机、路由器等等每个月Shodan都会在大约5亿个服务器上日夜不停地搜集信息。

Shodan所搜集到的信息是极其惊人的。凡是链接到互联网的红绿灯、安全摄像头、家庭自动化设备以及加热系统等等都会被轻易的搜索到。Shodan的使用者曾发现过一个水上公园的控制系统,一个加油站,甚至一个酒店的葡萄酒冷却器。而网站的研究者也曾使用Shodan定位到了核电站的指挥和控制系统及一个粒子回旋加速器。

Shodan真正值得注意的能力就是能找到几乎所有和互联网相关联的东西。而Shodan真正的可怕之处就是这些设备几乎都没有安装安全防御措施,其可以随意进入。

安装

我们可以通过官方github去安装、pip的方式或apt包管理器的方式去安装。

pip安装方式

#在安装前请先安装好python虚拟空间,然后创建一个虚拟空间,并在里面安装
python3 -m venv venv

#激活虚拟空间
source venv/bin/activate

#安装shodan
pip install shodan

github安装方式

#安装前最好先设置好代理,不然可能会出现报错或下载慢。

#克隆shodan-python项目源码
git clone https://github.com/achillean/shodan-python.git

#进入shodan-python文件夹
cd shodan-python

#查看当前目录有哪些文件
ls

之后创建个python虚拟空间,安装必要条件。

#在安装前请先安装好python虚拟空间,然后创建一个虚拟空间,并在里面安装
python3 -m venv venv

#激活虚拟空间
source venv/bin/activate

#不使用虚拟空间的时候可以取消激活虚拟空间
deactivate

可以看到我们创建了一个venv文件夹,这个就是我们的虚拟机空间。接下来就可以安装必要条件了。

python3 setup.py install

如果安装时出现这个报错。请先更新一下setuptools工具

pip3 install --upgrade setuptools

APT包管理器安装

直接输入以下命令即可安装

#更新
sudo apt-get update

#安装shodan
sudo apt install python3-shodan

使用

输入以下命令出现这样的界面就说明安装成功了。

#shodan帮助信息
shodan -h 或者 shodan --help

h/--help - 命令帮助

 Commands:
  alert       Manage the network alerts for your account  # 管理账户的网络提示
  convert     Convert the given input data file into a...  # 转换输入文件
  count       Returns the number of results for a search  # 返回查询结果数量
  data        Bulk data access to Shodan # 批量数据访问 Shodan
  domain      View all available information for a domain # 查看域的所有可用信息
  download    Download search results and save them in a...  # 下载查询结果到文件
  honeyscore  Check whether the IP is a honeypot or not.  # 检查 IP 是否为蜜罐
  host        View all available information for an IP...  # 显示一个 IP 所有可用的详细信息
  info        Shows general information about your account  # 显示账户的一般信息
  init        Initialize the Shodan command-line  # 初始化命令行
  myip        Print your external IP address  # 输出用户当前公网IP
  org         Manage your organization's access to Shodan # 管理您组织对 Shodan 的访问
  parse       Extract information out of compressed JSON...  # 解析提取压缩的JSON信息,即使用download下载的数据
  radar       Real-Time Map of some results as Shodan finds them. # Shodan 找到某些结果时的实时地图。
  scan        Scan an IP/ netblock using Shodan.  # 使用 Shodan 扫描一个IP或者网段
  search      Search the Shodan database  # 查询 Shodan 数据库
  stats       Provide summary information about a search...  # 提供搜索结果的概要信息
  stream      Stream data in real-time.  # 实时显示流数据
  trends      Search Shodan historical database # 搜索 Shodan 历史数据库
  version     Print version of this tool. # 此工具的打印版本

version - 查看当前版本

shodan version

初始化Shodan

 https://www.shodan.io/

初始化Shodan,得先去Shodan官网注册并登陆一个账号,在个人信息那里有个api秘钥

shodan init shodan的api秘钥

成功的话会有提示Successfully initialized(成功初始化)。

alert - 管理网络警报

创建警报:

shodan alert create "My Alert" 8.8.8.0/24

列出所有警报:

shodan alert list

删除警报:

shodan alert delete <alert_id>

convert - 转换输入数据格式

将 CSV 转换为 JSON 格式:

shodan convert results.csv results.json

count 获取搜索结果数量

查询包含开放 MongoDB 的 IP 数量,可以看到给出了105085个数量

shodan count "mongodb port:27017"

data - 访问批量数据

列出所有批量数据集:

shodan data

下载特定数据集:

shodan data download <dataset_name>

host 查看指定主机的相关信息

查看指定主机的相关信息,如地理位置、开放端口、可能存在的漏洞等信息。

shodan host ip

info - 显示账户信息

查看账户 API 使用信息:

shodan info

myip - 获取外部 IP 地址

打印本机的外部 IP 地址:

shodan myip

domain - 查询域名信息

查看域名的详细信息:这个功能需要升级api,我这的api不够用了。就提示我需要升级。

shodan domain example.com

download - 下载数据

shodan download mongodb-results "mongodb port:27017"

parse - 解析数据

shodan parse mongodb-results.json.gz

honeyscore - 检查 IP 是否为蜜罐

检查某个 IP 是否是蜜罐:

shodan honeyscore id

org - 管理组织的访问权限

列出组织中的所有成员:

shodan org members

添加成员到组织:

shodan org invite <email>

radar - 实时地图

显示实时发现的结果:

shodan radar

scan - 扫描 IP/网络

扫描特定 IP:

shodan scan submit ip


扫描整个网段:

shodan scan submit 8.8.8.0/24

search - 搜索 Shodan 数据库

搜索包含开放 MongoDB 的 IP:

shodan search "mongodb port:27017"

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

也可以通过使用–fields来自定义显示内容。比如只显示ip、端口号、组织机构、主机名。

shodan search --fields ip_str,port,org,hostnames apache

stats - 获取搜索统计信息

获取开放 MongoDB 的统计信息:

shodan stats "mongodb port:27017"

stream - 实时流式数据

开始接收实时数据:

shodan stream

trends - 搜索历史趋势

查看趋势数据:

shodan trends "apache"

总结

python-shodan 提供了一个便捷的接口来与 Shodan 进行交互,可以帮助开发者获取互联网上的设备信息,并进行安全分析、设备监控等多种任务。通过它,你可以轻松查询 Shodan 数据库,获得开放端口、操作系统、服务信息,甚至可以主动扫描设备和创建警报。

在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。

欢迎各位大佬,小白来找我交流。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐