自动售货机如何被黑客入侵?我该如何预防呢?

信息安全 攻击 身体的 缓冲区溢出
2021-08-16 12:35:13

我正在开发自动售货机,并希望使其安全。

在对我之前的问题的评论中,@Polynomial 说“自动售货机(和类似设备)通常可以通过各种易于访问的接口上的缓冲区溢出来获取。”

  1. 我认为缓冲区溢出是用户输入的结果,我当然不打算在我的自动售货机中放任何东西(当然,现金和选择自动售货机的键盘,但除此之外......我会更新固件和来自 SD 卡上文件的定价数据,但我在上一个问题中对此进行了讨论)。
  2. 我对“易于访问的接口”争论不休,因为所有接口都在一个物理上锁的柜子内,正如前面问题中所指出的,一旦门打开,就很容易拿走现金并跑掉。

但是,我坦率地承认,在这个安全问题上我完全不知道。请告知我需要注意的事项。从理论上讲,您将如何破解或以其他方式从自动售货机中偷窃?什么会给我带来最大的损失?我能做些什么来防止它?


[更新] v1.0 是一个软饮料自动售货机,但我们可以将它用于其他海豚 - 甚至可能用于售票。V1.0 没有联网,但我希望 v2 能联网(此时,我计划加密所有网络流量)。

我正在考虑@tylerl 说大多数攻击将是物理攻击,并且正在对出售/退款期间拉动电源进行大量测试,以查看我是否可以同时获得苏打水和现金。这听起来并不多,但如果它可以始终如一地完成并且消息传开......

我还认为倾斜传感器是个好主意,而且价格便宜。

3个回答

当我写那条评论时,我指的是广义上的自动售货机——包括售票机和显而易见的食品分配机。我特意想了一个我常去的地方的售票机模型,它有以下界面:

  • 键盘
  • 信用卡/借记卡终端
  • RFID 用于非接触式使用客户忠诚度卡,也用于员工覆盖。
  • 以太网电缆插入背面。
  • 前面板后面的JTAG端口(需要你解锁前面板,但它只是一个管状销锁,很容易被破解)

那么,我们如何才能拥有这样一台自动售货机呢?好吧,它有足够的接口供我们尝试……

键盘

键盘是一个有趣的向量,但它不太可能陷入任何形式的缓冲区溢出,因为实际上并没有涉及任何缓冲区。最多我们可能能够找出某种后门访问代码,让我们进入配置屏幕,但这是值得怀疑的。

信用卡/借记卡终端

我附近的那个有一个 Ingenico i3300 读卡器,它固定在机器侧面的凹槽中。我碰巧有一个(耶 eBay!)并且可以通过两种方式对其进行逆向工程:

  1. 攻击硬件。设备上有一个 FCC ID,我用来从工程技术办公室获取监管信息. FCC 处理排放测试和许多其他事情,作为申请的一部分,公司必须提供产品的详细文档、内部和外部照片(对我来说很好,因为我自己打开设备会触发篡改检测)和其他测试数据。从那里,我可能会发现读卡器如何检测入侵的弱点,并找到打开它并弄乱内部固件的方法。如果我搞砸了,这没什么大不了的——我可以在 eBay 上以不到 10 英镑的价格再买一个。或者,我可以移除真正的电路板并用我自己的替换它,用 XBee / 蓝牙 / 802.11x 设备传输卡信息和密码。
  2. 攻击软件。对此进行了大量研究(例如 PinPadPwn),并且许多设备容易受到自定义卡的缓冲区溢出的影响。可以对芯片和针卡上的芯片进行编程,以将固件模块安装到设备上,只需将它们放入设备中,就像您是普通客户一样。然后可以稍后返回并将卡号和密码下载到另一张特殊卡上。吓人吧?

射频识别

这可能是所有权的来源。它是一个双向通信端口,允许我们发送和接收数据,这些数据将由机器本身的代码直接处理,而不是单独的模块。很多 RFID 数据包含字符串和整数,因此可能会溢出。我们还可以看看从员工覆盖滑动中捕获数据,这可能会开辟从机器窃取数据的新可能性。为了真正对设备进行模糊测试,我们需要拥有自动售货机。这一次,我碰巧手头没有。拥有这么多装备的物理拥有要求确实给进入带来了障碍,但有可能得到二手。不过,离散的 RFID 嗅探器应该能够记录实时交易的数据,

以太网

当我看到以太网电缆时,我像一个脚本小子一样咯咯地笑了起来,发现了一个 SQL 注入孔。拔下其中一根电缆并插入直通设备以记录和更改进出设备的流量很简单。您可以使用 Wifi Pineapple 之类的嵌入式设备来执行此操作。它成本低,而且潜在的高收益,因为您可以从远处监控和模糊实时设备。我不知道这些数据是什么,但找出来会很有趣。

JTAG

如果你能把盖子取下来,JTAG 端口就是 pwnage 的巅峰之作。该设备可能是在 ARM 芯片上运行的嵌入式 Linux 系统,因此访问 JTAG 可以让您完全控制处理器和 RAM。您可以提取内存映像(可能包含固件)并对其进行分析,然后再返回并进行更改。如果坏人可以进入您的 JTAG,那么您就被拥有了。


那么,如何才能阻止这种攻击呢?在很大程度上你不能,但缓解是一件重要的事情。这里有一些提示:

  • 请记住,您正在处理金钱,并采取安全预防措施。如果坏人可以用磁铁将其关闭,或者更改软件以避免警报,那么食品自动售货机上的小费传感器就没有用了。
  • 选择长期以来没有安全问题的卡片机供应商,并为该部门的任何故障购买保险。
  • 锁定通信端口,并有办法将任何以太网电缆锁定到设备中,这样它们就不能轻易更换。
  • 如果您通过 TCP/IP 与外部设备通信,请使用传输安全性(例如 SSL)。
  • 如果它们是联网设备,请将它们从您的内部网络中分割出来。将设备插入以太网插座非常简单
  • 让安全顾问对您的软件进行审查——尤其是在涉及 RFID 或 NFC 的情况下。
  • 不要使用可以用该死的笔打败的管状销锁。使用合适的锁。
  • 保持偏执。

自动售货机黑客攻击,例如针对任何硬件设备的攻击,是特定于特定制造商和型号的。

至于缓冲区溢出:理论上可以利用任何输入设备(包括键盘等)进行此类攻击。给定模型是否易受攻击取决于机器的制造方式。但较旧的自动售货机是简单的状态机,没有缓冲区(甚至 CPU)的概念,因此针对这种风格的攻击可能会利用其他一些极端情况。

针对自动售货机的最常见攻击涉及更多物理而非计算机技能,以物理规避安全措施。另一种类型的攻击利用某些传感功能来“混淆”机器是否已交付产品或交付了多少产品。另一种类型的攻击利用通常隐藏的管理功能或界面来窃取产品。

每个人说的一切都很好,但我要补充一点,这种面向公众的自动售货机必须以程序为导向,并且在计划时必须首先考虑黑客攻击物理和软件方面。

从物理攻击开始,外面不应该有任何物理电缆。每条电缆都必须通过地下进入机器。不应该有带钥匙的物理锁。锁机应通过软件工程程序通过计算机外部的红外线到机器上来完成,并且在后面板上应该有一个门,将用机器内部的磁铁锁定,只有操作员可以使用密码和用户打开它将他或她的笔记本电脑上的姓名带到自动售货机的地方进行装货和取款。

我今天只讨论它的物理方面,下次我将讨论它的软件工程方面。