物联网安全
实验2
实验准备
设置树莓派
这里就是实验一的内容,大体上就是
- 覆写sd卡,先安装PL-App Launcher,把sd卡接usb转换器插上电脑,然后打开PL-App Launcher设置device-name,device-password,wifi-ssid和wifi-password,这里我本来想用发的路由器搞,但是接上宽带之后发现有密码,而且还不好重置,所以就干脆直接用寝室的路由器了,那么就注意上面设置的wifi名称和密码应该都是寝室的wifi和密码,最后点击write disk image覆写sd卡。
- 树莓派联网,把刚刚弄好的sd卡插回树莓派,用网线把树莓派和路由器连在一起,然后给树莓派插上电,这样再打开PL-App Launcher就能看到树莓派已经连上了,页面是这样的就行了
点击connect,浏览器进入登陆页面,然后这里的password就是在第一步里设置的device-password,输入正确之后应该就能看到这样的页面
安装kali虚拟机
先把U盘里拷的文件复制到一个文件夹里,然后直接上官网Downloads – Oracle VM VirtualBox,下载windows系统下的VirtualBox,下完之后点击导入,选中刚刚复制到文件夹里的Kali_IoTSec.ova文件,导入完成之后打开,如果显示网卡有错误,则点击更改网络设置,或者在管理器页面点击设置-网络-连接方式,改为网络地址转换(NAT),点击ok,然后在再启动虚拟机,这时应该能正常打开,username是root,password是toor,之后就能成功进入虚拟机。(之后记得把网络设置改回桥接网络,不然电脑连不上网)
第一部分 保护远程访问
步骤一
首先配置好树莓派,然后使用PL-App Launcher连接树莓派,随后如图点击,打开终端后输入ifconfig,便会显示树莓派的ip地址以及子网掩码,比如说我这里查到的树莓派的IP地址是192.168.101.10,子网掩码是255.255.255.0。(其实在PL-Apps Launcher里面,树莓派连上网之后的括号里面就是它的ip地址,这里只是为了确认一下它的子网掩码)
配置kali虚拟机,为了能和树莓派连接,我们要让虚拟机和树莓派在同一网络地址下,我们先打开终端,输入ifconfig回车,如果虚拟机的网络地址和树莓派的一样,那我感觉可以不改虚拟机的IP地址,不过如果要改的话,我们也可以
ifconfig eth0 198.168.101.xx
来改ip地址,注意这里要让它的网络地址,就是前三段,和树莓派一致,最后一段一般取20到200之间就行,修改完成后,再输入ifconfig,这时显示的应该就是我们修改的ip了。在vm上确认树莓派的ip,虽然之前已经确认过了,但是这里还要我们确认,不过也很简单,在终端输入
fping -ag 192.168.101.00/24
回车(注意,这里只用输入网络地址,即前三段,最后一段输入0即可),接下来几排就会输出在同一网络地址下设备的ip,不过应该是因为我们用的是寝室的路由器,所以除了我们虚拟机和树莓派的ip地址,还会显示别的ip,无伤大雅。使用ssh进入树莓派,为了保险起见,我们先确保树莓派的ssh是开着的,使用PL-App Launcher,点击connect,由于有了之前实验准备的记忆,浏览器应该能直接进入树莓派的页面,接着我们按照第0步打开它的终端,依次输入
systemctl enable ssh
和systemctl start ssh
,至此树莓派的ssh就能够打开了。
然后我们回到虚拟机,在终端输入ssh pi@
后面加树莓派的ip地址,然后按回车,不出意外应该会有一句Are you sure you want to continue connecting (yes/no)?
,我们输入yes并回车,随后系统就会提示我们输入密码,然后我们就输入树莓派默认的密码raspberry
(注意,Linux输入密码时是不会有显示的,怕自己输错了可以直接复制粘贴),登陆成功后会出现这样一个界面,前面的东西变成绿的了。
这样,我们的步骤一就完成了!
步骤二 保护用户账户
这个步骤比较简单,直接看老师发的就行。最后重启再次登录pi账户时,输入默认密码raspberry
应该还是可以登进去的,因为我们刚刚只是新建了一个用户edgerunners并对这个用户进行了设置,然而对原来的用户没有影响,这个默认的用户还是在的,所以我们还是能登进去,只是说登录edgerunners账户的时候要用刚刚设置的密码登录。
步骤三 安全远程访问
这一步也比较简单,按着步骤走就行,只有一个要注意的点就是那个用nano文本编辑器编辑 /etc/ssh/sshd_config 文件
,要注意有一个下划线_
不要看成空格了,然后那个预测应该也能看出来kevin会无法访问,kingbob能正常访问。
第二部分 删除默认Pi账户
在步骤a中文件显示为pi ALL=(ALL) NOPASSWD: ALL
,能推断出我们现在创建的所有用户应该都是能直接访问超级用户权限且无需密码的,验证方法也很简单,登录每个用户的账户,用sudo开头打一句命令看能不能直接执行就行了。
步骤c中问如何验证Pi账户是否被删除,我觉得就是尝试一下登录Pi账户,然后系统会说Permission denied, please try again.
,这样应该就能说明Pi账户已经被删除了。
第三部分 简单防火墙
步骤一 确定正在 Pi 上侦听哪些网络服务
启动 Telnet 和 vsftpd 服务时,遇见Failed to start openbsd-inetd.service: Unit openbsd-inetd.service not found.
和Failed to start vsftpd.service: Unit vsftpd.service not found.
报错,上网查了一下,好像是压根没下这俩东西,就直接搜了一下如何安装telnet 和vsftpd ,(21条消息) 树莓派上安装vsftpd:FTP服务器_断线纸鸢张的博客-CSDN博客,(21条消息) 树莓派远程连接的四种方式(最全)_sudo-wang的博客-CSDN博客,下载完之后再输入这两条命令就咩问题了。
步骤二 检查ufw状态
在b中输入sudo ufw status
时显示没有ufw这个命令,应该又是没有安装的原因,输入sudo apt-get install ufw
进行安装,安装完成后,一切显示正常。
步骤五 降低ssh的威胁
一切限制设置完成后,目前对ssh连接应该是采用了limit措施,限制 SSH 服务的登录尝试,而如果没有创建https规则,那么由于隐式拒绝规则,所有到达IoTPI接口的HTTP流量都会被丢弃。
步骤六 用nmap扫描
这一步里nmap扫描可能会用挺长时间,如果想看扫描进度可以按一下回车,会有一个“About 多少多少 Done”,那个就是进度。扫描完成后应该会是这样
我把步骤一时候扫描的也放上来,对比一下。
可以看到,之前是有65531 closed ports
,就是说有65531个端口是直接关闭的,只剩四个端口分别对应ftp,ssh,telnet和http服务,而在这里变成了65534 filtered ports
,有65534个端口被“过滤”了,这里显然是我们刚刚设置的防火墙起了作用,具体的关于nmap端口状态的介绍可以看一下这个博客,端口扫描基础 | Nmap参考指南(Man Page)
对比两图可以看到,现在是只有一个端口是开放的,端口号我这里是22的tcp端口,而且是service是ssh,所以说设置了防火墙之后,kali上的pi无法再访问ftp,telnet和http协议。
实验3
这一次实验不需要用到树莓派,更多是在linux系统下操作。
第一部分
按照给的教程来,问题不大,步骤二里最后破解的密码应该是root:device:10933:0:99999:7:::
步骤三将固件的文件系统解压后,显示出此文件的属性,可以看到是squashfs文件系统
步骤四里,知道目标的文件系统很重要是因为
- 文件系统类型决定了如何存储和访问文件。不同的文件系统类型有不同的文件存储和访问方式。了解目标系统的文件系统类型可以让攻击者更好地了解目标系统如何存储和访问数据,从而更好地选择攻击方式。
- 文件系统类型可以决定目标系统的权限控制方式。不同的文件系统类型有不同的权限控制方式。了解目标系统的文件系统类型可以让攻击者更好地了解目标系统的权限控制方式,从而更好地选择攻击方式。
- 文件系统类型可以决定目标系统的可攻击性。一些文件系统类型可能会使系统更容易受到攻击,因为它们可能有更多的漏洞或更脆弱的访问控制。了解目标系统的文件系统类型可以让攻击者更好地了解目标系统的可攻击性,从而更好地选择攻击方式。
- 文件系统类型可以影响攻击者选择的攻击向量。不同的文件系统类型可能有不同的漏洞和安全弱点,攻击者可以根据目标系统的文件系统类型来选择特定的攻击向量,以更好地进行攻击。
同时,可以看到新目录的名字叫_iotdev_firmware.bin.extracted
,进入后,使用指令ls
即可看到该目录下的子目录
步骤五里,进入squashfs-root目录后还是用ls指令查看子目录。
然后输入readelf -h /sbin/route
查看可执行文件的格式信息,显示如下,其中OS/ABI(Operating System/ Application Binary Interface)就是指该文件是在哪个操作系统下运行的以及其对应的开发接口标准,这个开发接口标准可以先不管,只用看对应的操作系统就行,这里可以看到对应的操作系统是UNIX,另一个就是Machine,这一栏就是设备架构,可以看到设备架构是Advanced Micro Devices X86-64
步骤六中,在第b步中,复制文件到当前目录时,输入cp /usr/bin/qemu-mips-static .
,这里要注意.
和前面的文件路径之间要隔一个空格,不然系统也会报错cp: missing destination file operand after '/usr/bin/qemu-mips-static.'
,
在第d步中,输入命令时要注意chroot
和.
也要隔一个空格。
第e步打开新的shell后,提示符变成了/ #
,
第f步确认路径时,路径变成了只剩一个/
,
关于chroot和qemu的理解,可以看一下这两篇,linux chroot命令详解 - 腾讯云开发者社区-腾讯云 (tencent.com),Linux云计算底层技术之一文读懂 Qemu 模拟器 - 知乎 (zhihu.com)。
最后在shell里打开bin和sbin文件夹里的其他程序和可执行二进制代码,我们可以先用cd
进入bin或sbin,看看里面都有哪些文件,随便选几个,然后再chroot . ./qemu-mips-static
后面接选的文件的路径就能运行了,比如说我选中了sbin文件夹里的iplink,那我就输如chroot . ./qemu-mips-static /sbin/iplink
,差不多就是这样,弄完之后记得输入exit
退出shell。
第二部分
是一些思考题,通过网上搜索可以理清答案
- 什么样的IoT设备固件弱点容易受到影响?
- 默认凭证:很多IoT设备都会预装一个默认的用户名和密码,攻击者可以利用这些默认凭证轻松地访问设备,从而攻击设备。
- 没有安全更新:许多IoT设备的固件更新很少,这意味着设备可能存在已知漏洞,攻击者可以利用这些漏洞进行攻击。
- 明文传输:一些IoT设备在与其他设备通信时会使用明文传输,这使得攻击者可以轻松地窃取数据或者篡改数据,从而攻击设备。
- 不安全的接口:一些IoT设备的接口可能存在漏洞或者设计不良,攻击者可以利用这些接口进行攻击,例如通过远程代码执行或者拒绝服务攻击。
- 缺乏加密:许多IoT设备没有使用加密技术来保护数据的传输和存储,这使得攻击者可以轻松地窃取数据或者篡改数据,从而攻击设备。
- 不安全的配置:一些IoT设备可能允许用户配置安全设置,但是这些设置可能不够安全或者被错误地配置,从而给攻击者提供了可利用的漏洞。
- 描述两种IoT固件攻击,并提出防止该类攻击的措施。
- 恶意固件攻击:
恶意固件攻击是指攻击者通过替换IoT设备的固件来控制设备。攻击者可以利用这种攻击方式来窃取设备的敏感信息、破坏设备的功能或者在设备中安装后门。恶意固件攻击可以通过一些途径实现,例如利用设备漏洞、利用网络攻击和通过物理接触。
防止恶意固件攻击的措施包括:- 对IoT设备进行固件加密和签名,确保只有受信任的固件才能被设备接受并运行。
- 对IoT设备进行安全启动,确保设备启动时只能运行经过验证的固件。
- 对IoT设备进行漏洞扫描和安全评估,及时发现和修复漏洞。
- Dos/DDoS攻击:
DoS/DDoS攻击是指攻击者利用大量的请求或者流量来占用IoT设备的带宽或者计算资源,从而使设备变得不可用。攻击者可以利用这种攻击方式来瘫痪设备或者通过设备进行其他攻击。
防止DoS/DDoS攻击的措施包括:- 对IoT设备进行安全配置,包括限制网络访问、限制并发连接数和增加安全认证等。
- 对IoT设备进行安全监控,及时检测并阻止恶意流量和请求。
- 部署防火墙和负载均衡器来保护IoT设备免受DoS/DDoS攻击。
- 固件反向工程攻击:
攻击者利用漏洞、工具或者技术来获取设备固件,然后进行逆向工程分析,以发现漏洞或者植入恶意代码。
防范措施:- 设备制造商应采用安全固件开发和部署流程,并确保固件的完整性和安全性。
- 固件应采用硬件安全模块(HSM)等技术,确保固件不易被修改。
- 使用加密算法对固件进行加密,以防止固件泄露。
- 固件漏洞利用攻击:
攻击者利用固件中的漏洞,通过远程访问、篡改或者控制设备,从而导致设备的不可用或者信息泄露。
防范措施:- 设备制造商应定期更新固件,并提供安全更新以修复漏洞。
- 设备制造商应采用安全开发流程,包括漏洞扫描、代码审核和渗透测试,以确保固件的安全性。
- 设备管理者应采用强密码,并及时更新密码,以防止攻击者通过破解密码访问设备。
- 采用安全通信协议,如HTTPS、SSH等,以确保数据传输的加密和安全。
- 恶意固件攻击:
- 请用搜索网站查找黑客用于修改固件的工具的名称,例如黑客在二进制固件中加入后门并重新打包为另一个二进制映像文件的工具。该程序是否在Kali Linux操作系统中提供呢?
固件篡改过程中会用到FMK工具-firmware-mod-kit,该工具可以利用binwalk等工具从固件中提取出文件系统,将提出的文件系统内容进行篡改后,再重新打包成新的固件包,最后将篡改后的固件包刷新设备中,具体文章为路由器篡改固件添加后门 - FreeBuf网络安全行业门户。
该程序在我们自己的kali linux虚拟机上没有事先提供,但是fmk可以下载,并且支持kali linux操作系统。
- Post title:记一次项目课作业
- Post author:Sparkle
- Create time:2023-03-25 20:07:28
- Post link:2023/03/25/记一次项目课作业/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.