提醒:点上方↑“黑客技术”即可免费订阅我。 背景概述 前段时间,卡巴斯基发现并报告了一种新型的恶意程序Tyupkin,该恶意程序针对银行的ATM自动取款机发起攻击,通过微软提供的金融服务控件MSXFS.dl来直接操控ATM设备来实现从取款机任意取钱。 虽然事件过去了很久,没有太多的热度了,但是深入研究彻底分析下金融领域的攻击还是很有必要的。了解针对金融ATM的攻击手法,做到知己知彼。 根据卡巴斯基的描述,攻击者需要一张可启动的CD来安装恶意软件,被植入的恶意程序的ATM取款机会在指定的时间激活,攻击者只需要输入特定的按键即可直接提取现金。根据VT上提交的样本来源地区,该恶意程序主要分布在欧洲,同时在国内似乎也存在该恶意程序的痕迹,目前该恶意程序已经成功窃取了数百万美元。 攻击过程还原 故翰海源团队对该样本进行了技术细节的分析,由于没有ATM设备环境,但为了尽量还原攻击者的攻击流程,我们通过Hook MSXFS.dll的API函数来实现模拟按键的输入,基本还原了攻击者从ATM取钱的攻击流程。 1)攻击者设定了程序的激活时间为:周日、周一的凌晨1点到5点之间。2)恶意程序默认是在后台隐藏界面运行,在指定的激活时间内,攻击者在键盘上输入特定的按键序列后,可以调出显示恶意程序界面。3)恶意程序界面显示后,会输出一个随机Code,根据该Code输入特定的按键序列后,会进入断网取钱的阶段过程。 技术分析 2.1 背景知识2.1.1 WOSA/XFS概述 WOSA全称是Windows Open System Architecture,是基于Windows开放式系统体系机构,是微软专门为全球金融行业设计的软件架构,WOSA提供一套基于C的WIN32 API,开发者可以通过这些API来对采用该框架的金融设备进行操作。 2.1.2 MS Manager组成 1) msxfs.dll: 提供基本的API和调用SPI函数。 2.1.3 MS Manager组成 1) DevInit: 初始化设备,包括打开串口,分配空间等。 2.2 样本技术细节分析2.2.1 样本文件基本属性 MD5: AF945758905E0615A10FE23070998B9B 2.2.2 技术细节 1) 样本运行后,会有一个长达10分钟的Sleep操作用于躲避安全软件的动态检测。我们在进行模拟的时候,将Sleep的时间做了修改。 2) 恶意程序会创建一个标题为”APTRAST”的窗体并设置为隐藏。 3)恶意程序会创建一下文件及注册表来实现开机自启动 4)恶意程序在设置完自启动后,会进行ServiceProvider的初始化,由于我们没有安装ATM的底层环境,所以该初始化会失败,我们在进行模拟的时候会将该处的判断PATCH掉。 之后程序会开启两个线程,一个用于验证是否满足激活时间,一个未程序的功能模块。 5)TimeInterval线程会判断当前系统时间是否是周日或周一,同时是否在凌晨的1点到5点之间,如果满足,会将PIN_PAD_ACTIVE_TIME标记为1。 6)MainLoop线程首先会对全局标记PIN_PAD_ACTIVE_TIME进行检测,为1时才会接收PINPAD的接口按键信息。通过调用WSExecute来执行WFS_CMD_PIN_GET_DATA(0×198)获取键盘输入,以WFS_PIN_FK_ENTER (0×400) 回车键来作为结束标记。我们模拟的时候,会HOOK该函数,来构造键盘的输入按键值。 WFSExecute用来向SPI发送指定的命令,这里通过指定发送“WFS_CMD_PIN_GET_DATA”即可获取PINPAD接口的明文按键信息。PINPAD按键会产生一个WFS_PIN_FK事件信息并将转换后的数据写入到_wfs_pin_data结构体中。 usKeys:用户输入的键数目 最后判断PINPAD上是否为特定的按键序列,并执行以下操作: 7)当输入MEKY_SHOW_APP,并按Enter后,程序会显示界面,并产生一个随机CODE,同时根据该CODE产生对应的SESSION KEY。 8)其中CODE是一个随机生成的8位数字,攻击者需要根据这8位数字按指定的算法生成一个SESSION KEY,当输入的SESSION KEY正确后,执行以下操作: 9)SESSION KEY算法为根据上次的CODE作为种子,产生随机数,然后经过简单乘法运算,乘以一个固定的数值。 10)恶意程序会在系统目录下生成一个名为XFSTrace.LOG的日志文件。 程序在运行中会打印如下调试信息: 演示视频 点我查看 安全排查 检查ATM设备是否存在以下文件: —————————— 关注微信号:hackdig 学习最新黑客技术! |
|