学完渗透测试,明白了ATM漏洞实现现金窃取的背后逻辑
字数 1407 2025-08-13 21:33:22
ATM渗透测试与漏洞利用技术详解
1. ATM安全研究背景
自动柜员机(ATM)作为最古老的联网设备之一,其安全性长期以来被高估。研究表明,高成本的合法逆向工程导致大规模部署的ATM缺乏充分的安全测试。本文研究的Nautilus Hyosung HALO II ATM代表了零售ATM的典型安全状况。
2. 目标ATM技术规格
- 硬件平台: 800MHz ARM Cortex-A8处理器
- 操作系统: Windows CE 6.0(已终止支持)
- 软件平台: MoniPlus CE框架
- 通信标准: Triton Standard协议
- 调试接口: 未填充的JTAG端口(可通过低电阻值填充激活)
3. 远程管理系统(RMS)漏洞分析
3.1 RMS协议概述
RMS是ATM的远程管理接口,功能包括:
- 版本和配置信息转储
- 事务历史记录收集
- 远程固件更新
通信协议特点:
- 使用异或运算进行简单混淆
- 默认监听TCP端口5555
- 认证依赖ATM序列号和RMS密码
3.2 缓冲区溢出漏洞
漏洞位置: RMSCtrl.dll中的CRmsCtrl::RMS_Proc_Tcp()函数调用链
漏洞成因:
- fnNET_RMSRecvData函数未进行边界检查
- 使用memcpy直接复制数据到全局接收缓冲区
- 数据包验证在复制之后进行
触发条件: 发送大于0x2800字节的恶意数据包
3.3 漏洞利用技术
任意代码执行:
- 溢出重写DLL退出时调用的函数
- 利用.data段可执行特性驻留shellcode
- shellcode在ATM关机时触发执行
持久化技术:
- 通过NVRAM API(MemGetStr/MemSetStr等)修改配置
- 可实现:
- 禁用SSL
- 重定向交易到恶意处理器
- 修改密码
- 修改在重启后仍然保持
4. XFS(金融服务扩展)漏洞分析
4.1 XFS架构概述
XFS是ATM行业标准接口,采用client-server架构:
- XFS API: 应用交互接口
- XFS管理器: 消息转换和分发
- SPI: 硬件服务提供商接口
目标ATM使用Nextware作为XFS中间件实现。
4.2 漏洞发现过程
错误配置:
- IPC机制使用TCP socket
- 监听地址为0.0.0.0而非127.0.0.1
- 导致XFS接口暴露在网络中
暴露端口:
- 通过端口扫描发现多个开放端口
- 注册表扫描确认XFS相关配置
4.3 XFS命令注入攻击
攻击步骤:
- 逆向分析IPC消息格式
- 捕获网络流量分析XFS命令结构
- 构造恶意XFS命令数据包
- 重放WFS_CMD_CDM_DISPENSE等关键命令
攻击影响:
- 无需认证执行XFS命令
- 可直接触发现金分发
- 控制其他金融设备(读卡器、密码键盘等)
5. 防御建议
-
RMS安全加固:
- 实现严格的输入验证
- 启用内存保护机制(ASLR、DEP)
- 加强认证机制
-
XFS配置修复:
- 限制IPC socket仅监听回环接口
- 实现命令认证机制
- 网络隔离关键XFS端口
-
系统层面:
- 升级不再支持的操作系统
- 启用固件签名验证
- 物理安全加固JTAG接口
6. 研究意义
本研究揭示了ATM安全的两大关键问题:
- 经济因素导致安全测试不足
- 传统金融设备面临现代网络威胁
尽管物理防护坚固,网络层面的漏洞仍可能导致严重后果。行业需要提高渗透测试覆盖率并建立更严格的安全标准。