Archive for the ‘技术开发’ Category.

IoT Security Technical Papers

分享几个Paper
1.An Overview of Vulnerabilities of Voice Controlled System;Yuan Gong and Christian Poellabauer
2.hijacking Vulnerabilities in IoT Firmware: A Brief Survey Abhinav Mohanty, Islam Obaidat, Fadi Yilmaz and Meera Sridhar.
3.Cognitive Enhancement as an Attack Surface Daniel Sanchez and Bogdan Copos.
4.SDN network Honeypot: Preemptively Disrupt and Mislead Attacks in IoT Network;Hui Lin.
5.Hey, You, Keep away from My Device: Remotely Implanting a Virus Expeller to Defeat Mirai on IoT Devices.;Chen Cao, Le Guan, Peng Liu, Neng Gao, Jingqiang Lin and Ji Xiang.
6.Butterfly Effect: Causality from Chaos in the IoT Ioannis Agadakos, Gabriela Ciocarlie, Bogdan Copos, Tancrede Lepoint, Ulf Lindqvist and Michael Locasto.
7.Toward an Extensible Framework for Redaction Soteris Demetriou,Nathaniel D. Kaufman, Jonah Baim, Adam J. Goldsher and Carl A.Gunter.
8.Implicit Authentication in Wearables Using Multiple Biometrics Sudip Vhaduri and Christian Poellabauer.
9.A Multinational Legal Examination of Individual Security Risks Related to the Internet of Things Andrew Weyl and George Williamson.
10.A Comparison of Data Streaming Frameworks for Anomaly Detection in Embedded Systems;Giovani Gracioli, Murray Dunne and Sebastian Fischmeister.
11.A secure IoT architecture for streaming data analysis and anomaly detection Safa Boudabous, Stephan Clémençon, Ons Jelassi and Mariona Caros Roca.
12.Anomaly-based Intrusion Detection of IoT Device Sensor Data using Provenance Graphs Ebelechukwu Nwafor, Andre Campbell and Gedare Bloom.
13.SIOTOME: An Edge-ISP Collaborative Architecture for IoT Security Hamed Haddadi, Vassilis Christophides, Renata Cruz Teixeira, Kenjiro Cho, Shigeya Suzuki and Adrian Perrig.

无线电领域

物联网通信协议MQTT通信过程

MQTT,目前物联网的最主要的协议,基本所有收费的云平台都是基于MQTT协议,比如机智云,和所有的开放云平台比如中国移动的oneNet、百度的云平台也都支持MQTT的接入。虽然MQTT很火,但是目前对MQTT的很少,尤其是在如何移植到嵌入式上来。大部分的平台商的做法都是跟模块商合作把MQTT协议集成到WiFi模块跟GPRS模块里面,捆绑一销售,不让用户过多的了解物联网最核心的东西。

在还没有深入去了解MQTT协议之前,总以为是非常复杂的东西,毕竟之前一直想深入,但无奈在浩淼的网络里居然找不到太多实质的资料。随时自己对物联网的不断探索,越来越了解整个物联网的架构,对MQTT了解越来越深入。在这篇文章中将带大家先了解MQTT的协议,在后面的文章,再带大家怎么移植MQTT到STM32上,再到怎么搭建自己的MQTT服务器。

MQTT的基础知识这些大家通过百度知道都可以了解到,这里主要深入去剖析MQTT协议的整个通信流程。但是如果只是看文字话,大家很难理解。因此我们借助Windows下的MQTT客户端MQTT.fx跟网络抓包工具Wireshark来一步步分析MQTT。

名字 流向 描述
CONNECT 1 C->S 客户端请求与服务端建立连接
CONNACK 2 S->C 服务端确认连接建立
PUBLISH 3 CóS 发布消息
PUBACK 4 CóS 收到发布消息确认
PUBREC 5 CóS 发布消息收到
PUBREL 6 CóS 发布消息释放
PUBCOMP 7 CóS 发布消息完成
SUBSCRIBE 8 C->S 订阅请求
SUBACK 9 S->C 订阅确认
UNSUBSCRIBE 10 C->S 取消订阅
UNSUBACK 11 S->C 取消订阅确认
PING 12 C->S 客户端发送PING(连接保活)命令
PINGRSP 13 S->C PING命令回复
DISCONNECT 14 C->S 断开连接

上面是MQTT的主要的通信协议,MQTT是基于TCP长连接,首先是先跟MQTT服务器建立TCP连接,然后发送登录请求,要保持长连接,还要定时发心跳包跟服务保持连接。我们先用MQTT.fx来登录开源的MQTT服务看看。

 

安装好MQTT.fx(注意MQTT.fx是java开发的,电脑要安装JDK才能安装打开),一打开里面就默认有一个开源的MQTT服务M2M Eclipse。点开旁边的齿轮(设置按钮)可以看服务器的域名m2m.eclipse.org,端口号1833(MQTT的默认端口号),下面还有个Keep Alive Interval就是心跳的时间。再打开Wireshark,选择要捕获的网络接口,然后再过滤器输入tcp.port==1883后回车,只捕获1883这个端口号的数据包。再点下MQTT.fx的Connect连接服务器,就可以看到Wireshark捕到的数据

可以看到MQTT协议中本地给服务器发送了一个Connect登录请求,然后,服务器回应一个ACK,表示登录成功。再双击Connect Command这条数据包,我们可以看到详细的数据包数据

 

 

上面的解析出来的MQTT协议包的内部,下面是对应的二进制数据,这里我们可以对照附件上资料去了解协议的内容。看这里,大家想是不是如果自己用TCP,再封装发送下面的二进制数据就可以完成MQTT的登录了呢?拿出网络调试助手来,ping下m2m.eclipse.org得到IP地址,用端口号1883连接,然后发送Wireshark捕到的MQTT登录协议的二进制数据,可以看到到服务器回应了 20 02 00 00 表示登录成功。

 

再往下Wireshark捕到的数据包,可以看到每隔一定的时间,本地向服务器发送Ping Request心跳包,相应的服务器也会回应Ping Response。

 

接下来看MQTT最核心的传输协议 Subcribe(定阅)和Publish(推送)。简单来说就是客户端口(比如物联网硬件)Subcribe一个topic(主题)后,其它的客户端(比如手机)向服务器往这个topic 推送 Payload(有效数据),服务器就会把Payload转发给定阅这个topic的客户端(硬件)。

这样就实现了客户端(手机)通过服务器(MQTT)远程发送数据给客户端(物联网硬件)。一样用MQTT.fx来实验。先点Subscribe然后面下面输入led再点旁边的Subscribe按钮来定阅led这个topic。然后回到Publish,一样在输入框输入led这个topic,下面大框就是输入要推送的数据,输入on,再点Publish按钮,就把数据推送出去了。再回到Subcribe界面来可以看到右边已经收到有推送过来的数据。如果这是硬件收到这个指令,就可以去控制点亮LED,我们就实现远程控制LED灯。

 

想深入了解MQTT这一个过程的话,我们再回到Wireshark,来看看捕获到的数据

 

 

具体的就不详细的分析了,大家看附件的文档来对照就可以很容易了解到。

最后来了解下QoS(定阅等级),分0、1、2三个等级,简单来说是等级越高越可靠。QoS0,就是推送之后就完事了,至于对方有没有收到,收到是什么,数据有没有丢失,都不管。

QoS1的话就是你收到推送后,你还得返回一个puback给对方,告诉对方收到了,不然对方会以为你没收到,隔一段时间后重新给你推送,直到你给对方返回一个Puback为止。

 

 

    好了,基本的就写到这,剩下的大家可以根据这个方法对照文档去消化MQTT。

Cuckoo 的一些注意地方

Cuckoo 有些地方还是需要注意的,比如M2Crypto库德版本不能过高。

用xen或者qemu,增加syscall功能,压缩包解压.后期android 也加进来

不过沙箱的一个坏处就是样本能正常跑出30%就已经谢天谢地了。 大部分还是依赖的库等文件比较多的。

接下来把办公网的灰色部分跑起来。

关于IoT设备安全方面

957413e9603e4fe0869334c4f343c7a2_th

前两天看了一个报道(http://securityaffairs.co/wordpress/51726/cyber-crime/ovh-hit-botnet-iot.html),标题是15000多个CCTV(闭路摄像头)发起的接近1TB的DDOS攻击,创新高~

可以想象一下为什么会有这么选用CCTV来攻击其实不难看出,摄像头流畅工作需要比较好的带宽下才可以流畅的传播高清视频的需求,所以使用的带宽和稳定性比其它物联网设备要高很多。这也是为什么

黑客选用CCTV的原因也是在这。 那么入侵CCTV的主要是DRV系统,DRV的架构大部分是X86的linux系统,因为该系统可以控制数个摄像头的管理和调度以及控制摄像头操作的命令。

物联网设备被入侵主要是几方面,第一是控制该IoT设备的管理端出问题,第二是该设备固件中的二进制文件出问题,其中包含没有对设备加固以及各种调试接口(固件提取出来进行逆向工程,提取arm或者mips二进制文件)
,IOT升级链路,以及控制该设备的应用程序(APP)等等。

那么我们一步一步来~

第一,屏蔽没有使用的调试接口
如果不是特别的需求的话尽量关闭JTAG接口,关闭console端口或者加密码保护功能。如果不这样做的话攻击者会dump设备的固件后,进行逆向工程,发现安全漏洞,甚至植入修改后的固件刷进设备。

第二,保护设备的Bootloader
如果我们把设备必须成一个汽车的话固件部分可以理解汽车引擎,bootloader认为是启动器。他是设备启动时候让固件运行的程序。攻击者很容易从没有保护的bootloader中提取固件文件。
一旦攻击者有权访问固件,就可以绕过所有其他保护机制。

第三,关注固件更新机制
设备的更新部分在安全领域和合规性领域其实占用着比较大的地位,升级这块其实很重要,升级有几种办法,OTA升级,固件下载下来手动升级等等。其中链路上劫持,修改固件包都是问题,还有
固件不愿意公开的厂商,还得应对全量升级还是差分升级,固件需要校验,升级协议加密,升级固件文件加密等等情况。

第四,监控IoT设备状态
监控该设备触发的安全事件,监测设备配置错误或其他操作等问题,比如监控CCTV一样,别人入侵了你都不知道被入侵了。

第五,安全教育研发人员
物联网嵌入式设备跟传统的网络威胁很大的不同,把这一点问题让所有开发人员都得到理解和培训,从硬件设计和固件开发角度将业务使用高级语言编写程序如PHP,Python和Perl等等。
让大家意识到攻击向量中涉及到的每个人都非常重要,,你很可能是“恐怖谷理论”(http://baike.baidu.com/item/恐怖谷理论)中给攻击者者创造了攻击的条件。

第六,编码安全以及环节措施
在编码过程当中验证输入过滤以及使用安全的第三方类库,尽量使用一些系统级别的环节措施,市面上有很多类似这样现成的技术可以引用,如stack cookies, ASLR, smarter compilers 以及其他高级环节措施。

koplor1zvsmfe-3mpqij2a%3d%3d%2f7916881743199796707