当我写那条评论时,我指的是广义上的自动售货机——包括售票机和显而易见的食品分配机。我特意想了一个我常去的地方的售票机模型,它有以下界面:
- 键盘
- 信用卡/借记卡终端
- RFID 用于非接触式使用客户忠诚度卡,也用于员工覆盖。
- 以太网电缆插入背面。
- 前面板后面的JTAG端口(需要你解锁前面板,但它只是一个管状销锁,很容易被破解)
那么,我们如何才能拥有这样一台自动售货机呢?好吧,它有足够的接口供我们尝试……
键盘
键盘是一个有趣的向量,但它不太可能陷入任何形式的缓冲区溢出,因为实际上并没有涉及任何缓冲区。最多我们可能能够找出某种后门访问代码,让我们进入配置屏幕,但这是值得怀疑的。
信用卡/借记卡终端
我附近的那个有一个 Ingenico i3300 读卡器,它固定在机器侧面的凹槽中。我碰巧有一个(耶 eBay!)并且可以通过两种方式对其进行逆向工程:
- 攻击硬件。设备上有一个 FCC ID,我用来从工程技术办公室获取监管信息. FCC 处理排放测试和许多其他事情,作为申请的一部分,公司必须提供产品的详细文档、内部和外部照片(对我来说很好,因为我自己打开设备会触发篡改检测)和其他测试数据。从那里,我可能会发现读卡器如何检测入侵的弱点,并找到打开它并弄乱内部固件的方法。如果我搞砸了,这没什么大不了的——我可以在 eBay 上以不到 10 英镑的价格再买一个。或者,我可以移除真正的电路板并用我自己的替换它,用 XBee / 蓝牙 / 802.11x 设备传输卡信息和密码。
- 攻击软件。对此进行了大量研究(例如 PinPadPwn),并且许多设备容易受到自定义卡的缓冲区溢出的影响。可以对芯片和针卡上的芯片进行编程,以将固件模块安装到设备上,只需将它们放入设备中,就像您是普通客户一样。然后可以稍后返回并将卡号和密码下载到另一张特殊卡上。吓人吧?
射频识别
这可能是所有权的来源。它是一个双向通信端口,允许我们发送和接收数据,这些数据将由机器本身的代码直接处理,而不是单独的模块。很多 RFID 数据包含字符串和整数,因此可能会溢出。我们还可以看看从员工覆盖滑动中捕获数据,这可能会开辟从机器窃取数据的新可能性。为了真正对设备进行模糊测试,我们需要拥有自动售货机。这一次,我碰巧手头没有。拥有这么多装备的物理拥有要求确实给进入带来了障碍,但有可能得到二手。不过,离散的 RFID 嗅探器应该能够记录实时交易的数据,
以太网
当我看到以太网电缆时,我像一个脚本小子一样咯咯地笑了起来,发现了一个 SQL 注入孔。拔下其中一根电缆并插入直通设备以记录和更改进出设备的流量很简单。您可以使用 Wifi Pineapple 之类的嵌入式设备来执行此操作。它成本低,而且潜在的高收益,因为您可以从远处监控和模糊实时设备。我不知道这些数据是什么,但找出来会很有趣。
JTAG
如果你能把盖子取下来,JTAG 端口就是 pwnage 的巅峰之作。该设备可能是在 ARM 芯片上运行的嵌入式 Linux 系统,因此访问 JTAG 可以让您完全控制处理器和 RAM。您可以提取内存映像(可能包含固件)并对其进行分析,然后再返回并进行更改。如果坏人可以进入您的 JTAG,那么您就被拥有了。
那么,如何才能阻止这种攻击呢?在很大程度上你不能,但缓解是一件重要的事情。这里有一些提示:
- 请记住,您正在处理金钱,并采取安全预防措施。如果坏人可以用磁铁将其关闭,或者更改软件以避免警报,那么食品自动售货机上的小费传感器就没有用了。
- 选择长期以来没有安全问题的卡片机供应商,并为该部门的任何故障购买保险。
- 锁定通信端口,并有办法将任何以太网电缆锁定到设备中,这样它们就不能轻易更换。
- 如果您通过 TCP/IP 与外部设备通信,请使用传输安全性(例如 SSL)。
- 如果它们是联网设备,请将它们从您的内部网络中分割出来。将设备插入以太网插座非常简单。
- 让安全顾问对您的软件进行审查——尤其是在涉及 RFID 或 NFC 的情况下。
- 不要使用可以用该死的笔打败的管状销锁。使用合适的锁。
- 保持偏执。