我们发现了一个叫做“PWOBot”的恶意软件家族,这个恶意软件家族相当的独特,因为它完全是用Python编写的,并通过PyInstaller进行编译来生成一个windows下的可执行程序。这个恶意软件被证实影响了大量的欧洲组织,特别是在波兰。此外,这个恶意软件只通过一个流行的波兰文件共享web服务来传播的。
这个恶意软件本身提供了丰富的功能,包括能够下载和执行文件,执行Python代码,记录键盘输入,生成一个HTTP服务器,并且通过受害者的CPU和GPU挖掘比特币。
现在至少有PWOBot的12个变种,并且这个恶意软件早在2013年末的攻击中就开始活跃了。更多最近的影响欧洲组织的攻击是在2015年中到年末。
0x01 目标
在过去的半年中,我们发现PWOBot影响了以下的组织:
波兰国家研究机构
波兰航运公司
大型的波兰零售商
波兰信息技术公司
丹麦建筑公司
法国光学设备提供商
大部分PWOBot的样本都是从chomikuj.pl(波兰流行的文件共享web服务)上下载的。下面的这些奇特的URL被发现提供了PWOBot的副本:
s6216.chomikuj[.]pl/File.aspx?e=Pdd9AAxFcKmWlkqPtbpUrzfDq5_SUJBOz
s6102.chomikuj[.]pl/File.aspx?e=Hc4mp1AqJcyitgKbZvYM4th0XwQiVsQDW
s8512.chomikuj[.]pl/File.aspx?e=h6v10uIP1Z1mX2szQLTMUIoAmU3RcW5tv
s6429.chomikuj[.]pl/File.aspx?e=LyhX9kLrkmkrrRDIf6vq7Vs8vFNhqHONt
s5983.chomikuj[.]pl/File.aspx?e=b5Xyy93_GHxrgApU8YJXJlOUXWxjXgW2w
s6539.chomikuj[.]pl/File.aspx?e=EH9Rj5SLl8fFxGU-I0VZ3FdOGBKSSUQhl
s6701.chomikuj[.]pl/File.aspx?e=tx0a8KUhx57K8u_LPZDAH18ib-ehvFlZl
s6539.chomikuj[.]pl/File.aspx?e=EH9Rj5SLl8fFxGU-I0VZ3ISlGKLuMnr9H
s6539.chomikuj[.]pl/File.aspx?e=EH9Rj5SLl8fFxGU-I0VZ3OFFAuDc0M9m0
s6179.chomikuj[.]pl/File.aspx?e=Want-FTh0vz6www2xalnT1Nk6O_Wc6huR
s6424.chomikuj[.]pl/File.aspx?e=o_4Gk0x3F9FWxSDo4JWYuvGXDCsbytZMY
另外,有一次这个恶意软件被从http://108.61.167.105/favicon.png。这个IP地址是和tracking.huijang.com有联系的,而这个域名被相当数量的PWOBot所使用。
下面的这些文件名字被发现用来传播PWOBot:
favicon.png
Quick PDF to Word 3.0.exe
XoristDecryptor 2.3.19.0 full ver.exe
Easy Barcode Creator 2.2.6.exe
Kingston Format Utility 1.0.3.0.exe
uCertify 1Z0-146 Oracle Database 8.05.05 Premium.exe
Six Sigma Toolbox 1.0.122.exe
Fizjologia sportu. Krtkie wykady.exe [Physiology of sports. Short lectures.exe]
正如我们能从使用的文件名中所看到的,相当一部分的PWOBot样本伪装成了各种各样的软件。在某些情况下,波兰语被认为是更容易被当成目标的文件名。
目前尚不清楚这个恶意软件最初是怎样被发送到终端用户的。我们可以根据文件名作出推论,这个恶意软件很可能是在终端用户下载其他软件时被传播的。因此,钓鱼攻击可能被用来引诱受害者下载这些文件。
0x02 恶意软件分析
正如最开始提到的,PWOBot是完全用Python编写的。攻击者利用PyInstaller来把Python代码转换成Windows可执行程序。因此,因为Python被使用了,所以它可以很简单的被移植到其他操作系统,比如Linux或者OSX。
除了最初的运行之外,PWOBot会首先卸载掉它可能会发现的之前的PWOBot的版本。它会查询Run注册表项,判断是否存在之前的版本。主要的版本针对注册表项Run使用了一种pwo[VERSION]的格式,在这里[version]代表的是PWOBot的版本号。
图一 PWOBot uninstalling previous versions
在所有之前的版本被卸载之后,PWOBot会进行自我安装并创建一个它自己的可执行文件的副本,存在以下位置:
%HOMEPATH%/pwo[version]
接下来它会设置以下的注册表键值来把它指向到新拷贝过来的可执行文件上:
HKCU/SOFTWARE/Microsoft/Windows/CurrentVersion/Run/pwo[VERSION]
如果这是这个恶意软件第一次运行,PWOBot会在一个新的进程里执行新复制的文件。
在安装完毕之后,PWOBot会对各种各样的键盘和鼠标事件进行HOOK,这会在接下来的键盘记录活动中被用到。PWOBot是用模块化的风格编写的,允许攻击者在运行时包含各种模块。基于对当前已有的样本的分析,以下的服务被发现带有PWOBot:
PWOLauncher : 下载/执行文件,或者执行本地文件
PWOHTTPD : 在受害者机器上大量生成HTTP服务器
PWOKeyLogger : 在受害者机器上进行键盘记录
PWOMiner : 使用受害者机器的CPU/GPU挖掘比特币
PWOPyExec : 运行Python代码
PWOQuery : 查询远程URL并返回结果
PWOBot有两个配置文件,其中一指定了这个恶意软件的各种配置,另一个确定了PWOBot在执行的时候应该连接哪个远程服务器。
图二 PWOBot settings configuration
图三 PWOBot remote server configuration
正如在配置图中所可以看到的,PWOBot包含了很多Windows的可执行文件,这些可执行文件是在攻击者使用PyInstaller来对代码进行编译的时候包含进去的。这些可执行文件被用来进行比特币挖掘以及利用TOR发送代理服务器请求。比特币挖掘是minerd和cgminer的一个编译好的版本。这些文件分别被用来作为CPU和GPU的比特币挖掘。
PWOBot也使用了Tor匿名网络来对攻击者的远程服务器的通信进行加密。PWOBot使用了一个Python字典作为网络协议。每一个特定的时间段PWOBot都会发送一段通知信息到远程服务器上去。这样的通知消息的例子可以如下所示: