车辆数字钥匙常见攻击和防御方法介绍
车辆数字钥匙常见攻击和防御方法介绍车辆数字钥匙是汽车智能化变革下的一项创新技术,NFC、UWB、BLE(蓝牙)等不同通信技术,将NFC智能卡片、智能手机、智能手表等智能终端变成汽车钥匙,从而实现无钥匙启动、钥匙分享、远程车辆控制等功能,为人们提供更加智能便捷的用车体验。
但汽车钥匙的数字化发展,也带来了新的安全风险挑战。攻击者通过重放攻击 、滚码遍历等手段,破解车辆钥匙,恶意解锁车辆,给车主带来的较大的人身及财产安全风险。
本文通过数字钥匙类型及风险点、常见攻击场景和手法介绍、防御方案介绍三个方面,阐述数字钥匙面临的常见攻击及防御方法,详情请查看下文介绍。
一、数字钥匙类型和风险点1、数字钥匙种类目前常见的车辆数字钥匙有如下5种:
无线车钥匙,由发射器、遥控中央锁控制模块、驾驶授权系统控制模块三个接受器及相关线束组成的控制系统组成。遥控器和发射器集成在车钥匙上,车辆可以根据智能钥匙发来的信号,进入锁止或不锁止状态。大家基本上都用过,上面有解锁按钮、锁定按钮和后备箱打开按钮。
NFC卡片钥匙,现在一些新能源汽车会配备NFC卡片钥匙,很薄,刷卡即可解锁车辆。开车时把这个卡片放在中控台上,就 ...
TP-link Smart Home Router 命令注入漏洞
TP-link Smart Home Router 命令注入漏洞前言查阅相关资料可知,TDDP协议(TP-LINK Device Debug Protocol) 是TP-LINK申请了专利的一种在UPD通信的基础上设计的协议,而Google安全专家Matthew Garrett在TP-Link SR20设备上的TDDP协议文件中发现了一处可造成 “允许来自本地网络连接的任意命令执行” 的漏洞。
前置知识TP-link SR20 设备运行V1版本的TDDP,而TDDP的V1版本不会验证身份,因此在向SR20的UDP 1040端口发送数据的时候,SR20都会接受并进行处理
目前TDDP有两个版本,分别是v1和v2。其中,v1版本不支持身份验证和对数据包荷载的加密,而v2版本则要求身份验证和对数据包荷载进行加密
TDDP数据格式![image-20240813153034799](/picture/TP-link Smart Home Router 命令注入漏洞/image-20240813153034799.png)
一排四个字节,于是我们可以知道真正的数据需 ...
Sapido RB-1732 远程命令执行漏洞
Sapido RB-1732 远程命令执行漏洞漏洞介绍sapido 是SAPIDO公司开发的一款家用路由器,其RB-1732系列v2.0.43之前的固件版本存在一处命令执行漏洞。该漏洞的产生原因是。服务器的syscmd.asp 页面没有对传递过来的参数进行过滤,这使得用户以参数的形式将系统命令发送给服务器,并在服务器上执行
漏洞影响1234BR270n-v2.1.03BRC76n-v2.1.03GR297-v2.1.3RB1732-v2.0.43
网络测绘1app="Sapido-路由器"
环境搭建首先下载固件然后binwalk解包
![image-20240814110220059](/picture/Sapido RB-1732 远程命令执行漏洞/image-20240814110220059-17236045405711.png)
发现是Squashfs文件系统的,然后使用FirmAE搭建环境,或者使用Firmware Analysis Toolkit,但是我的这个环境老是搭建不起,于是使用的是FirmAE
123sudo . ...
D-Link DIR-815 后门漏洞
D-Link DIR-815 泄露密码漏洞漏洞介绍在D-Link DIR-815中,存在固定账户密码,攻击者可以通过分析固件或者账户密码,能登录telnet服务,进一步执行任意的系统命令
漏洞分析首先下载DIR-815的1.03版本的固件,然后提取文件系统
1binwalk -Me DIR815A1_FW103b01.bin
解压固件后,使用firmwalker执行如下命令来收集文件系统的信息
1./firmwalker.sh ~/Desktop/D-Link/_DIR815A1_FW103b01.bin.extracted/squashfs-root/
收集的信息默认在firmwalker.txt,打开firmwalker.txt,可以看到很多sh脚本,重点关注
/etc/init0.d/S80telnetd.sh
分析一下/etc/init0.d/S80telnetd.sh,
1234567891011121314iot@research:~/Desktop/D-Link/_DIR815A1_FW103b01.bin.extracted/s ...
路由器漏洞挖掘工具总结
路由器漏洞挖掘工具总结固件的解包与封装firmware-mod-kit工具下载
基于binwalk的解打包⼯具
安装⽅法:
⾸先安装依赖
1sudo apt-get install git build-essential zlib1g-dev liblzma-dev python-magic
安装工具
12345git clone https: / github.com/mirror/firmware-mod-kit.git cd firmware-mod-kit/src ./configure & make
解包固件
将固件 firmware.bin 解包到 working_directory/ 下
1./extract_firmware.sh firmware.bin working_directory/
重新打包固件
将新⽣成的固件放到 output_directory 下
1./build_firmware.sh output_directory/ working_directory/
基于文件系统的信息收集trommel工具下载
trom ...
物联网漏洞挖掘思路
物联网漏洞挖掘思路攻击面分析在做攻击面分析前我们首先要知道,对于一个常规的物联网设备而言,可以分为设备端、手机端和云端。而这三个不同的端都会存在自己一些特殊的攻击面。比如设备端我们往往会先想办法获取固件然后分析核心服务,而APP端则会有注入蓝牙等一系列操作。
硬件分析针对硬件的分析主要停留在电路板上使用的芯片以及配套的解决方案,一般重点关注MCU型号以及外挂Flash闪存。其次便是寻找各类接口,如UART、ADB、JTAG等。
对于UART口一般可以直接找并排或相距不远的多个焊点和通孔,然后借助万用表来识别每个串口对应的功能。也可以直接使用JTAGulator来直接进行识别,当然他更强大的功能是识别JTAG接口。
信息收集做完硬件层面的分析接下来就是要正式开始,一般会在未获取固件前就对端口开放信息进行扫描,了解其对外开放的一些服务并进行黑盒测试。
过第一步说的接口进入shell后可以用ps查看设备开启了哪些服务,这些服务都是后期重点的挖掘方向。其次便是分析固件文件系统,查看固件使用了哪些中间件,如果有中间件,查看中间件的配置文件,获取中间件配置信息,当没思路的时候可以查看中间件是 ...
固件解密
固件解密前言在分析爱快的路由器的时候遇到了固件被加密的情况,发现找到的一些固件解密的方法用不了,但是github上居然有对应的解密方法,果然多看看github
解密加密固件更新的方式固件制造商出于对产品安全的考虑,防止固件被恶意篡改,通常会采取各种防范手段,阻止固件被直接解包和破解。其中一种重要且有效的手段就是利用加密算法对固件进行加密,例如使用AES、DES等对称加密算法加密固件中的内核和文件系统,或使用XOR、ROT等简单置换算法对固件进行处理,这使得研究人员无法直接读取固件中的明文内容。
对固件进行解密之前,需提前了解厂商一般会以怎样的形式发布加密固件以及在设备启动和固件升级过程中,会在哪些地方对固件进行解密。厂商发布加密固件一般有以下三种场景:
固件出厂未加密后续发布包含解密方案的未加密固件
固件在出厂时未加密,也未包含任何解密代码,后续为了发布加密固件,会提前发布一个包含解密程序的未加密版本作为过渡版本,这样后续发布加密固件时可使用该解密程序进行解密,这类情况在发布时间较早的设备中比较常见。
[](https://github.com/SecureNexusLab/IoT ...
AFL++fuzz测试路由器固件
AFL++fuzz测试路由器固件前言在做fuzz的时候发现很多其实都是基于AFL工具的,以前学过一点AFL++的,但很久不用都忘记了,刚好再来测试一下路由器固件来加固一下
AFL++的使用环境搭建我就不讲了,这篇文章做了较为详细的介绍
https://c0ke.github.io/2024/07/10/AFL++fuzz%E6%B5%8B%E8%AF%95/?highlight=afl
使用如下命令进行测试
1afl-fuzz -M master -m none -x xml.dict -i /path/to/corpus -o output -- /path/to/xmllint --valid @@
-M 表示使用分布式fuzz
-m 表示子进程的内存限制,这里为0
-x 指定了模糊测试的字典
-i 表示测试用例的输入目录
-o 表示fuzz的结果输出目录
显示图如下
下面会详细介绍一下各个部分的含义
process timing :
run time: 已经运行的时间。
last new find: 上一次找到新的漏洞或问题的时间。
last saved crash ...
MQTT协议初探
MQTT协议初探MQTT 协议简介概览MQTT 是一种基于发布/订阅模式的轻量级消息传输协议,专门针对低带宽和不稳定网络环境的物联网应用而设计,可以用极少的代码为联网设备提供实时可靠的消息服务。MQTT 协议广泛应用于物联网、移动互联网、智能硬件、车联网、智慧城市、远程医疗、电力、石油与能源等领域。
MQTT 协议由 Andy Stanford-Clark (IBM)和 Arlen Nipper(Arcom,现为 Cirrus Link)于 1999 年发布。 按照 Nipper 的介绍,MQTT 必须具备以下几点:
简单容易实现
支持 QoS(设备网络环境复杂)
轻量且省带宽(因为那时候带宽很贵)
数据无关(不关心 Payload 数据格式)
有持续地会话感知能力(时刻知道设备是否在线)
据 Arlen Nipper 在 [IBM Podcast 上的自述](https://f.hubspotusercontent00.net/hubfs/6941105/Que es MQTT - IBM podcast - Piper, Diaz, Nipper - 11182011 ...
进程间的通信
进程间的通信进程间通信(IPC,Inter-Process Communication)是指在同一台计算机上的不同进程之间进行数据交换的机制。不同操作系统提供了不同的 IPC 机制。以下是一些常用的进程间通信方式:
**管道 (Pipes)**:
匿名管道:通常用于父子进程间的单向通信。数据流动只能是单向的,如果需要双向通信,需要两个管道。
命名管道:允许非父子关系的进程间通信,可以是单向或双向。命名管道可以在不相关的进程之间进行通信,并且可以通过网络使用。
**消息队列 (Message Queues)**:
允许不同进程通过格式化的消息来交换数据。这些消息存储在队列中,直到接收进程取出它们。消息队列通过消息边界保持消息的完整性,不同于流式的管道。
**信号量 (Semaphores)**:
主要用于进程间的同步,不直接用于数据交换。信号量是一个计数器,用于控制多个进程对共享资源的访问。
**共享内存 (Shared Memory)**:
最快的一种 IPC 方法,允许多个进程共享一块内存区域。进程可以直接读写这块共享内存,而不需要复制数据。使用共享内存时,通常需要使用 ...