POS机终端攻击
一、动机
Point-of-Sale (POS) 设备是现代生活中不可或缺的一部分,也是商人的血脉。随着支付卡逐渐成为默认的支付方式,POS设备的安全也变得更加重要。因而,我感兴趣的是真实POS的安全处理机制。但是未经业主同意的“现场测试-close examination”是违法的。并且我没有业务上需要使用POS机的朋友,因而我决定订购一台二手POS设备来做研究。我入手的是一款ALOHA POS系统,该设备是一款在酒店业非常受欢迎的POS设备。(Figure 1)
Figure 1 Aloha!
二、POS系统分析
ALOHA POS系统,通常有多个前置(FOH- Front-of-House)终端和一个后台文件服务器。终端作为服务器的接入点,允许直接与输入新订单、刷卡信用卡和打印收据操作进行交互。所有交易记录被保存到ALOHA的文件服务器中,文件服务器每天都会处理这些交易数据。
Figure 2 :典型的Aloha POS 系统架构图
我所购买的系统碰巧是master terminal (terminal 1),通常在同一网络中如果没有ALOHA文件服务器是不会进行交易的。但是,有一个后备模式会在所有交易处于离线状态时被启用,他允许终端继续接受订单和交易过程。我使用该模式进行了一次轻量级的测试。
三、端口扫描
Figure 3显示了Nmap的扫描结果。我发现了文件共享相关的服务(端口为135,139,445),其他入侵防护服务MSRPC(端口为1801,2103,2105,2107),和一个运行在5900端口上的VNC服务。有趣的是,还有一个运行在8080端口上网络服务。
Figure 3 NMAP 扫描结果
四、VNC安全问题
我手动测试的第一步是猜测VNC密码。在理想情况下,密码应该是很难猜测的,否则,你能够突破一个密码系统所保护的一切(即“你可以知道其他人不知道的东西”)。很自然的,我第一次猜的密码会是'aloha’,但你猜怎么着?密码是正确的,我的第一次尝试就获得了系统访问权限。此外,该连接还是不加密的(Figure 5),因此攻击者可以通过访问基础设施来嗅探出VNC客户端和POS之间的通信数据。
Figure 4 VNC 登录界面
Figure 5 未加密的VNC连接
当你通过VNC登录到终端,你可能会看到如Figure 6所示一个屏幕。你可以最小化POS程序,然后访问资源管理器,执行额外的攻击。
Figure 6 通过VNC连接到POS终端
五、共享功能启用
另一个基本问题是设备被多个已存在的账户共享使用,如‘aloha’和 ‘manager’.
并且,密码和账号是一样的。您可以使用这些帐户访问该机的系统驱动器的根目录。(Figure 7)这可能会直接导致系统文件被恶意篡改。
Figure 7 An open share
六、ATDDB.exe – Aloha的通信服务程序
弱口令和开放共享是基本问题,但我想找到额外的攻击向量。我寻找其他可能进入系统的切入点。一个吸引我眼球的服务是atddb.exe。此程序作为service程序运行,并绑定了8080。(Figure 8)它是一个SOAP服务。
Figure 8 ATDDB on port 8080
我无法找到它所使用的这种协议比较好的文档。另外,你可能需要的BOH服务来使用这个进程的机制。只有一台机器我没法构造通信数据包来测试协议问题,但是在深挖到二进制后,我却通过HTTP请求提供无效的输入触发了一个堆溢出漏洞。(Figure 9)即使我没有开发一个完整的exploit, 我敢保证这是一个可以利用的堆溢出漏洞。所以atddb.exe可能是攻击者的另一个切入点。记住,atddb.exe的处理SOAP消息的服务,所以如果你挖到的通信消息格式本身,你会发现更多的问题。
Figure 9 Heap corruption with wrong input
七、安全更新问题
看来这个POS设备的所有者或其管理公司,不是很愿意提供更新的服务。当然,更新可能会中断当前的业务运作。特别是当你忙着吃午餐或晚餐的时候,而这时饥饿的顾客在等待他们的食物,你可能没有时间来顾及他们(更新你的系统)。然后在一天结束时,你可能会有其他的优先事项要处理,或太累了而无法顾及,等等有很多原因吧。
在我研究的设备上,更新功能是被完禁用了(Figure 10)。最近一次系统文件更新时间大约是2007年3月份,根据另外一些文件的时间戳我发现这台机器一直使用到2014年初。这意味着,在漏洞被披露前,在过去的7年中该系统是容易受到攻击的。从好的一方面来看,此POS终端运行在一个精简了服务的Windows XP SP2上,这意味着许多xp的漏洞利用程序无法用于这个系统。但是禁用安全更新不是一个值得提倡的做法。
Figure 10 Windows update is disabled
八、窃取信息
Aloha POS系统维护一个可以访问该系统的员工列表。雇员使用他们的磁卡访问该终端,磁卡记录着雇员的密码。我发现了一个包含有酒店所有工作人员的名称、SSN、地址、手机号码和访问码的文件(Figure 11)。这是高度敏感的信息,并且这些信息的披露很容易导致身份盗窃。
Figure 11 Employee database
即使这里没有存储信用卡号记录,但礼品卡号被保存在了日志里(Figure 12)。这方面的信息如果它落入坏人之手,也可能被用于欺诈。
Figure 12 Gift card numbers in transaction logs
九、搜集信用卡号
一个试图攻击POS机的入侵者主要目标是收集信用卡号码。在我们一个有关BlackPOS的博客上,谈论过一种内存刮取的技术。这种技术可以适用于信用卡信息从磁性读卡器传输的信息是加密的情况下。然而这家餐厅POS机,磁卡读取器是直接连接到设备上的,并没有进行加密处理。攻击者可以简单地用一个一般的键盘记录器获取到信用卡信息。(Figure 13)我没有问题,获取信用卡号码的卡,我刷卡。因为一些未知的原因,我所遇到的唯一问题是字符会重复两次。然而,使用这些信息完全没有任何问题。
Figure 13 Keylogger capture (card numbers are obscured)
十、总结
目前我们以一个攻击者的视角来审视一个从eBay上购买的POS终端,发现系统的整体安全状况很差。通过几方面的研究表明(包括通过猜测VNC密码”aloha”的使用),如果你在没有将POS和客户的网络隔离的情况下就提供免费的Wi-Fi接入是非常危险的。也请记住,VNC连接常常被POS管理人员承包商远程访问,所以如果不采用适当的访问控制的话,攻击者也可能从外网连接到POS机器。
我在不到几个小时里就发现了供应商创建的一个专有服务存在堆溢出漏洞。(我怀疑整个基础代码的都不是以安全的方式编写)。最后一个问题是在设备上存在隐私信息和敏感信息。由于我研究的设备是FOH的,这意味着实际的信用卡号码保存在设备上的机会很少,但我还获取到了大量个人信息如员工信息和大量礼品卡交易日志。仅仅通过运行传统的键盘记录器,进入POS终端的攻击者就可以窃取信用卡数据,从系统的角度来看,磁卡读取器是被作为键盘来识别的,而且它在被使用过程中并没有进行加密。
Text composed with the best online HTML editor. Please subscribe for a HTML G membership to remove this message.