一、背景
近期,针对Windows服务器攻击的勒索病毒持续传播,尤其是2018年年初国内数家机构服务器被GlobeImpsoter勒索病毒攻击,导致业务大面积瘫痪,这引起了大家对服务器安全的关注。
根据腾讯御见威胁情报中心监控,每周都有企业Windows服务器被勒索病毒攻击,服务器上的数据文件被加密,严重影响公司业务运转。对此,腾讯御见威胁情报中心对服务器勒索攻击进行了深入分析。
针对服务器攻击的勒索病毒主要有两大家族,分别是GlobeImposter和Crysis。GlobeImposter是个勒索病毒的一个老家族,初期主要通过钓鱼邮件针对个人用户攻击,现在为了获得更高收益,已将重点攻击目标转向企业服务器。Crysis家族最早可以追溯到16年3月,2017年开始持续传播,一直针对Windows服务器进行攻击。
二、攻击影响
1.地域分布
统计受勒索病毒攻击的企业地理分布,发现江苏、广东最多,其次是山东、北京。
2.行业分布
通过对受攻击的企业用户进行分析,遭到服务器勒索攻击的行业主要为传统行业,分别为政府机关(26%)、工业企业(15%)和医疗机构(13%)。相对于信息安全建设比较成熟的互联网公司而言,这些偏传统的机构在信息安全上往往投入较少,安全运维缺陷较多。例如服务器没有及时修复高危漏洞,没有良好的安全规范等。
3.传播趋势
服务器勒索病毒一直呈持续增长的传播阶段,Crysis家族和Globelmposter传播均有上涨。尤其是进入了4月份之后,两家族传播均有明显增长迹象。腾讯御见威胁情报中心统计发现,自4月1日到4月18日,企业服务器被这两个勒索病毒攻击的事件增长了34%。
一旦受害企业服务器数据被加密,业务将无法正常运转,会更倾向于交付赎金。攻击企业比攻击普通网民的收益要高很多,因此,未来较长的时间里,针对企业服务器的勒索病毒传播会是黑客攻击的重点。
三、GlobeImposter样本分析
1.勒索病毒整体加密过程
勒索病毒使用了RSA+AES加密方式,加密过程中涉及两对RSA密钥(分别为黑客公私钥和用户公私钥,分别用hacker_rsa_xxx和user_rsa_xxx表示这两对密钥)和一对AES密钥。黑客RSA密钥用于加密用户RSA密钥,用户RSA密钥用于加密AES密钥,AES密钥用于加密文件内容。
具体的加密流程:
勒索病毒首先解码出一个内置的RSA公钥(hacker_rsa_pub),同时对每个受害用户,使用RSA生成公私钥(user_rsa_pub和user_rsa_pri),其中生成的密钥信息使用内置的RSA公钥(hacker_rsa_Public)进行加密后,做为用户ID。
在遍历系统文件,对符合加密要求的文件进行加密。对每个文件,通过CoCreateGuid生成一个唯一标识符,并由该唯一标识符最终生成AES密钥(记为file_aes_key),对文件进行加密。在加密文件的过程中,该唯一标识符会通过RSA公钥(user_rsa_pub)加密后保存到文件中。
黑客在收到赎金、用户ID和文件后,通过自己的私钥(hacker_rsa_pri)解密用户ID,可以得到user_rsa_pri,使用user_rsa_pri解密文件,就可以得到文件的file_aes_key,进而可以通过AES算法解密出原始文件。
部分勒索病毒的加解密流程
下面对样本中使用的一些技术手段进行分析。
2.加密字符解密算法
软件中的字符及内置的公钥等信息都以加密的方式保存,加密使用的为AES算法,函数00409392为解密算法函数,函数包含5个参数,每个参数的含义如下:
参数1:返回值,解密后的内容
参数2:返回值,解密后的内容的长度
参数3:解密key
参数4:解密key的长度
参数5:文件句柄,如果文件句柄不为空,就将解密后的内容写入到该文件句柄对应的文件中
对aes_crypt函数,使用mbedtls_aes_crypt_ecb进行AES解密操作。
通过IDA的上下文交叉引用,看到共有七处调用了MyAESDecode函数进行解密内容,这七处调用功能解释如下:
3.解码排除文件夹与排除后缀名
恶意样本在勒索过程中会绕过包含某些特殊字符的文件夹,这些特殊的字符解码算法如下:
1)使用“CC0BE4F069F6AE6FFFCCBFD92CE736EE21792B858339D632F577268C2CDD384A”作为AESkey,解密00401158处硬编码的0x210大小的数据内容,解密后的内容为硬编码的RSA公钥(hacker_rsa_pub)。
2)对上面解密出来的RSA公钥(hacker_rsa_pub)计算SHA256,计算sha256的代码片段如下:
3)使用sha256的值做为AESkey,再次利用解密算法,解密出字符串列表。
解密出的字符串列表:
4)用户ID的生成
勒索病毒运行后,会在用户机器上生成名为”60091F9FF415A9DD5FDFF0D880249E69F883A75D0242CE20D6E6A90CC5AEAFDE”的文件,此文件名为内置的公钥的SHA256哈希值。该文件中保存了用户ID信息。
用户ID的生成算法为:勒索病毒首先通过RSA-1024生成用户公私钥(user_rsa_pub和user_rsa_pri),将生成的密钥中的rsa.P与rsa.Q拼接上“.TRUE.HOWBACKFILE”等内容后,使用内置的公钥(hacker_rsa_pub)加密,结果作为用户ID,同时,生成的公钥(user_rsa_pub)会做为后面遍历文件系统时的加密key使用。
可见,该用户ID也经过了RSA公钥(hacker_rsa_pub)的加密,在没有私钥(hacker_rsa_pri)的情况下,很难还原出RSA-1024的密钥内容。
5)文件加密过程
通过GetLogicalDrives得到盘符信息,对每个盘符开启一个线程进行加密,每个线程函数的参数包含三部分内容:当前盘符路径,加密key(user_rsa_pub),用户ID。
判断文件路径是不是属于排除路径:
函数sub_4094D9会实现对文件的加密,对文件的加密使用的是AES加密算法。下面将详细介绍该函数的过程。
AES加密的KEY通过CoCreateGuid生成,CoCreateGuid函数功能为生成全局唯一标识符,勒索病毒使用该全局唯一标识符做为secret_key,secret_key用来生成AES的加密key.。
AES加密时的IV参数由当前文件的大小和文件路径共同生成。IV参数将MD(filesize||filename)后取前16位。
将IV和secretkey使用MBEDTLS_MD_SHA256计算8192次HASH,并将HASH结果做为AES加密的KEY
随后,使用内置的RSA公钥将guid进行加密,并将加密过的guid及用户ID写入到当前文件中。
最后,使用AES算法将文件内容加密。
AES加密算法过程如下:
6)自启动
勒索病毒通过在RunOnce注册表下新建名为BrowserUpdateCheck的键值,达到开机自启动的目的。部分代码如下
7)自删除
通过调用CMD/cdel来实现自删除,部分代码如下
8)删除远程桌面连接信息及事件日志
解密bat文件后释放到临时目录下,并加载运行
解密出来的bat文件内容如下
Bat会删除远程桌面连接信息文件default.rdp,并通过wevtutil.execl命令删除日志信息
四、Crysis样本分析
1.病毒通过自建IAT的方式,运行后首先解密需要使用的动态库,API字串,随后通过LoadLibraryA,GetProcAddress循环遍历来动态获取解析使用的API,获取函数地址后填充IAT表,随后病毒所有的API调用均使用:
MOVEAX,[IAT-FUN-ADDR]
jmp004066c0
004066c0:CallEAX
的方式来间接调用,这样做也导致了静态分析情况下导入表中无法看到病毒调用相关敏感Api。
2.运行后的病毒首先会关闭以下大量服务,来确保待加密文件不被占用,加密文件时不会产生异常。
3.同时结束下列进程,主要为数据库相关进程,其目的也是为了防止加密文件被占用,从关闭的进程列表也可看出,病毒主要攻击使用sqlserver,mysql数据库的服务器。
4.病毒不仅会加密磁盘本地文件,还会尝试遍历网络共享目录下的文件来进行加密。
5.通过在内存中解密出加密文件类型后缀可知,病毒加密了以下340余种文件类型。
病毒会加密的340种文件类型如下:
6.为了不影响系统正常运行,病毒加密文件的时候,还会避开以下系统文件不加密,避免因为加密系统文件后产生系统异常。
7.加密文件完成后的病毒会运行释放在自身目录下Info.exe文件来显示勒索信息,病毒作者要求受害者24小时内联系邮箱badfile@qq.com,进一步通过支付比特币的方式缴纳解密文件赎金。并且病毒作者声称解密文件所需支付的比特币数量取决于受害者写邮件的速度,从而威胁受害者尽快与病毒作者联系。
五、服务器勒索病毒的传播渠道
针对服务器攻击的勒索病毒,黑客首先会利用弱口令漏洞、系统漏洞等方式获得远程登录用户名和密码,之后通过RDP(远程桌面协议)远程登录服务器来传播勒索病毒。黑客一旦能够成功登录服务器,则可以在服务器上为所欲为,这也就导致了即使服务器上安装了安全软件也无济于事。
以某公司的服务器为例,通过系统安全日志可以看到,该服务器平均每隔几秒就会被尝试登录一次
通过详细信息可以看到,最终被俄罗斯的一个IP成功远程登录
同时,黑客成功入侵了一台服务器后,往往会进一步进行内网渗透,攻陷很多的服务器,有些黑客甚至还会留下远控木马,最终服务器沦为肉鸡。
六、解决方案
通过对多起服务器勒索攻击的分析,发现该类勒索攻击大多通过弱口令爆破后,利用RDP协议远程登录目标服务器运行勒索病毒。这也就导致了,及时服务器上安装了安全软件也会被黑客手动退出,进而对勒索病毒毫无防御能力。