网络空间搜索引擎

2024-01-30 03:04
文章标签 搜索引擎 网络空间

本文主要是介绍网络空间搜索引擎,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

 

随着互联网、物联网、传感网、社交网络等信息系统所构成的泛在网络不断 发展,网络终端设备数量呈指数级上升。这为企业进行终端设备资产清点和统一 管控带来了巨大挑战,同时也引发了一系列安全问题,网络攻击与防御的博弈从 单边代码漏洞发展到了大数据对抗阶段,网络空间搜索引擎应运而生。

搜索引擎是指从互联网搜集信息,经过一定整理以后,提供给用户进行查询 的系统。传统搜索引擎对我们来说并不陌生,像Google 、百度等,每天我们几乎 都会用它们来搜索消息。与传统搜索引擎相比,网络空间搜索引擎有很大不同, 其搜索目标为全球的IP地址,实时扫描互联网和解析各种设备,对网络中的设备 进行探测识别和指纹分析,并将其扫描的目标信息进行分布式存储,供需求者检 索使用。传统的网络空间搜索模型框架一般由五部分组成:扫描和指纹识别、分 布存储、索引、UI界面以及调度程序,如图4-6所示。

b19ada50b61e48aa8d75335a80a3cc8a.png

图4-6    网络空间搜索模型框架

网络空间搜索引擎的用途有很多。对于安全研究者来说,能够帮助安全研究 人员针对APT组织、攻击方式等情况进行分析;对于公司安全管理人员,能够帮 助他们进行网络资产匹配、安全评估等;对于安全白帽子,能够帮助渗透测试人 员在与目标非交互的情况下搜集信息,例如,搜索资产、系统类型,开放端口

等。

 

 

 

 

 

 

4.3.1    常见搜索引擎平台

 

目前的网络空间搜索引擎平台比较多,各具特色,均可通过用户指定的关键 词来搜索网络中的设备或者设备信息。常见的网络空间搜索引擎有Shodan、

Censys 、ZoomEye 、Fofa 、Punk SPIDER 、IVRE(Drunk)和傻蛋等,接下来将详 细介绍ZoomEye和Shodan两款搜索引擎。

ZoomEye ,又称为“钟馗之眼” ,是国内安全厂商知道创宇倾力打造的知名空 间搜索引擎,它可以识别网络中的站点组件指纹和主机设备指纹。相较于

Shodan ,它更侧重于Web资产发现,而Shodan偏向于主机层面。该搜索引擎可以 搜索出三十多万条吻合度较高的数据,与此同时,ZoomEye具备全球4100万个网 站的网站组件指纹库,极大地提高了搜集效率和准确度。ZoomEye的搜索界面简 约,易上手,高级搜索功能非常实用,用户体验不错,“海盗榜计划”可以区分出 不用权限的用户,提高用户的互动性。 目前的ZoomEye针对普通用户是免费,但 是某些模块和数据需要收费,如图4-7所示为ZoomEye搜索引擎界面。

Shodan是全球开放最早的网络空间搜索引擎,也是目前全球最为知名的搜索 引擎。Shodan每月中会在全球5亿左右的设备上进行信息搜集,主要针对服务

器、网络设备、摄像设备、工控设备等基础设备进行扫描。Shodan为用户提供了 11种代码库,便于使用API接口,其中部分浏览器中集成了带有Shodan搜索功能  的插件。使用Shodan需要注册账号,同时可以缴费注册成会员,企业版和高级企 业版是收费的。Shodan还提供了Scanhub 、Images 、3D效果展示、CLI 、蜜罐判断 等实用性较强的功能,如图4-8所示为Shodan搜索引擎界面。

 

 

 

 

 

ea30757e895540d2a0f1ddd5aad2206c.png

图4-7    ZoomEye搜索引擎

c404a6623f8d4c298832b60eb45320a6.png

图4-8    Shodan搜索引擎

 

 

 

 

 

 

4.3.2    搜索引擎语法

下面就以ZoomEye和Shodan两大网络空间搜索引擎为例,对搜索引擎的使用 进行简单介绍。

ZoomEye支持公网设备指纹检索和Web指纹检索。Web指纹识别包括应用

名、版本、前端框架、后端框架、服务端语言、服务器操作系统、网站容器、内 容管理系统和数据库等。设备指纹识别包括应用名、版本、开放端口、操作系

统、服务名、地理位置等,直接输入关键词即可开始检索。下面列举了ZoomEye 的常见搜索语法,表4-8所示为设备指纹检索语法,表4-9所示为Web指纹检索语 法。

表4-8    设备指纹检索语法

05e8a12a976d4150a996d5fce4bb1098.png

表4-9    Web指纹检索语法

eb36474eeabd4b28a686d51cd357811a.png

 

 

 

 

 

63f43de3a99f4865832e452f5d2c17dd.png

为了能够更好地解释ZoomEye设备指纹搜索语法,下面列举了搜索设备指纹  的使用示例,比如想查询在美国纽约市的Linux系统,且系统中运行组件为Apache 的服务器,我们可以构造如下的搜索语法:

 

app:"Apache httpd" +os:"linux" +country:US +city:"New York City"

搜索结果如图4-9所示。

2fcbb8e2c0ab44259bdf23dbbd9555dc.png

图4-9    ZoomEye搜索结果

接下来列举了Web指纹检索的使用示例,比如想查询美国纽约地区使用Linux 系统的网站,可以构造如下的搜索语法:

22d862091b0441708048e1e1f2a737e6.png

site:google .com +os:linux +country:US +city:"New York City"

 

 

 

 

 

图4-10    Web指纹检索示例

c1bbc9f5af6647abb598d316fc9a673c.png

Shodan主要获取互联网中设备中的服务、位置、端口、版本等信息, 目前比 较受欢迎的内容有webcam 、linksys 、cisco 、netgear 、SCADA等。通过不同的搜  索语法可以做到批量搜索漏洞主机、统计中病毒主机、进行弱口令爆破、获取

shell等功能。表4-10中整理了常用的搜索语法。

表4-10    Shodan常用语法

表4-10中整理的Shodan语法只是其中一部分,这些语法可以结合在一起使用

 

 

 

 

 

 

 

 

 

 

 

4.3.3    搜索引擎API的使用

 

1.ZoomEye

ZoomEye除了以上介绍的智能检索功能以外,还提供了强大的Restful API功  能,用户通过它能够更好地与平台连接,调用平台提供的各类资源。接下来将带 领大家通过Python程序调用ZoomEye的API接口实现自动化信息搜集。ZoomEye平 台主要使用的是Json Web Token的登录验证方式,用户进行登录,并获取

access_token就可以直接调用API功能。方法如下:

方法1    通过curl命令直接获取access_token 。在Linux系统终端执行如下命 令,其中username为注册的邮箱或手机号,password为登录密码:

 

curl -X POST https://api.zoomeye .org/user/login -d '{ "username" :"20***** 989@qq .com", "password" :"123*******wxz"} '

运行结果如下所示:

{"access_token" : "eyJhbGciOiJIUzI1Ni IsInR5cCI6IkpXVCJ9 .eyJpZGVudGl0eSI6IjIw NzI2MjI5ODlAcXEuY29t*********************TM1OTE2NzgsImV4cCI6MTU5MzYzNDg 3OH0 .3Ync_i7QBTVgtAOMkkZSGWz5Y__zps_1s3fVM-eMm6Y"}

方法2    通过Python脚本获取access_token 。通过构造post请求的方式,将用户 名和密码以json的格式发送到ZoomEye的后端,打印出响应数据包,代码如下所  示:

 

#!/usr/bin/python

#coding:utf-8

import requests

import json

def main() :

username = input("username:")

password = input("password :")

url = "https://api.zoomeye .org/user/login"

data = json .dumps({ 'username ' : username, 'password ' : password})

access_key = requests .post(url=url,data=data,verify=False)

print(access_key .text)

if __name__ == "__main__" :

main()

执行效果如图4-11所示。

 

7b18255d62ff4a37bb5ecbe0cbc081a6.png

 

 

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml9832%5Cwps358.png&pos_id=Nr7cVdAE

图4-11    打印响应数据包

接下来,可以利用获取到的access_token检索我们需要的信息,这里将通过案 例进行演示说明,关于ZoomEye API详细的字段说明,大家可参考官方指导手册  (ZoomEye - Cyberspace Search Engine)。

案例1    使用host方法,查询开放6379端口的服务器IP地址,并打印出检索到 的IP地址和端口号,详细代码如下所示:

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml9832%5Cwps359.jpg&pos_id=3CE6dXGy

U

#coding:utf-8

import requests

from bs4 import BeautifulSoup

import json

import re

def main() :

headers = {

"Authorization" : "eyJhbGciOiJIUzI1Ni IsInR5cCI6IkpXVCJ9 .eyJpZGVudGl0eSI6

IjIwNzI2MjI5ODlAcXEuY***********************************0MzYsImV4cCI6MT U5MzYzNTYzNn0 .4EkTH3vh3JSjBJ_wEfnaMhQWuPSaIzQypBAKpfUSuZ0"

}

url = "https://api.zoomeye .org/host/search?query=port :6379&page=1&facet= app,os"

info = requests .get(url=url,headers=headers)

r_decoded = json .loads(info .text)

for line in r_decoded[ 'matches '] :

print(line[ 'ip ']+ ' : '+str(line[ 'portinfo '][ 'port ']))

if __name__ == "__main__" :

try:

main()

except Keyboard Interrupt :

print("interrupted by user, killing all threads . . .")

输出结果如下:

 

 

 

 

 

8b08dd15311643d59de304d755718927.png

2.Shodan

使用Python去调用Shodan的API接口可以实现自动化信息搜集,首先需要注册 用户,在My Account中可以看到API Key。

初始化API:

 

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml9832%5Cwps362.png&pos_id=SE0xl5VM

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml9832%5Cwps363.png&pos_id=SmUfbtBC

import shodan

SHODAN_API_KEY= 'Hg4t6PpPMvz4mgQhS**********KkCZLXh '

shodan_api=shodan .Shodan(SHODAN_API_KEY)

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml9832%5Cwps364.png&pos_id=wNslk9Gy

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml9832%5Cwps365.png&pos_id=OfkQAW8j

 

初始化API之后就可以使用Shodan的库函数,下面整理一些函数。可以参考 Shodan官方给出的API文档(Shodan Developer)。

·shodan_api.count(query ,facets=None):查询结果数量。

·shodan_api.host(ip ,history=False):获取一个IP的详细信息。

·shodan_api.ports() :获取Shodan可查询的端口号。

·shodan_api.protocols() :获取Shodan可查询的协议。

·shodan_api.services() :获取Shodan可查询的服务。

·shodan_api.scan(ips ,force=False):使用Shodan进行扫描,ips可以为字符 或字典类型。

案例2    使用host方法获取指定IP的相关信息,代码如下:

 

 

 

 

 

import shodan

import json

SHODAN_API_KEY= 'Hg4t6P###########4U9zKkCZLXh '

shodan_api=shodan .Shodan(SHODAN_API_KEY)

ip=shodan_api.host('8.8.8.8 ')

print(json .dumps(ip))

运行结果如下所示:

 

{"region_code" : null, "ip" : 134744072, "postal_code" : null, "country_code" : "US", …… "ip_str" : "8 .8 .8 .8", "os" : null, "ports" : [53]}

案例3    搜索JAWS摄像头,将IP和端口打印出来,代码如下:

import shodan

import json

SHODAN_API_KEY= 'Hg4t6PpP##########4U9zKkCZLXh '

shodan_api=shodan .Shodan(SHODAN_API_KEY)

results=shodan_api.search( 'JAWS/1 .0 ')

print("Results found :%s"%results[ 'total '])

for result in results[ 'matches '] :

print(result[ 'ip_str ']+" :"+str(result[ 'port ']))

运行结果如下:

3512b9fd107442ecac4fcaf9e9133631.png

以上内容主要介绍了网络空间搜索引擎的基本概念,对Zoomeye和Shodan两 款搜索引擎的特点和常用语法进行详细的说明,让读者在对国内外的搜索引擎有 一定了解的同时可以熟悉Zoomeye和Shodan的搜索语法。最后结合Python和搜索 引擎API进行自动化信息搜集,笔者通过简单的示例介绍了Zoomeye和Shodan的  API使用方法,希望读者多去实践,能够在工作中运用搜索引擎提高信息搜集的 效率和质量。

 

 

这篇关于网络空间搜索引擎的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/658922

相关文章

Elasticsearch7.10搜索引擎RestHighLevelClient高级客户端整合Springboot基础教程

目录 一. 基本概念介绍 二. Elasticsearch服务端安装 三. Http rest api简单使用介绍 四. 整合到Springboot及使用RestHighLevelClient高级客户端 五. 后续 网络上关于Elasticsearch搜索引擎的教程不少, 但大多数都是比较老旧的, 甚至包括Elasticsearch官网的教程也是很久没有更新, 再加上Elastic

《深入剖析 Elasticsearch:强大的 Java 开源搜索引擎》

《深入剖析 Elasticsearch:强大的 Java 开源搜索引擎》 ​ Elasticsearch 作为一款由 Java 开发的开源搜索引擎,以其卓越的特性在 Java 开发社区中备受青睐。它具备实时搜索、稳定可靠、快速安装和方便使用等突出优点,为开发者提供了强大的搜索解决方案。 一、索引操作 (一)创建索引 基本创建:通过 PUT /索引名(如 PUT /products)可以创

有手就会之使用Dify构建RAG聊天应用(基于私有知识库和搜索引擎)

之前我的文章里写的是通过langchain来构建RAG应用,对于很多人来说。langchain作为一个框架上手难度大,代码不够直观。但是通过dify你将学会可视化搭建工作流。 什么是dify? Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技

ES既是搜索引擎又是数据库?真的有那么全能吗?

点击上方“朱小厮的博客”,选择“设为星标” 后台回复"书",获取推荐书籍 经常遇到很多朋友询问,如何学好Elasticsearch?这个问题本质上很不好回答,但我一直又很想好好回答,所以本文就以我个人的经验视角,跟大家探讨一下如何正确的拥抱Elasticsearch。若有不当之处,欢迎留言指正。 ES认知 1、ES是什么 Elasticsearch是什么,不同的人有不同的理解定位,下面就谈谈我

Rust China Conf 2024 震撼来袭,INFINI Pizza 搜索引擎重磅亮相!

随着 Rust 语言以其在性能、安全性和并发性方面的卓越表现,赢得了全球开发者的青睐,Rust 社区正迎来前所未有的发展机遇。在这个充满活力与潜力的背景下,Rust China Conf 2024 震撼来袭! Rust 大会介绍 Rust 大会即将于 9 月 7 日 - 8 日在上海盛大举办。作为年度国内规模最大并唯一的 Rust 线下大型会议,它由 Rust 中文社区发起主办、知名企业和开源

不懂搜索引擎原理的seoer们就是在裸奔

站长最长说的一句口头禅就是:不懂SEO搜索引擎事理的seoer就是在裸奔! 按照上图诠释的搜索引擎工作原理,笔者要一步一步为巨匠注释,讲解。进行完整的seo基本常识普及。  1、:我们的互联上网,一个巨年夜的、复杂的系统   2、汇集器:这个我们站长们就都熟悉了,我们对它的俗称也就是蜘蛛,爬虫,而他的工作使命就是访谒页面,抓取页面,并下载页面   德诚承兑汇票营业   3、节制器

搜索引擎:OpenSearch【结构化数据搜索托管服务】【特点:单应用亿级别文档搜索 ,毫秒级别查询延迟 ,万级别QPS】

阿里云开放搜索(OpenSearch)是一款结构化数据搜索托管服务,其能够提供简单、高效、稳定、低成本和可扩展的搜索解决方案。OpenSearch以平台服务化的形式,将专业搜索技术简单化、低门槛化和低成本化,让搜索引擎技术不再成为客户的业务瓶颈,以低成本实现产品搜索功能并快速迭代。本文将为大家介绍OpenSearch的最新推出的电商查询语义理解和搜索算法平台两个新功能。 参考资料:

Java_ElasticSearch(ES)——分布式搜索引擎

介绍:         Elasticsearch是一个开源的分布式搜索和分析引擎,最初由Elastic公司开发。它构建在Apache Lucene搜索引擎库之上,提供了一个强大的全文搜索和分析引擎, 它结合kibana、Logstash、Beats,是一整套技术栈,被叫做ELK,适用于各种用例,包括文本搜索、日志分析、实时数据分析、监控和报警等。 官网:         官网地址:El

golang基础- ElasticSearch搜索引擎、kibana可视化工具、向ES输出数据

文章目录 安装ElasticSearch安装kibana向es输出数据 如果需要了解golang对es的相关操作,可以查阅我如下的博客 golang基础–gopkg.in/olivere/elastic.v5学习一(环境配置、链接、增加删除索引) golang基础–gopkg.in/olivere/elastic.v5学习二(增删改查document) 安装Ela

谷歌搜索引擎排名内幕揭秘:核心技术与SEO优化策略解析

在互联网时代,谷歌搜索引擎几乎主宰了全球的搜索市场,其排名算法是影响网站流量和可见度的关键因素。然而,谷歌的搜索引擎排名算法一直以来都是一个「黑匣子」,外界难以窥探其全貌。最近,一些内部文件的泄露和行业专家的深度分析,揭示了谷歌搜索引擎部分核心技术的运作机制。本文将详细解析这些信息,并探讨其对SEO优化的影响。 谷歌搜索引擎架构解析 谷歌的搜索引擎是一个庞大而复杂的系统,其核心架构包括以下几个