概述
尽管目前,勒索软件的势头已经得到控制,但它仍然是网络犯罪的重要组成部分。事实上,在2018上半年,勒索软件的活跃度有所增加,这些勒索软件通过调整策略躲避安全软件的监测,或是整合已经存在的一系列勒索软件的特性来使自身变得更加“强大”。勒索软件PyLocky(由趋势科技检测为RANSOM_PYLOCKY.A)就属于后者,本文将主要对此恶意软件进行分析。
在2018年7月下旬和8月之间,我们监测到有大量恶意邮件中附带了PyLock勒索软件。尽管在勒索提示中,该恶意软件自称是另一款勒索软件Locky,但实际上它与Locky无关。PyLocky是使用流行的脚本语言Python编写而成的,并且使用PyInstaller进行打包,PyInstaller是一个将基于Python语言的程序打包成独立可执行文件的工具。
用Python语言编写的勒索软件并不新鲜,我们在2016年已经见到过CryPy(RANSOM_CRYPY.A),2017年见到过Pyl33t(RANSOM_CRYPPYT.A),但与这两个勒索软件不同,PyLocky具有反机器学习的特性,这一点非常值得关注。通过结合使用Inno Setup Installer(一个基于开源脚本的安装程序)和PyInstaller,这一勒索软件对我们常规的静态分析方法提出了挑战,包括基于机器学习的静态分析方法。而这种方式,我们此前在Cerber do的变种中曾经见到过。
PyLocky的目标似乎非常集中,主要针对几个欧洲国家,特别是法国。尽管垃圾邮件的发送量比较小,但可以看出其数量和范围有增加的趋势。
8月2日(左)与8月24日(右)与PyLocky相关的邮件分布:
PyLocky的勒索提示,假装成Locky勒索软件:
感染链
8月2日,我们监测到该勒索软件通过邮件方式被分发给位于法国的一些企业,邮件以“发票”为标题,引诱企业员工单击邮件中的链接,这一链接会重定向到PyLocky的恶意URL。
带有主题的恶意邮件,标题为法语“Nous avons reçu votre paiement”,译为“我们已收到您的付款”。
恶意URL会下载一个ZIP文件(Facture_23100.31.07.2018.zip),其中包含经过签名的可执行文件(Facture_23100.31.07.2018.exe)。在文件成功运行后,Facture_23100.31.07.2018.exe将会投放恶意软件组件(几个C++和Python库,以及Python 2.7核心动态链接库)以及勒索软件可执行文件(lockyfud.exe,通过PyInstaller创建),上述文件放置于目录C:Users{user}AppDataLocalTempis-{random}.tmp下。
ZIP文件的签名信息:
PyLocky的签名信息:
PyLocky将会对图像、视频、文档、音频、游戏、数据库和压缩文件进行加密,其加密的文件类型列表如下:
.dat、.keychain、.sdf、.vcf、.jpg、.png、.tiff、.gif、.jpeg、.jif、.jp2、.jpx、.j2k、.j2c、.fpx、.pcd、.bmp、.svg、.3dm、.3ds、.max、.obj、.dds、.psd、.tga、.thm、.tif、.yuv、.ai、.eps、.ps、.svg、.indd、.pct、.mp4、.avi、.mkv、.3g2、.3gp、.asf、.flv、.m4v、.mov、.mpg、.rm、.srt、.swf、.vob、.wmv、.doc、.docx、.txt、.pdf、.log、.msg、.odt、.pages.、.rtf、.tex、.wpd、.wps、.csv、.ged、.key、.pps、.ppt.、.pptx、.xml、.json、.xlsx、.xlsm、.xlsb、.xls、.mht、.mhtml、.htm、.html、.xltx、.prn、.dif、.slk、.xlam、.xla、.ods、.docm、.dotx、.dotm、.xps、.ics、.mp3.、.aif、.iff、.m3u、.m4a、.mid、.mpa、.wav、.wma、.msi、.php、.apk、.app、.bat、.cgi、.com、.asp、.aspx、.cer、.cfm、.css、.js、.jsp、.rss、.xhtml、.c、.class、.cpp、.cs、.h、.java、.lua、.pl、.py、.sh、.sln、.swift、.vb、.vcxproj、.dem、.gam、.nes、.rom、.sav、.tgz、.zip、.rar、.tar、.7z、.cbr、.deb、.gz、.pkg、.rpm、.zipx、.iso、.ged、.accdb、.db、.dbf、.mdb、.sql、.fnt、.fon、.otf、.ttf、.cfg、.ini、.prf、.bak、.old、.tmp、.torrent
PyLocky的代码片段,勒索软件对系统属性进行查询,并使用sleep语句逃避传统沙箱检测方法:
加密例程
在PyLocky中,以硬编码的形式存储文件扩展名列表。除此之外,PyLocky还会滥用Windows Management Instrumentation(WMI)来检查受影响系统的属性。如果该系统的总内存大小小于4GB,那么PyLocky的防沙箱功能将会启动,勒索软件将会休眠999999秒(11.5天)。如果内存大于或等于4GB,那么文件加密例程就会执行。
在加密后,PyLocky将与其命令和控制服务器(C&C)建立通信。PyLocky使用PyCrypto库实现其加密例程,使用3DES(三重DES)加密方式。PyLocky首先遍历每个逻辑驱动器,在调用“efile”方法之前生成文件列表,该方法以加密后的文件覆盖所有原始文件,然后投放勒索提示信息。
PyLocky的勒索提示信息使用英语、法语、韩语和意大利语,这可能表明该勒索软件可能也针对以韩语和意大利语为常用语言的用户。该勒索软件通过POST的方式,将被感染的系统信息发送到C&C服务器。
PyLocky C&C通信的代码片段:
加密例程的代码片段:
PyLocky以不同语言写成的勒索提示:
缓解方法
PyLocky使用了沙盒分析逃避技术,并且滥用了提供给管理员使用的合法工具,这两点进一步证明了深度防御的重要性。机器学习无疑是一个有效的检测恶意软件的方式,但它并不是灵丹妙药。在如今,攻击者可以使用不同的攻击向量。正因如此,采用多维度的安全防护方法就显得尤为重要。除此之外,还有我们老生常谈的安全实践方案:定期备份文件、保证系统及时更新、确保系统组件的安全、增强网络安全意识。
IoC
RANSOM_PYLOCKY.A的SHA-256
c9c91b11059bd9ac3a0ad169deb513cef38b3d07213a5f916c3698bb4f407ffa
1569f6fd28c666241902a19b205ee8223d47cccdd08c92fc35e867c487ebc999
相关哈希值
e172e4fa621845080893d72ecd0735f9a425a0c7775c7bc95c094ddf73d1f844 (Facture23100.31.07.2018.zip)
2a244721ff221172edb788715d11008f0ab50ad946592f355ba16ce97a23e055 (Facture_23100.31.07.2018.exe)
87aadc95a8c9740f14b401bd6d7cc5ce2e2b9beec750f32d1d9c858bc101dffa (facture_31254872_18.08.23{numbers}.exe)
相关恶意URL
hxxps://centredentairenantes[.]fr (C&C server)
hxxps://panicpc[.]fr/client[.]php?fac=676171&u=0000EFC90103
hxxps://savigneuxcom[.]securesitefr[.]com/client.php?fac=001838274191030
致谢
感谢Mary Yambao、Kerr Ang和Alvin Nieto此前的研究成果。