|
智能硬件目前玩的人相对付玩PC、服务器和移动的人来讲要少不少。过去,大部门研究这块的人都是电子行业相关人士,可是目前物联网的流行,使得不少黑客和平安研究人员进入该领域,使得该领域产物平安问题频发。物联网的成长让虚拟网络与现实糊口慎密的关联起来,一旦产生平安问题,遭受黑客进犯势必对人们的现实糊口情况发生紧张的影响和危害,甚至危及到人身平安和生命平安,如车联网的平安问题等等。物联网已然成为将来互联网成长的趋势,那么物联网平安同样也是平安行业成长必不成少一个重要标的目的。
对付不少未涉足该领域的人,格外是之前从事计较机行业的人来讲,感受这个领域太广,涉及处置器架构也比力多,嵌入式操纵系统和非操纵系统的也很多,感受会无从下手,那么本文主要目的就是引导新人入门或者者给想要转入该标的目的的朋友们一个学习参考。固然我小我精神也是有限的,也只能涉足少量的一些标的目的,目前我也只是以某一方面的学习路线来引导大师尽快入门。对付平安来讲,这个领域还比力新,有太多的工具必要学习,后续我会把一些好的技能文章发到该板块,和大师一起讨论学习。 一、什么是智能硬件 首先我们要明白智能硬件是什么,明确了观点,才气定位标的目的,不至于无从着手。智能硬件实际上是智能手机观点的进级,也就是把传统的设备进行进级改革使其具备某种智能,好比电视、冰箱、空调、手表、门锁、茶杯、医疗仪器、玩具、机械人、汽车甚至房子等等。因此智能硬件这块标的目的比力宽泛,涉及的领域比力广,与此相关的行业也很是很是的多。其实不像PC平台那样,我们只必要关心某一类处置器架构,甚至只必要关心某一个操纵系统平台就能够。但若要彻底列出智能硬件这块的知识架构,可能得写本书也无法列举彻底。我们每小我精神是有限的,也不克不及每一个领域都去涉足,因而我们只必要关心某一个领域或者者标的目的便可。 二、按软件进行分类 凭据设备使用的软件系统的分歧,我把这些智能硬件分为如下四类: 1.android设备系列,包括智能手机,智能电视,智能手表,毗连云的汽车,智能导航设备等等。 2.ios设备系列,主要是苹果系的产物。 3.嵌入式操纵系统:嵌入式linux,VxWorks,FreeRTOS,Windows XP Embedded,Windows CE,RTX,uCLinux等等,这一块跟嵌入式操纵系统相关。 4.非操纵系统(这里特指非智能设备):如照相机,开麦拉,洗衣机,电子玩具,键盘,鼠标,摄像头,发话器等等电子设备,还包含有仪器,电子卡,SIM卡等等。 前两类设备,对付熟悉android和ios的朋友应该问题不大。看雪这两个版块有不少很是好的文章,感兴趣的能够到这两个板块进行学习。这里我主要讲的是后两类设备的入门学习。这两类设备必要嵌入式开发相关的知识和单片机相关的知识作为筹备。 对付嵌入式系统大部门都是POSIX尺度,这一块儿的入门,大师能够先学习linux,然后学习嵌入式操纵系统移植,入门应该不难,对其进行平安研究和逆向阐发和传统方法也差不多,究竟?都是基于操纵系统的,学习思路很相似,只是逆向这一块儿涉及的汇编会纷歧样。 对付那些非操纵系统类型的设备,平安研究和逆向阐发相对来讲要难一些,因为这些设备多半都是封锁式或者者半封锁式的,根本上都必要拆开封装,阐发电路板并对电路板进行测试阐发。这方面入门主要以单片机学习来入门会走得更远。我们能够先学习单片机再学习嵌入式,也能够反过来,无所谓。这两个方面都必要领会硬件,只是着重点分歧罢了。 三、硬件设备怎么玩 由于硬件设备太多,嵌入式系统也很多,太多的设备会致使我们不知道该从何入手。那么首先在我们筹算学习之前,必要要弄清楚我们学习的目的是什么,我们的兴趣点是什么,弄清楚这些后我们才有具体的学习目标,这样更有助于我们入门。 目前我们的目标不是去做硬件开发,也不是做嵌入式开发,我们目的是做平安研究和逆向工程,那么我们对付硬件可做哪些呢: 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.破解:好比各类卡的破解等。 四、物联网的机会 上面介绍的第一种玩法实际上是传统平安的玩法。在物联网时代,当一些原来与网络断绝的设备被参加智能操纵系统并接入互联网时,那么传统的平安研究思想和方式又可以再一次的阐扬威力。 由于物联网的成长将大量原来漏洞百出的系统表露在网络中,而且大量从事这些工作焦点技能工程师来自于传统嵌入式工程师,平安开发的意识比力缺乏,使得不少初级平安问题泛起在物联网设备中,好比各类路由器口令后门,智能电视弱登录验证,遥控器与智能家居的明文通信或者者弱加密通信,智能开关与云的弱验证,长途溢露马脚等等,因而这些设备的平安问题跟着物联网的成长而不竭表露。因而这个领域的大量平安问题正期待着大师来察觉,这也是一个新领域的老问题,也是大师该参与的最好时机,不管怎么样,目前物联网平安漏洞是还处于一个很是容易发掘的时期。 固然在万物互联的大布景下,汽车平安、产业节制平安、POS系统平安,医疗网络平安等等都在成为大师存眷的热点问题。固然另有一些好比监控摄像头,ATM机平安,无线通信平安等等。 根本筹备: 但若你之前是做浸透测试或者者漏洞发掘,那么根本能够直接测试本身身边智能路由器,智能开关,智能电视等设备,以及节制这些设备的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读取器等,依照本身的需求进行设计,现在国外不少爱好者都是自制的。 EDA365——专注电子工程技能 EDA365(http://www.eda365.com/)平台成立于2006年,中国最大的互连设计专业论坛。EDA365整合电子产物开发所需用的设计东西、实际设计知识,以及丰硕的工程技能设计和测试案例实践等诸多方面经验,为工程师提供设计培训演练、解疑答惑、就业实习、进级求职以及设计外包等专业服务。专注电子工程师能力晋升和价值体现,是最具人气的电子工程师互动社区。 |




