慎重扫码,别因小失大!

阅读 473  ·  发布日期 2015-10-28 10:17:06  ·  伊索科技

现在的街面上很多扫码的礼品的活动,可是码是能随便扫的吗?此处的风险巨大,你可曾了解过?

昨天于旸在 GeekPwn 演讲中展示了它的危险性。如果你没有听说过于旸,也许对他另一个名字更熟悉——「TK 教主」——来自他用的 ID「Tombkeeper」,这是一个在安全行业如雷贯耳的名字。去年他加入腾讯,组建了玄武实验室,开展多项面向未来的安全技术研究。

他们研究条码后发现,利用一张印有条码的纸就能攻破一台计算机。

条形码 二维码 扫描条形码

(于旸,腾讯玄武实验室负责人,他在 GeekPwn 大会上展示了条码的危险性。)

下面的内容在于旸演讲的基础上编辑而成。

条码:一种机器可读的数据表示形式

条码的历史非常长,早在上世纪 40 年代末就有人想到条码这个主意并开始实验。它的原理很简单:使用某种协议将信息编成图像,用条码阅读器或手机获取图像,将图像交给芯片,把图像解码转换成信息,最后传输到电脑。

它的应用无处不在:超市收银时扫描包装袋上的条码获取价格;医院扫描病历上的条码读取病人信息;商家扫描微信支付条码收款…… 

这些条码大多是一维码,另一种条码是随着微信普及而重获新生的二维码(它还有个名字叫 QR Code)。条码使用的协议非常多,有一种协议叫 Code 128, 这是一个非常有野心的协议,它支持全部 ASCII 字符。ASCII 是二进制对应的字符,现代计算机使用这套字符编写代码。它对于计算机编程而言相当于拉丁字母之于各种西方语言。总之,用它能编写代码控制计算机。

市面上的大部分条码阅读器都支持这种协议,这意味着黑客可以编写一段程序,转化成条码,通过条码阅读器传输到计算机上。

这些代码怎么才能管用?绝大多数情况下,条码阅读器通过 USB 接口接入计算机,对计算机而言这就是一个输入设备,计算机只捕捉它们发过来的信号,从哪儿发过来对电脑来说是一样,如果它发送通常由键盘发送过来的信号,计算机也会一样执行。

如果你将键盘种的热键,比如 CTRL+2, CTRL+O 等编成条码,通过条码扫描器输入计算机,便能直接控制计算机。Code 128 协议不支持 Win+R 这种热键,但最大的条码阅读器厂商 Symbol 公司还有一种特有的技术叫 ADF,它支持 Win+。这样控制的内容就更广了,能直接调出计算机的命令窗口。

以前的攻击方式

以前有过一个研究,将条码作为一笔输入源看待,能通过条码触发计算机内存的溢出,或触发格式化字符串,还能 SQL 注入等。

还有一种更简单的攻击方式,大部分应用场景下,条码种的数字都是按照序号排列的,比如你去商店买个东西,商家给你一个条码