- 积分
- -15
- 下载分
- 分
- 威望
- 点
- 原创币
- 点
- 下载
- 次
- 上传
- 次
- 注册时间
- 2017-10-31
- 精华
|
2#
发表于 2018-5-13 22:17:12
|
只看该作者
来自: LAN 来自 LAN
媒体总是喜欢搞个大新闻……其实对业内人士来说,所谓的 “新闻” 很多都是炒冷饭。
向硬盘控制器植入木马的技术早在 OHM 2013 安全会议上就公开了(Hard disk more than block device),见作者主页 Sprites mods
这个作者的厉害之处是在没有文档的情况下通过 JTAG 调试和反汇编,搞清楚了磁盘控制器的内部结构,并在磁盘控制器里实现了钩子监听并替换文件内容。该 POC 具体做的事情就是把 /etc/shadow 中的 root 密码进行替换,当然真正的木马可以做得更隐蔽。对于政府机构来说,拿到硬盘控制器的 datasheet 大概不是什么难事。当然报道中提到的木马 “兼容” 多种型号的硬盘,肯定是下了不少苦功夫的。
硬盘控制器被植入木马后要 “潜伏” 在重装后的系统中,一种方案是篡改系统引导代码,比如经典的 MBR 病毒,Windows Vista 开始的 Secure Boot 就是应对这个的方案;另一种方案是待系统启动后择机触发,篡改系统的关键文件(Hard disk more than block device 的 POC 就是这种方案),应对方案主要包括程序签名和全盘加密。
一、Secure Boot 是对系统的内核进行数字签名,以防系统引导代码被篡改。目前的电脑已经普及了 UEFI。当然这里面有两个漏洞:
数字签名需要信任颁发数字签名的机构。微软把它的证书颁发业务外包给 Verisign,而 Verisign 对 Secure Boot 证书颁发的条件是非常严格的,可以认为一般的木马作者不可能拿到签名,但政府机构就不好说了。 Microsoft UEFI CA Signing policy updates微软为了避免垄断之嫌,要求所有支持 Secure Boot 的主板厂商允许用户关掉 Secure Boot 或者向固件添加新的 Platform Key(类似添加 root certificate)。向固件添加自签名的 key 教程在此 booting a self-signed Linux kernel 或者这个 Owning your Windows 8 UEFI Platform 就像添加 12306 等国内 CA 的根证书会增加安全隐患,向固件添加新的 Platform Key 也是安全隐患。
二、程序签名。就是对每个需要以较高权限执行的可执行文件进行数字签名,并附加在文件上;可执行文件被加载时,检查数字签名,签名不符则拒绝运行。Windows 从 Vista 开始强制驱动程序经过签名。QQ 之类的软件为了防篡改,也有自己检查文件完整性的机制。这里面主要有两个问题:
数据文件不方便进行签名。如果每次对数据文件进行修改后都重新计算整个文件的签名,会严重影响系统的性能。(一种折中的方法是对大文件分块签名,不过还不如直接用全盘加密)例如,硬盘木马可以篡改 Linux /etc 下的配置文件或 Windows 注册表,只要使用字符串等长替换,就不会被操作系统发现。Windows 的程序签名证书并不难搞到。比如 StartSSL 的 Class 2 认证(60 刀)就可以签名可执行文件,而 EV 认证(200 刀)就可以签名内核驱动。http://www.startssl.com/?app=40
三、全盘加密。全盘加密一般是为了防止硬盘被窃取后数据泄露,对数据安全重视的公司一般会要求员工的工作电脑全盘加密,保存有敏感数据的服务器一般也会全盘加密。
全盘加密可以实现在软件里,也可以实现在硬件里。传统的是用软件,也就是在操作系统的文件系统层和块设备层之间添加一层加密。磁盘控制器看到的就是加密的数据流,无法对数据进行有意义的篡改,也就是无法在系统启动后进行除拒绝服务外的攻击。
对软件全盘加密来说,密钥是一定要在内存中的,如果木马入侵时已经获得了足够的权限,就可能从内存中截取全盘加密的密钥并写入硬盘控制器中的木马程序。为了防止从内存中截取密钥,操作系统可以采用包括地址空间随机化(ASLR)、驱动程序要求签名(即使木马获得了管理员权限也无法入侵内核地址空间)等应对机制。
越来越多的硬盘厂商提供了硬件加速的全盘加密方案,也就是把加密和解密放到了磁盘控制器里。这样密钥可以不出现在内存中,入侵操作系统的木马就不能轻易获取密钥了。不过,磁盘控制器还是洞悉一切,可以为所欲为。
不管怎么说,Secure Boot 和全盘加密两项技术极大地提高了 “硬件木马” 的门槛。 |
|