按照软件进行分类
android设备系列:包括智能手机,智能电视,智能手表,连接云的汽车,智能导航设备
智能导航设备之智能骑行设备:
1)具有透视显示器的智能头盔(CN104956182A),由诺基亚公司研发,向用户提供变道或者转弯的视觉导航指示。
用户接近相关位置时,指示箭头开始闪烁或变色。用户直接视线中的面甲部分保持透明,以允许用户观看前方道路;直接视线以上的面甲部分设置为通知显示区域,以呈现导航信息。
2)美国Skully公司推出了一款增强现实头盔Skully AR;其内置了GPS导航系统、后视相机和显示系统,将后视图像和导航影像投射到头盔的下前方区域,避免影响用户的正常视野。
3)Senth IN1智能骑行眼镜(CN303863492S),由北京知境科技有限公司研发。
通过蓝牙与智能手机通讯,将可视图像投影在用户视野的下方;用户可以通过语音指令和头部动作实现接听电话、导航显示等功能.
4)德国FeelSpace公司也研发了一款用于骑行导航的腰带;它通过不同位置的致动器震动来提示用户行进方向
智能导航设备之步行导航设备
1)北京金锐德路科技有限公司研发了一款头戴式电子设备(CN206178150U):其添加了具有GPS功能的耳机,能够实现语音导航、测速和推荐歌曲。
用户只需说出目的地,设备即可获取当前用户位置并规划出合理路径,再对用户进行实时语音导航提示。
有趣的是:它读取使用者的实时跑步速度,并推荐合适的歌曲:比如,在跑步速度较快时,推荐节奏感很强的歌曲,跑步速度较慢时,则推荐较为舒缓的歌曲
2)艺术家Dominic Wilcox设计了一种卫星导航鞋。
这种鞋的左、右鞋头上安装有LED灯,左脚鞋头用于指示正确的移动方向,右脚鞋头用于显示当前位置距离目的地的远近。用户可在出发前设计好路线并传输至到鞋中,然后叩击双脚鞋跟开始旅程。
3)用于盲人或者视障人士的产品;它通过语音和触觉信息指引正确路线,解决了盲人无法看到图像和灯光提示的问题;
这是一款由印度Ducere公司推出的导航鞋(US2014266570A1),它通过音频和振动提示为盲人用户提供正确的路线;
4)一位英国大学生研制出了一套基于触觉设计名叫Maptic可穿戴导航设备,用于辅助视障人士独自出行。
它由装有感应器的挂坠和佩戴在左右手的手环组成,通过挂坠和手环的振动来提示转弯和避障。
5)国内也出现了一款类似的导航用盲人佩戴品(CN104748742A),它根据用户语音输入的目的地进行导航路线规划,并针对噪音环境下的应用作了进一步优化;特意设置盲文点字显示单元,来验证设备识别的目的地信息是否准确,避免导航错误。
可穿戴导航设备还有个优势在于:能够直接接触人体,利用人体感官传递信息,通过各类传感器感知人体运动数据,因而能够集成身体机能检测、健康管理等功能。
ios设备系列,主要是苹果系的产品。
嵌入式操作系统:
嵌入式linux,VxWorks,FreeRTOS,Windows XP Embedded,Windows CE,RTX,uCLinux等等,这一块跟嵌入式操作系统相关。\
非操作系统(这里特指非智能设备):
如照相机,摄影机,洗衣机,电子玩具,键盘,鼠标,摄像头,话筒等等电子设备,还包括有仪器,电子卡,SIM卡等等。
对于嵌入式系统大部分都是POSIX标准,这一块儿的入门,可以先学习linux,然后学习嵌入式操作系统移植,入门应该不难,对其进行安全研究和逆向分析和传统方式也差不多,毕竟都是基于操作系统的,学习思路很相似,只是逆向这一块儿涉及的汇编会不一样(主要是arm和MIPS)。
对于那些非操作系统类型的设备,安全研究和逆向分析相对来说要难一些,因为这些设备多半都是封闭式或者半封闭式的,基本上都需要拆开封装,分析电路板并对电路板进行测试分析。这方面入门主要以单片机学习来入门会走得更远。我们可以先学习单片机再学习嵌入式,也可以反过来,无所谓。这两个方面都需要了解硬件,只是着重点不同而已。
HOW TO DO
1.挖掘安全弱点:登录验证,弱口令,弱加密,溢出漏洞,固件更新漏洞,敏感信息泄露,不安全的访问控制,嵌入式系统遗留的漏洞等等,这方面目前主要体现在物联网上比较多,实际上是传统安全问题在新领域的复制。
2.开源硬件DIY:开源硬件资料齐全,需要一点硬件方面的知识,但主要考验动手能力和排错能力,比如树莓派(现在大量系统都主动来支持树莓派,特别是3,潜力无限),Ardurino,Atmel Xplained(PRO),CooCox开发工具,伽利略开发板等等;还有专门的机器人开源项目(DFRobot,TurtleBot等),四轴飞行器(3DR Solo,MikroKopter,Crazepony等),3D打印机(Ormerod,Mamba3D,Ultimaker等)等等。
3.固件逆向工程:逆向固件,发现固件级别的安全问题,比如华盛顿大学和加州大学圣地亚哥的研究员通过利用蓝牙固件漏洞获取到了一个汽车远程信息处理单元的远程代码执行权限。
4.固件代码植入:向固件中植入恶意程序,比如方程式组织的硬盘固件病毒,这一块儿可以作为个人兴趣安全研究,比如今年blackhat上有一个议题就是向PLC中植入病毒,大家可以关注一下。
5.固件DIY:国外很多人玩,比如把鼠标改造成扫描仪,将背光键盘改造成贪吃蛇游戏等等,后面我会将这些文章分享出来,介绍分析方法和实现原理。
6.硬件DIY:自己diy硬件,这一块需要你具备硬件方面的知识更多一些,自己设计电路图,自己焊接,需要一些手工技能,这方面该板块后续也会引入一些帖子来介绍方法。
7.破解:比如各种卡的破解等。
基本准备:
如果你之前是做渗透测试或者漏洞挖掘,那么基本可以直接测试自己身边智能路由器,智能开关,智能电视等设备,以及控制这些设备的APP.
一些基本知识:
1.熟悉嵌入式操作系统,如linux,VxWorks,FreeRTOS,RTX等,可以自己试图去编译安装这些系统,熟悉一下它们文件系统。
2.学习ARM和MIPS汇编
3.会使用一般的渗透测试工具进行测试,推荐使用Kali系统,装备齐全。
物联网的玩法简单些,无需关心硬件,传统的渗透测试和模糊测试的方法同样适用,更深入点的可以dump出固件,这些固件(嵌入式系统固件)都是以一定格式存放的嵌入式操作系统及其文件系统,只需要提取出其中关键的程序(通常是ARM和MIPS汇编的程序)进行分析来发现安全漏洞。
当然你可以挑选最简单的来玩,比如很多智能家居设备,比如智能开关,智能冰箱,智能电饭煲等等这些智能设备都会支持android和ios进行控制,你可以直接分析测试这些app是否存在一些安全问题。
底层硬件入门
我们可以拿到一个设备后动手去观察,分析,使用工具去拆解它。那么只要我们愿意去动手,愿意去使用搜索引擎查看电路板的各芯片说明,即便最后没能成功,也能学到不少东西。当然在我们做这些工作之前,还是需要做一些准备工作,我们最好还是把基础打牢固,这样很多看似很难得问题都能迎刃而解了。
1.首先最好学习一下单片机,这是你熟悉硬件的最佳途径,熟悉C语言的做单片机编程真的是非常简单,虽然我们目的不是去编程,但是编程对于我们做逆向分析和了解其运行机制非常有用。最简单的是51单片机,其次是PIC,avr,stm32,从这些编程中,你试着逆向去了解8051指令集,avr指令集以及arm指令集等等。
学习单片机更重要的是去学习与外围设备的通信,接口连线,调试方法等等。
1)外围设备包含LED灯、A/D(D/A)转换器、键盘、数码管、液晶屏、传感器、红外线、无线电、电机等等。
2)接口包含USART、RS232、PCI、SPI、I2C,USB等等
如果你了解了这些,那么基本上就有一定基础了。
当然并不是所有外设你需要完全学会,你可以在研究到相关外设时再查资料学习。你可以把精力放在逆向上,一边写代码一边逆向,了解单片机从加电复位到你自己的代码执行这个期间的过程搞明白。
如果你不学习单片机,直接进行物联网方向的安全分析也是没有问题,这方面实际只要找到了攻击面,就好入手,但是高手都是会了解得更深入才能最大限度的扩大攻击面。
2.汇编知识,实际上对于8051,avr,arm,mips这些处理器架构,大家不必要去纠结汇编问题,当你研究某一个平台时有一本参考书籍就可以了,这些都是公共平台。
3.电子电路,这一块不需要太过于深入,能够简单识别电器元件以及其功能,能够识别框图,读懂一些芯片图,引脚和接口图就可以。主要当你拆解一款设备后,你能够认识那些是控制器,那些是flash,以及找到datasheet后能够看懂芯片说明图。
4.熟悉一些工具的使用是必备的:
1)调试工具比如JTAG/SWD仿真器,OPENJTAG, 使用usb转串口工具等等,如果能够准确找到相关MCU相关的编程器的话就更好。这方面在后需要的文章中会给大家介绍,如何使用OPENOCD来进行固件调试,以及如何直接取出FLASH并且读取FLASH数据。
2)USB协议分析工具如USBPcap,Wireshark.这些工具在该设备提供升级但是你又无法进行调试时用来分析USB数据包,你可以分析升级固件程序的机制,然后使用libusb库来编写自己的固件dump工具和擦写工具。这块后续通过分析文章给大家介绍。
3)有一定基础后可以自己DIY调试仿真器,FLASH读取器等,按照自己的需求进行设计,现在国外很多爱好者都是自制的。
下面是一些资源,欢迎大家补充:
dfrobot机器人开源网站
http://wiki.dfrobot.com.cn/index.php?title=%E9%A6%96%E9%A1%B5
Crazepony开源微型四轴飞行器
www.crazepony.com
互联网在线设备搜索引擎,绝对的神器,你可以找到全世界在线的网络摄像头、路由器、信号灯、核电站等有信息漏洞的设备:
https://www.shodan.io/
芯片手册
芯片型号及其所属的内核芯片家族:
http://www.myir-tech.com/resource/450.asp
施耐德PLC以太网模块固件后门:
http://www.360doc.com/content/15/1018/18/471722_506538554.shtml#
揭秘黑客是如何黑掉三星NX300智能相机的
http://www.freebuf.com/vuls/99951.html
向硬盘固件程序嵌入代码
http://www.sosit.com.cn/de_news/de_yjxw/5949.html
openOCD+jlink调试uboot
http://blog.chinaunix.net/uid-11319766-id-3060018.html
最低成本的ARM调试解决方案
http://blog.csdn.net/enbiting/article/details/7190794
libusb库官网:
http://www.libusb.org/wiki/libusb-win32#Installation
USBpcap,Wireshark,usb协议分析必备
http://desowin.org/usbpcap/
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8503
通用usb驱动libusb介绍和使用示例
http://www.cnblogs.com/image-eye/archive/2011/08/30/2159897.html
常见基站定位/基站数据查询网站
http://www.cellid.cn/
https://www.juhe.cn/d/cellmap/gsm.php
http://www.jizhanyun.com
Kautilya是一个给人机接口设备提供各种payload的工具包,比如可以烧录给teensy,它可以帮助人们进行渗透测试。
https://github.com/samratashok/Kautilya
劫持无线鼠标项目
https://github.com/RFStorm/mousejack
ZigBee(无线通信)安全研究工具包
https://github.com/RFStorm/killerbee
物联网安全:LED灯中存在多个安全漏洞
https://blog.viktorstanchev.com/2015/12/20/the-many-attacks-on-zengge-wifi-lightbulbs/
汽车黑客揭秘:我是如何通过逆向API接口黑掉宝马i3的
https://shkspr.mobi/blog/2015/11/reverse-engineering-the-bmw-i3-api/
https://github.com/edent/BMW-i-Remote/