零基础实践物联网安全——IoTGoat物联网靶场实战(一)

零基础实践物联网安全——IoTGoat物联网靶场实战(一)

​ 哈喽,大家好!这里是专注于物联网安全的路灯安全!这里的物联网安全大家可以理解为“物联网设备的安全”,举例说就是网络摄像头的安全,智能音箱的安全,智能门锁的安全。我觉得这是个很有意思的话题,往大了说随着这些设备的普及,它们的安全问题会关系到每一个人的隐私和人身安全;往小了说,自己把自己家的摄像头,智能音箱"黑"掉是一件很有意思的事儿。我相信有很多人,也像我一样对做一名小“黑客”的体验很感兴趣,但是拿着自家的摄像头不知道如何下手,所以我做了"零基础实践物联网安全"这个系列。这个系列的两大特点,第一是"零基础",本系列的目的是让初中以上的同学都能参与到物联网安全的实践中来;第二是"实践",这个系列最终会制作一个物联网设备"靶场",意思就是一个自制的"网络摄像头“或者”智能音箱“,让大家体验一下做黑客的乐趣!(在自制的靶场里试试就行了,千万不要在商用产品上实践!)

第一章 如何安装IoTGoat物联网靶场

1.1 IoTGOAT靶场简介

​ IoTGoat项目是一个基于OpenWrt的故意不安全固件,由OWASP维护,旨在为软件开发人员和安全专业人士提供一个测试物联网设备中常见漏洞的平台。该漏洞挑战基于以下列出的OWASP IoT十大漏洞,以及项目贡献者提供的“复活节彩蛋”。

零基础注释:固件
固件是设备内部的一种特殊软件,它告诉硬件如何工作。可以把它想象成设备的“大脑”,比如路由器、打印机或相机都需要固件来控制它们的功能。固件通常存储在设备的内存中,负责管理硬件的操作和提供基本的功能。简单来说,固件让设备能够按照设计正常运行。

固件和软件的区别体现在"固"字上,它们一般随着物联网设备出厂就已经确认,而且更新的频率非常低

1.2 IoTGOAT靶场的三种安装方法

​ IoTGoat靶场有三种安装方法:

方法一:安装到VMware虚拟机中运行;

零基础注释:虚拟机
虚拟机可以理解为一台计算机中的计算机,它在我们自己的计算机里创建了一个盒子,这个盒子里运行着另一台计算机。例如在一台Win11操作系统的计算机中创建一个windows XP系统的虚拟机,就可以运行红警等一些老游戏了。

方法二:安装到QEMU虚拟机中运行;

零基础注释:QEMU虚拟机和VMware虚拟机的
VMware虚拟机模拟的只是计算机的操作系统,QEMU虚拟机则会模拟计算机的硬件设备,例如处理器,内存等设备的工作状态。不恰当的比喻,VMware虚拟的是一个人的大脑,QEMU模拟的是一个完整的人

方法三:安装到树莓派II计算机中;

零基础注释:树莓派计算机
一家英国公司开发的著名单板计算机,它只有手掌大小,但是有计算机的全部功能,给它接上摄像头和网络驱动器,它就是一台网络摄像头了,再安装上IoTGoat提供的固件,它就是充满漏洞的网络摄像头了!

​ 在本系列的早期我们使用方法一进行实践,因为这种方法上手最快

1.3 IoTGOAT靶场的VMware虚拟机安装方法

第一步:安装VMware虚拟机管理器软件

网络上有非常多的VMware安装教程,这里给大家推荐一个非常适合新手的教程,大家只要照着完成教程中的第一部分就可以了:

https://blog.youkuaiyun.com/Javachichi/article/details/131572766

零基础注释:VMware付费问题

​ VMware是一款商用软件,也就是说,它是付费软件!当然它给了个人用户30天的试用期。到了以后怎么办?当然建议你付费了,支持正版哦!什么你想白嫖??这不好吧。。。我不知道,别问我,要问问某度。。。

第二步:安装IoTGoat虚拟机
  1. 首先我们要获取IoTGoat固件,这个固件的下载地址在下面的链接中:

https://github.com/OWASP/IoTGoat/releases

打开后看到下面几个文件:
在这里插入图片描述
2. 我们点击第五个文件IoTGoat-x86.vmdk,开始下载,这个文件是IoTGoat固件的VMware虚拟磁盘文件。

零基础注释:虚拟磁盘

虚拟磁盘就是模拟一个真实硬盘中的内容,比如IoTGoat模拟的是一个物联网设备的固件,而虚拟磁盘模拟的就是这个物联网设备的磁盘。可以想象中把真实设备的硬盘拔了下来插在了虚拟机上。

  1. 准备好材料后我们正式开始创建的过程:

    3.1 点击 创建一个新的虚拟机
    创建虚拟机
    ​ 3.2 选择"自定义",并点击“下一步”
    在这里插入图片描述

​ 3.3 点击“下一步”
在这里插入图片描述

3.4 选择“稍后安装操作系统”,点击"下一步"

在这里插入图片描述

3.4 选择"linux" “其他linux 4.x内核” 并点击“下一步”

在这里插入图片描述

3.5 点击"下一步" 这里也可以换成你喜欢的名字

在这里插入图片描述

3.6 保持默认设置,点击“下一步”

在这里插入图片描述

3.7 设置内存容量,选择推荐值就好,点击“下一步”

在这里插入图片描述

3.8 设置网络 选择“NAT模式”,点击"下一步"。

在这里插入图片描述

3.9 设置I/O类型,保持默认设置,点击"下一步"

在这里插入图片描述

3.10 设置磁盘类型,保持默认设置,点击"下一步"

在这里插入图片描述

3.11 关键步骤!! 选择使用的磁盘,因为我们要安装我们的IoTGoat固件,之前说过它就是以虚拟磁盘的形式存在,这一步我们就要把这个磁盘插在我们的虚拟机上,所以不能选择“使用新磁盘”,要选择“使用现有磁盘“,点击下一步

在这里插入图片描述

3.12 找到我们之前下载的IoTGoat-x86.vmdk文件的位置,并选择“下一步”

在这里插入图片描述

3.13 如果弹出下面的提示 选择 ”保持现有格式“,没弹就不用管

在这里插入图片描述

3.13 点击“完成”(忘记截图了)

3.14 此时的界面是这样的,有一个黑色的屏幕,点击“开启虚拟机”

在这里插入图片描述

3.15 如果弹出下面的提示,点“否”

在这里插入图片描述

3.16 进入后 看到下面的界面,可以再第一个选择,按下回车键,也可以等待几秒钟

在这里插入图片描述

3.17 等待几秒可以看到屏幕上滚动 IoTGoat启动时候的加载信息
在这里插入图片描述

3.18 把键盘输入切换到虚拟机中,按下回车键,如果可以看过IoTGoat固件的启动界面,恭喜你IoTGoat虚拟机已经安装成功了!

在这里插入图片描述
3.19 给零基础初学者:既然大家好不容易做到这一步,给大家解释下这个界面:

​ BusyBox:是一个物联网设备的工具软件,IoTGoat就是用这个软件开发的:

​ OWASP:Open Web Application Security Project是一个全球性的开源项目,旨在提高软件安全性。它提供了免费的资源、工具和指南,帮助开发者和安全专业人员识别和修复软件中的安全漏洞。

​ IOTGOAT:就是我们的靶场软件了,山羊是LOGO

​ 下面是这个项目的网址:

​ 最后一个可以输入的是IoTGOAT这个固件的命令行操作界面,我们通过命令行来控制IoTGOAT。

​ **零基础注释:命令行交互界面

​ 对于习惯图形交互界面(windows,android,IOS)的新手来说命令行交互界面可能是很陌生的东西,但这个才是所有的软件和操作系统一开始提供给用户的交互接口,例如上面的交互接口root@IoTGOAT:/# 是一个命令行提示符,它通常出现在Linux系统中。它的意思是你正在以“root”用户身份操作,“IoTGOAT” 是计算机的名字,而 :/# 表示你在系统的根目录下。根用户(root)拥有最高权限,可以执行所有命令,适合进行系统管理和配置。这个提示符显示你可以输入命令来控制设备或软件。我们在这个界面输入"ls"并回车,就可以看到当前目录下的所有文件

在这里插入图片描述

输入 cd bin并回车,就可以进入bin目录,可以看到命令行提示符也发生了改变

在这里插入图片描述

如果你对Linux操作系统的命令行图形界面感兴趣,想学习如何使用它,建议访问这个网站学习:

http://cn.linux.vbird.org/

结语

​ 这一章我们站在设备提供者的角度搭建了IoTGOAT虚拟机,也就是说我们成功地建立了一个虚拟的靶子。下一节开始,我们就要开始以攻击者的身份开始实践,如何攻击这个靶子了!

1、PGP概述 PGP(Pretty Good Privacy)的创始人是美国的Phil Zimmermann(菲利普•齐默曼),他在1991年把 RSA 公钥体系的方便和传统加密体系的高速度结合起来,并且在数字签名和密钥认证管理机制上有巧妙的设计。因此 PGP 成为几乎最流行的公匙加密软件包。PGP有不同的实现,如GnuPG和Gpg4win,其中GnuPG(Gnu Private Guard,简写为GPG)的核心算法是PGP,GnuPG本身是为Linux等开源操作系统设计的;而Gpg4win是windows下GnuGPG及图形前端的合集安装包,其核心为GnuPG,包括:(1)Kleopatra和GPA:GPG的密钥管理器,用于生成、导入和导出GPG密钥(包括公钥和私钥);(2)GpgOL:Outlook 的GPG支持插件;(3)GpgEX:资源管理器的GPG支持插件;(4)Claws Mail:内置GPG支持的邮件客户端。 PGP是个基于RSA公钥加密体系的加密软件,是开源且免费的,后经互联网志愿者发展完善并广泛应用,具有如下特点:(1)选择最可用的加密算法作为系统的构造模块,所用算法已被广泛检验过,相当安全;并将这些算法集成到个通用的应用程序中,该程序独立于操作系统和处理器,并且基于个使用方便的小命令集;(2)是个开源项目,程序、文档在Internet上公开;(3)可以免费得到运行于多种平台上的PGP版本,具有广泛的可用性;(4)不由任政府或标准化组织所控制,使得PGP得到了广泛信任;(5)与商业公司(Network Associates)合作,提供个全面兼容的、低价位的商业版本PGP。2010年6月被赛门铁克公司收购。由于这些特点,使得PGP得到了广泛的应用。 PGP常用的版本是PGP Desktop Professional,它可以用来加密文件,可以用来对邮件保密以防止非授权者阅读,还能对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信邮件没有被篡改。同时,通过使用公钥密码算法,可以提供种事先并不需要任何保密的渠道用来传递密匙的安全通讯方式。PGP功能强大,而且具有很快的速度,PGP提供的主要功能如表1.7.1所示。 表1.7.1 PGP的功能概述 功能 使用的算法 描述 消息加密 IDEA、CAST、3DES、TwoFish、ElGamal、RSA 发信人产生次性会话密钥加密,用IDEA或CAST-128或3DES算法对消息进行加密;采用ElGamal或RSA算法用接收方的公钥加密会话密钥 数字签名 DSS/SHA-1、RSA/MD5 采用SHA-1或MD5消息摘要算法计算消息的摘要值(散列码),用发送者的私钥按DSS或RSA算法加密消息摘要 压缩 PKZIP 消息在传送和存储时可使用PKZIP压缩 E-mail兼容性 Radix-64 对E-mail应用提供透明性,采用基数64编码将加密后的消息(二进制流)转换为ASCII字符串 数据分段 - 为了适应最大消息长度限制,PGP执行分段和重新组装 2、PGP的密钥管理 PGP是种混合密码系统,应用了多个密码算法,包括对称密码算法、非对称密码算法、消息摘要算法、数字签名等经典的密码学算法。为用户生成密钥对之后,可以进行邮件的加密、签名、解密和认证。在PGP中使用的加密算法和用途如表1.7.2所示。 表1.7.2 PGP中采用的各种密码算法及用途 密钥名 加密算法 用途 会话密钥 IDEA、AES 对传送消息的加解密,随机生成,次性使用 公钥 RSA、Diffie-Hellman 对会话密钥加密,收信人和发信人共用 私钥 DSS/SHA、RSA/SHA 对消息的杂凑值加密以形成签名,发信人专用 口令 IDEA 对私钥加密以存储于发送端 从上表可以看出,PGP使用了四种类型的密钥:次性会话传统密钥、公钥、私钥和基于口令短语的传统密钥/通行字短语。 会话密钥按ANSI X9.17标准,采用IDEA算法,以密文反馈模式(CFB)生成。当PGP用RSA算法为用户生成个新的公钥/私钥对时,PGP会要求用户提供个口令短语,对该短语使用MD5/SHA-1消息摘要算法生成个散列码后,销毁该短语,从而把用户输入的口令短语转化为IDEA/CAST-128密钥,再使用这个密钥加密私钥,然后销毁这个散列码,并将加密后的私钥存储到私钥环中。当用户要访问私钥环中的私钥时,必须提供口令短语。PGP将取出加密后的私钥,生成散列码,解密私钥。 个用户可能拥有多个公钥/私钥对,正确识别加密会话密钥和签名所用的特定公钥/私钥对的个最简单的解决方案是将公钥和消息起传送。但这种方式浪费了不必要的空间。PGP采用的解决方案是给每个公钥分配个密钥标识(KeyID),并以极大的概率与用户标识(UserID)对应,即UserID和KeyID标识个密钥。密钥标识至少为64位,因而密钥标识重复的可能性非常小。 PGP提供种系统化的密钥管理方案来存储和组织这些密钥以保证有效使用这些密钥,它为每个节点(用户机器)提供对数据结构,个用于存放本节点自身的公钥/私钥对(即私钥环),另个用于存放本节点知道的其他用户的公钥(即公钥环)。私钥环信息:时间戳、KeyID、公钥、私钥、UserID,其中UserID通常是用户的邮件地址。也可以是个名字,可以重名;公钥环信息:时间戳、KeyID、公钥、对所有者信任度、用户ID、密钥合法度、签名、对签名者信任度,其中UserID为公钥的拥有者。多个UserID可以对应个公钥。公钥环可以用UserID或KeyID索引。 如何保证用户公钥环上的公钥确实是指定实体的合法公钥,这是个至关重要的问题。PGP提供几种可选的方案以减少用户公钥环中包含错误公钥的可能性:(1)物理上得到对方的公钥。这种方式最可靠,但有定局限性;(2)通过电话验证公钥;(3)从双方都信任的第三方(个体或CA)处获得对方的公钥。 此外,PGP支持密钥管理服务器,用户可以将公钥发布在集中的密钥服务器上,供他人访问。 3、PGP的消息处理过程 PGP消息分成原始消息、签名部分和会话密钥部分三个部分。 PGP发送方处理消息的过程为:(1)签名:利用UserID作为索引,从私钥环中得到私钥;PGP提示输入口令短语,恢复私钥;构造签名部分;(2)加密:PGP产生个会话密钥,并加密消息;PGP用接收者UserID从公钥环中获取其公钥;构造消息的会话密钥部分。 PGP接收方处理消息的过程为:(1)解密消息:PGP用消息的会话密钥部分中的KeyID作为索引,从私钥环中获取私钥;PGP提示输入口令短语,恢复私钥;PGP恢复会话密钥,并解密消息;(2)验证消息:PGP用消息的签名部分中的KeyID作为索引,从公钥环中获取发送者的公钥;PGP恢复被传输过来的消息摘要;PGP对于接收到的消息计算摘要,并与上步的结果作比较。 4、PGP的信任模型 由于PGP重在广泛地在正式或非正式环境下的应用,所以它没有建立严格的公钥管理模式。尽管PGP没有包含任何建立认证权威机构或建立信任体系的规范,但它提供了个利用信任关系的方法,将信任关系与公钥联系起来。PGP定义了与基于X.509真实的公钥基础设施(PKI)不同的证书模型,即所谓“信任网(Web of Trust)”模型。传统PKI模型依赖于CA层次体系验证证书和其中的密钥。而PGP模型则允许多重地、独立地而非特殊可信个体签署的“名字/密钥”关联来证明证书的有效性,其理论是认为“只要有足够的签名,<名字/密钥>关联就是可信的,因为不会所有的签名者都是‘坏’的”。PGP的信任网就像人际关系网样,通过下述方式让使用公钥的人相信公钥是其所声称的持有者:(1)直接来自所信任人的公钥;(2)由所信赖的人为某个自己并不认识的人签署的公钥。因此,在PGP中得到个公钥后,检验其签名,如果签名人自己认识并信赖他,就认为此公钥可用或合法。这样,通过所认识并信赖的人,就可以和总多不认识的人实现PGP的安全E-mail通信。 具体而言,在PGP中是通过在公钥环中的下述3个字段来实现Web of Trust信任模型的:(1)密钥合法性字段(key legitimacy field):指示用户公钥合法性的可信等级。信任级别越高,则用户标识UserID与密钥间的绑定关系就越强。这个字段是由PGP计算的;(2)签名信任字段(signature trust field):每个公钥项都有个或者多个签名,这是公钥环主人收集到的、能够认证该公钥项的签名。每个签名与个signature trust field关联,指示PGP用户信任签名者对此公钥证明的程度。key legitimacy field 是由多个signeture trust field 导出的;(3)所有者信任字段(owner trust field):指示此公钥对其他公钥证书进行签名的信任程度。这个信任程度是由用户给出的。 PGP使用以个人为中心的信任模型,采取种“社会信任链”的方式进行公钥分发。在这种方式下,用户可以自行决定对周围的联系人是否信任,并可以决定信任度的高低。用户只接收信任的朋友传送来的公钥,并且这些公钥都带有签名。这种方式反映了社会交往的本质,比较适合般场合下的安全通信。 本实验通过实际操作,了解PGP/GPG4Win软件的常用功能,利用PGP/GPG4Win软件实现密钥管理、对文件和电子邮件的签名与加密等操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值