攻击的方法

两种方法将KerrDown下载器传递给目标。一个是使用带有恶意宏的Microsoft Office文档,另一个是包含带有DLL side-loading合法程序的RAR存档 。对于RAR存档文件,用于欺骗目标的文件名都是越南语

* DLL Side-Loading 程序可以指定在运行时加载的DLL
https://attack.mitre.org/techniques/T1073/

恶意文件

两个不同的base64 blob插入到单独的表中,并且字体大小已更改为1。

图 1:诱饵文件

一旦增加了字体大小,base64 blob就会在两个不同的表中可见。解码后,可以在每个表的开头看到PE DLL的MZ头

图 2:作为文本嵌入文档的Base64 编码的 pe dll 文件。

根据iCheck变量检查应解码哪个base64 blob,如果受害者系统在64位系统上运行则设置为true,而在32-位系统。如果发现系统是64位,则左侧的base64编码blob将被解码,否则右侧的base64编码blob将被解码。

图 3 :基于系统检查的Base64 blob选择

重用了Motobit发布的VBS解码功能 。图4显示了宏代码中使用的base64函数与Motobit发布的VBS base64解码器函数之间的比较。

图 4 :Base64 解码器比较

* motobit Base64
https://www.motobit.com/tips/detpg_Base64/

JACC相似性分析一个RD指数

使用KerrDown样本的imphash值和随附的C2域在我们的数据集中找到多个其他样本。鉴于发现的样本数量很多,我们再次使用了使用Jaccard Index的相似性分析算法 提取所有样本之间的相似性。

使用networkx绘制Jaccard索引结果。

图 5 :使用JACC相似性分析一个RD指数

*Jaccard index :
https://en.wikipedia.org/wiki/Jaccard_index

KerrDown到Cobalt Strike Beacon

DLL将作为“main_background.png”放在目录位置“Users \ Administrator \ AppData \ Roaming”中。DLL从URL检索有效Payload,使用DES算法对其进行解密并在内存中执行。

恶意软件的目的是在内存中下载并执行Cobalt Strike Beacon有效负载。

RAR使用KerrDown存档

通过合法程序改变了从Office宏执行恶意代码到DLL端加载技术的方式。

有越南文件名'Don khieu nai.rar',翻译成英文“投诉信”。该存档包含一个合法的旧版Microsoft Word(Microsoft Word 2007)可执行文件,名为“Noi dung chi tiet don khieu nai gui cong ty.exe”,其翻译为“了解有关如何使用贵公司的更多信息”。攻击者使用DLL端加载技术加载旧版Microsoft Word的恶意DLL。在存档中打开可执行文件时,它会将恶意DLL加载到同一目录中。DLL执行多阶段shellcode,每个shellcode使用各种技术来隐藏下一阶段。整体安装步骤如下:

1.Microsoft Word exe将wwlib.dll加载到同一目录中并执行DLL的“FMain”功能。

2.DLL解码体内的base64编码shellcode并执行它。

3.shellcode解压缩用开源压缩代码UCL压缩的第二个shellcode 并执行它。

4.第二个shellcode用AES解密第三个shellcode。

5.第三个shellcode从以下远程位置检索shellcode并执行它:https:// cortanasyn [。] com / Avcv

6.第四个shellcode将嵌入的Cobalt Strike Beacon DLL加载到内存中并执行它。

图 6 :恶意下载程序的执行流程

查看数据集中所有KerrDown样本的编译时间戳,能够辨别出几个观察结果:

OceanLotus自2018年3月以来一直在其广告系列中使用新的下载程序,并继续在其广告系列中积极使用它。图7显示了KerrDown示例的时间轴:

图 7 :下载器DLL编译时间线

文章中的分析人员试图从数据集中的样本中找到可能的工作时间模式。根据GMT +7绘制了编译时间,发现了该APT组织可能是工作时间的清晰模式。OceanLotus的典型工作时间为上午9点至下午6点,大部分样本均在当天的这段时间内编制。图8显示了在数据集中找到的每个唯一样本的GMT +7恶意软件编译时间戳。

图 8 :GMT +7中的恶意软件编译时间

所有样本都是在工作日期间编制的 - 周一至周五。因此,很明显OceanLotus小组在工作日工作,并在周末休息。图9显示了本周编译的样本。

图 9 :工作日期间的恶意软件编译

结论

辨别出可能的工作时间模式,这表明该团体可能有正式的工作时间,并且在一个像越南或附近国家这样的地区开展业务。虽然观察到的大部分目标都是针对讲越南语的受害者。

来源

https://unit42.paloaltonetworks.com/tracking-oceanlotus-new-downloader-kerrdown/?from=groupmessage&isappinstalled=0

跟踪OceanLotus的新下载程序KerrDown的更多相关文章

  1. 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性

    [源码下载] 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性 作者:webabcd 介 ...

  2. 学了C语言,如何利用CURL写一个下载程序?—用nmake编译CURL并安装

    在这一系列的前一篇文章学了C语言,如何为下载狂人写一个磁盘剩余容量监控程序?中,我们为下载狂人写了一个程序来监视磁盘的剩余容量,防止下载的东西撑爆了硬盘.可是,这两天,他又抱怨他的下载程序不好用,让我 ...

  3. STM32无法使用IAR下载程序问题

    一开始建立了工程,然后程序下载都很正常.不知道什么情况自己下载代码之后,再重新下载代码无法成功. 我按照提示找了一下FlashStm32f30x8.flash这个文件,却发现IAR的目录下没并没有.又 ...

  4. 在U-Boot中添加自定义命令以实现自动下载程序【转】

    本文转载自:https://gaomf.cn/2016/06/26/%E5%9C%A8U-Boot%E4%B8%AD%E6%B7%BB%E5%8A%A0%E8%87%AA%E5%AE%9A%E4%B9 ...

  5. 【tomcat ecplise】新下载一个tomcat,无法成功启动,或者启动了无法访问localhost:8080页面/ecplise无法添加新的tomcat/ecplise启动tomcat启动不起来

    今天转头使用ecplise,于是新下载一个tomcat7来作为服务器使用 但是问题来了: [问题1:全新的tomcat启动即消耗了不可思议的时间,并且启动了之前其他tomcat中的很多项目] [注意: ...

  6. php实现在线下载程序安装包功能

    在线下载程序安装包可以很方便在服务器端下载各种程序安装包(Discuz!.phpwind.Dedecms.WordPress....等一些常用程序)并存储在服务器,大大减少站长上传程序安装包时间.默认 ...

  7. C#一个简单下载程序实例(可用于更新)

    运行时的界面 using System; using System.Collections.Generic; using System.ComponentModel; using System.Dat ...

  8. LPC2378-Jlink 能下载程序,但是调试出现各种奇怪问题

    LPC2378-Jlink调试经验 1.Jlink(d版的没有关系)不能下载程序?     把下载速率设置到500Khz及以下的速率. 2.Jlink能在500Khz的速率下载程序,但是不能调试?添加 ...

  9. 同花顺核新下单程序的"界面不操作超时时间"的设定

    "界面不操作超时时间"的设定 同花顺核新下单程序的'界面不操作超时时间'的设定 系统> 系统设置> 界面设置> 界面不操作超时时间(分): 在这个输入框里填上个3 ...

随机推荐

  1. python构建bp神经网络_曲线拟合(一个隐藏层)__2.代码实现

    IDE:jupyter 抽象程度可能不是那么高,以后再优化. 理论和代码实现的差距还是挺大的 数据集请查看 python构建bp神经网络(一个隐藏层)__1.数据可视化 部分代码预览 git上传.ip ...

  2. [HNOI2005]狡猾的商人 ,神奇做法——贪心

    洛谷P2294 [HNOI2005]狡猾的商人 ,神奇做法--贪心 看到大牛都是写的差分约束或带权并查集,本蒟蒻都不太会(还是用差分约束过了的QAQ),但是想出一种贪心的策略,运用神奇的优先队列实现. ...

  3. SwitchButton 开关按钮 的多种实现方式 (附源码DEMO)

    http://blog.csdn.net/vipzjyno1/article/details/23707149 Switch开关android源码SwitchButton 刚开始接触开关样式的按钮是在 ...

  4. 关于使用vw单位适配H5项目(二)

    一些比较小的H5页面,我觉得全没有必要一定要使用框架的,比如vue和react之类的,我觉得原生的js,html5也可以写好移动端. 最近刚好要赶10多个h5页面,适配移动端的,各种手机型号都要适配, ...

  5. JS模板引擎handlebars.js的简单使用

    handlebars.js的使用 首先我们要明白handlebars.js是干什么用的,我们知道使用jsp很麻烦, 于是我们开始使用freemarker等模板引擎,但这个只是针对服务器端来解 析的,那 ...

  6. CentOS6.7下Ansible部署

    Ansible是一种集成IT系统的配置管理, 应用部署, 执行特定任务的开源平台. 它基于Python语言实现, 部署只需在主控端部署Ansible环境, 被控端无需安装代理工具, 只需打开SSH, ...

  7. python基础练习题30道

    1.执行python脚本的两种方式 答:1>可以在python /home/xxxx.py 2>cd /home    ./xxxx.py  因为py脚本里面指定了python解释器的位置 ...

  8. Python基础【day03】:字典(一)

    本节内容 简述 语法 字典的使用 字典内置方法 一.简述 字典是Python中的又一种数据结构,它是通过key-value的数据类型,跟我们小时候用的新华字典差不多,通过key去访问value 二.语 ...

  9. JavaScript中的栈和堆内存,作用域

    1.栈 stack”和“堆 heap”            简单的来讲,stack上分配的内存系统自动释放,heap上分配的内存,系统不释放,哪怕程序退出,那一块内存还是在那里.stack一般是静态 ...

  10. Codeforces 950 C. Zebras

    http://codeforces.com/contest/950/problem/C 题意: 给出一个01序列,问能否将这个序列分为若干个0开头0结尾的序列 输出方案 如果有解,几个1能在一个序列就 ...