事件概述 

    2024年10月10号,攻击者注册名为0xjiefeng的Github账号,fork各类安全工具项目,伪造国内某公司安全研究员。

    2024年10月21日,0xjiefeng账号发布Cobalt Strike工具的CVE-2024-35250-BOF提权插件钓鱼项目,针对国内安全研究人员进行攻击。

    目前,攻击者已删除CVE-2024-35250-BOF仓库,但钓鱼项目已被国内其他Github用户fork,部分fork仓库还未删除。

    微步在线根据钓鱼项目中所执行的payload进行样本分析,最终将此次定向钓鱼攻击事件归因为东南亚APT组织“海莲花”。

钓鱼项目分析    

根据微软文档可知,.suo文件为解决方案用户选项文件,内部包含每个用户的解决方案选项。.suo是一种结构化以二进制格式存储的文件,其文件结构未公开。

简单来说,可以将用户信息保存到流中,流的名称对应.suo文件中的键,在Visual Studio 保存解决方案时自动创建。

可以利用Structured Storage Viewer工具,打开.suo文件分析数据。在VsToolboxService流中发现明显可疑的反序列化数据。

解开序列化数据后,发现存在base64编码的payload,序列化数据被内存加载后,首先base64解码Array,并实例化oizxcvhui类。

payload解码后为.NET程序,主要功能为释放下一阶段payload。

释放两个文件到以下目录:

C:\Users\Public\TTDIndexerX86\TraceIndexer.exeC:\Users\Public\TTDIndexerX86\TTDReplay.dll

设置自启动注册表:Software\Microsoft\Windows\CurrentVersion\Run

注册表项:TTDIndexerX86

注册表值:TraceIndexer.exe ttd.tmp   

TraceIndexer.exe带有签名,启动参数TraceIndexer.exe ttd.tmp

导入2个函数,使用白加黑方式加载TTDReplay.dll。

利用Notion的api进行通信,通过工作区笔记内容,实现命令执行。

通信的Notion API:

https://api.notion.com/v1/blocks/11f5edabab70805fb7ebe2a462f4b7c0/c

恶意.suo文件利用分析    

2年前国外安全研究员,曾对Visual Studio项目恶意利用做过分析。使用Visual Studio代码项目进行钓鱼攻击,不是一个新技术点。

2021年初,Lazarus组织也曾针对安全研究人员的攻击活动中,使用一种特殊的技术。

攻击者在Visual Studio项目文件中嵌入恶意命令,允许在编译项目时执行恶意代码。

https://blog.google/threat-analysis-group/new-campaign-targeting-security-researchers/

此次海莲花组织针对安全研究人员的定向钓鱼攻击事件中利用.suo文件解析的反序列化漏洞。

微软官方表示打开Visual Studio项目本身就是一种不安全的操作,这不是一个安全问题。

https://devblogs.microsoft.com/visualstudio/improving-developer-security-with-visual-studio-2022/

利用.suo文件进行钓鱼攻击的几点优势:

  • .suo文件默认隐藏,以二进制形式存储

  • 恶意代码经过序列化

  • 打开.sln项目时立即运行,过程0点击

  • 关闭Visual Studio时.suo文件自动重新保存,恶意代码会被清除

  • .suo文件解析的反序列化漏洞,永远都不会被修复

根据国外分析文章可知,在Microsoft.Visual.dll定位LoadOptions方法中,打开流stream数据,作为BinaryFormatter类型,调用Deserialize函数获取反序列化数据,由于stream数据可控,精心构造BinaryFormatter类型的序列化数据,可实现任意代码执行。

恶意.suo生成

首先利用VS创建正常的.suo文件,打开VS视图-工具箱,保存解决方案。    

创建具备VsToolboxService的正常.suo文件。

利用ysoserial.net工具生成序列化payload,再利用OpenMCDF库,设置原.suo文件VsToolboxService流的序列化数据。

CompoundFile cf = new CompoundFile(in_suo_file);cf.RootStorage.GetStream("VsToolboxService").SetData(result);cf.SaveAs(out_file);cf.Close();

生成的恶意.suo文件:

替换项目.vs文件目录下的.suo文件,打开项目后恶意代码将自动执行。    

防护措施    

谨慎打开下载的VS项目,仔细检查,删除.vs隐藏文件目录;

取消勾选,跳过对临时位置的信任检查;

https://devblogs.microsoft.com/visualstudio/improving-developer-security-with-visual-studio-2022/

Reference

https://www.ctfiot.com/go/?url=aHR0cHM6Ly9naXRodWIuY29tL2NqbTAwbi9FdmlsU2xu
https://devblogs.microsoft.com/visualstudio/improving-developer-security-with-visual-studio-2022/
https://learn.microsoft.com/en-us/visualstudio/extensibility/internals/solution-user-options-dot-suo-file?view=vs-2022
https://github.com/ironfede/openmcdf
https://github.com/drewnoakes/suo
https://github.com/th0mmm/evilsln_example
https://www.outflank.nl/blog/2023/03/28/attacking-visual-studio-for-initial-access/    

免责声明

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。