首页 > 信息安全 > 正文

硬件黑客技术——扩展你渗透的攻击面

2017-11-06 09:14:26  来源:51CTO

摘要:为了充分利用待评估的硬件,您应该熟悉多种安全测试领域——基础设施、网络、移动应用程序,因为这些现代设备都为我们提供了丰富的攻击面。硬件黑客技术可以极大扩展我们的渗透能力,不仅能够带来一些新的攻击方式,同时,还能增加我们的攻击深度。
关键词: 黑客技术 硬件
  一、前言
 
  为了充分利用待评估的硬件,您应该熟悉多种安全测试领域——基础设施、网络、移动应用程序——因为这些现代设备都为我们提供了丰富的攻击面。硬件黑客技术可以极大扩展我们的渗透能力,不仅能够带来一些新的攻击方式,同时,还能增加我们的攻击深度。

\

  二、动机
 
  1. 持久性的问题
 
  目前,漏洞的“半衰期”(用户为其服务/软件中已识别的漏洞安装安全补丁所需的时间的一半)已经非常短暂了;对于托管的Web服务来说,可能只有几分钟,即使是维护可执行文件和各种服务所需的时间,也只有几个小时;就算是对于具有严格的回滚测试要求的客户来说,这个时间也只有几周而已。但是,对于硬件的安全漏洞来说,这个半衰期可能是几年时间,并且,如果开发人员不能正确使用相应的固件更新程序的话,那么这个半衰期就是直到该设备报废为止了。设备一旦安装,它就呆在那里长期运行,即使购买设备的人参加了相关的培训课程,常常也是三分钟热度,很少会记下如何更新它——当他真的需要动手更新的时候,就傻眼了。这就是硬件安全的真实写照。
 
  2. 仅得到shell还远远不够
 
  在网络上面,确实有大量的“硬件黑客技术”指南,但是它们大多停留在“...现在你连接...”的阶段,让读者自己进行相关的攻击、测试和实验。它们根本不会指出真正的风险在哪里,以及如何处置。
 
  是的,我明白(大多数)硬件黑客技术指南的价值仅限于通过UART获得设备上的r00t shell,但坦白来说,这不是一个可行的攻击向量!当您通过UART访问受害者的设备的时候,难道不会引起受害者的警觉吗?或者,为了安装和审计开发用的头文件,还得随身携带该设备吗?
 
  之前,我曾经写过一篇如何获取廉价UART的文章(大概只需要10英镑),不过,即使拥有了UART,这也只是万里长征的第一步而已!话说回来,如果能够对设备硬件进行这种低层的访问的话,许多原先无法进行的许多事情,现在也能够顺利完成了。
 
  我稍后会提供UART的详细信息,但现在我只想解释一下,在安全人员的眼里,“硬件黑客技术”到底是什么意思,以及为什么该技术是有用的。
 
  三、什么是硬件黑客技术
 
  首先,我们来聊聊“硬件黑客技术”到底啥意思。这是一个非常宽泛的话题——它涵盖了电路改装、回收再利用技术、破坏游戏机上的DRM、访问内置于产品PCB中的IC的调试功能,设计并获得了一个arduino/RasPi/(通用微控制器)来完成手头项目中的某项任务、访问/写入受保护的ROM区域、逆向没有公开的数据表的IC,等等。
 
  由于硬件黑客技术是一个很广的话题,所以我不想陷入定义的泥潭——这些都可以称之为“黑客技术”。
 
  对于我来说,作为一名渗透测试人员和安全研究人员,硬件黑客就是从攻击者的角度分析IoT/硬件,以期找到恶意利用系统的途径。所以,我对“如果我可以使用芯片访问调试/终端界面的话,我会做些什么?”的回答是,使用这种深层次的权限来测试系统的弱点和安全漏洞。这就是我的兴趣之所在,并且一开始就明确表示过了。
 
  因此,以下是我面对设备会想到的各种问题:
 
  1.除了(产品说明书中)的功能之外,我还能做什么?
 
  2.我真的拿微控制器来控制灯光吗?
 
  3.我有固件控制的收音机可以回收利用吗?
 
  4.如果硬件具有许多高级功能,并且这些功能已经超出你的任务所需,那么是否可以将其用于其他方面吗?
 
  5.我可以把它变成一个恶意敲诈设备吗?例如用来完成窃听、录像、泄露敏感的用户数据或个人身份信息(PII)等。
 
  我可以从硬件中获得其所有者的相关数据吗?例如PII、用户名、密码、2FA密钥、密码私钥等。
 
  我可以把设备变为僵尸网络/BTC矿机吗?这是利用黑掉的设备赚钱的最简单的方法——让它们将挖到的BTC发到自己的钱包,或将其添加到僵尸网络,然后出售DDoS服务。
 
  还能想到通过这个设备和其他设备来受益的其他恶意活动吗?
 
  四、一些攻击场景和常见的漏洞
 
  假设你是一名渗透测试人员,在测试的过程中需要黑掉一部设备——那么,现在该怎么办?事实上,从安全角度来看,与硬件黑客有关的攻击对象和攻击手法有很多,特别是:
 
  1. 过时的软件
 
  对于物联网来说,供应链是一个重大的问题。英国最近的一次大规模的黑客攻击表明,设备的通用底层软件中存在许多严重的安全漏洞。但这些缺陷到底是怎么来的?在某种程度上,这是一个供应链问题。
 
  这里的软件通常(不正确地)指的是ZyXEL(Allegrosoft为嵌入式系统制造的软件),包括非常受欢迎的RomPager服务器软件。很明显,在这次黑客攻击之后,人们才发现这个软件存在安全问题。不过据消息人士透露,Allegro早在2005年就修复了这个漏洞,根据checkpoint披露的“misfortune cookie”漏洞来看,它们在本质上是相似的。
 
  那么,究竟是什么地方出了问题?嗯,像任何其他公司一样,Allegro公司也是要赚钱的,所以他们直接向IC厂商出售其软件。反过来,这些制造商开发出一款芯片后,会随芯片销售/赠送一套相应的SDK,这样公司就能迅速将产品推向市场。所以,问题就出在制造商从未进行升级,所以产品设计师也从未升级过,但是年复一年,这些这些设备一直在生产、销售和应用中——所以这个漏洞从2005年开始就存在了,直到2017年攻击事件发生才引起人们的注意,所以问题主要出在供应链的延迟线效应上面。
 
  有时候,您会见到一些从未听说过的网络服务器(因为早在2003年它们就已经停产了,如D-Link的Boa webserver),而且有些DNS服务器比您内衣品牌的历史都要悠久,许多内核版本都是属于博物馆级别的,更不要说它们正在运行的busybox的版本了。
 
  2. Wi-Fi之痛
 
  在已经发现的攻击中,许多都是针对商业Wi-Fi环境的。但从这点来看,你从少年时起的Wi-Fi经验倒是没有浪费。
 
  3. 远程命令执行(RCE)
 
  许多情况下,您可以通过互联网发送命令,并在本地设备上以r00t身份来运行各种命令。这显然是非常糟糕的——这种漏洞是许多攻击的源头。许多设备也通过BASH脚本运行所有的东西(甚至网页),因为可以省去PHP服务的开销。不过,这样做也会带来安全方面的风险:通过注入RCE字符串,攻击者就可能从管理设备的Web应用程序的某处找到某些有用的东西。
 
  4. 远程执行代码
 
  同样,攻击者可以连接外部设备公开的一些的服务,并向其发送精心构造的payload,以便利用其BOF、格式化字符串漏洞等发动攻击。此外,对于这些服务来说,只需通过类似shodan这样的搜索引擎就可以轻松将其找出。
 
  5. 跨站请求伪造(CSRF)
 
  CSRF漏洞可以在用户的浏览器中连接用于管理设备的基于Web的apps/API(这些apps/API几乎无处不在),然后执行RCE或直接修改设置——这是在基于固件的设备上的一种常见漏洞。为了缓解这种攻击,需要进行CSRF-Token检查,不过完成该项检查需要大量代码,这对于固件芯片来说代价太大了(别忘了,大多数固件芯片的最大存储空间为16Mb)。所以,这个漏洞将来还会非常常见。
 
  6. 跨站脚本攻击(XSS)
 
  XSS也是一种糟糕的漏洞,如果能够利用存储式或反射式XSS攻陷设备的话,用户的浏览器以及设备就会随之沦陷。关于XSS的危害,这里就不多做介绍了,因为网上随处可见!并且这种漏洞本身,也是非常常见的!
 
  7. 文件上传
 
  各种设备上不仅有噩梦般的CSRF漏洞,并且几乎所有的文件解析也很糟糕;如果新的上市设备提供了文件上传功能的话,那么它很可能含有与本地文件包含、目录遍历有关的漏洞,或含有可以直接黑掉它的漏洞(曾经见到过这样的设备,它允许攻击者以root身份将文件直接解压缩到/目录,包括恶意的/ bin / evil-ELF文件)。
 
  8. 基于XML/SOAP的攻击
 
  越来越多的设备正在使用基于移动设备的Android/iOS应用进行设备管理。这些设备虽然听起来很酷,不过,由于开放了基于SOAP/XML/JSON的API来与应用程序通信(很少实现任何身份验证),因此诸如UPnP攻击、枚举、TR069之类的攻击也会随之而来了。
 
  9. 认证/会话管理问题
 
  默认登陆凭证无处不在! 并且,在许多使用了某些嵌入式平台的设备上面,类似admin:admin这样可笑的用户名和密码也很常见。更可笑的是,大多数用户甚至可以将密码更改为这些设备名(许多人已经不再使用这些设备——请参阅“云”),因此这也值得注意。同时,验证信息(用户名/电子邮件)枚举攻击也很猖獗,此外还有身份验证绕过漏洞——我记得在一个设备上进行测试时,只需要有一个有效的cookie(您可以通过猜测或暴力方式获取)就可以绕过用户名/密码认证。
 
  10. 信息泄露
 
  如果用户的大部分数据都经由某设备(如客户终端设备),万一该设备存在漏洞的话,那么这些数据也会处于风险之中。并且,这些设备还可以为进一步的恶意活动做好准备(转储CC数据,通过网络摄像头查看家里是否有人等)。不要忘了,客户终端一旦沦陷,在上面设置恶意的DNS服务器是非常非常简单的事情——但是,大多数用户(甚至技术精湛的IT人员)是不会注意到这个方面的,从来都不会。
 
  此外,如果设备提供其管辖范围下的服务(SIP/VOIP,FemtoCell或IPTV接入)的访问权限的话,则这些设备上的内部机制一旦公开,就会外泄用于加密的私钥、通用共享密钥或凭证(通常是未加密/未经哈希处理的)、认证和加密访问证书、DRM信息和访问方法,等等。
 
  11. “云端”
 
  除了所有上面介绍的问题(它可能比其他地方处理得更好)外,云服务还面临另一个问题。在这种一夜未眠直到凌晨四点写完,并赶在西弗吉尼亚州最后一个公民投票给民主党时完成更新(与美国有关的笑话......我多么国际化)的混乱情况下,引进现代化的时髦服务也是一件非常糟糕的事情。
 
  我可以说的是,即使用户从地球的另一边(通过互联网)修改了他们的路由器上的防火墙设置,但无法阻止厂商努力“解决”人们未知的问题,从而引入更多的问题。
 
  五、硬件方面的问题
 
  还有一些与硬件设备本身有关的具体问题:
 
  1. 更多的供应链困扰
 
  例如,U-Boot就不支持安全引导。早在2005年的时候,ARM处理器就开始支持安全引导模式了,但是直到现有,最常见的引导加载程序也不支持安全引导。这意味着您的引导程序可能无法检查固件是否是恶意的。因此,如果与CSRF漏洞相结合的话,你可以上传一个恶意的固件文件(这一点我会专门写一篇文章加以介绍)。
 
  我们知道,ARM是在许可证模式下销售的,因此许多最便宜的芯片使用的都是旧芯片的设计许可证。所以这个问题跟之前的完全相同——Jazelle模式是一种历史悠久的ARM exec模式,它支持本机Java字节码执行(是的,你没看错)。后来,它被ARMv7中称为“ThumbEE”的新模式所“替换”,但是在全球范围内,您仍然可以看到数十万颗支持Jazelle的芯片。
 
  2. 开发用的头文件
 
  这个问题从一开始就是显而易见的,之所以悬而未决,是因为制作确保“消费者安全”的电路板的成本是非常高昂的。原型设计本身可能就需要几周的时间,而如果再加上创建PCB布局的“安全”版本的耗时,那整体时间就要翻倍了,因此,大多数项目经理都会以成本为由搁置这样的想法。
 
  此外,如果从开发板到生产板只是“省略”了一个连接电阻的话,也算不上欺骗任何人...
 
  3. Bootlog神谕
 
  Bootlog简直是太棒了,其内容之丰富,从便利贴式的注释,到作为默认Wi-Fi密码的MAC地址,应有尽有。它不仅会告诉我们处理器的版本、芯片ID(它们通常被散热器覆盖)、内核版本、精确的软件版本,同时还会告诉我们在/at/on中运行的代码的所有模式。我将来会对bootlog做一些详细的解释,以说明其工作机制。
 
  六、看一个简单的实例
 
  我们来看一个简单的例子——许多CPE(消费者设备,对于家用设备来说,包括路由器、机顶盒、无线中继器等)都使用一些基于Linux的操作系统。假设我们已经在该类设备上连接了一个UART shell。
 
  假设我们知道用于管理设备的Web应用程序的参数列表(借助于Burp Suite的话,这并非难事),并且有一个python脚本,可以用来遍历它们并注入一个自定义的payload(这很难吗?你可以用google搜啊)——那么,接下来呢?
 
  现在,我们可以使用这个payload:

\

  它是做什么的?实际上,它会将短语“PWNED!”打印到串行端口(虽然该端口并非总是/dev/ttyS0,但对于Allegrosoft RomPager-esque固件来说通常如此)。也许还应该添加一个计数器,以便让它打印“PWNED! 1”,“PWNED! 2”等等,并打印到屏幕上,从而指出将其输出到哪里了。
 
  去吃午饭吧。
 
  吃完午饭后,你(也许)会从串口发现一些美味的漏洞——有BASH脚本远程命令执行(RCE)漏洞的任何东西都会向串口打印输出PWNED! X。你刚才发现了一个严重的漏洞。
 
  七、那么下一步呢?
 
  我想知道的是,如果该RCE具有CSRF能力的话,您多久才能将这个“相邻网络RCE”变成“互联网RCE”。果真如此的话,那么可以将其嵌入到一个javascript payload中,并利用一个非常简单的javascript代码来启动它。
 
  八、那么,接下来怎么办?
 
  从我的角度来看,不停的追问,正是从事硬件黑客的乐趣所在。更多精彩内容,敬请期待。
 


第三十八届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:lixiaojiao

免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。