6月中旬,Malwarebytes Labs的研究人员发现了一个伪装成简历的恶意Word文档,该文档使用模板注入来删除.Net Loader。研究人员认为这是与APT攻击有关的多阶段攻击的第一部分。在最后阶段,威胁行动者使用了Cobalt Strike’s Malleable C2功能来下载最终的有效载荷并执行C2通信。

此攻击特别“聪明”是因其规避技术。例如,研究人员观察到在恶意Word宏执行有效payload时有故意延迟。这种攻击的目标不是立即损害受害者,而是要等他们重新启动计算机后再进行攻击。另外,通过将shellcode隐藏在无害的JavaScript中并且不接触磁盘的加载它,该APT可以进一步逃过安全产品的检测。

一、诱使延迟代码执行

诱饵文件可能是通过鱼叉式网络钓鱼电子邮件分发的,该电子邮件是据称是“ Anadia Waleed”的人的简历。起初,原作者认为它的目标是印度,但目标受害者可能会更广泛。

图1:简历

恶意文档使用模板注入,从以下URL下载远程模板:

https://yenile[.]asia/YOOMANHOWYOUDARE/indexb.dotm

图2:模版注入

用于托管远程模板的域名于2020年2月29日由来自香港的某人注册,该文档的创建时间是在此域名注册后15天。

下载的模板“ indexa.dotm”具有一个包含五个函数的嵌入式宏:

  • Document_Open

  • VBA_and_Replace

  • Base64Decode

  • ChangeFontSize

  • FileFolderExist.

下面是嵌入宏的函数调用图:

图3:宏函数图

主要函数是DOCUMENT_OPEN,它在打开文件时执行。此函数将三个文件放入受害者的计算机:

  • Ecmd.exe UserForm1和UserForm2包含两个Base64编码的有效payload。根据受害者计算机上安装的.Net框架的版本,UserForm1(对于.Net v3.5)或UserForm2(其他版本)的内容将被解码并存储在“ C:\ ProgramData”中。

  • cf.ini “cf.ini”文件的内容是从UserForm3提取的,并且使用AES加密,稍后由ecmd.exe解密。

  • ecmd.exe.lnk 这是“ ecmd.exe”的快捷文件,在Base64解码UserForm4的内容后创建。该文件作为触发器和持久性机制放置在“启动”目录中。只有在计算机重新启动后,才会执行Ecmd.exe。

图4:DOCUMENT_OPEN

图5:自定义base64解码函数

ChangeFontSize和VBA_AND_REPLACE函数不是恶意的,可能是从公共资源[1,2]复制来误导静态扫描程序。

公共资源1,2:

  • http://www.your-save-time-and-improve-quality-technologies-online-resource.com/vba-and-replace.html

  • https://www.vitoshacademy.com/vba-ms-word-tricks-with-vba/

二、中间装载机

Ecmd.exe是伪装成ESET命令行实用程序的.Net可执行文件。下图显示了二进制证书、调试器和版本信息。该可执行文件已使用无效的证书签名以模拟ESET,其版本信息显示这是一个“ESET命令行界面”工具(图6-图8)。

图6:证书信息

图7:版本信息

图8:调试信息

ecmd.exe是一个小型加载程序,用于解密和执行前面提到的AES加密的cf.ini文件。它通过向“http://ip-api.com/xml”发出HTTP post请求来检查受害者机器所在国家。然后,它解析XML响应数据并提取国家代码。

图9:Getcon函数:向“ip-api.com”发出http post请求

图10:ip-api.com 输出

如果国家代码是“RU”或“US”,则退出;否则,它开始使用硬编码密钥和IV对解密“cf.ini”的内容。

图10:ecmd.exe主函数

解密的内容被复制到分配的内存区域,并使用VirtualAlloc和CreateThread API作为新线程执行。

图11:runn函数

三、ShellCode (cf.ini)

可扩展C2是攻击者为了避免被发现而混淆指挥和控制通信(受害者和服务器之间的信标)的一种方式,可以为每个目标创建自定义配置文件。

shell代码使用带有jQuery可延展性C2配置文件的Cobalt Strike可延展性C2特性从“time.updateeset[.]com”下载第二个有效payload。

图12:可延展的C2请求

Shellcode首先使用PEB查找ntdll.exe的地址,然后调用LoadLibrayExA加载Winint.dll。然后它使用InternetOpenA,InternetConnectA,HttpOpenRequestA,InternetSetOptionA和HttpSendRequestA API来下载第二个有效payload。

API调用在两个循环内解析,然后使用跳转到解析的API调用的地址来执行。

图13:构建API调用

恶意payload由InternetReadFile下载并复制到分配的内存区域。

图14:InternetReadFile

考虑到通信是通过HTTPS进行的,Wireshark并不能发现恶意payload,Fiddler也不能提供有效payload。

图15:Fiddler输出

使用BurpSuite代理,能够成功验证并捕获从time.updateeset[.]com/jquery-3.3.1.slim.min.js下载的正确有效payload。如图16所示,有效payload包含在HTTP响应中返回的jQuery脚本中:

图16:发生在jQuery末尾的有效负载

将有效payload复制到内存中的缓冲区后,shellcode跳到缓冲区的开始处并继续执行。这包括向“time.updateeset[.]com/jQuery-3.3.1.min.js”发送连续的信标请求,并等待来自C2的潜在命令。

图17:C2通信

使用Hollow Hunter,我们能够从ecmd的存储空间中提取最终的有效payload,即Cobalt Strike。

四、溯源

这起攻击的确切溯源分析正在进行中,在这里提供一些关于谁可能是这起攻击的幕后黑手的见解。分析显示,袭击者排除了俄罗斯和美国。前者可能是一个虚假的信号,而后者可能是为了避免美国恶意软件分析师的注意。

如前所述,托管远程模板的域名是在香港注册的,而C2域名“time.updateeset[.]com”是在2020年2月29日以一家名为Ehtesham Rayan的伊朗公司的名称注册的。该公司过去提供反病毒软件,现在似乎已经关闭。然而,这些都不是强有力或可靠的溯源指标。

图18:updateeset.com whois注册信息

IOCs

Anadia Waleed resume.doc
259632b416b4b869fc6dc2d93d2b822dedf6526c0fa57723ad5c326a92d30621

Remote Template: indexa.dotm
7f1325c5a9266e649743ba714d02c819a8bfc7fd58d58e28a2b123ea260c0ce2

Remote Template Url:
https://yenile[.]asia/YOOMANHOWYOUDARE/

C2:
time.updateeset[.]com

Ecmd.exe:
aeb4c3ff5b5a62f5b7fcb1f958885f76795ee792c12244cee7e36d9050cfb298
dcaaffea947152eab6572ae61d7a3783e6137901662e6b5b5cad82bffb5d8995
5f49a47abc8e8d19bd5ed3625f28561ef584b1a226df09d45455fbf38c73a79c

cf.ini:0eba651e5d54bd5bb502327daef6979de7e3eb63ba518756f659f373aa5f4f8b

Cf.ini shell-code after decryption:5143c5d8715cfc1e70e9db00184592c6cfbb4b9312ee02739d098cf6bc83eff9

Cobalt Strike downloaded shellcode:8cfd023f1aa40774a9b6ef3dbdfb75dea10eb7f601c308f8837920417f1ed702

Cobalt Strike payload7963ead16b6277e5b4fbd5d0b683593877d50a6ea7e64d2fc5def605eba1162a


原文:https://blog.malwarebytes.com/threat-analysis/2020/06/multi-stage-apt-attack-drops-cobalt-strike-using-malleable-c2-feature/

编译:CNTIC情报组

本文为CNTIC编译,不代表本公众号观点,转载请保留出处与链接。

联系信息进入公众号后点击“论坛信息”可见。

cobaltstrike扩展_Malwarebytes:使用可变C2下发Cobalt Strike的APT攻击相关推荐

  1. cobaltstrike扩展_Cobalt Strike系列教程第七章:提权与横向移动

    Cobalt Strike系列教程分享如约而至,新关注的小伙伴可以先回顾一下前面的内容: Cobalt Strike系列教程第一章:简介与安装 Cobalt Strike系列教程第二章:Beacon详 ...

  2. Cobalt Strike基本使用

    Cobalt Strike简介 Cobalt Strike是一款由java编写的全平台多方协同渗透测试框架,在3.0版本之前它基于Metasploit框架工作,在3.0后的版本以独立成一个渗透测试平台 ...

  3. 渗透工具-后渗透-权限维持-Cobalt strike

    Cobalt strike 渗透测试人员的先进威胁战术 英文名词翻译对照表 命令快查 Cobaltstrike简介 Cobaltstrike架构 信息收集模块System Profiler user- ...

  4. cobalt strike 的基础使用

    cobalt strike 的基础使用 本次实验环境靶场来自于暗月(moonsec)师傅,文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精:本文中提到的任何技术都源自于靶场练习,仅供学习参考 ...

  5. 〖工具〗Cobalt Strike 3.12 3.13 4.3 4.4 K8破解版

    Cobalt Strike K8破解版 Cobalt Strike 4.4 Cobalt Strike 4.3 Cobalt Strike 3.13 Cobalt Strike 3.12 1.内置Wi ...

  6. cobalt strike中socket代理进行横向渗透

    文章目录 前言 一.环境说明 二.通过cobalt strike进行代理攻击 1.在被控主机中设置代理 2.通过Proxifier设置代理 3.通过代理进行WEB站点测试 4.对拿下的内网主机通过跳板 ...

  7. DAY41:Cobalt Strike 工具使用

    DAY41:Cobalt Strike 工具使用 1.Cobalt Strike 概述 ​ Cobalt Strike是一款基于java的渗透测试神器,常被业界人称为CS神器. ​ 自 3.0 以后已 ...

  8. APT组织最喜欢的工具 Cobalt Strike (CS) 实战

    一.Cobalt Strike 背景 Cobalt Strike 在威胁攻击者的恶意活动中的使用次数正在增加.从 2019 年到 2020 年,使用Cobalt Strike 的威胁攻击者增加了 16 ...

  9. Cobalt Strike|Beacon原理浅析

    Hello大家好哇,我是你们可爱的lmn小姐姐,今天我们来研究一下Beacon的一些基础知识,如果有师傅没有看过这个系列之前的文章,可以点击下方图片阅读. Cobalt Strike 作为一种后渗透工 ...

最新文章

  1. windows cmd/dos操作防火墙
  2. 全网最深刻的理解音频转码swr_convert(2019/10/29已补充修正)
  3. Classical Inheritance in JavaScript
  4. JPopupMenu的简单使用
  5. python语言有哪些类型的运算符_python(4)-变量 数据类型和运算符
  6. js怎么获取一个元素与屏幕右边的距离_js中如何获取某个元素到浏览器最左和最右的距离...
  7. 【Python】Python库之网络爬虫
  8. IntelliJ IDEA 注释模版 输入/**后 不显示配置好的模板
  9. ubuntu下搭建车场环境(代码使用jekins构建)
  10. FZU Problem 2168 防守阵地 I
  11. 16. Zend_Controller
  12. 二叉链表java_二叉树的二叉链表存储及其Java实现
  13. 我的VSTO之路(五):Outlook初步开发之联系人扩展
  14. Python:05打印字母联想英文周一到周日(字符串)
  15. 手把手教你在Unity2020中使用Timeline
  16. 数学与物理桥梁下的鸟瞰
  17. 狼与狗的本质区别:从打工到老板的突破
  18. 【周刊】“熊孩子”乱敲键盘攻破 Linux 桌面;500 个值得学习的 AI 开源项目;Rust 升级成为微软一级项目...
  19. 大学十年__献给计算机专业的所有学子
  20. Redis设计与实现-笔记(一)

热门文章

  1. ftp 553 Could not create file
  2. 工作流实战_21_flowable 加签 任务向前加签 向后加签
  3. flowable用户组的处理
  4. linux搭建SonarQube_Oracle
  5. mysql操作库命令_MYSQL数据库------操作命令笔记
  6. 数学建模亚太赛优秀论文_2019亚太地区大学生数学建模竞赛志愿者等级评定结果公布!...
  7. 手机屏坏了怎么把里面存东西取出来_手机又卡了,到底是运行不够还是存储容量不足?1分钟搞懂...
  8. 上传更新的代码到gitlab
  9. BugkuCTF-MISC题啊哒,白哥的鸽子
  10. mysql镜像压缩包使用_如何连接docker的mysql镜像