欢迎来到 无奈人生 安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

对FIMI A3无人机的简要逆向分析

来源:未知 作者:wnhack 时间:2019-01-08 14:28 点击: 我要投稿
广告位API接口通信错误,查看德得广告获取帮助
本文是逆向消费产品新系列的开始,主要是为了增强我对产品的使用,同时也可以揭示数据泄漏和漏洞。
上周有个产品引起了我的注意。小米支持的一家在深圳的公司FIMI发布了一款无人机。我一向不会购买价格便宜的无人机,因为一分钱一分货,价格便宜往往质量不怎么样。(质量差的相机,糟糕的用户体验……),但FIMI发布的这一个有点不同。
这架无人机有一个“DIY”端口。这是一个UART / PWM / GPIO端口,我猜测它可能是两个电源端口。FIMI向用户展示了如何连接烟花点火器或LED,但是我的思绪却联想到了在今年的DEF CON上的这个演示。该项目是关于一架难以拦截的无人机,但演示的作者也展示了无人机的一些攻击用途。理论上,这架无人机有一个WiFi干扰器或一个可以从地面激活的混杂的WiFi数据包嗅探器。当你拥有这种端口时,可能性是无穷无尽的。A3也不需要智能手机进行操作,它包括一个带LCD面板的遥控器。通过智能手机控制无人机为攻击者开启了一个新的攻击面(远程控制器和手机之间的wifi网络密码可能被暴力破解,而智能手机可能会遭到恶意软件攻击……)。大疆还没有一体化的遥控器,但小米已经超越了它们。中国的创新做的真好。

DIY端口。现在是时候用pinneapple连接RPI Zero了。

一些可以连接到无人机的有效载荷。资料来源:David Melendez的DEF CON演示PDF
对于那些在相机方面感兴趣的人来说,这款无人机使用的是1440p索尼CMOS传感器,搭载AMBA A12芯片组。可以拍摄800万像素的静态图像以及可以以30FF速度比特率为60 MB/s记录1080p高清视频。云台是2轴的,就像DJI Spark一样,但这款无人机价格约250美元,是DJI Spark的有力竞争对手。如果它能拍摄4K视频而且有3轴云台就更好了,但现实是残酷的。
第1部分:固件:
FIMI可供下载的固件可以在这里找到。
固件分为3个:AMBA A12固件,Drone Cortex A7固件和遥控器固件。
wget https://www.fimi.com/media/Productattachments//f/2/f21a-a-v010sp12rtm181027r16987-cn-rtm_u-release-741c119eb4d25878e21045e3f3c485d4.zip -P drone_fw /
wget https://www.fimi.com/media/Productattachments//f/i/firmware.zip -P cam_fw /
wget https://www.fimi.com/media/Productattachments//r/2/r21a-a-v010sp13rc181024r16900-cn-b_250k-release-ota-97b6c6c59241976086fabdc41472150c.zip -P remotecontrol_fw /
固件是高度压缩的。每个文件大小为:
3.8M firmware.zip
488K f21a- -v010sp12rtm181027r16987-cn-rtm_u-release-741c119eb4d25878e21045e3f3c485d4.zip
728K r21a- -v010sp13rc181024r16900-cn-b_250k-release-ota-97b6c6c59241976086fabdc41472150c.zip
第一步是解压缩每个固件zip文件。解压缩完成后,远程固件产生1.2M BFU文件,无人机固件是个492K的BIN文件,相机固件包含与AMBA ISP相关的代码,解压缩出3个文件:3.8M firmware.bin和2个0-byte文件:rollback.txt和update.txt。使用binwalk 3文件更深入的查看firmware.bin文件,发现是压缩的:amba_ssp_svc.bin,dsp.bin.gz,rom.bin.gz
amba_ssp_svc.bin是一个gz文件,因此名称应为amba_ssp_svc.bin.gz
使用extract_fw.sh我们可以获取gz文件及其内容:
firmware.bin SHA512:1cba74305d0491b957f1805c84e9b1cf5674002fc4f0de26905a16fb40303376187f1c35085b7455bff5c4de23cf8faa9479e4f78fd50dbf69947deb27f5d687
LOCATION: SIZE:    FILENAME
508       1812019  amba_ssp_svc.bin.gz
1812527   1988127  dsp.bin.gz
3800654   143664   rom.bin.gz
每个文件的位置。
从这里我用dd来提取文件。“skip”标志是位置,计数是下一个位置的位置。
dd if = [firmware.bin] of = out / amba_ssp_svc.bin.gz bs = 1 skip = 508 count = 1812019 
dd if = [firmware.bin] of = out / dsp.bin.gz bs = 1 skip = 1812527 count = 1988127 
dd if = [firmware.bin] of = out / rom.bin.gz bs = 1 skip = 3800654 count = 143664
注意:所需的所有文件都在我的github存储库中。
现在可以使用其他一些东西了。使用gunzip解压缩每个文件,我们最终得到:
4.3M amba_ssp_svc.bin 
4.9M dsp.bin 
2.3M rom.bin
第2部分:Ambarella芯片组:
4.3M文件是AMBA芯片组固件是我们之前下载的。在这我们可以使用我在逆向GoPro相机固件中使用的一些方法:
字符串amba_ssp_svc.bin | grep“c:\\\\”
这项逆向工程操作的目的是:
· 看看我们是否可以将自己的图像烧写到无人机上
· 了解可用的分辨率和帧速率
· 看看我们是否可以运行自定义的命令或获取telnet/RTOS会话
· 禁用NFZ(无飞区)并在欧洲启用FCC(美国5GHz模式)
· 我们可以固定无人机吗?
从下面的结果来看,我们可以将图像从SD卡烧写到无人机中:
C:\version.txt 
C:\update.txt 
C:\rollback.txt 
C:\firmware.bin
具体的操作方法,请参阅GitHub存储库中的cam_fw/out/README.md。
AMBA A12芯片组会接受一些命令,包括看起来类似于RTOS USB Shell的命令。
无人机固件和控制器固件没有这种方式。无人机固件是没有文件节的bin文件,远程控制器固件是bfu文件。
如果无人机可以在离线航点上飞行,那将会是很有趣的一件事情。连接WiFi嗅探器会变得更加轻松。
我订购了这架无人机,但它不会很快就到货,因为这只是一个预购。
请继续关注本系列文章的第2部分!
  本文是逆向消费产品新系列的开始,主要是为了增强我对产品的使用,同时也可以揭示数据泄漏和漏洞。
上周有个产品引起了我的注意。小米支持的一家在深圳的公司FIMI发布了一款无人机。我一向不会购买价格便宜的无人机,因为一分钱一分货,价格便宜往往质量不怎么样。(质量差的相机,糟糕的用户体验……),但FIMI发布的这一个有点不同。
这架无人机有一个“DIY”端口。这是一个UART / PWM / GPIO端口,我猜测它可能是两个电源端口。FIMI向用户展示了如何连接烟花点火器或LED,但是我的思绪却联想到了在今年的DEF CON上的这个演示。该项目是关于一架难以拦截的无人机,但演示的作者也展示了无人机的一些攻击用途。理论上,这架无人机有一个WiFi干扰器或一个可以从地面激活的混杂的WiFi数据包嗅探器。当你拥有这种端口时,可能性是无穷无尽的。A3也不需要智能手机进行操作,它包括一个带LCD面板的遥控器。通过智能手机控制无人机为攻击者开启了一个新的攻击面(远程控制器和手机之间的wifi网络密码可能被暴力破解,而智能手机可能会遭到恶意软件攻击……)。大疆还没有一体化的遥控器,但小米已经超越了它们。中国的创新做的真好。 www.wnhack.com

DIY端口。现在是时候用pinneapple连接RPI Zero了。

一些可以连接到无人机的有效载荷。资料来源:David Melendez的DEF CON演示PDF
copyright 无奈人生

对于那些在相机方面感兴趣的人来说,这款无人机使用的是1440p索尼CMOS传感器,搭载AMBA A12芯片组。可以拍摄800万像素的静态图像以及可以以30FF速度比特率为60 MB/s记录1080p高清视频。云台是2轴的,就像DJI Spark一样,但这款无人机价格约250美元,是DJI Spark的有力竞争对手。如果它能拍摄4K视频而且有3轴云台就更好了,但现实是残酷的。
第1部分:固件:
FIMI可供下载的固件可以在这里找到。
固件分为3个:AMBA A12固件,Drone Cortex A7固件和遥控器固件。

www.wnhack.com


wget https://www.fimi.com/media/Productattachments//f/2/f21a-a-v010sp12rtm181027r16987-cn-rtm_u-release-741c119eb4d25878e21045e3f3c485d4.zip -P drone_fw /
wget https://www.fimi.com/media/Productattachments//f/i/firmware.zip -P cam_fw /
wget https://www.fimi.com/media/Productattachments//r/2/r21a-a-v010sp13rc181024r16900-cn-b_250k-release-ota-97b6c6c59241976086fabdc41472150c.zip -P remotecontrol_fw /
固件是高度压缩的。每个文件大小为:

copyright 无奈人生


3.8M firmware.zip
488K f21a- -v010sp12rtm181027r16987-cn-rtm_u-release-741c119eb4d25878e21045e3f3c485d4.zip
728K r21a- -v010sp13rc181024r16900-cn-b_250k-release-ota-97b6c6c59241976086fabdc41472150c.zip
第一步是解压缩每个固件zip文件。解压缩完成后,远程固件产生1.2M BFU文件,无人机固件是个492K的BIN文件,相机固件包含与AMBA ISP相关的代码,解压缩出3个文件:3.8M firmware.bin和2个0-byte文件:rollback.txt和update.txt。使用binwalk 3文件更深入的查看firmware.bin文件,发现是压缩的:amba_ssp_svc.bin,dsp.bin.gz,rom.bin.gz
内容来自无奈安全网

amba_ssp_svc.bin是一个gz文件,因此名称应为amba_ssp_svc.bin.gz
使用extract_fw.sh我们可以获取gz文件及其内容:
firmware.bin SHA512:1cba74305d0491b957f1805c84e9b1cf5674002fc4f0de26905a16fb40303376187f1c35085b7455bff5c4de23cf8faa9479e4f78fd50dbf69947deb27f5d687
LOCATION: SIZE:    FILENAME 无奈人生安全网
508       1812019  amba_ssp_svc.bin.gz
1812527   1988127  dsp.bin.gz
3800654   143664   rom.bin.gz
每个文件的位置。
从这里我用dd来提取文件。“skip”标志是位置,计数是下一个位置的位置。 内容来自无奈安全网
dd if = [firmware.bin] of = out / amba_ssp_svc.bin.gz bs = 1 skip = 508 count = 1812019 
dd if = [firmware.bin] of = out / dsp.bin.gz bs = 1 skip = 1812527 count = 1988127 
dd if = [firmware.bin] of = out / rom.bin.gz bs = 1 skip = 3800654 count = 143664
注意:所需的所有文件都在我的github存储库中。
内容来自无奈安全网

现在可以使用其他一些东西了。使用gunzip解压缩每个文件,我们最终得到:
4.3M amba_ssp_svc.bin 
4.9M dsp.bin 
2.3M rom.bin
第2部分:Ambarella芯片组:

本文来自无奈人生安全网


4.3M文件是AMBA芯片组固件是我们之前下载的。在这我们可以使用我在逆向GoPro相机固件中使用的一些方法:
字符串amba_ssp_svc.bin | grep“c:\\\\”
这项逆向工程操作的目的是:
· 看看我们是否可以将自己的图像烧写到无人机上
· 了解可用的分辨率和帧速率 无奈人生安全网
· 看看我们是否可以运行自定义的命令或获取telnet/RTOS会话
· 禁用NFZ(无飞区)并在欧洲启用FCC(美国5GHz模式)
· 我们可以固定无人机吗?
从下面的结果来看,我们可以将图像从SD卡烧写到无人机中:
C:\version.txt  www.wnhack.com
C:\update.txt 
C:\rollback.txt 
C:\firmware.bin
具体的操作方法,请参阅GitHub存储库中的cam_fw/out/README.md。
AMBA A12芯片组会接受一些命令,包括看起来类似于RTOS USB Shell的命令。 www.wnhack.com
无人机固件和控制器固件没有这种方式。无人机固件是没有文件节的bin文件,远程控制器固件是bfu文件。
如果无人机可以在离线航点上飞行,那将会是很有趣的一件事情。连接WiFi嗅探器会变得更加轻松。
我订购了这架无人机,但它不会很快就到货,因为这只是一个预购。
请继续关注本系列文章的第2部分!
内容来自无奈安全网

 。 (责任编辑:wnhack)
【声明】:无奈人生安全网(http://www.wnhack.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱472701013@qq.com,我们会在最短的时间内进行处理。