导语:POS和信用卡诈骗的恶意软件家族经常会出现,而只有一部分会被发现。RtPOS就是新发现的恶意软件家族。
POS和信用卡诈骗的恶意软件家族经常会出现,而只有一部分会被发现。RtPOS就是新发现的恶意软件家族。
简介
研究人员发现一款新的POS恶意软件—RtPOS。该恶意软件是根据样本(fb749c32b58fd1238f21d48ba1deb60e6fb4546f3a74e211f80a3ed005f9e046)的调试路径命名的:
C:\Users\nblat\Documents\Visual Studio 2015\Projects\rt19\Release\rt19.pdb
逆向
恶意软件中的alohae.exe会伪装成Windows logon Service(登陆服务),这也是恶意软件作者常用的混淆形式。还有出现的俄语代码,下面是全部的文件元数据(metadata):
程序只接受两个参数“/install”和“/remove”,分别负责在受害者设备上安装和卸载服务。这些函数在IDA中是可见的:
当提供install参数时,就会安装WinLogon服务,并将下面的内容发送给日志函数:
服务描述更新:
把转变为可读性更强的形式时,服务配置分析就类似于下面的伪代码:
服务安装之后, RtPOS会在被入侵的设备上重复申明可用或运行的进程。这是通过以下两步完成的:
· 首先用CreateToolhelp32Snapshot获取进程列表;
· 然后用Process32FirstW开始进程列表循环。
VirtualQuery (VirtualQueryEx)用于获取进程的边界:
最后,RtPOS用ReadProcessMemory函数来获取被入侵系统的内容可见的权限。获取被入侵POS终端或其他支付处理系统的内存可见是RAM-scraping POS恶意软件的经典特征,因为支付卡数据未加密前保存和处理的位置就是内存空间。对内存空间的访问权限使RtPOS能够传递还有支付卡数据的缓存信息到定制的记录搜索算法(track search algorithm):
在找到track1和track2的数据后,获取的信息将传递给Luhn算法来进行验证。RtPOS中Luhn算法的实现在IDA的0x405a50处是可见的。
RtPOS通过Luhn算法验证了track1和track2的数据后,下一步就用Process32NextW来爬取数据:
如果在内存中找到成功支付的卡号,Luhn算法就会验证该号码,如下图所示:
传递来验证的track1和track2的数据会保存为sql8514.dat,用于之后的数据窃取。RtPOS恶意软件会在\Windows\SysWOW64文件夹下创建一个DAT文件,并使用下面的格式字符串%02d.%02d.%04d – %02d:%02d:%02d| %s: \t\t%s\n:
下图中可用看到一个写入RtPOS日志文件的信用卡号码的例子。DAT日志行的每条记录都含有日期和时间,用于将信息下入DAT日志文件的进程和最后获取的信息:
获取下入DAT日志文件的支付卡数据示例如下:
24.08.2018 - 14:27:36| notepad.exe: ;4888603170607238=05051011203191805191? 24.08.2018 - 14:30:05| notepad.exe: ;4305500092327108=040110110000426? 24.08.2018 - 14:30:51| notepad.exe: ;4264294318344118=04021010000044500000? 24.08.2018 - 14:30:54| notepad.exe: ;4888603170607238=05051011203191805191? 24.08.2018 - 14:30:55| notepad.exe: ;4305500092327108=040110110000426? 24.08.2018 - 14:30:55| notepad.exe: ;4264294318344118=04021010000044500000?
结论
与Project Hook、TreasureHunter这样的恶意软件相比,RtPOS有许多的不同,比如没有原声的数据窃取能力。而其他POS恶意软件家族可用将获取的track1和track2的数据发送会C2服务器,而RtPOS只是将这些数据保存在本地。这样的活动与一些POS小工具有些类似,好像是为了减少RtPOS的网络活动痕迹,确保恶意软件能够长期潜伏,以获取更大的利益。RtPOS在特征上很简单,活动上都是自动化的,与成熟的POS恶意软件相比,缺乏很多特征,比如网络数据窃取特征、交互和用户命令特征。RtPOS可能只是开发中的POS恶意软件家族。