黑客们的夏天——IoT Dev Hacking Vol.1

作者:L.A.M@Duncan SecTeam

0x00:前言

人类社会的发展史就是一部信息的发展史,从人类诞生之初的巫师、商人等职业就可以看出信息之于人类何其重要,这也是为什么美国国安局(NSA)会如此嚣张的窃取全球隐私的原因。互联网的发展加速了信息化的进程,而物联网的飞速发展再次助推了这一原本就处于高速发展态势的信息化进程。现如今,我们生活中几乎无法离开物联网(IoT)和物联网设备(IoT Dev),智能手机,智能手环(表),共享单车等等。但是,物联网发展速度实在太快,而企业愿意为此付出安全成本的意愿未必如此强烈,这就导致了发展速度与安全防护能力之间的缺口或者步调不一。正如文章标题所示,我们将会用两篇文章的内容来讨论一个在现实生活中极其常见但却难以得到有效防护的设备——查询一体机。

0x01:背景

1)什么是查询一体机?

如果你把文章看到这个位置了,你此刻脑子里应该在琢磨一事儿:这TM什么是查询一体机啊?这东西千变万化,难以言说,属于只可意会不易言传那种,那就直接上图吧,看图识物。

其实,一开始我对这玩意儿也很纳闷儿,这东西究竟咋称呼啊?将来想静下心来倒腾一下,连资料都找不到,更别提挣小编那点儿稿费了(啊这)!于是,借助万能的淘宝扫一扫,原来这东西大体叫做:查询一体机!根据自己在生活中各个行当接触到的这类查询一体机设备,我斗胆给它做个不太准确但已经立求科学的定义吧。

查询一体机:主要基于Windows和Android系统定制开发的物联网终端设备,通常为一体化设备(类似一体机和平板电脑),用于企事业单位或机构与用户之间的信息获取与反馈。碍于本人语言功底和技术水平限制,只能给出一个这样的较为笼统的定义,后面会详细给出这类设备的各种技术层面特性。

2)硬件特性

顾名思义,查询一体机这个词儿本身就定义了这类设备的特性:一体机!因此,它的技术特性注定跟传统PC有一定差距,但总的来说还是较为靠近的。

CPU:由于这类设备能干的活儿有限,大多数时候只能是充(颜)当(值)门(担)面(当),少数时候能干点正事儿,还有极少数的时候是在干傻事儿(崩溃蓝屏),因此它的“脑子”属于不太好使那种,配置一个Intel i3算是顶配了(智商上限),很多时候就是AMD的芯片(不超过4核)。当然,还有部分设备会配备高通或者联发科的芯片,主要目的还是省钱和省事儿(后面会细说)。

内存:如前所述,几乎不干什么正事儿,因此内存很少有超过4GB的,如果你碰到了可以私信我,让我开开眼,看看蜀地外面的天是啥样的。

外部存储:既然干不了什么活儿,那硬盘也只能按照最低容量需求采购了,500GB顶天,如果是SSD的话,110GB是典型配置。

网络接口:嘿嘿,这或许是这货唯一可以吊打很多PC的优势吧。考虑到现实应用环境下的布线以及维护成本等问题,这货通常有至少两张网卡,RJ-45,Wi-Fi,部分变态一点的甚至还配备了蓝牙!不过,我可以负责任的告诉你,这货消化不了那么多,一般情况只会用到一种网络接口(RJ-45)。为什么要哔哔这么多呢,一是这一点是这货唯一的优势,再者这也是这货身上最大的祸根(后面接着唠)!

显卡:集成的,别想拿这玩意儿当游戏机(master不在此范围之内)!!!

其它:SIM卡插槽(往往有多个),摄像头,打印机,RFID,钞票点收设备等等,内在不够,外设来凑,说的就是这货!

3)软件特性

先来说说系统软件。根据从网上bing到的结果来看,这类设备中70%安装的是Windows操作系统,这是版权,软件开发等诸多因素的共同作用导致的结果。再者,Android系统基本占据了剩下的30%份额,而且这一份额在逐年上涨,主要是因为Android系统的稳定性和配套设备低廉的价格。目前,还没有看到有豪横企事业单位用iOS来作为底层系统的。

在系统软件之外,最重要的就是前端服务程序,就是企事业单位找软件开发商或者个人定制化开发的、为用户提供查询服务的软件。由于底层操作系统的限制,这类服务软件大多采取一下方式实现:——定制化开发的可执行程序(.exe)——基于浏览器(IE,Edge和Chrome)的Web应用——定制化开发的APK程序

0x02:查询一体机攻击面

IoT hacking相比于传统的Web hacking而言,最有趣的地方应该就是可以看得见,甚至摸得着,当然最可悲的也是这一点,你若是看不见或者摸不着,你想要进行的101种hacking的想法全都白搭,因此买设备是最利于IoT hacking研究的,可以这些个玩意儿都死贵,死贵的,所以大家看到的IoT hacking很多都是针对灯泡,路由器,智能手表和跳蛋之类的,你见过动不动就hacking特斯拉,ATM存取款机,胰岛素泵和心脏起搏器(致敬巴纳拜·杰克)吗?为什么?IoT研究太费钱了。。。

【插播电线杆小广告】我team(Duncan SecTeam)欢迎IoT设备厂商赞助研究设备,并且保证相关研究结果绝对保密,绝对保密,绝对保密!

当然,凡事都是利弊共存的!IoT Hacking最大的好处就在于,攻击面更多而且更容易实施攻击,这主要还是得益于可研究的设备巨多,完了愿意做这个研究的人非常少(相较于Web,二进制安全而言)。废话不多说,不然小编要不爽了,都是“打工人”得相互体谅。那么,我们就接着说查询一体机存在的软硬件攻击面。

1)硬件攻击面

正如前面所说,查询一体机自身的硬件性能非常一般,但是有着丰富的外部接口和外围设备,接下来就慢慢说道说道。

——网络接口:查询一体机这类设备在出厂之前,往往都无法预测设备最终安装位置,因此对于网络接口往往都是采用“超配”,比如无线网卡,有线网卡以及蓝牙网卡全都给整上。只要是部署在局域网里头,这三种接口都能包打天下。然而,有些设备天生就不合群,喜欢“独处”,比如自动售贩机,公安的天网以及交通指示灯。这些设备往往会配备SIM卡插槽,而且会在机体外部放上最多三根外接天线。

其实,查询一体机很少会通过运营商移动网络接入自己的内部网络,因此通常是走有线或无线网络接口实现内网接入。那么,这些网络接口自然就可以成为天然的攻击面。但是,这类设备的因为应用环境的安全等级和安全意识不同,所暴露的外围接口大相径庭,比如在地铁网络中的查询终端,通常只会暴露出电源接口,确切的说是暴露的是电源线插头。像在其他一些不敏感或者运维人员安全意识较低的场所,RJ-45,USB各种接口都敞开了让你玩儿。这样就可以借助类似NSA“棉花口”之类的工具实施攻击,但是难度较大且成本也要高一些,对于一个凡胎肉体都能进入的场所估计没人会做这种尝试,当然BK份子除外。但是,如果能够获得系统管理猿权限,这些网络接口的攻击面就更大了,可以轻松改造为打通内外网的桥梁和渠道。

——电源开关/插头:如前文所说,终端设备暴露的接口与自身的安全等级是相关的,这一点大家通过日常生活中稍不留心的观察就能印证,比如银行自动取款机,你能看到接口都是银行希望暴露给你使用的接口,你回想一下看到过ATM机的电源线插头或者开关吗?在地铁站,你看到过自动售票机的开关,插头或者网线接口吗?其实,IoT设备屏蔽外部硬件接口还有另外的原因:一是,适用范围太广无法有效管控设备,因此尽可能减少暴露的外部接口;二是,这类设备特别容易遭受“重启攻击”,没错就是“重启攻击”,因为系统重启之后,从系统自举到操作系统获得控制权限,再到将控制权限交给业务系统,这个过程的安全性往往没有得到软件开发人员和运维人员的重视,黑客可以很容易打断这个控制权限交接流程,从而获得系统控制权限。

2)软件攻击面

(1)Windows系统攻击面

Windows因其先发优势以及一大帮MSDN喂出来的程序猿,因此这类查询一体机操作系统市场绝大部分份额属于“巨硬”,就想前面说的份额在70%左右。由于Windows先天就是为PC而生的,因此在查询一体机这种IoT场景下的应用就注定会有各种水土不服。

——前端应用未能实现最为彻底的全屏操作。大家都知道Windows全称是“巨硬”视窗系统,正常情况下每一个应用(不包括Service)都会对应一个窗口,哪怕是CMD下的程序。作为负责与用户进行前端交互的服务程序,如果不小心暴露了操作系统的“后庭菊花”,那么后果可想而知了。尤其是,前端程序已Administrator账户启动并运行,那么后果有多严重就无需多言。造成这种情况的原因是多方面的,比如程序猿没能禁止全局菜单弹出,没能屏蔽掉“xx杀毒”的悬浮图标。对于此种情况,攻击手段极为简单和粗暴,直接干掉前端服务程序,直取后庭之菊花,添加用户,查看路由,开启共享,远程桌面,共享热点,想怎么玩就怎么玩。

——操作系统配置缺陷,导致软件盘可被唤出。软键盘这东西在PC端的Windows上几乎不会被用到,当然这几年带触摸屏的笔记本越来越多,追个剧、聊个天的时候还是可能用到的。然而,在查询一体机这类终端上软键盘是一个几乎无法回避的安全问题,因为买卖双方都不喜欢实体键盘(银行等金融机构例外),因此用户只能通过软键盘实现输入。Windows自带的软键盘有两种:“屏幕键盘”(On-Screen Keyboard,osk.exe)和Win7之后才出现的“虚拟键盘”(TabTip,tabtip.exe)。前者是伴随着Windows NT一路成长的N朝元老,后者则是“巨硬”发力平板市场后的新起之秀。但是,他们的功能都太过强大了,比如给了Win键,Ctrl键,Alt键和Del键,这些键的组合能干啥呢,大家心里明白就行了。如果一个全屏运行的程序被唤出了这两种软键盘,而且没有对键盘的特定键进行屏蔽,那么这就给了黑客干掉前端程序,直取后庭花的机会。

当然,在一些安全级别要求相对较高的系统和应用场景下,这些软键盘都是无法唤出的,因为开发者根据应用场景设计了特定的软件盘。再者,像银行等金融机构的ATM或者业务自助设备往往都会使用实体键盘获取用户的敏感信息(密码),压根儿不给黑阔们机会啊,此处甚感下体球状物剧烈疼痛。

——前端应用缺乏足够保护,可以被非法侵入用户终止且无法自动恢复运行。这一点其实非常要命,因为我看过很多的查询一体机终端设备,只在某地铁的终端线路上看到过有进程保护,但是让我极其不解的是,为啥守护进程能被干掉却再也起不来呢?当然,如果前端应用采用一些病毒或者恶意软件才使用的“下三滥手段”是完全可以保住前端全屏应用的身子,不至于被破门而入,那么黑阔们当然没有办法唤出后台的软键盘或者沉底的任务栏。

——前端应用的权限过大,多为管理员权限运行。不知道是不是由于程序猿天生的惰性和管理猿选择性失明,这类终端设备几乎都是以Administrator身份登录,那么一旦前端应用失身,这不这个后庭菊花都暴露了吗?其实,这个并不算什么攻击面,写这里就是想知道为什么,为什么,为什么要用Administrator账户登录和运行前端业务应用,这么低级的错误咋就屡次触犯,这么明显的配置bug咋就不能改呢?或许,是因为应用场景充满了不确定性,张三李四和王二麻子都可能开关机器,为了竭尽所能的减少重启之后可能出现的故障和异常,彼此协商狼狈为奸地就这么干了。

(2)Android系统攻击面

——前端应用未能彻底全屏,直接暴露系统操作界面。虽然Android天生就是移动终端的主子,暴露后庭菊花的缺陷也是存在的。究其原因,仍旧是前端应用未能按照Google官方关于APP全屏应用的安全要求进行严格的编码和配置。当然,有不少前端应用会选择基于Chrome开发,这样的话要进行全屏运行其实更容易,在bing里面可以百度到一大把。对于这类没有充分保护好自己和系统的应用而言,只需要唤出任务栏虚拟按钮就可以解决一切问题。当然,在没有root的情况下,能够进行的攻击非常有限,往往只能将设备变成一个热点进而未攻击者提供接入内网的捷径。如果攻击者是专业的黑客或者BK份子,甚至可能借助伪装的3G\4G\5G移动热点,把整个内网给拖到互联网上。

——允许用户修改配置或开启Wi-Fi热点。很明显,如果前端应用不失身,不管设备有没有root,攻击者始终没有施展拳脚的机会。但是,其实这也是该死的程序猿没有动脑子去想的,前端程序一旦失身,任务栏被唤出,那么权限就极为重要了啊。你想想,黑阔就顺手摸了一下屏幕,就把你的前端应用干掉了,汤师爷被打死了,夫人也被别个给掳走了,热点打开了,文件被蓝牙给顺走了,你的心难道就不痛吗?

0x03:小结

IoT设备是个什么东西?嗯,管理得好,那就是个好东西;若要是管理不好嘛,那就真不是个东西。是的,我们通过前面对查询一体机这种有一定典型性的设备进行安全研究,就发现了许多问题,做一个简单的总结,也算是给下篇文章做个铺垫。

——IoT设备在给大家带来便利的同时,也引入了全新的攻击面。当然,这是符合事物发展规律的,从辩证法的角度来看,科技本就是一把双刃剑。

——大家对IoT安全(网络安全与设备安全)的认识不够。虽然,美国东海岸——美国互联网的半壁江山,曾将让200多万台IoT设备给干崩了,虽然Mirai曾经肆意嚣张、飞扬跋扈,但貌似大家仍没长记性。

——一些最基本的网络安全准备被忽视。安全圈有句老话“网络安全,三分技术,七分管理”,可是有些人就是管理不好自家的设备啊!试想一下,你在警察叔叔眼皮子底下,把他们的办证设备给黑掉了,完了还顺手帮别人把证件办了,这味道不比老坛酸菜更酸爽吗?

0x04:参考