欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

一个纯JS脚本的文档敲诈者剖析(附解密工具)

来源:本站整理 作者:腾讯电脑管家 时间:2016-07-15 TAG: 我要投稿

4)文件大小大于500M

对于大于500M的文件,则不加密。

pic28

0x03 解密分析


从上面的加密方式来看,该敲诈者木马使用了AES-256加密算法,因为是对称加密算法,因此只需获得加密文档时候所使用的密钥和密钥向量,调用JS开源的AES解密接口,即可完成解密。

1
2
3
4
5
function Decrypt(DecryptedContent){
  var OriginalText = CryptoJS.AES.decrypt(DecryptedContent,
                                        key,        //密钥
                                        iv)         //密钥向量
}

那么,如何获取到他的解密的key和iv呢?一般情况下,只用木马作者才有相关的key和iv等信息,而普通用户是无法获取到相关的key和iv的,因此普通用户也就无法完成解密的过程,而只有给木马作者交一定数量的赎金(0.39BTC)后,作者才会给解密。但是,通过技术分析以及通过某些技术手段获取了部分服务器数据后,某些情况下,是可以进行解密的。

首先来看服务器目录结构:

pic29

从目录结构中,我们惊喜的发现了public_key.pem,而乍看源码,我们发现是用了RSA算法,而所用的密钥恰恰是public_key.pem!但是仔细看源码,却失望的发现,返回的数据里使用到了随机数,那么也就意味着,即使有public_key,也无法准确的拿到返回的数据。

那么问题来了,作者是如何来进行解密的呢?原来,作者在返回数据的同时,还会把该用户返回的数据保存在cl目录下,并且以用户上传的ID命名。

相关的加密的源码是为:

pic30

我们来到clcl目录下,果然发现了这些保存的数据文件:

pic31

可以发现,生成的文件数量有上千个,说明受害的用户数目就有上千个!

此外,作者也会定期打包一份到base.zip中:

pic32

有了上面的分析,我们来看如何进行解密。

  • 情形1:若受害的用户的ID,正好在我们获取到的这份ID数据列表里,那么我们完全可以根据在该对应文件里存放的信息来进行解密;
  • 情形2:该情形是个有趣的状况:我们发现敲诈者使用的某些域名服务端已没有使用,访问后会返回如下错误页面:

pic33

但是,由于作者代码逻辑的不严谨,会误以为返回的该段数据即服务端返回用于生成密钥的数据,我们从文档显示的比特币钱包地址得到验证:

pic34

这种情况下,每次JSJS脚本在服务端所获取用来生成密钥的数据是固定不变的,也就意味着,在这种情况下,用户被加密的文档本地就可以解密了!只需取下面红框中的数据,结合文件尾部的随机数,即可生成加密文档使用的密钥和密钥向量了。

pic35

如果遇到敲诈文档中比特币钱包地址未正常显示,而是显示如下HTML语句,那么不必惊慌,使用下面的解密脚本,即可实现完美解密。

1
initial-scale=1.0">    <title>Account Suspended</title>    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">    <style type="text/css">        body             font-family: Arial.

上一页  [1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载